From 68ef30df9cb7ff825ded34d683612090894e4cc9 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 8 Nov 2024 11:34:08 -0800 Subject: [PATCH] Spotless Creation (#246) * update buildscript * enable spotless * prevent updating import order * export intellij settings to format * adjust format more * adjust config more * adjust even more * adjust more * adjust comments in doc * fix enum declaration * constructor param indent * improve ternary * more adjustments * preserve some one-line code * indent less arguments * fix import order to match current * rename to Default * disable formatter for AltarImportOrder * apply spotless to primary package * ensure blank line near class declaration and closing * reapply * apply to ls * move class arrays to constants * fix some botania whitespace * no blank lines after last class body * method body one_line_if_empty * fix weird linebreak * format command file * remove more empty lines at the end of classes * ah its -1 that applies that * enforce no blank lines at start of method * no blank lines before package --- build.gradle | 6 +- .../vscode/src/features/TextureDecoration.ts | 1 - .../classes/SimpleConversionRecipe.groovy | 1 - gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 62076 -> 43462 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 22 +- spotless.eclipseformat.xml | 380 +++++++++++++++ spotless.importorder | 4 + .../groovyscript/DisabledConfigGui.java | 3 +- .../groovyscript/GroovyScript.java | 18 +- .../groovyscript/api/GroovyBlacklist.java | 4 +- .../groovyscript/api/IIngredient.java | 17 +- .../cleanroommc/groovyscript/api/INamed.java | 1 - .../groovyscript/api/IScriptReloadable.java | 1 - .../documentation/annotations/Admonition.java | 5 +- .../api/documentation/annotations/Comp.java | 5 +- .../documentation/annotations/Example.java | 3 +- .../annotations/MethodDescription.java | 1 - .../documentation/annotations/Property.java | 6 +- .../annotations/RecipeBuilderDescription.java | 1 - .../RecipeBuilderMethodDescription.java | 1 - .../annotations/RegistryDescription.java | 5 +- .../api/infocommand/InfoParser.java | 1 - .../api/infocommand/InfoParserPackage.java | 1 - .../api/infocommand/InfoParserRegistry.java | 1 - .../groovyscript/command/BaseInfoCommand.java | 14 +- .../groovyscript/command/GSCommand.java | 98 ++-- .../groovyscript/command/InfoHandCommand.java | 1 - .../groovyscript/command/InfoInfoCommand.java | 1 - .../command/InfoLookingCommand.java | 1 - .../groovyscript/command/InfoSelfCommand.java | 1 - .../groovyscript/compat/content/Content.java | 1 + .../compat/content/GroovyFluid.java | 4 +- .../compat/content/GroovyResourcePack.java | 2 +- .../compat/inworldcrafting/Explosion.java | 1 - .../compat/inworldcrafting/FluidToBlock.java | 9 +- .../compat/inworldcrafting/FluidToFluid.java | 9 +- .../compat/inworldcrafting/FluidToItem.java | 10 +- .../jei/InWorldCraftingJeiPlugin.java | 1 - .../compat/loot/GroovyLootCondition.java | 7 +- .../compat/loot/GroovyLootFunction.java | 7 +- .../groovyscript/compat/loot/Loot.java | 1 - .../compat/loot/LootEntryBuilder.java | 19 +- .../compat/loot/LootPoolBuilder.java | 20 +- .../compat/mods/GroovyPropertyContainer.java | 11 +- .../compat/mods/InternalModContainer.java | 3 +- .../actuallyadditions/ActuallyAdditions.java | 1 - .../mods/actuallyadditions/Empowerer.java | 20 +- .../mods/advancedmortars/AdvancedMortars.java | 1 - .../compat/mods/advancedmortars/Mortar.java | 5 +- .../advancedrocketry/AdvancedRocketry.java | 37 +- .../mods/advancedrocketry/BaseRegistry.java | 397 +++++++-------- .../mods/advancedrocketry/Centrifuge.java | 103 ++-- .../advancedrocketry/ChemicalReactor.java | 120 ++--- .../mods/advancedrocketry/Crystallizer.java | 113 ++--- .../mods/advancedrocketry/CuttingMachine.java | 109 +++-- .../advancedrocketry/ElectricArcFurnace.java | 1 + .../mods/advancedrocketry/Electrolyser.java | 105 ++-- .../compat/mods/advancedrocketry/Lathe.java | 105 ++-- .../advancedrocketry/PrecisionAssembler.java | 1 - .../PrecisionLaserEtcher.java | 109 +++-- .../mods/advancedrocketry/RollingMachine.java | 109 ++--- .../advancedrocketry/SmallPlatePresser.java | 110 ++--- .../compat/mods/aetherlegacy/Accessory.java | 1 - .../compat/mods/aetherlegacy/Aether.java | 1 - .../compat/mods/aetherlegacy/Enchanter.java | 1 - .../mods/aetherlegacy/EnchanterFuel.java | 7 +- .../compat/mods/aetherlegacy/Freezer.java | 1 - .../compat/mods/aetherlegacy/FreezerFuel.java | 7 +- .../compat/mods/alchemistry/Electrolyzer.java | 15 +- .../mods/alchemistry/InfoParserCompound.java | 1 - .../mods/alchemistry/InfoParserElement.java | 1 - .../mods/appliedenergistics2/Attunement.java | 19 +- .../mods/appliedenergistics2/CannonAmmo.java | 8 +- .../mods/appliedenergistics2/Grinder.java | 10 +- .../appliedenergistics2/InfoParserTunnel.java | 1 - .../mods/appliedenergistics2/Inscriber.java | 6 +- .../mods/arcanearchives/ArcaneArchives.java | 1 - .../mods/arcanearchives/GemCuttingTable.java | 4 +- .../astralsorcery/ChaliceInteraction.java | 35 +- .../mods/astralsorcery/Constellation.java | 5 +- .../compat/mods/astralsorcery/Fountain.java | 2 - .../InfoParserConstellation.java | 1 - .../mods/astralsorcery/InfusionAltar.java | 3 +- .../astralsorcery/LightTransmutation.java | 17 +- .../compat/mods/astralsorcery/OreChance.java | 1 - .../compat/mods/astralsorcery/Research.java | 3 - .../astralsorcery/crystal/CrystalHelper.java | 1 - .../crystal/CrystalItemStackExpansion.java | 1 - .../AttributeModifierPerkBuilder.java | 1 - .../perktree/PerkTreeConfig.java | 6 +- .../starlightaltar/AltarInputOrder.java | 3 +- .../starlightaltar/AltarRecipeBuilder.java | 6 +- .../groovyscript/compat/mods/atum/Atum.java | 1 - .../compat/mods/avaritia/Avaritia.java | 1 - .../compat/mods/avaritia/Compressor.java | 4 +- .../mods/avaritia/ExtremeRecipeBuilder.java | 3 +- .../mods/betterwithmods/AnvilCrafting.java | 1 - .../betterwithmods/AnvilRecipeBuilder.java | 3 +- .../mods/betterwithmods/BetterWithMods.java | 1 - .../compat/mods/betterwithmods/Cauldron.java | 3 +- .../compat/mods/betterwithmods/Crucible.java | 3 +- .../compat/mods/betterwithmods/Hopper.java | 1 - .../mods/betterwithmods/HopperFilters.java | 1 - .../compat/mods/betterwithmods/Kiln.java | 1 - .../compat/mods/betterwithmods/MillStone.java | 1 - .../compat/mods/betterwithmods/Saw.java | 3 +- .../compat/mods/betterwithmods/Turntable.java | 1 - .../compat/mods/bloodmagic/AlchemyTable.java | 10 +- .../compat/mods/bloodmagic/BloodAltar.java | 9 +- .../compat/mods/bloodmagic/BloodMagic.java | 1 - .../compat/mods/botania/Apothecary.java | 22 +- .../compat/mods/botania/Brew.java | 2 - .../compat/mods/botania/BrewRecipe.java | 24 +- .../compat/mods/botania/ElvenTrade.java | 16 +- .../compat/mods/botania/InfoParserBrew.java | 1 - .../compat/mods/botania/Lexicon.java | 1 - .../compat/mods/botania/ManaInfusion.java | 12 +- .../compat/mods/botania/Orechid.java | 8 +- .../compat/mods/botania/RuneAltar.java | 28 +- .../botaniatweaks/AgglomerationPlate.java | 11 +- .../mods/botaniatweaks/BotaniaTweaks.java | 1 - .../botanicadditions/BotanicAdditions.java | 1 - .../mods/botanicadditions/GaiaPlate.java | 4 +- .../compat/mods/calculator/Calculator.java | 1 - .../mods/calculator/ExtractionChamber.java | 8 +- .../compat/mods/chisel/Carving.java | 20 +- .../compat/mods/chisel/Chisel.java | 1 - .../mods/compactmachines/CompactMachines.java | 1 - .../mods/compactmachines/Miniaturization.java | 14 +- .../compat/mods/cyclic/Cyclic.java | 1 - .../compat/mods/cyclic/Hydrator.java | 1 - .../compat/mods/cyclic/Solidifier.java | 4 +- .../draconicevolution/GroovyFusionRecipe.java | 4 +- .../BlockStateEnergyCoreStructure.java | 3 +- .../helpers/BlockStateMultiblockHelper.java | 7 +- .../helpers/BlockStates.java | 1 + .../compat/mods/enderio/AlloySmelter.java | 19 +- .../compat/mods/enderio/Enchanter.java | 3 +- .../compat/mods/enderio/EnderIO.java | 1 - .../compat/mods/enderio/FluidCoolant.java | 1 - .../compat/mods/enderio/FluidFuel.java | 1 - .../compat/mods/enderio/SagMill.java | 8 +- .../compat/mods/enderio/Tank.java | 13 +- .../groovyscript/compat/mods/enderio/Vat.java | 8 +- .../enderio/recipe/CustomEnchanterRecipe.java | 1 - .../enderio/recipe/EnderIORecipeBuilder.java | 2 +- .../mods/enderio/recipe/RecipeInput.java | 1 - .../essentialcraft/DemonTradeManager.java | 184 +++---- .../mods/essentialcraft/EssentialCraft.java | 26 +- .../mods/essentialcraft/MagicianTable.java | 162 +++---- .../mods/essentialcraft/MagmaticSmeltery.java | 266 +++++----- .../essentialcraft/MithrilineFurnace.java | 208 ++++---- .../mods/essentialcraft/RadiatingChamber.java | 226 ++++----- .../compat/mods/essentialcraft/WindRune.java | 186 +++---- .../compat/mods/evilcraft/BloodInfuser.java | 5 +- .../evilcraft/EnvironmentalAccumulator.java | 5 +- .../mods/evilcraft/InfoParserWeather.java | 1 - .../mods/extendedcrafting/EnderCrafting.java | 1 - .../extendedcrafting/ExtendedCrafting.java | 1 - .../mods/extendedcrafting/TableCrafting.java | 1 - .../extendedcrafting/TableRecipeBuilder.java | 3 +- .../compat/mods/extrabotany/ExtraBotany.java | 1 - .../compat/mods/extrautils2/ExtraUtils2.java | 1 - .../compat/mods/extrautils2/Furnace.java | 9 +- .../compat/mods/extrautils2/Generator.java | 3 - .../GridPowerPassiveGenerator.java | 12 +- .../compat/mods/extrautils2/Resonator.java | 9 +- .../compat/mods/forestry/BeeMutations.java | 5 +- .../compat/mods/forestry/Carpenter.java | 2 - .../compat/mods/forestry/Fermenter.java | 5 +- .../compat/mods/forestry/Forestry.java | 4 +- .../mods/forestry/ForestryRegistry.java | 3 +- .../compat/mods/futuremc/BlastFurnace.java | 2 - .../compat/mods/futuremc/Campfire.java | 2 - .../compat/mods/futuremc/FutureMC.java | 1 - .../compat/mods/futuremc/Smithing.java | 2 - .../compat/mods/futuremc/Smoker.java | 2 - .../compat/mods/futuremc/Stonecutter.java | 2 - .../compat/mods/ic2/Centrifuge.java | 8 +- .../compat/mods/ic2/MetalFormer.java | 8 +- .../compat/mods/ic2/OreWasher.java | 8 +- .../compat/mods/ic2/exp/BlastFurnace.java | 8 +- .../compat/mods/ic2/exp/BlockCutter.java | 8 +- .../compat/mods/ic2/exp/Compressor.java | 8 +- .../compat/mods/ic2/exp/Extractor.java | 8 +- .../compat/mods/ic2/exp/FluidCanner.java | 8 +- .../compat/mods/ic2/exp/Macerator.java | 8 +- .../compat/mods/ic2/exp/Recycler.java | 4 +- .../compat/mods/ic2/exp/SolidCanner.java | 8 +- .../mods/immersiveengineering/AlloyKiln.java | 1 - .../mods/immersiveengineering/ArcFurnace.java | 3 +- .../BlastFurnaceFuel.java | 1 - .../mods/immersiveengineering/Crusher.java | 8 +- .../mods/immersiveengineering/Excavator.java | 24 +- .../ImmersiveEngineering.java | 1 - .../mods/immersiveengineering/Mixer.java | 9 +- .../mods/immersivepetroleum/Distillation.java | 9 +- .../ImmersivePetroleum.java | 1 - .../mods/immersivepetroleum/Reservoir.java | 7 +- .../mods/immersivetechnology/Boiler.java | 1 - .../mods/immersivetechnology/BoilerFuel.java | 2 - .../immersivetechnology/CoolingTower.java | 1 - .../mods/immersivetechnology/Distiller.java | 5 +- .../ElectrolyticCrucibleBattery.java | 1 - .../mods/immersivetechnology/GasTurbine.java | 3 +- .../immersivetechnology/HeatExchanger.java | 1 - .../HighPressureSteamTurbine.java | 3 +- .../ImmersiveTechnology.java | 1 - .../immersivetechnology/MeltingCrucible.java | 1 - .../mods/immersivetechnology/Radiator.java | 3 +- .../mods/immersivetechnology/SolarTower.java | 1 - .../immersivetechnology/SteamTurbine.java | 1 - .../mods/industrialforegoing/BioReactor.java | 8 +- .../mods/industrialforegoing/Extractor.java | 8 +- .../industrialforegoing/FluidDictionary.java | 1 - .../IndustrialForegoing.java | 1 - .../mods/industrialforegoing/LaserDrill.java | 1 - .../industrialforegoing/OreFermenter.java | 1 - .../mods/industrialforegoing/OreRaw.java | 8 +- .../mods/industrialforegoing/OreSieve.java | 8 +- .../industrialforegoing/ProteinReactor.java | 8 +- .../industrialforegoing/SludgeRefiner.java | 1 - .../mods/inspirations/AnvilSmashing.java | 17 +- .../compat/mods/inspirations/Cauldron.java | 5 +- .../mods/inspirations/Inspirations.java | 1 - .../mods/integrateddynamics/DryingBasin.java | 24 +- .../IntegratedDynamics.java | 1 - .../mods/integrateddynamics/Squeezer.java | 30 +- .../compat/mods/jei/Catalyst.java | 8 +- .../compat/mods/jei/Category.java | 28 +- .../compat/mods/jei/Description.java | 10 +- .../compat/mods/jei/InfoParserTab.java | 1 - .../compat/mods/jei/Ingredient.java | 7 +- .../compat/mods/jei/JeiPlugin.java | 5 +- .../compat/mods/jei/JustEnoughItems.java | 1 - .../compat/mods/lazyae2/Aggregator.java | 1 - .../compat/mods/lazyae2/Centrifuge.java | 1 - .../compat/mods/lazyae2/Energizer.java | 1 - .../compat/mods/lazyae2/Etcher.java | 1 - .../compat/mods/lazyae2/LazyAE2.java | 1 - .../mods/magneticraft/CrushingTable.java | 2 - .../mods/magneticraft/GasificationUnit.java | 2 - .../compat/mods/magneticraft/Grinder.java | 2 - .../mods/magneticraft/HydraulicPress.java | 2 - .../mods/magneticraft/Magneticraft.java | 1 - .../compat/mods/magneticraft/OilHeater.java | 2 - .../compat/mods/magneticraft/Refinery.java | 2 - .../compat/mods/magneticraft/Sieve.java | 10 +- .../compat/mods/magneticraft/SluiceBox.java | 10 +- .../compat/mods/magneticraft/Thermopile.java | 2 - .../compat/mods/mekanism/Combiner.java | 1 - .../compat/mods/mekanism/InfoParserGas.java | 1 - .../mods/mekanism/InfoParserInfusion.java | 1 - .../compat/mods/mekanism/Infusion.java | 11 +- .../compat/mods/mekanism/Mekanism.java | 1 - .../mekanism/PressurizedReactionChamber.java | 3 +- .../compat/mods/mekanism/Sawmill.java | 4 +- .../compat/mods/mekanism/Smelting.java | 9 +- .../mekanism/recipe/GasRecipeBuilder.java | 1 - .../mods/mekanism/recipe/GasStackList.java | 4 +- .../recipe/MekanismIngredientHelper.java | 3 +- .../MysticalAgriculture.java | 1 - .../compat/mods/naturesaura/NaturesAura.java | 1 - .../compat/mods/naturesaura/Ritual.java | 4 +- .../compat/mods/pneumaticcraft/Amadron.java | 1 - .../compat/mods/pneumaticcraft/Explosion.java | 1 - .../mods/pneumaticcraft/HeatFrameCooling.java | 1 - .../mods/pneumaticcraft/LiquidFuel.java | 1 - .../mods/pneumaticcraft/PlasticMixer.java | 1 - .../mods/pneumaticcraft/PneumaticCraft.java | 1 - .../mods/pneumaticcraft/PressureChamber.java | 1 - .../compat/mods/pneumaticcraft/Refinery.java | 1 - .../ThermopneumaticProcessingPlant.java | 5 +- .../compat/mods/pneumaticcraft/XpFluid.java | 1 - .../compat/mods/primaltech/PrimalTech.java | 1 - .../compat/mods/primaltech/WoodenBasin.java | 19 +- .../mods/prodigytech/AtomicReshaper.java | 400 +++++++-------- .../ExplosionFurnaceAdditives.java | 457 +++++++++--------- .../mods/prodigytech/PrimordialisReactor.java | 177 +++---- .../compat/mods/prodigytech/ProdigyTech.java | 35 +- .../mods/prodigytech/SimpleRecipeHandler.java | 234 ++++----- .../SimpleRecipeHandlerSecondaryOutput.java | 254 +++++----- .../compat/mods/prodigytech/Solderer.java | 336 ++++++------- .../compat/mods/prodigytech/ZorraAltar.java | 237 +++++---- .../compat/mods/projecte/ProjectE.java | 1 - .../compat/mods/projecte/Transmutation.java | 9 +- .../compat/mods/pyrotech/Anvil.java | 2 +- .../compat/mods/pyrotech/Barrel.java | 5 +- .../compat/mods/pyrotech/BrickOven.java | 13 +- .../compat/mods/pyrotech/ChoppingBlock.java | 4 +- .../compat/mods/pyrotech/PyroTech.java | 1 - .../compat/mods/pyrotech/StoneOven.java | 12 +- .../compat/mods/roots/InfoParserHerb.java | 1 - .../compat/mods/roots/InfoParserModifier.java | 1 - .../compat/mods/roots/InfoParserSpell.java | 1 - .../compat/mods/roots/LifeEssence.java | 1 - .../compat/mods/roots/Mortar.java | 32 +- .../groovyscript/compat/mods/roots/Moss.java | 1 - .../compat/mods/roots/Predicates.java | 4 +- .../compat/mods/roots/Rituals.java | 3 +- .../compat/mods/roots/Spells.java | 10 +- .../compat/mods/roots/Transmutation.java | 5 +- .../compat/mods/rustic/Alchemy.java | 12 +- .../compat/mods/rustic/BrewingBarrel.java | 1 - .../compat/mods/rustic/CondenserRecipe.java | 14 +- .../compat/mods/rustic/CrushingTub.java | 5 +- .../compat/mods/rustic/EvaporatingBasin.java | 1 - .../ExtendedEvaporatingBasinRecipe.java | 1 - .../compat/mods/rustic/Rustic.java | 1 - .../mods/tcomplement/TinkersComplement.java | 1 - .../techreborn/AbstractGeneratorRegistry.java | 1 - .../AbstractGenericTechRebornRegistry.java | 1 - .../AbstractPraescriptumRegistry.java | 1 - .../compat/mods/techreborn/AlloySmelter.java | 1 - .../mods/techreborn/AssemblingMachine.java | 1 - .../compat/mods/techreborn/BlastFurnace.java | 1 - .../compat/mods/techreborn/Centrifuge.java | 1 - .../mods/techreborn/ChemicalReactor.java | 1 - .../compat/mods/techreborn/Compressor.java | 1 - .../mods/techreborn/DieselGenerator.java | 1 - .../mods/techreborn/DistillationTower.java | 1 - .../compat/mods/techreborn/Extractor.java | 1 - .../mods/techreborn/FluidReplicator.java | 1 - .../compat/mods/techreborn/FusionReactor.java | 1 - .../compat/mods/techreborn/GasTurbine.java | 1 - .../compat/mods/techreborn/Grinder.java | 1 - .../mods/techreborn/ImplosionCompressor.java | 1 - .../techreborn/IndustrialElectrolyzer.java | 1 - .../mods/techreborn/IndustrialGrinder.java | 1 - .../mods/techreborn/IndustrialSawmill.java | 1 - .../mods/techreborn/PlasmaGenerator.java | 1 - .../mods/techreborn/PlateBendingMachine.java | 1 - .../compat/mods/techreborn/Scrapbox.java | 1 - .../mods/techreborn/SemiFluidGenerator.java | 1 - .../mods/techreborn/SolidCanningMachine.java | 1 - .../compat/mods/techreborn/TechReborn.java | 1 - .../mods/techreborn/ThermalGenerator.java | 1 - .../compat/mods/techreborn/VacuumFreezer.java | 1 - .../compat/mods/techreborn/WireMill.java | 1 - .../compat/mods/thaumcraft/Crucible.java | 1 - .../compat/mods/thaumcraft/DustTrigger.java | 13 +- .../mods/thaumcraft/InfoParserAspect.java | 8 +- .../compat/mods/thaumcraft/LootBag.java | 2 - .../compat/mods/thaumcraft/Research.java | 4 +- .../arcane/ArcaneRecipeBuilder.java | 3 +- .../thaumcraft/arcane/ArcaneWorkbench.java | 4 +- .../thaumcraft/arcane/ShapelessArcaneCR.java | 4 +- .../mods/thaumcraft/aspect/AspectHelper.java | 12 +- .../thaumcraft/aspect/AspectListHelper.java | 1 - .../compat/mods/thaumcraft/warp/Warp.java | 1 - .../warp/WarpItemStackExpansion.java | 1 - .../mods/theaurorian/MoonlightForge.java | 160 +++--- .../compat/mods/theaurorian/Scrapper.java | 156 +++--- .../compat/mods/theaurorian/TheAurorian.java | 19 +- .../mods/thermalexpansion/device/Coolant.java | 20 +- .../thermalexpansion/device/Diffuser.java | 18 +- .../thermalexpansion/device/Factorizer.java | 1 - .../mods/thermalexpansion/device/Fisher.java | 8 +- .../thermalexpansion/device/FisherBait.java | 8 +- .../mods/thermalexpansion/device/Tapper.java | 15 +- .../device/TapperFertilizer.java | 8 +- .../thermalexpansion/device/TapperTree.java | 8 +- .../thermalexpansion/device/XpCollector.java | 23 +- .../thermalexpansion/dynamo/Compression.java | 8 +- .../thermalexpansion/dynamo/Enervation.java | 8 +- .../thermalexpansion/dynamo/Lapidary.java | 8 +- .../thermalexpansion/dynamo/Magmatic.java | 8 +- .../thermalexpansion/dynamo/Numismatic.java | 8 +- .../thermalexpansion/dynamo/Reactant.java | 5 +- .../mods/thermalexpansion/dynamo/Steam.java | 8 +- .../mods/thermalexpansion/machine/Brewer.java | 14 +- .../thermalexpansion/machine/Centrifuge.java | 4 +- .../thermalexpansion/machine/Crucible.java | 14 +- .../thermalexpansion/machine/Enchanter.java | 14 +- .../thermalexpansion/machine/Extruder.java | 14 +- .../thermalexpansion/machine/Insolator.java | 15 +- .../machine/Precipitator.java | 7 +- .../machine/TransposerExtract.java | 14 +- .../machine/TransposerFill.java | 14 +- .../mods/tinkersconstruct/CastingBasin.java | 295 +++++------ .../mods/tinkersconstruct/CastingTable.java | 293 +++++------ .../mods/tinkersconstruct/EntityMelting.java | 320 ++++++------ .../mods/tinkersconstruct/SmelteryFuel.java | 2 +- .../tinkersconstruct/TinkersConstruct.java | 5 +- .../material/GroovyMaterialIntegration.java | 3 +- .../recipe/MeltingRecipeBuilder.java | 5 +- .../groovyscript/compat/mods/woot/Drops.java | 16 +- .../compat/mods/woot/MobConfig.java | 6 +- .../groovyscript/compat/mods/woot/Policy.java | 1 - .../compat/mods/woot/Spawning.java | 5 +- .../compat/mods/woot/StygianIronAnvil.java | 1 - .../groovyscript/compat/mods/woot/Woot.java | 1 - .../compat/vanilla/CraftingRecipe.java | 4 +- .../compat/vanilla/CraftingRecipeBuilder.java | 3 +- .../compat/vanilla/FurnaceRecipeManager.java | 1 + .../vanilla/ItemStackMixinExpansion.java | 7 +- .../groovyscript/compat/vanilla/Player.java | 16 +- .../groovyscript/compat/vanilla/Rarity.java | 1 - .../command/infoparser/GenericInfoParser.java | 1 - .../command/infoparser/InfoParserBiome.java | 1 - .../command/infoparser/InfoParserBlock.java | 1 - .../infoparser/InfoParserBlockState.java | 1 - .../infoparser/InfoParserCreativeTab.java | 2 - .../infoparser/InfoParserDimension.java | 1 - .../infoparser/InfoParserEnchantment.java | 1 - .../command/infoparser/InfoParserEntity.java | 1 - .../command/infoparser/InfoParserFluid.java | 1 - .../command/infoparser/InfoParserItem.java | 1 - .../command/infoparser/InfoParserNBT.java | 1 - .../infoparser/InfoParserPotionEffect.java | 1 - .../infoparser/InfoParserTranslationKey.java | 1 - .../infoparser/InfoParserVillagerCareer.java | 1 - .../InfoParserVillagerProfession.java | 1 - .../StandardInfoParserRegistry.java | 1 - .../core/GroovyScriptTransformer.java | 9 +- .../groovyscript/core/SideOnlyConfig.java | 4 +- .../core/mixin/EntityItemMixin.java | 5 +- .../core/mixin/EventBusMixin.java | 1 - .../core/mixin/ForgeRegistryMixin.java | 35 +- .../groovyscript/core/mixin/ItemMixin.java | 1 - .../core/mixin/OreIngredientMixin.java | 1 - .../core/mixin/TileEntityPistonMixin.java | 17 +- .../mixin/VillagerProfessionAccessor.java | 1 - .../RegistryRecipeMortarAccessor.java | 1 - .../MatterCannonAmmoRegistryAccessor.java | 1 - .../MovableTileRegistryAccessor.java | 1 - .../P2PTunnelRegistryAccessor.java | 1 - .../ConstellationBaseAccessor.java | 1 - ...onstellationMapEffectRegistryAccessor.java | 1 - .../ConstellationRegistryAccessor.java | 1 - .../FluidRarityRegistryAccessor.java | 1 - .../LightOreTransmutationsAccessor.java | 1 - .../LiquidInteractionAccessor.java | 1 - .../mixin/astralsorcery/OreTypesAccessor.java | 1 - .../PerkLevelManagerAccessor.java | 6 +- .../astralsorcery/PerkLevelManagerMixin.java | 3 +- .../mixin/astralsorcery/PerkTreeAccessor.java | 1 - .../astralsorcery/ResearchNodeAccessor.java | 1 - .../TileCelestialCrystalsMixin.java | 1 - .../astralsorcery/TraitRecipeAccessor.java | 1 - .../WellLiquefactionAccessor.java | 1 - .../BWMHeatRegistryAccessor.java | 1 - .../betterwithmods/HopperFiltersAccessor.java | 1 - .../BloodMagicRecipeRegistrarAccessor.java | 1 - .../botania/PageCraftingRecipeMixin.java | 11 +- .../calculator/DefinedRecipeHelperMixin.java | 1 - .../mixin/calculator/RecipeHelperV2Mixin.java | 4 +- .../InvisECoreBlockMixin.java | 7 +- .../TileEnergyStorageCoreMixin.java | 4 +- .../enderio/AlloyRecipeManagerAccessor.java | 1 - .../enderio/AlloyRecipeManagerMixin.java | 1 - .../enderio/FluidFuelRegisterAccessor.java | 1 - .../enderio/ItemRecipeLeafNodeAccessor.java | 1 - .../mixin/enderio/ItemRecipeNodeAccessor.java | 1 - .../mixin/enderio/TriItemLookupAccessor.java | 1 - .../OreSmeltingRecipeMixin.java | 57 ++- .../essentialcraft/TileFurnaceMagicMixin.java | 66 +-- .../TileMagmaticSmelterMixin.java | 70 +-- .../extrautils2/GeneratorTypeAccessor.java | 1 - .../mixin/extrautils2/GeneratorTypeMixin.java | 1 - .../PassiveBlockGeneratorMillMixin.java | 1 - .../mixin/groovy/CompUnitClassGenMixin.java | 10 +- .../core/mixin/groovy/Java8Mixin.java | 2 +- .../core/mixin/groovy/MetaClassImplMixin.java | 34 +- .../core/mixin/groovy/ModuleNodeMixin.java | 7 +- .../InspirationsRegistryAccessor.java | 2 - .../jei/IngredientInfoRecipeAccessor.java | 1 - .../core/mixin/jei/JeiStarterMixin.java | 1 - .../core/mixin/jei/ModRegistryAccessor.java | 1 - .../core/mixin/loot/LoadTableEventMixin.java | 1 - .../core/mixin/loot/LootPoolAccessor.java | 1 - .../core/mixin/loot/LootTableAccessor.java | 1 - .../CrushingTableRecipeManagerAccessor.java | 1 - ...GasificationUnitRecipeManagerAccessor.java | 1 - .../HydraulicPressRecipeManagerAccessor.java | 1 - .../ThermopileRecipeManagerAccessor.java | 1 - .../PlasticMixerRecipeAccessor.java | 1 - .../PlasticMixerRegistryAccessor.java | 1 - .../primal_tech/ClayKilnRecipesAccessor.java | 1 - .../StoneAnvilRecipesAccessor.java | 1 - .../primal_tech/WaterSawRecipesAccessor.java | 1 - .../WoodenBasinRecipesAccessor.java | 1 - .../mixin/projecte/WorldHelperAccessor.java | 1 - .../RollingMachineRecipeWrapperMixin.java | 1 - .../BrewerManagerAccessor.java | 1 - .../BrewerRecipeAccessor.java | 1 - .../CentrifugeManagerAccessor.java | 1 - .../CentrifugeRecipeAccessor.java | 5 +- .../ChargerManagerAccessor.java | 1 - .../CompactorManagerAccessor.java | 1 - .../CompactorRecipeAccessor.java | 1 - .../CompressionManagerAccessor.java | 1 - .../CoolantManagerAccessor.java | 1 - .../CrucibleManagerAccessor.java | 1 - .../CrucibleRecipeAccessor.java | 1 - .../DiffuserManagerAccessor.java | 1 - .../EnchanterManagerAccessor.java | 1 - .../EnchanterRecipeAccessor.java | 1 - .../EnervationManagerAccessor.java | 1 - .../ExtruderManagerAccessor.java | 1 - .../ExtruderRecipeAccessor.java | 1 - .../FactorizerManagerAccessor.java | 1 - .../FactorizerRecipeAccessor.java | 1 - .../FisherManagerAccessor.java | 1 - .../FurnaceManagerAccessor.java | 1 - .../FurnaceRecipeAccessor.java | 1 - .../InsolatorManagerAccessor.java | 1 - .../InsolatorRecipeAccessor.java | 1 - .../MagmaticManagerAccessor.java | 1 - .../NumismaticManagerAccessor.java | 1 - .../PrecipitatorManagerAccessor.java | 1 - .../PrecipitatorRecipeAccessor.java | 1 - .../PulverizerManagerAccessor.java | 1 - .../PulverizerRecipeAccessor.java | 1 - .../ReactantManagerAccessor.java | 1 - .../thermalexpansion/ReactionAccessor.java | 1 - .../RefineryManagerAccessor.java | 1 - .../RefineryRecipeAccessor.java | 1 - .../SawmillManagerAccessor.java | 1 - .../SawmillRecipeAccessor.java | 1 - .../SmelterManagerAccessor.java | 1 - .../SmelterRecipeAccessor.java | 1 - .../SteamManagerAccessor.java | 1 - .../TapperManagerAccessor.java | 1 - .../TransposerManagerAccessor.java | 1 - .../XpCollectorManagerAccessor.java | 1 - .../core/mixin/woot/CustomDropAccessor.java | 1 - .../woot/CustomDropsRepositoryAccessor.java | 1 - .../mixin/woot/PolicyRepositoryAccessor.java | 1 - .../WootConfigurationManagerAccessor.java | 1 - .../core/visitors/StaticVerifierVisitor.java | 4 +- .../documentation/AdmonitionBuilder.java | 1 - .../groovyscript/documentation/Builder.java | 94 ++-- .../documentation/CodeBlockBuilder.java | 1 - .../documentation/Documentation.java | 2 - .../groovyscript/documentation/Exporter.java | 70 ++- .../groovyscript/documentation/Registry.java | 157 +++--- .../documentation/format/IFormat.java | 1 - .../documentation/format/MKDocsMaterial.java | 1 - .../documentation/format/OutputFormat.java | 4 +- .../documentation/format/VitePress.java | 1 - .../linkgenerator/BasicLinkGenerator.java | 1 - .../linkgenerator/LinkGeneratorHooks.java | 1 - .../groovyscript/event/EventBusExtended.java | 1 - .../groovyscript/event/EventHandler.java | 18 +- .../event/GroovyEventManager.java | 7 +- .../event/LootTablesLoadedEvent.java | 1 - .../groovyscript/helper/GroovyFile.java | 127 +++-- .../groovyscript/helper/GroovyHelper.java | 3 +- .../helper/ingredient/FluidStackList.java | 3 +- .../ingredient/GroovyScriptCodeConverter.java | 7 +- .../helper/ingredient/IngredientHelper.java | 1 - .../helper/ingredient/ItemStackList.java | 3 +- .../helper/ingredient/OreDictIngredient.java | 4 +- .../groovyscript/mapper/ObjectMapper.java | 35 +- .../groovyscript/mapper/ObjectMappers.java | 3 +- .../groovyscript/mapper/TextureTooltip.java | 2 + .../groovyscript/network/CReload.java | 6 +- .../groovyscript/network/SCopy.java | 3 +- .../groovyscript/network/SReloadScripts.java | 3 +- .../AbstractCraftingRecipeBuilder.java | 77 +-- .../registry/AbstractReloadableStorage.java | 1 - .../groovyscript/registry/NamedRegistry.java | 1 - .../registry/ReloadableRegistryManager.java | 10 +- .../registry/StandardListRegistry.java | 1 - .../registry/VirtualizedRegistry.java | 4 +- .../groovyscript/sandbox/CompiledScript.java | 17 +- .../groovyscript/sandbox/GroovyLogImpl.java | 14 +- .../groovyscript/sandbox/GroovySandbox.java | 12 +- .../sandbox/GroovyScriptSandbox.java | 67 ++- .../groovyscript/sandbox/Preprocessor.java | 5 +- .../groovyscript/sandbox/RunConfig.java | 27 +- .../groovyscript/sandbox/SandboxData.java | 32 +- .../sandbox/expand/ExpansionHelper.java | 29 +- .../sandbox/meta/BlackListedMetaClass.java | 5 +- .../meta/GrSMetaClassCreationHandle.java | 3 +- .../groovyscript/sandbox/meta/Setter.java | 8 +- .../security/GroovySecurityManager.java | 5 +- .../security/SandboxSecurityException.java | 2 +- .../transformer/GroovyCodeFactory.java | 42 +- .../transformer/GroovyScriptCompiler.java | 3 +- .../GroovyScriptEarlyCompiler.java | 7 +- .../transformer/GroovyScriptTransformer.java | 3 +- .../GroovyScriptCompilationUnitFactory.java | 8 +- .../GroovyScriptDocumentationProvider.java | 15 +- .../TextureDecorationProvider.java | 7 +- .../groovyls/GroovyLanguageServer.java | 7 +- .../net/prominic/groovyls/GroovyServices.java | 46 +- .../control/GroovyLSCompilationUnit.java | 21 +- .../documentation/DocumentationFactory.java | 3 +- .../documentation/IDocumentationProvider.java | 6 +- .../compiler/util/GroovyASTUtils.java | 54 ++- .../compiler/util/GroovyReflectionUtils.java | 22 +- .../config/CompilationUnitFactory.java | 6 +- .../config/CompilationUnitFactoryBase.java | 10 +- .../providers/CompletionProvider.java | 134 +++-- .../providers/DefinitionProvider.java | 3 +- .../providers/DocumentSymbolProvider.java | 2 +- .../providers/TypeDefinitionProvider.java | 3 +- .../util/GroovyNodeToStringUtils.java | 5 +- 602 files changed, 5305 insertions(+), 4851 deletions(-) create mode 100644 spotless.eclipseformat.xml create mode 100644 spotless.importorder diff --git a/build.gradle b/build.gradle index 2757b7967..892add046 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1720840170 +//version: 1723428048 /* * DO NOT CHANGE THIS FILE! * Also, you may replace this file at any time if there is an update available. @@ -1009,7 +1009,7 @@ abstract class RunHotswappableMinecraftTask extends RunMinecraftTask { if (project.usesMixins.toBoolean()) { this.extraJvmArgs.addAll(project.provider(() -> { - def mixinCfg = project.configurations.detachedConfiguration(project.dependencies.create('zone.rong:mixinbooter:9.1')) + def mixinCfg = project.configurations.detachedConfiguration(project.dependencies.create(project.mixinProviderSpec)) mixinCfg.canBeConsumed = false mixinCfg.canBeResolved = true mixinCfg.transitive = false @@ -1391,7 +1391,7 @@ def getChangelog() { // Buildscript updating -def buildscriptGradleVersion = '8.5' +def buildscriptGradleVersion = '8.9' tasks.named('wrapper', Wrapper).configure { gradleVersion = buildscriptGradleVersion diff --git a/editors/vscode/src/features/TextureDecoration.ts b/editors/vscode/src/features/TextureDecoration.ts index 7e65c71f6..1d87ade4c 100644 --- a/editors/vscode/src/features/TextureDecoration.ts +++ b/editors/vscode/src/features/TextureDecoration.ts @@ -87,5 +87,4 @@ export class TextureDecorationFeature extends TextDocumentLanguageFeature@I- zp9QeisK*rlxC>+~7Dk4IxIRsKBHqdR9b3+fyL=ynHmIDe&|>O*VlvO+%z5;9Z$|DJ zb4dO}-R=MKr^6EKJiOrJdLnCJn>np?~vU-1sSFgPu;pthGwf}bG z(1db%xwr#x)r+`4AGu$j7~u2MpVs3VpLp|mx&;>`0p0vH6kF+D2CY0fVdQOZ@h;A` z{infNyvmFUiu*XG}RNMNwXrbec_*a3N=2zJ|Wh5z* z5rAX$JJR{#zP>KY**>xHTuw?|-Rg|o24V)74HcfVT;WtQHXlE+_4iPE8QE#DUm%x0 zEKr75ur~W%w#-My3Tj`hH6EuEW+8K-^5P62$7Sc5OK+22qj&Pd1;)1#4tKihi=~8C zHiQSst0cpri6%OeaR`PY>HH_;CPaRNty%WTm4{wDK8V6gCZlG@U3$~JQZ;HPvDJcT1V{ z?>H@13MJcCNe#5z+MecYNi@VT5|&UiN1D4ATT+%M+h4c$t;C#UAs3O_q=GxK0}8%8 z8J(_M9bayxN}69ex4dzM_P3oh@ZGREjVvn%%r7=xjkqxJP4kj}5tlf;QosR=%4L5y zWhgejO=vao5oX%mOHbhJ8V+SG&K5dABn6!WiKl{|oPkq(9z8l&Mm%(=qGcFzI=eLu zWc_oCLyf;hVlB@dnwY98?75B20=n$>u3b|NB28H0u-6Rpl((%KWEBOfElVWJx+5yg z#SGqwza7f}$z;n~g%4HDU{;V{gXIhft*q2=4zSezGK~nBgu9-Q*rZ#2f=Q}i2|qOp z!!y4p)4o=LVUNhlkp#JL{tfkhXNbB=Ox>M=n6soptJw-IDI|_$is2w}(XY>a=H52d z3zE$tjPUhWWS+5h=KVH&uqQS=$v3nRs&p$%11b%5qtF}S2#Pc`IiyBIF4%A!;AVoI zXU8-Rpv!DQNcF~(qQnyyMy=-AN~U>#&X1j5BLDP{?K!%h!;hfJI>$mdLSvktEr*89 zdJHvby^$xEX0^l9g$xW-d?J;L0#(`UT~zpL&*cEh$L|HPAu=P8`OQZV!-}l`noSp_ zQ-1$q$R-gDL)?6YaM!=8H=QGW$NT2SeZlb8PKJdc=F-cT@j7Xags+Pr*jPtlHFnf- zh?q<6;)27IdPc^Wdy-mX%2s84C1xZq9Xms+==F4);O`VUASmu3(RlgE#0+#giLh-& zcxm3_e}n4{%|X zJp{G_j+%`j_q5}k{eW&TlP}J2wtZ2^<^E(O)4OQX8FDp6RJq!F{(6eHWSD3=f~(h} zJXCf7=r<16X{pHkm%yzYI_=VDP&9bmI1*)YXZeB}F? z(%QsB5fo*FUZxK$oX~X^69;x~j7ms8xlzpt-T15e9}$4T-pC z6PFg@;B-j|Ywajpe4~bk#S6(fO^|mm1hKOPfA%8-_iGCfICE|=P_~e;Wz6my&)h_~ zkv&_xSAw7AZ%ThYF(4jADW4vg=oEdJGVOs>FqamoL3Np8>?!W#!R-0%2Bg4h?kz5I zKV-rKN2n(vUL%D<4oj@|`eJ>0i#TmYBtYmfla;c!ATW%;xGQ0*TW@PTlGG><@dxUI zg>+3SiGdZ%?5N=8uoLA|$4isK$aJ%i{hECP$bK{J#0W2gQ3YEa zZQ50Stn6hqdfxJ*9#NuSLwKFCUGk@c=(igyVL;;2^wi4o30YXSIb2g_ud$ zgpCr@H0qWtk2hK8Q|&wx)}4+hTYlf;$a4#oUM=V@Cw#!$(nOFFpZ;0lc!qd=c$S}Z zGGI-0jg~S~cgVT=4Vo)b)|4phjStD49*EqC)IPwyeKBLcN;Wu@Aeph;emROAwJ-0< z_#>wVm$)ygH|qyxZaet&(Vf%pVdnvKWJn9`%DAxj3ot;v>S$I}jJ$FLBF*~iZ!ZXE zkvui&p}fI0Y=IDX)mm0@tAd|fEHl~J&K}ZX(Mm3cm1UAuwJ42+AO5@HwYfDH7ipIc zmI;1J;J@+aCNG1M`Btf>YT>~c&3j~Qi@Py5JT6;zjx$cvOQW@3oQ>|}GH?TW-E z1R;q^QFjm5W~7f}c3Ww|awg1BAJ^slEV~Pk`Kd`PS$7;SqJZNj->it4DW2l15}xP6 zoCl$kyEF%yJni0(L!Z&14m!1urXh6Btj_5JYt1{#+H8w?5QI%% zo-$KYWNMJVH?Hh@1n7OSu~QhSswL8x0=$<8QG_zepi_`y_79=nK=_ZP_`Em2UI*tyQoB+r{1QYZCpb?2OrgUw#oRH$?^Tj!Req>XiE#~B|~ z+%HB;=ic+R@px4Ld8mwpY;W^A%8%l8$@B@1m5n`TlKI6bz2mp*^^^1mK$COW$HOfp zUGTz-cN9?BGEp}5A!mDFjaiWa2_J2Iq8qj0mXzk; z66JBKRP{p%wN7XobR0YjhAuW9T1Gw3FDvR5dWJ8ElNYF94eF3ebu+QwKjtvVu4L zI9ip#mQ@4uqVdkl-TUQMb^XBJVLW(-$s;Nq;@5gr4`UfLgF$adIhd?rHOa%D);whv z=;krPp~@I+-Z|r#s3yCH+c1US?dnm+C*)r{m+86sTJusLdNu^sqLrfWed^ndHXH`m zd3#cOe3>w-ga(Dus_^ppG9AC>Iq{y%%CK+Cro_sqLCs{VLuK=dev>OL1dis4(PQ5R zcz)>DjEkfV+MO;~>VUlYF00SgfUo~@(&9$Iy2|G0T9BSP?&T22>K46D zL*~j#yJ?)^*%J3!16f)@Y2Z^kS*BzwfAQ7K96rFRIh>#$*$_Io;z>ux@}G98!fWR@ zGTFxv4r~v)Gsd|pF91*-eaZ3Qw1MH$K^7JhWIdX%o$2kCbvGDXy)a?@8T&1dY4`;L z4Kn+f%SSFWE_rpEpL9bnlmYq`D!6F%di<&Hh=+!VI~j)2mfil03T#jJ_s?}VV0_hp z7T9bWxc>Jm2Z0WMU?`Z$xE74Gu~%s{mW!d4uvKCx@WD+gPUQ zV0vQS(Ig++z=EHN)BR44*EDSWIyT~R4$FcF*VEY*8@l=218Q05D2$|fXKFhRgBIEE zdDFB}1dKkoO^7}{5crKX!p?dZWNz$m>1icsXG2N+((x0OIST9Zo^DW_tytvlwXGpn zs8?pJXjEG;T@qrZi%#h93?FP$!&P4JA(&H61tqQi=opRzNpm zkrG}$^t9&XduK*Qa1?355wd8G2CI6QEh@Ua>AsD;7oRUNLPb76m4HG3K?)wF~IyS3`fXuNM>${?wmB zpVz;?6_(Fiadfd{vUCBM*_kt$+F3J+IojI;9L(gc9n3{sEZyzR9o!_mOwFC#tQ{Q~ zP3-`#uK#tP3Q7~Q;4H|wjZHO8h7e4IuBxl&vz2w~D8)w=Wtg31zpZhz%+kzSzL*dV zwp@{WU4i;hJ7c2f1O;7Mz6qRKeASoIv0_bV=i@NMG*l<#+;INk-^`5w@}Dj~;k=|}qM1vq_P z|GpBGe_IKq|LNy9SJhKOQ$c=5L{Dv|Q_lZl=-ky*BFBJLW9&y_C|!vyM~rQx=!vun z?rZJQB5t}Dctmui5i31C_;_}CEn}_W%>oSXtt>@kE1=JW*4*v4tPp;O6 zmAk{)m!)}34pTWg8{i>($%NQ(Tl;QC@J@FfBoc%Gr&m560^kgSfodAFrIjF}aIw)X zoXZ`@IsMkc8_=w%-7`D6Y4e*CG8k%Ud=GXhsTR50jUnm+R*0A(O3UKFg0`K;qp1bl z7``HN=?39ic_kR|^R^~w-*pa?Vj#7|e9F1iRx{GN2?wK!xR1GW!qa=~pjJb-#u1K8 zeR?Y2i-pt}yJq;SCiVHODIvQJX|ZJaT8nO+(?HXbLefulKKgM^B(UIO1r+S=7;kLJ zcH}1J=Px2jsh3Tec&v8Jcbng8;V-`#*UHt?hB(pmOipKwf3Lz8rG$heEB30Sg*2rx zV<|KN86$soN(I!BwO`1n^^uF2*x&vJ$2d$>+`(romzHP|)K_KkO6Hc>_dwMW-M(#S zK(~SiXT1@fvc#U+?|?PniDRm01)f^#55;nhM|wi?oG>yBsa?~?^xTU|fX-R(sTA+5 zaq}-8Tx7zrOy#3*JLIIVsBmHYLdD}!0NP!+ITW+Thn0)8SS!$@)HXwB3tY!fMxc#1 zMp3H?q3eD?u&Njx4;KQ5G>32+GRp1Ee5qMO0lZjaRRu&{W<&~DoJNGkcYF<5(Ab+J zgO>VhBl{okDPn78<%&e2mR{jwVCz5Og;*Z;;3%VvoGo_;HaGLWYF7q#jDX=Z#Ml`H z858YVV$%J|e<1n`%6Vsvq7GmnAV0wW4$5qQ3uR@1i>tW{xrl|ExywIc?fNgYlA?C5 zh$ezAFb5{rQu6i7BSS5*J-|9DQ{6^BVQ{b*lq`xS@RyrsJN?-t=MTMPY;WYeKBCNg z^2|pN!Q^WPJuuO4!|P@jzt&tY1Y8d%FNK5xK(!@`jO2aEA*4 zkO6b|UVBipci?){-Ke=+1;mGlND8)6+P;8sq}UXw2hn;fc7nM>g}GSMWu&v&fqh

iViYT=fZ(|3Ox^$aWPp4a8h24tD<|8-!aK0lHgL$N7Efw}J zVIB!7=T$U`ao1?upi5V4Et*-lTG0XvExbf!ya{cua==$WJyVG(CmA6Of*8E@DSE%L z`V^$qz&RU$7G5mg;8;=#`@rRG`-uS18$0WPN@!v2d{H2sOqP|!(cQ@ zUHo!d>>yFArLPf1q`uBvY32miqShLT1B@gDL4XoVTK&@owOoD)OIHXrYK-a1d$B{v zF^}8D3Y^g%^cnvScOSJR5QNH+BI%d|;J;wWM3~l>${fb8DNPg)wrf|GBP8p%LNGN# z3EaIiItgwtGgT&iYCFy9-LG}bMI|4LdmmJt@V@% zb6B)1kc=T)(|L@0;wr<>=?r04N;E&ef+7C^`wPWtyQe(*pD1pI_&XHy|0gIGHMekd zF_*M4yi6J&Z4LQj65)S zXwdM{SwUo%3SbPwFsHgqF@V|6afT|R6?&S;lw=8% z3}@9B=#JI3@B*#4s!O))~z zc>2_4Q_#&+5V`GFd?88^;c1i7;Vv_I*qt!_Yx*n=;rj!82rrR2rQ8u5(Ejlo{15P% zs~!{%XJ>FmJ})H^I9bn^Re&38H{xA!0l3^89k(oU;bZWXM@kn$#aoS&Y4l^-WEn-fH39Jb9lA%s*WsKJQl?n9B7_~P z-XM&WL7Z!PcoF6_D>V@$CvUIEy=+Z&0kt{szMk=f1|M+r*a43^$$B^MidrT0J;RI` z(?f!O<8UZkm$_Ny$Hth1J#^4ni+im8M9mr&k|3cIgwvjAgjH z8`N&h25xV#v*d$qBX5jkI|xOhQn!>IYZK7l5#^P4M&twe9&Ey@@GxYMxBZq2e7?`q z$~Szs0!g{2fGcp9PZEt|rdQ6bhAgpcLHPz?f-vB?$dc*!9OL?Q8mn7->bFD2Si60* z!O%y)fCdMSV|lkF9w%x~J*A&srMyYY3{=&$}H zGQ4VG_?$2X(0|vT0{=;W$~icCI{b6W{B!Q8xdGhF|D{25G_5_+%s(46lhvNLkik~R z>nr(&C#5wwOzJZQo9m|U<;&Wk!_#q|V>fsmj1g<6%hB{jGoNUPjgJslld>xmODzGjYc?7JSuA?A_QzjDw5AsRgi@Y|Z0{F{!1=!NES-#*f^s4l0Hu zz468))2IY5dmD9pa*(yT5{EyP^G>@ZWumealS-*WeRcZ}B%gxq{MiJ|RyX-^C1V=0 z@iKdrGi1jTe8Ya^x7yyH$kBNvM4R~`fbPq$BzHum-3Zo8C6=KW@||>zsA8-Y9uV5V z#oq-f5L5}V<&wF4@X@<3^C%ptp6+Ce)~hGl`kwj)bsAjmo_GU^r940Z-|`<)oGnh7 zFF0Tde3>ui?8Yj{sF-Z@)yQd~CGZ*w-6p2U<8}JO-sRsVI5dBji`01W8A&3$?}lxBaC&vn0E$c5tW* zX>5(zzZ=qn&!J~KdsPl;P@bmA-Pr8T*)eh_+Dv5=Ma|XSle6t(k8qcgNyar{*ReQ8 zTXwi=8vr>!3Ywr+BhggHDw8ke==NTQVMCK`$69fhzEFB*4+H9LIvdt-#IbhZvpS}} zO3lz;P?zr0*0$%-Rq_y^k(?I{Mk}h@w}cZpMUp|ucs55bcloL2)($u%mXQw({Wzc~ z;6nu5MkjP)0C(@%6Q_I_vsWrfhl7Zpoxw#WoE~r&GOSCz;_ro6i(^hM>I$8y>`!wW z*U^@?B!MMmb89I}2(hcE4zN2G^kwyWCZp5JG>$Ez7zP~D=J^LMjSM)27_0B_X^C(M z`fFT+%DcKlu?^)FCK>QzSnV%IsXVcUFhFdBP!6~se&xxrIxsvySAWu++IrH;FbcY$ z2DWTvSBRfLwdhr0nMx+URA$j3i7_*6BWv#DXfym?ZRDcX9C?cY9sD3q)uBDR3uWg= z(lUIzB)G$Hr!){>E{s4Dew+tb9kvToZp-1&c?y2wn@Z~(VBhqz`cB;{E4(P3N2*nJ z_>~g@;UF2iG{Kt(<1PyePTKahF8<)pozZ*xH~U-kfoAayCwJViIrnqwqO}7{0pHw$ zs2Kx?s#vQr7XZ264>5RNKSL8|Ty^=PsIx^}QqOOcfpGUU4tRkUc|kc7-!Ae6!+B{o~7nFpm3|G5^=0#Bnm6`V}oSQlrX(u%OWnC zoLPy&Q;1Jui&7ST0~#+}I^&?vcE*t47~Xq#YwvA^6^} z`WkC)$AkNub|t@S!$8CBlwbV~?yp&@9h{D|3z-vJXgzRC5^nYm+PyPcgRzAnEi6Q^gslXYRv4nycsy-SJu?lMps-? zV`U*#WnFsdPLL)Q$AmD|0`UaC4ND07+&UmOu!eHruzV|OUox<+Jl|Mr@6~C`T@P%s zW7sgXLF2SSe9Fl^O(I*{9wsFSYb2l%-;&Pi^dpv!{)C3d0AlNY6!4fgmSgj_wQ*7Am7&$z;Jg&wgR-Ih;lUvWS|KTSg!&s_E9_bXBkZvGiC6bFKDWZxsD$*NZ#_8bl zG1P-#@?OQzED7@jlMJTH@V!6k;W>auvft)}g zhoV{7$q=*;=l{O>Q4a@ ziMjf_u*o^PsO)#BjC%0^h>Xp@;5$p{JSYDt)zbb}s{Kbt!T*I@Pk@X0zds6wsefuU zW$XY%yyRGC94=6mf?x+bbA5CDQ2AgW1T-jVAJbm7K(gp+;v6E0WI#kuACgV$r}6L? zd|Tj?^%^*N&b>Dd{Wr$FS2qI#Ucs1yd4N+RBUQiSZGujH`#I)mG&VKoDh=KKFl4=G z&MagXl6*<)$6P}*Tiebpz5L=oMaPrN+caUXRJ`D?=K9!e0f{@D&cZLKN?iNP@X0aF zE(^pl+;*T5qt?1jRC=5PMgV!XNITRLS_=9{CJExaQj;lt!&pdzpK?8p>%Mb+D z?yO*uSung=-`QQ@yX@Hyd4@CI^r{2oiu`%^bNkz+Nkk!IunjwNC|WcqvX~k=><-I3 zDQdbdb|!v+Iz01$w@aMl!R)koD77Xp;eZwzSl-AT zr@Vu{=xvgfq9akRrrM)}=!=xcs+U1JO}{t(avgz`6RqiiX<|hGG1pmop8k6Q+G_mv zJv|RfDheUp2L3=^C=4aCBMBn0aRCU(DQwX-W(RkRwmLeuJYF<0urcaf(=7)JPg<3P zQs!~G)9CT18o!J4{zX{_e}4eS)U-E)0FAt}wEI(c0%HkxgggW;(1E=>J17_hsH^sP z%lT0LGgbUXHx-K*CI-MCrP66UP0PvGqM$MkeLyqHdbgP|_Cm!7te~b8p+e6sQ_3k| zVcwTh6d83ltdnR>D^)BYQpDKlLk3g0Hdcgz2}%qUs9~~Rie)A-BV1mS&naYai#xcZ z(d{8=-LVpTp}2*y)|gR~;qc7fp26}lPcLZ#=JpYcn3AT9(UIdOyg+d(P5T7D&*P}# zQCYplZO5|7+r19%9e`v^vfSS1sbX1c%=w1;oyruXB%Kl$ACgKQ6=qNWLsc=28xJjg zwvsI5-%SGU|3p>&zXVl^vVtQT3o-#$UT9LI@Npz~6=4!>mc431VRNN8od&Ul^+G_kHC`G=6WVWM z%9eWNyy(FTO|A+@x}Ou3CH)oi;t#7rAxdIXfNFwOj_@Y&TGz6P_sqiB`Q6Lxy|Q{`|fgmRG(k+!#b*M+Z9zFce)f-7;?Km5O=LHV9f9_87; zF7%R2B+$?@sH&&-$@tzaPYkw0;=i|;vWdI|Wl3q_Zu>l;XdIw2FjV=;Mq5t1Q0|f< zs08j54Bp`3RzqE=2enlkZxmX6OF+@|2<)A^RNQpBd6o@OXl+i)zO%D4iGiQNuXd+zIR{_lb96{lc~bxsBveIw6umhShTX+3@ZJ=YHh@ zWY3(d0azg;7oHn>H<>?4@*RQbi>SmM=JrHvIG(~BrvI)#W(EAeO6fS+}mxxcc+X~W6&YVl86W9WFSS}Vz-f9vS?XUDBk)3TcF z8V?$4Q)`uKFq>xT=)Y9mMFVTUk*NIA!0$?RP6Ig0TBmUFrq*Q-Agq~DzxjStQyJ({ zBeZ;o5qUUKg=4Hypm|}>>L=XKsZ!F$yNTDO)jt4H0gdQ5$f|d&bnVCMMXhNh)~mN z@_UV6D7MVlsWz+zM+inZZp&P4fj=tm6fX)SG5H>OsQf_I8c~uGCig$GzuwViK54bcgL;VN|FnyQl>Ed7(@>=8$a_UKIz|V6CeVSd2(P z0Uu>A8A+muM%HLFJQ9UZ5c)BSAv_zH#1f02x?h9C}@pN@6{>UiAp>({Fn(T9Q8B z^`zB;kJ5b`>%dLm+Ol}ty!3;8f1XDSVX0AUe5P#@I+FQ-`$(a;zNgz)4x5hz$Hfbg z!Q(z26wHLXko(1`;(BAOg_wShpX0ixfWq3ponndY+u%1gyX)_h=v1zR#V}#q{au6; z!3K=7fQwnRfg6FXtNQmP>`<;!N137paFS%y?;lb1@BEdbvQHYC{976l`cLqn;b8lp zIDY>~m{gDj(wfnK!lpW6pli)HyLEiUrNc%eXTil|F2s(AY+LW5hkKb>TQ3|Q4S9rr zpDs4uK_co6XPsn_z$LeS{K4jFF`2>U`tbgKdyDne`xmR<@6AA+_hPNKCOR-Zqv;xk zu5!HsBUb^!4uJ7v0RuH-7?l?}b=w5lzzXJ~gZcxRKOovSk@|#V+MuX%Y+=;14i*%{)_gSW9(#4%)AV#3__kac1|qUy!uyP{>?U#5wYNq}y$S9pCc zFc~4mgSC*G~j0u#qqp9 z${>3HV~@->GqEhr_Xwoxq?Hjn#=s2;i~g^&Hn|aDKpA>Oc%HlW(KA1?BXqpxB;Ydx)w;2z^MpjJ(Qi(X!$5RC z*P{~%JGDQqojV>2JbEeCE*OEu!$XJ>bWA9Oa_Hd;y)F%MhBRi*LPcdqR8X`NQ&1L# z5#9L*@qxrx8n}LfeB^J{%-?SU{FCwiWyHp682F+|pa+CQa3ZLzBqN1{)h4d6+vBbV zC#NEbQLC;}me3eeYnOG*nXOJZEU$xLZ1<1Y=7r0(-U0P6-AqwMAM`a(Ed#7vJkn6plb4eI4?2y3yOTGmmDQ!z9`wzbf z_OY#0@5=bnep;MV0X_;;SJJWEf^E6Bd^tVJ9znWx&Ks8t*B>AM@?;D4oWUGc z!H*`6d7Cxo6VuyS4Eye&L1ZRhrRmN6Lr`{NL(wDbif|y&z)JN>Fl5#Wi&mMIr5i;x zBx}3YfF>>8EC(fYnmpu~)CYHuHCyr5*`ECap%t@y=jD>!_%3iiE|LN$mK9>- zHdtpy8fGZtkZF?%TW~29JIAfi2jZT8>OA7=h;8T{{k?c2`nCEx9$r zS+*&vt~2o^^J+}RDG@+9&M^K*z4p{5#IEVbz`1%`m5c2};aGt=V?~vIM}ZdPECDI)47|CWBCfDWUbxBCnmYivQ*0Nu_xb*C>~C9(VjHM zxe<*D<#dQ8TlpMX2c@M<9$w!RP$hpG4cs%AI){jp*Sj|*`m)5(Bw*A0$*i-(CA5#%>a)$+jI2C9r6|(>J8InryENI z$NohnxDUB;wAYDwrb*!N3noBTKPpPN}~09SEL18tkG zxgz(RYU_;DPT{l?Q$+eaZaxnsWCA^ds^0PVRkIM%bOd|G2IEBBiz{&^JtNsODs;5z zICt_Zj8wo^KT$7Bg4H+y!Df#3mbl%%?|EXe!&(Vmac1DJ*y~3+kRKAD=Ovde4^^%~ zw<9av18HLyrf*_>Slp;^i`Uy~`mvBjZ|?Ad63yQa#YK`4+c6;pW4?XIY9G1(Xh9WO8{F-Aju+nS9Vmv=$Ac0ienZ+p9*O%NG zMZKy5?%Z6TAJTE?o5vEr0r>f>hb#2w2U3DL64*au_@P!J!TL`oH2r*{>ffu6|A7tv zL4juf$DZ1MW5ZPsG!5)`k8d8c$J$o;%EIL0va9&GzWvkS%ZsGb#S(?{!UFOZ9<$a| zY|a+5kmD5N&{vRqkgY>aHsBT&`rg|&kezoD)gP0fsNYHsO#TRc_$n6Lf1Z{?+DLziXlHrq4sf(!>O{?Tj;Eh@%)+nRE_2VxbN&&%%caU#JDU%vL3}Cb zsb4AazPI{>8H&d=jUaZDS$-0^AxE@utGs;-Ez_F(qC9T=UZX=>ok2k2 ziTn{K?y~a5reD2A)P${NoI^>JXn>`IeArow(41c-Wm~)wiryEP(OS{YXWi7;%dG9v zI?mwu1MxD{yp_rrk!j^cKM)dc4@p4Ezyo%lRN|XyD}}>v=Xoib0gOcdXrQ^*61HNj z=NP|pd>@yfvr-=m{8$3A8TQGMTE7g=z!%yt`8`Bk-0MMwW~h^++;qyUP!J~ykh1GO z(FZ59xuFR$(WE;F@UUyE@Sp>`aVNjyj=Ty>_Vo}xf`e7`F;j-IgL5`1~-#70$9_=uBMq!2&1l zomRgpD58@)YYfvLtPW}{C5B35R;ZVvB<<#)x%srmc_S=A7F@DW8>QOEGwD6suhwCg z>Pa+YyULhmw%BA*4yjDp|2{!T98~<6Yfd(wo1mQ!KWwq0eg+6)o1>W~f~kL<-S+P@$wx*zeI|1t7z#Sxr5 zt6w+;YblPQNplq4Z#T$GLX#j6yldXAqj>4gAnnWtBICUnA&-dtnlh=t0Ho_vEKwV` z)DlJi#!@nkYV#$!)@>udAU*hF?V`2$Hf=V&6PP_|r#Iv*J$9)pF@X3`k;5})9^o4y z&)~?EjX5yX12O(BsFy-l6}nYeuKkiq`u9145&3Ssg^y{5G3Pse z9w(YVa0)N-fLaBq1`P!_#>SS(8fh_5!f{UrgZ~uEdeMJIz7DzI5!NHHqQtm~#CPij z?=N|J>nPR6_sL7!f4hD_|KH`vf8(Wpnj-(gPWH+ZvID}%?~68SwhPTC3u1_cB`otq z)U?6qo!ZLi5b>*KnYHWW=3F!p%h1;h{L&(Q&{qY6)_qxNfbP6E3yYpW!EO+IW3?@J z);4>g4gnl^8klu7uA>eGF6rIGSynacogr)KUwE_R4E5Xzi*Qir@b-jy55-JPC8c~( zo!W8y9OGZ&`xmc8;=4-U9=h{vCqfCNzYirONmGbRQlR`WWlgnY+1wCXbMz&NT~9*| z6@FrzP!LX&{no2!Ln_3|I==_4`@}V?4a;YZKTdw;vT<+K+z=uWbW(&bXEaWJ^W8Td z-3&1bY^Z*oM<=M}LVt>_j+p=2Iu7pZmbXrhQ_k)ysE9yXKygFNw$5hwDn(M>H+e1&9BM5!|81vd%r%vEm zqxY3?F@fb6O#5UunwgAHR9jp_W2zZ}NGp2%mTW@(hz7$^+a`A?mb8|_G*GNMJ) zjqegXQio=i@AINre&%ofexAr95aop5C+0MZ0m-l=MeO8m3epm7U%vZB8+I+C*iNFM z#T3l`gknX;D$-`2XT^Cg*vrv=RH+P;_dfF++cP?B_msQI4j+lt&rX2)3GaJx%W*Nn zkML%D{z5tpHH=dksQ*gzc|}gzW;lwAbxoR07VNgS*-c3d&8J|;@3t^ zVUz*J*&r7DFRuFVDCJDK8V9NN5hvpgGjwx+5n)qa;YCKe8TKtdnh{I7NU9BCN!0dq zczrBk8pE{{@vJa9ywR@mq*J=v+PG;?fwqlJVhijG!3VmIKs>9T6r7MJpC)m!Tc#>g zMtVsU>wbwFJEfwZ{vB|ZlttNe83)$iz`~#8UJ^r)lJ@HA&G#}W&ZH*;k{=TavpjWE z7hdyLZPf*X%Gm}i`Y{OGeeu^~nB8=`{r#TUrM-`;1cBvEd#d!kPqIgYySYhN-*1;L z^byj%Yi}Gx)Wnkosi337BKs}+5H5dth1JA{Ir-JKN$7zC)*}hqeoD(WfaUDPT>0`- z(6sa0AoIqASwF`>hP}^|)a_j2s^PQn*qVC{Q}htR z5-)duBFXT_V56-+UohKXlq~^6uf!6sA#ttk1o~*QEy_Y-S$gAvq47J9Vtk$5oA$Ct zYhYJ@8{hsC^98${!#Ho?4y5MCa7iGnfz}b9jE~h%EAAv~Qxu)_rAV;^cygV~5r_~?l=B`zObj7S=H=~$W zPtI_m%g$`kL_fVUk9J@>EiBH zOO&jtn~&`hIFMS5S`g8w94R4H40mdNUH4W@@XQk1sr17b{@y|JB*G9z1|CrQjd+GX z6+KyURG3;!*BQrentw{B2R&@2&`2}n(z-2&X7#r!{yg@Soy}cRD~j zj9@UBW+N|4HW4AWapy4wfUI- zZ`gSL6DUlgj*f1hSOGXG0IVH8HxK?o2|3HZ;KW{K+yPAlxtb)NV_2AwJm|E)FRs&& z=c^e7bvUsztY|+f^k7NXs$o1EUq>cR7C0$UKi6IooHWlK_#?IWDkvywnzg&ThWo^? z2O_N{5X39#?eV9l)xI(>@!vSB{DLt*oY!K1R8}_?%+0^C{d9a%N4 zoxHVT1&Lm|uDX%$QrBun5e-F`HJ^T$ zmzv)p@4ZHd_w9!%Hf9UYNvGCw2TTTbrj9pl+T9%-_-}L(tES>Or-}Z4F*{##n3~L~TuxjirGuIY#H7{%$E${?p{Q01 zi6T`n;rbK1yIB9jmQNycD~yZq&mbIsFWHo|ZAChSFPQa<(%d8mGw*V3fh|yFoxOOiWJd(qvVb!Z$b88cg->N=qO*4k~6;R==|9ihg&riu#P~s4Oap9O7f%crSr^rljeIfXDEg>wi)&v*a%7zpz<9w z*r!3q9J|390x`Zk;g$&OeN&ctp)VKRpDSV@kU2Q>jtok($Y-*x8_$2piTxun81@vt z!Vj?COa0fg2RPXMSIo26T=~0d`{oGP*eV+$!0I<(4azk&Vj3SiG=Q!6mX0p$z7I}; z9BJUFgT-K9MQQ-0@Z=^7R<{bn2Fm48endsSs`V7_@%8?Bxkqv>BDoVcj?K#dV#uUP zL1ND~?D-|VGKe3Rw_7-Idpht>H6XRLh*U7epS6byiGvJpr%d}XwfusjH9g;Z98H`x zyde%%5mhGOiL4wljCaWCk-&uE4_OOccb9c!ZaWt4B(wYl!?vyzl%7n~QepN&eFUrw zFIOl9c({``6~QD+43*_tzP{f2x41h(?b43^y6=iwyB)2os5hBE!@YUS5?N_tXd=h( z)WE286Fbd>R4M^P{!G)f;h<3Q>Fipuy+d2q-)!RyTgt;wr$(?9ox3;q+{E*ZQHhOn;lM`cjnu9 zXa48ks-v(~b*;MAI<>YZH(^NV8vjb34beE<_cwKlJoR;k6lJNSP6v}uiyRD?|0w+X@o1ONrH8a$fCxXpf? z?$DL0)7|X}Oc%h^zrMKWc-NS9I0Utu@>*j}b@tJ=ixQSJ={4@854wzW@E>VSL+Y{i z#0b=WpbCZS>kUCO_iQz)LoE>P5LIG-hv9E+oG}DtlIDF>$tJ1aw9^LuhLEHt?BCj& z(O4I8v1s#HUi5A>nIS-JK{v!7dJx)^Yg%XjNmlkWAq2*cv#tHgz`Y(bETc6CuO1VkN^L-L3j_x<4NqYb5rzrLC-7uOv z!5e`GZt%B782C5-fGnn*GhDF$%(qP<74Z}3xx+{$4cYKy2ikxI7B2N+2r07DN;|-T->nU&!=Cm#rZt%O_5c&1Z%nlWq3TKAW0w zQqemZw_ue--2uKQsx+niCUou?HjD`xhEjjQd3%rrBi82crq*~#uA4+>vR<_S{~5ce z-2EIl?~s z1=GVL{NxP1N3%=AOaC}j_Fv=ur&THz zyO!d9kHq|c73kpq`$+t+8Bw7MgeR5~`d7ChYyGCBWSteTB>8WAU(NPYt2Dk`@#+}= zI4SvLlyk#pBgVigEe`?NG*vl7V6m+<}%FwPV=~PvvA)=#ths==DRTDEYh4V5}Cf$z@#;< zyWfLY_5sP$gc3LLl2x+Ii)#b2nhNXJ{R~vk`s5U7Nyu^3yFg&D%Txwj6QezMX`V(x z=C`{76*mNb!qHHs)#GgGZ_7|vkt9izl_&PBrsu@}L`X{95-2jf99K)0=*N)VxBX2q z((vkpP2RneSIiIUEnGb?VqbMb=Zia+rF~+iqslydE34cSLJ&BJW^3knX@M;t*b=EA zNvGzv41Ld_T+WT#XjDB840vovUU^FtN_)G}7v)1lPetgpEK9YS^OWFkPoE{ovj^=@ zO9N$S=G$1ecndT_=5ehth2Lmd1II-PuT~C9`XVePw$y8J#dpZ?Tss<6wtVglm(Ok7 z3?^oi@pPio6l&!z8JY(pJvG=*pI?GIOu}e^EB6QYk$#FJQ%^AIK$I4epJ+9t?KjqA+bkj&PQ*|vLttme+`9G=L% ziadyMw_7-M)hS(3E$QGNCu|o23|%O+VN7;Qggp?PB3K-iSeBa2b}V4_wY`G1Jsfz4 z9|SdB^;|I8E8gWqHKx!vj_@SMY^hLEIbSMCuE?WKq=c2mJK z8LoG-pnY!uhqFv&L?yEuxo{dpMTsmCn)95xanqBrNPTgXP((H$9N${Ow~Is-FBg%h z53;|Y5$MUN)9W2HBe2TD`ct^LHI<(xWrw}$qSoei?}s)&w$;&!14w6B6>Yr6Y8b)S z0r71`WmAvJJ`1h&poLftLUS6Ir zC$bG9!Im_4Zjse)#K=oJM9mHW1{%l8sz$1o?ltdKlLTxWWPB>Vk22czVt|1%^wnN@*!l)}?EgtvhC>vlHm^t+ogpgHI1_$1ox9e;>0!+b(tBrmXRB`PY1vp-R**8N7 zGP|QqI$m(Rdu#=(?!(N}G9QhQ%o!aXE=aN{&wtGP8|_qh+7a_j_sU5|J^)vxq;# zjvzLn%_QPHZZIWu1&mRAj;Sa_97p_lLq_{~j!M9N^1yp3U_SxRqK&JnR%6VI#^E12 z>CdOVI^_9aPK2eZ4h&^{pQs}xsijXgFYRIxJ~N7&BB9jUR1fm!(xl)mvy|3e6-B3j zJn#ajL;bFTYJ2+Q)tDjx=3IklO@Q+FFM}6UJr6km7hj7th9n_&JR7fnqC!hTZoM~T zBeaVFp%)0cbPhejX<8pf5HyRUj2>aXnXBqDJe73~J%P(2C?-RT{c3NjE`)om! zl$uewSgWkE66$Kb34+QZZvRn`fob~Cl9=cRk@Es}KQm=?E~CE%spXaMO6YmrMl%9Q zlA3Q$3|L1QJ4?->UjT&CBd!~ru{Ih^in&JXO=|<6J!&qp zRe*OZ*cj5bHYlz!!~iEKcuE|;U4vN1rk$xq6>bUWD*u(V@8sG^7>kVuo(QL@Ki;yL zWC!FT(q{E8#on>%1iAS0HMZDJg{Z{^!De(vSIq&;1$+b)oRMwA3nc3mdTSG#3uYO_ z>+x;7p4I;uHz?ZB>dA-BKl+t-3IB!jBRgdvAbW!aJ(Q{aT>+iz?91`C-xbe)IBoND z9_Xth{6?(y3rddwY$GD65IT#f3<(0o#`di{sh2gm{dw*#-Vnc3r=4==&PU^hCv$qd zjw;>i&?L*Wq#TxG$mFIUf>eK+170KG;~+o&1;Tom9}}mKo23KwdEM6UonXgc z!6N(@k8q@HPw{O8O!lAyi{rZv|DpgfU{py+j(X_cwpKqcalcqKIr0kM^%Br3SdeD> zHSKV94Yxw;pjzDHo!Q?8^0bb%L|wC;4U^9I#pd5O&eexX+Im{ z?jKnCcsE|H?{uGMqVie_C~w7GX)kYGWAg%-?8|N_1#W-|4F)3YTDC+QSq1s!DnOML3@d`mG%o2YbYd#jww|jD$gotpa)kntakp#K;+yo-_ZF9qrNZw<%#C zuPE@#3RocLgPyiBZ+R_-FJ_$xP!RzWm|aN)S+{$LY9vvN+IW~Kf3TsEIvP+B9Mtm! zpfNNxObWQpLoaO&cJh5>%slZnHl_Q~(-Tfh!DMz(dTWld@LG1VRF`9`DYKhyNv z2pU|UZ$#_yUx_B_|MxUq^glT}O5Xt(Vm4Mr02><%C)@v;vPb@pT$*yzJ4aPc_FZ3z z3}PLoMBIM>q_9U2rl^sGhk1VUJ89=*?7|v`{!Z{6bqFMq(mYiA?%KbsI~JwuqVA9$H5vDE+VocjX+G^%bieqx->s;XWlKcuv(s%y%D5Xbc9+ zc(_2nYS1&^yL*ey664&4`IoOeDIig}y-E~_GS?m;D!xv5-xwz+G`5l6V+}CpeJDi^ z%4ed$qowm88=iYG+(`ld5Uh&>Dgs4uPHSJ^TngXP_V6fPyl~>2bhi20QB%lSd#yYn zO05?KT1z@?^-bqO8Cg`;ft>ilejsw@2%RR7;`$Vs;FmO(Yr3Fp`pHGr@P2hC%QcA|X&N2Dn zYf`MqXdHi%cGR@%y7Rg7?d3?an){s$zA{!H;Ie5exE#c~@NhQUFG8V=SQh%UxUeiV zd7#UcYqD=lk-}sEwlpu&H^T_V0{#G?lZMxL7ih_&{(g)MWBnCZxtXg znr#}>U^6!jA%e}@Gj49LWG@*&t0V>Cxc3?oO7LSG%~)Y5}f7vqUUnQ;STjdDU}P9IF9d9<$;=QaXc zL1^X7>fa^jHBu_}9}J~#-oz3Oq^JmGR#?GO7b9a(=R@fw@}Q{{@`Wy1vIQ#Bw?>@X z-_RGG@wt|%u`XUc%W{J z>iSeiz8C3H7@St3mOr_mU+&bL#Uif;+Xw-aZdNYUpdf>Rvu0i0t6k*}vwU`XNO2he z%miH|1tQ8~ZK!zmL&wa3E;l?!!XzgV#%PMVU!0xrDsNNZUWKlbiOjzH-1Uoxm8E#r`#2Sz;-o&qcqB zC-O_R{QGuynW14@)7&@yw1U}uP(1cov)twxeLus0s|7ayrtT8c#`&2~Fiu2=R;1_4bCaD=*E@cYI>7YSnt)nQc zohw5CsK%m?8Ack)qNx`W0_v$5S}nO|(V|RZKBD+btO?JXe|~^Qqur%@eO~<8-L^9d z=GA3-V14ng9L29~XJ>a5k~xT2152zLhM*@zlp2P5Eu}bywkcqR;ISbas&#T#;HZSf z2m69qTV(V@EkY(1Dk3`}j)JMo%ZVJ*5eB zYOjIisi+igK0#yW*gBGj?@I{~mUOvRFQR^pJbEbzFxTubnrw(Muk%}jI+vXmJ;{Q6 zrSobKD>T%}jV4Ub?L1+MGOD~0Ir%-`iTnWZN^~YPrcP5y3VMAzQ+&en^VzKEb$K!Q z<7Dbg&DNXuow*eD5yMr+#08nF!;%4vGrJI++5HdCFcGLfMW!KS*Oi@=7hFwDG!h2< zPunUEAF+HncQkbfFj&pbzp|MU*~60Z(|Ik%Tn{BXMN!hZOosNIseT?R;A`W?=d?5X zK(FB=9mZusYahp|K-wyb={rOpdn=@;4YI2W0EcbMKyo~-#^?h`BA9~o285%oY zfifCh5Lk$SY@|2A@a!T2V+{^!psQkx4?x0HSV`(w9{l75QxMk!)U52Lbhn{8ol?S) zCKo*7R(z!uk<6*qO=wh!Pul{(qq6g6xW;X68GI_CXp`XwO zxuSgPRAtM8K7}5E#-GM!*ydOOG_{A{)hkCII<|2=ma*71ci_-}VPARm3crFQjLYV! z9zbz82$|l01mv`$WahE2$=fAGWkd^X2kY(J7iz}WGS z@%MyBEO=A?HB9=^?nX`@nh;7;laAjs+fbo!|K^mE!tOB>$2a_O0y-*uaIn8k^6Y zSbuv;5~##*4Y~+y7Z5O*3w4qgI5V^17u*ZeupVGH^nM&$qmAk|anf*>r zWc5CV;-JY-Z@Uq1Irpb^O`L_7AGiqd*YpGUShb==os$uN3yYvb`wm6d=?T*it&pDk zo`vhw)RZX|91^^Wa_ti2zBFyWy4cJu#g)_S6~jT}CC{DJ_kKpT`$oAL%b^!2M;JgT zM3ZNbUB?}kP(*YYvXDIH8^7LUxz5oE%kMhF!rnPqv!GiY0o}NR$OD=ITDo9r%4E>E0Y^R(rS^~XjWyVI6 zMOR5rPXhTp*G*M&X#NTL`Hu*R+u*QNoiOKg4CtNPrjgH>c?Hi4MUG#I917fx**+pJfOo!zFM&*da&G_x)L(`k&TPI*t3e^{crd zX<4I$5nBQ8Ax_lmNRa~E*zS-R0sxkz`|>7q_?*e%7bxqNm3_eRG#1ae3gtV9!fQpY z+!^a38o4ZGy9!J5sylDxZTx$JmG!wg7;>&5H1)>f4dXj;B+@6tMlL=)cLl={jLMxY zbbf1ax3S4>bwB9-$;SN2?+GULu;UA-35;VY*^9Blx)Jwyb$=U!D>HhB&=jSsd^6yw zL)?a|>GxU!W}ocTC(?-%z3!IUhw^uzc`Vz_g>-tv)(XA#JK^)ZnC|l1`@CdX1@|!| z_9gQ)7uOf?cR@KDp97*>6X|;t@Y`k_N@)aH7gY27)COv^P3ya9I{4z~vUjLR9~z1Z z5=G{mVtKH*&$*t0@}-i_v|3B$AHHYale7>E+jP`ClqG%L{u;*ff_h@)al?RuL7tOO z->;I}>%WI{;vbLP3VIQ^iA$4wl6@0sDj|~112Y4OFjMs`13!$JGkp%b&E8QzJw_L5 zOnw9joc0^;O%OpF$Qp)W1HI!$4BaXX84`%@#^dk^hFp^pQ@rx4g(8Xjy#!X%+X5Jd@fs3amGT`}mhq#L97R>OwT5-m|h#yT_-v@(k$q7P*9X~T*3)LTdzP!*B} z+SldbVWrrwQo9wX*%FyK+sRXTa@O?WM^FGWOE?S`R(0P{<6p#f?0NJvnBia?k^fX2 zNQs7K-?EijgHJY}&zsr;qJ<*PCZUd*x|dD=IQPUK_nn)@X4KWtqoJNHkT?ZWL_hF? zS8lp2(q>;RXR|F;1O}EE#}gCrY~#n^O`_I&?&z5~7N;zL0)3Tup`%)oHMK-^r$NT% zbFg|o?b9w(q@)6w5V%si<$!U<#}s#x@0aX-hP>zwS#9*75VXA4K*%gUc>+yzupTDBOKH8WR4V0pM(HrfbQ&eJ79>HdCvE=F z|J>s;;iDLB^3(9}?biKbxf1$lI!*Z%*0&8UUq}wMyPs_hclyQQi4;NUY+x2qy|0J; zhn8;5)4ED1oHwg+VZF|80<4MrL97tGGXc5Sw$wAI#|2*cvQ=jB5+{AjMiDHmhUC*a zlmiZ`LAuAn_}hftXh;`Kq0zblDk8?O-`tnilIh|;3lZp@F_osJUV9`*R29M?7H{Fy z`nfVEIDIWXmU&YW;NjU8)EJpXhxe5t+scf|VXM!^bBlwNh)~7|3?fWwo_~ZFk(22% zTMesYw+LNx3J-_|DM~`v93yXe=jPD{q;li;5PD?Dyk+b? zo21|XpT@)$BM$%F=P9J19Vi&1#{jM3!^Y&fr&_`toi`XB1!n>sbL%U9I5<7!@?t)~ z;&H%z>bAaQ4f$wIzkjH70;<8tpUoxzKrPhn#IQfS%9l5=Iu))^XC<58D!-O z{B+o5R^Z21H0T9JQ5gNJnqh#qH^na|z92=hONIM~@_iuOi|F>jBh-?aA20}Qx~EpDGElELNn~|7WRXRFnw+Wdo`|# zBpU=Cz3z%cUJ0mx_1($X<40XEIYz(`noWeO+x#yb_pwj6)R(__%@_Cf>txOQ74wSJ z0#F3(zWWaR-jMEY$7C*3HJrohc79>MCUu26mfYN)f4M~4gD`}EX4e}A!U}QV8!S47 z6y-U-%+h`1n`*pQuKE%Av0@)+wBZr9mH}@vH@i{v(m-6QK7Ncf17x_D=)32`FOjjo zg|^VPf5c6-!FxN{25dvVh#fog=NNpXz zfB$o+0jbRkHH{!TKhE709f+jI^$3#v1Nmf80w`@7-5$1Iv_`)W^px8P-({xwb;D0y z7LKDAHgX<84?l!I*Dvi2#D@oAE^J|g$3!)x1Ua;_;<@#l1fD}lqU2_tS^6Ht$1Wl} zBESo7o^)9-Tjuz$8YQSGhfs{BQV6zW7dA?0b(Dbt=UnQs&4zHfe_sj{RJ4uS-vQpC zX;Bbsuju4%!o8?&m4UZU@~ZZjeFF6ex2ss5_60_JS_|iNc+R0GIjH1@Z z=rLT9%B|WWgOrR7IiIwr2=T;Ne?30M!@{%Qf8o`!>=s<2CBpCK_TWc(DX51>e^xh8 z&@$^b6CgOd7KXQV&Y4%}_#uN*mbanXq(2=Nj`L7H7*k(6F8s6{FOw@(DzU`4-*77{ zF+dxpv}%mFpYK?>N_2*#Y?oB*qEKB}VoQ@bzm>ptmVS_EC(#}Lxxx730trt0G)#$b zE=wVvtqOct1%*9}U{q<)2?{+0TzZzP0jgf9*)arV)*e!f`|jgT{7_9iS@e)recI#z zbzolURQ+TOzE!ymqvBY7+5NnAbWxvMLsLTwEbFqW=CPyCsmJ}P1^V30|D5E|p3BC5 z)3|qgw@ra7aXb-wsa|l^in~1_fm{7bS9jhVRkYVO#U{qMp z)Wce+|DJ}4<2gp8r0_xfZpMo#{Hl2MfjLcZdRB9(B(A(f;+4s*FxV{1F|4d`*sRNd zp4#@sEY|?^FIJ;tmH{@keZ$P(sLh5IdOk@k^0uB^BWr@pk6mHy$qf&~rI>P*a;h0C{%oA*i!VjWn&D~O#MxN&f@1Po# zKN+ zrGrkSjcr?^R#nGl<#Q722^wbYcgW@{+6CBS<1@%dPA8HC!~a`jTz<`g_l5N1M@9wn9GOAZ>nqNgq!yOCbZ@1z`U_N`Z>}+1HIZxk*5RDc&rd5{3qjRh8QmT$VyS;jK z;AF+r6XnnCp=wQYoG|rT2@8&IvKq*IB_WvS%nt%e{MCFm`&W*#LXc|HrD?nVBo=(8*=Aq?u$sDA_sC_RPDUiQ+wnIJET8vx$&fxkW~kP9qXKt zozR)@xGC!P)CTkjeWvXW5&@2?)qt)jiYWWBU?AUtzAN}{JE1I)dfz~7$;}~BmQF`k zpn11qmObXwRB8&rnEG*#4Xax3XBkKlw(;tb?Np^i+H8m(Wyz9k{~ogba@laiEk;2! zV*QV^6g6(QG%vX5Um#^sT&_e`B1pBW5yVth~xUs#0}nv?~C#l?W+9Lsb_5)!71rirGvY zTIJ$OPOY516Y|_014sNv+Z8cc5t_V=i>lWV=vNu#!58y9Zl&GsMEW#pPYPYGHQ|;vFvd*9eM==$_=vc7xnyz0~ zY}r??$<`wAO?JQk@?RGvkWVJlq2dk9vB(yV^vm{=NVI8dhsX<)O(#nr9YD?I?(VmQ z^r7VfUBn<~p3()8yOBjm$#KWx!5hRW)5Jl7wY@ky9lNM^jaT##8QGVsYeaVywmpv>X|Xj7gWE1Ezai&wVLt3p)k4w~yrskT-!PR!kiyQlaxl(( zXhF%Q9x}1TMt3~u@|#wWm-Vq?ZerK={8@~&@9r5JW}r#45#rWii};t`{5#&3$W)|@ zbAf2yDNe0q}NEUvq_Quq3cTjcw z@H_;$hu&xllCI9CFDLuScEMg|x{S7GdV8<&Mq=ezDnRZAyX-8gv97YTm0bg=d)(>N z+B2FcqvI9>jGtnK%eO%y zoBPkJTk%y`8TLf4)IXPBn`U|9>O~WL2C~C$z~9|0m*YH<-vg2CD^SX#&)B4ngOSG$ zV^wmy_iQk>dfN@Pv(ckfy&#ak@MLC7&Q6Ro#!ezM*VEh`+b3Jt%m(^T&p&WJ2Oqvj zs-4nq0TW6cv~(YI$n0UkfwN}kg3_fp?(ijSV#tR9L0}l2qjc7W?i*q01=St0eZ=4h zyGQbEw`9OEH>NMuIe)hVwYHsGERWOD;JxEiO7cQv%pFCeR+IyhwQ|y@&^24k+|8fD zLiOWFNJ2&vu2&`Jv96_z-Cd5RLgmeY3*4rDOQo?Jm`;I_(+ejsPM03!ly!*Cu}Cco zrQSrEDHNyzT(D5s1rZq!8#?f6@v6dB7a-aWs(Qk>N?UGAo{gytlh$%_IhyL7h?DLXDGx zgxGEBQoCAWo-$LRvM=F5MTle`M})t3vVv;2j0HZY&G z22^iGhV@uaJh(XyyY%} zd4iH_UfdV#T=3n}(Lj^|n;O4|$;xhu*8T3hR1mc_A}fK}jfZ7LX~*n5+`8N2q#rI$ z@<_2VANlYF$vIH$ zl<)+*tIWW78IIINA7Rr7i{<;#^yzxoLNkXL)eSs=%|P>$YQIh+ea_3k z_s7r4%j7%&*NHSl?R4k%1>Z=M9o#zxY!n8sL5>BO-ZP;T3Gut>iLS@U%IBrX6BA3k z)&@q}V8a{X<5B}K5s(c(LQ=%v1ocr`t$EqqY0EqVjr65usa=0bkf|O#ky{j3)WBR(((L^wmyHRzoWuL2~WTC=`yZ zn%VX`L=|Ok0v7?s>IHg?yArBcync5rG#^+u)>a%qjES%dRZoIyA8gQ;StH z1Ao7{<&}6U=5}4v<)1T7t!J_CL%U}CKNs-0xWoTTeqj{5{?Be$L0_tk>M9o8 zo371}S#30rKZFM{`H_(L`EM9DGp+Mifk&IP|C2Zu_)Ghr4Qtpmkm1osCf@%Z$%t+7 zYH$Cr)Ro@3-QDeQJ8m+x6%;?YYT;k6Z0E-?kr>x33`H%*ueBD7Zx~3&HtWn0?2Wt} zTG}*|v?{$ajzt}xPzV%lL1t-URi8*Zn)YljXNGDb>;!905Td|mpa@mHjIH%VIiGx- zd@MqhpYFu4_?y5N4xiHn3vX&|e6r~Xt> zZG`aGq|yTNjv;9E+Txuoa@A(9V7g?1_T5FzRI;!=NP1Kqou1z5?%X~Wwb{trRfd>i z8&y^H)8YnKyA_Fyx>}RNmQIczT?w2J4SNvI{5J&}Wto|8FR(W;Qw#b1G<1%#tmYzQ zQ2mZA-PAdi%RQOhkHy9Ea#TPSw?WxwL@H@cbkZwIq0B!@ns}niALidmn&W?!Vd4Gj zO7FiuV4*6Mr^2xlFSvM;Cp_#r8UaqIzHJQg_z^rEJw&OMm_8NGAY2)rKvki|o1bH~ z$2IbfVeY2L(^*rMRU1lM5Y_sgrDS`Z??nR2lX;zyR=c%UyGb*%TC-Dil?SihkjrQy~TMv6;BMs7P8il`H7DmpVm@rJ;b)hW)BL)GjS154b*xq-NXq2cwE z^;VP7ua2pxvCmxrnqUYQMH%a%nHmwmI33nJM(>4LznvY*k&C0{8f*%?zggpDgkuz&JBx{9mfb@wegEl2v!=}Sq2Gaty0<)UrOT0{MZtZ~j5y&w zXlYa_jY)I_+VA-^#mEox#+G>UgvM!Ac8zI<%JRXM_73Q!#i3O|)lOP*qBeJG#BST0 zqohi)O!|$|2SeJQo(w6w7%*92S})XfnhrH_Z8qe!G5>CglP=nI7JAOW?(Z29;pXJ9 zR9`KzQ=WEhy*)WH>$;7Cdz|>*i>=##0bB)oU0OR>>N<21e4rMCHDemNi2LD>Nc$;& zQRFthpWniC1J6@Zh~iJCoLOxN`oCKD5Q4r%ynwgUKPlIEd#?QViIqovY|czyK8>6B zSP%{2-<;%;1`#0mG^B(8KbtXF;Nf>K#Di72UWE4gQ%(_26Koiad)q$xRL~?pN71ZZ zujaaCx~jXjygw;rI!WB=xrOJO6HJ!!w}7eiivtCg5K|F6$EXa)=xUC za^JXSX98W`7g-tm@uo|BKj39Dl;sg5ta;4qjo^pCh~{-HdLl6qI9Ix6f$+qiZ$}s= zNguKrU;u+T@ko(Vr1>)Q%h$?UKXCY>3se%&;h2osl2D zE4A9bd7_|^njDd)6cI*FupHpE3){4NQ*$k*cOWZ_?CZ>Z4_fl@n(mMnYK62Q1d@+I zr&O))G4hMihgBqRIAJkLdk(p(D~X{-oBUA+If@B}j& zsHbeJ3RzTq96lB7d($h$xTeZ^gP0c{t!Y0c)aQE;$FY2!mACg!GDEMKXFOPI^)nHZ z`aSPJpvV0|bbrzhWWkuPURlDeN%VT8tndV8?d)eN*i4I@u zVKl^6{?}A?P)Fsy?3oi#clf}L18t;TjNI2>eI&(ezDK7RyqFxcv%>?oxUlonv(px) z$vnPzRH`y5A(x!yOIfL0bmgeMQB$H5wenx~!ujQK*nUBW;@Em&6Xv2%s(~H5WcU2R z;%Nw<$tI)a`Ve!>x+qegJnQsN2N7HaKzrFqM>`6R*gvh%O*-%THt zrB$Nk;lE;z{s{r^PPm5qz(&lM{sO*g+W{sK+m3M_z=4=&CC>T`{X}1Vg2PEfSj2x_ zmT*(x;ov%3F?qoEeeM>dUn$a*?SIGyO8m806J1W1o+4HRhc2`9$s6hM#qAm zChQ87b~GEw{ADfs+5}FJ8+|bIlIv(jT$Ap#hSHoXdd9#w<#cA<1Rkq^*EEkknUd4& zoIWIY)sAswy6fSERVm&!SO~#iN$OgOX*{9@_BWFyJTvC%S++ilSfCrO(?u=Dc?CXZ zzCG&0yVR{Z`|ZF0eEApWEo#s9osV>F{uK{QA@BES#&;#KsScf>y zvs?vIbI>VrT<*!;XmQS=bhq%46-aambZ(8KU-wOO2=en~D}MCToB_u;Yz{)1ySrPZ z@=$}EvjTdzTWU7c0ZI6L8=yP+YRD_eMMos}b5vY^S*~VZysrkq<`cK3>>v%uy7jgq z0ilW9KjVDHLv0b<1K_`1IkbTOINs0=m-22c%M~l=^S}%hbli-3?BnNq?b`hx^HX2J zIe6ECljRL0uBWb`%{EA=%!i^4sMcj+U_TaTZRb+~GOk z^ZW!nky0n*Wb*r+Q|9H@ml@Z5gU&W`(z4-j!OzC1wOke`TRAYGZVl$PmQ16{3196( zO*?`--I}Qf(2HIwb2&1FB^!faPA2=sLg(@6P4mN)>Dc3i(B0;@O-y2;lM4akD>@^v z=u>*|!s&9zem70g7zfw9FXl1bpJW(C#5w#uy5!V?Q(U35A~$dR%LDVnq@}kQm13{} zd53q3N(s$Eu{R}k2esbftfjfOITCL;jWa$}(mmm}d(&7JZ6d3%IABCapFFYjdEjdK z&4Edqf$G^MNAtL=uCDRs&Fu@FXRgX{*0<(@c3|PNHa>L%zvxWS={L8%qw`STm+=Rd zA}FLspESSIpE_^41~#5yI2bJ=9`oc;GIL!JuW&7YetZ?0H}$$%8rW@*J37L-~Rsx!)8($nI4 zZhcZ2^=Y+p4YPl%j!nFJA|*M^gc(0o$i3nlphe+~-_m}jVkRN{spFs(o0ajW@f3K{ zDV!#BwL322CET$}Y}^0ixYj2w>&Xh12|R8&yEw|wLDvF!lZ#dOTHM9pK6@Nm-@9Lnng4ZHBgBSrr7KI8YCC9DX5Kg|`HsiwJHg2(7#nS;A{b3tVO?Z% za{m5b3rFV6EpX;=;n#wltDv1LE*|g5pQ+OY&*6qCJZc5oDS6Z6JD#6F)bWxZSF@q% z+1WV;m!lRB!n^PC>RgQCI#D1br_o^#iPk>;K2hB~0^<~)?p}LG%kigm@moD#q3PE+ zA^Qca)(xnqw6x>XFhV6ku9r$E>bWNrVH9fum0?4s?Rn2LG{Vm_+QJHse6xa%nzQ?k zKug4PW~#Gtb;#5+9!QBgyB@q=sk9=$S{4T>wjFICStOM?__fr+Kei1 z3j~xPqW;W@YkiUM;HngG!;>@AITg}vAE`M2Pj9Irl4w1fo4w<|Bu!%rh%a(Ai^Zhi zs92>v5;@Y(Zi#RI*ua*h`d_7;byQSa*v9E{2x$<-_=5Z<7{%)}4XExANcz@rK69T0x3%H<@frW>RA8^swA+^a(FxK| zFl3LD*ImHN=XDUkrRhp6RY5$rQ{bRgSO*(vEHYV)3Mo6Jy3puiLmU&g82p{qr0F?ohmbz)f2r{X2|T2 z$4fdQ=>0BeKbiVM!e-lIIs8wVTuC_m7}y4A_%ikI;Wm5$9j(^Y z(cD%U%k)X>_>9~t8;pGzL6L-fmQO@K; zo&vQzMlgY95;1BSkngY)e{`n0!NfVgf}2mB3t}D9@*N;FQ{HZ3Pb%BK6;5#-O|WI( zb6h@qTLU~AbVW#_6?c!?Dj65Now7*pU{h!1+eCV^KCuPAGs28~3k@ueL5+u|Z-7}t z9|lskE`4B7W8wMs@xJa{#bsCGDFoRSNSnmNYB&U7 zVGKWe%+kFB6kb)e;TyHfqtU6~fRg)f|>=5(N36)0+C z`hv65J<$B}WUc!wFAb^QtY31yNleq4dzmG`1wHTj=c*=hay9iD071Hc?oYoUk|M*_ zU1GihAMBsM@5rUJ(qS?9ZYJ6@{bNqJ`2Mr+5#hKf?doa?F|+^IR!8lq9)wS3tF_9n zW_?hm)G(M+MYb?V9YoX^_mu5h-LP^TL^!Q9Z7|@sO(rg_4+@=PdI)WL(B7`!K^ND- z-uIuVDCVEdH_C@c71YGYT^_Scf_dhB8Z2Xy6vGtBSlYud9vggOqv^L~F{BraSE_t} zIkP+Hp2&nH^-MNEs}^`oMLy11`PQW$T|K(`Bu*(f@)mv1-qY(_YG&J2M2<7k;;RK~ zL{Fqj9yCz8(S{}@c)S!65aF<=&eLI{hAMErCx&>i7OeDN>okvegO87OaG{Jmi<|}D zaT@b|0X{d@OIJ7zvT>r+eTzgLq~|Dpu)Z&db-P4z*`M$UL51lf>FLlq6rfG)%doyp z)3kk_YIM!03eQ8Vu_2fg{+osaEJPtJ-s36R+5_AEG12`NG)IQ#TF9c@$99%0iye+ zUzZ57=m2)$D(5Nx!n)=5Au&O0BBgwxIBaeI(mro$#&UGCr<;C{UjJVAbVi%|+WP(a zL$U@TYCxJ=1{Z~}rnW;7UVb7+ZnzgmrogDxhjLGo>c~MiJAWs&&;AGg@%U?Y^0JhL ze(x6Z74JG6FlOFK(T}SXQfhr}RIFl@QXKnIcXYF)5|V~e-}suHILKT-k|<*~Ij|VF zC;t@=uj=hot~*!C68G8hTA%8SzOfETOXQ|3FSaIEjvBJp(A)7SWUi5!Eu#yWgY+;n zlm<$+UDou*V+246_o#V4kMdto8hF%%Lki#zPh}KYXmMf?hrN0;>Mv%`@{0Qn`Ujp) z=lZe+13>^Q!9zT);H<(#bIeRWz%#*}sgUX9P|9($kexOyKIOc`dLux}c$7It4u|Rl z6SSkY*V~g_B-hMPo_ak>>z@AVQ(_N)VY2kB3IZ0G(iDUYw+2d7W^~(Jq}KY=JnWS( z#rzEa&0uNhJ>QE8iiyz;n2H|SV#Og+wEZv=f2%1ELX!SX-(d3tEj$5$1}70Mp<&eI zCkfbByL7af=qQE@5vDVxx1}FSGt_a1DoE3SDI+G)mBAna)KBG4p8Epxl9QZ4BfdAN zFnF|Y(umr;gRgG6NLQ$?ZWgllEeeq~z^ZS7L?<(~O&$5|y)Al^iMKy}&W+eMm1W z7EMU)u^ke(A1#XCV>CZ71}P}0x)4wtHO8#JRG3MA-6g=`ZM!FcICCZ{IEw8Dm2&LQ z1|r)BUG^0GzI6f946RrBlfB1Vs)~8toZf~7)+G;pv&XiUO(%5bm)pl=p>nV^o*;&T z;}@oZSibzto$arQgfkp|z4Z($P>dTXE{4O=vY0!)kDO* zGF8a4wq#VaFpLfK!iELy@?-SeRrdz%F*}hjKcA*y@mj~VD3!it9lhRhX}5YOaR9$} z3mS%$2Be7{l(+MVx3 z(4?h;P!jnRmX9J9sYN#7i=iyj_5q7n#X(!cdqI2lnr8T$IfOW<_v`eB!d9xY1P=2q&WtOXY=D9QYteP)De?S4}FK6#6Ma z=E*V+#s8>L;8aVroK^6iKo=MH{4yEZ_>N-N z`(|;aOATba1^asjxlILk<4}f~`39dBFlxj>Dw(hMYKPO3EEt1@S`1lxFNM+J@uB7T zZ8WKjz7HF1-5&2=l=fqF-*@>n5J}jIxdDwpT?oKM3s8Nr`x8JnN-kCE?~aM1H!hAE z%%w(3kHfGwMnMmNj(SU(w42OrC-euI>Dsjk&jz3ts}WHqmMpzQ3vZrsXrZ|}+MHA7 z068obeXZTsO*6RS@o3x80E4ok``rV^Y3hr&C1;|ZZ0|*EKO`$lECUYG2gVFtUTw)R z4Um<0ZzlON`zTdvVdL#KFoMFQX*a5wM0Czp%wTtfK4Sjs)P**RW&?lP$(<}q%r68Z zS53Y!d@&~ne9O)A^tNrXHhXBkj~$8j%pT1%%mypa9AW5E&s9)rjF4@O3ytH{0z6riz|@< zB~UPh*wRFg2^7EbQrHf0y?E~dHlkOxof_a?M{LqQ^C!i2dawHTPYUE=X@2(3<=OOxs8qn_(y>pU>u^}3y&df{JarR0@VJn0f+U%UiF=$Wyq zQvnVHESil@d|8&R<%}uidGh7@u^(%?$#|&J$pvFC-n8&A>utA=n3#)yMkz+qnG3wd zP7xCnF|$9Dif@N~L)Vde3hW8W!UY0BgT2v(wzp;tlLmyk2%N|0jfG$%<;A&IVrOI< z!L)o>j>;dFaqA3pL}b-Je(bB@VJ4%!JeX@3x!i{yIeIso^=n?fDX`3bU=eG7sTc%g%ye8$v8P@yKE^XD=NYxTb zbf!Mk=h|otpqjFaA-vs5YOF-*GwWPc7VbaOW&stlANnCN8iftFMMrUdYNJ_Bnn5Vt zxfz@Ah|+4&P;reZxp;MmEI7C|FOv8NKUm8njF7Wb6Gi7DeODLl&G~}G4be&*Hi0Qw z5}77vL0P+7-B%UL@3n1&JPxW^d@vVwp?u#gVcJqY9#@-3X{ok#UfW3<1fb%FT`|)V~ggq z(3AUoUS-;7)^hCjdT0Kf{i}h)mBg4qhtHHBti=~h^n^OTH5U*XMgDLIR@sre`AaB$ zg)IGBET_4??m@cx&c~bA80O7B8CHR7(LX7%HThkeC*@vi{-pL%e)yXp!B2InafbDF zjPXf1mko3h59{lT6EEbxKO1Z5GF71)WwowO6kY|6tjSVSWdQ}NsK2x{>i|MKZK8%Q zfu&_0D;CO-Jg0#YmyfctyJ!mRJp)e#@O0mYdp|8x;G1%OZQ3Q847YWTyy|%^cpA;m zze0(5p{tMu^lDkpe?HynyO?a1$_LJl2L&mpeKu%8YvgRNr=%2z${%WThHG=vrWY@4 zsA`OP#O&)TetZ>s%h!=+CE15lOOls&nvC~$Qz0Ph7tHiP;O$i|eDwpT{cp>+)0-|; zY$|bB+Gbel>5aRN3>c0x)4U=|X+z+{ zn*_p*EQoquRL+=+p;=lm`d71&1NqBz&_ph)MXu(Nv6&XE7(RsS)^MGj5Q?Fwude-(sq zjJ>aOq!7!EN>@(fK7EE#;i_BGvli`5U;r!YA{JRodLBc6-`n8K+Fjgwb%sX;j=qHQ z7&Tr!)!{HXoO<2BQrV9Sw?JRaLXV8HrsNevvnf>Y-6|{T!pYLl7jp$-nEE z#X!4G4L#K0qG_4Z;Cj6=;b|Be$hi4JvMH!-voxqx^@8cXp`B??eFBz2lLD8RRaRGh zn7kUfy!YV~p(R|p7iC1Rdgt$_24i0cd-S8HpG|`@my70g^y`gu%#Tf_L21-k?sRRZHK&at(*ED0P8iw{7?R$9~OF$Ko;Iu5)ur5<->x!m93Eb zFYpIx60s=Wxxw=`$aS-O&dCO_9?b1yKiPCQmSQb>T)963`*U+Ydj5kI(B(B?HNP8r z*bfSBpSu)w(Z3j7HQoRjUG(+d=IaE~tv}y14zHHs|0UcN52fT8V_<@2ep_ee{QgZG zmgp8iv4V{k;~8@I%M3<#B;2R>Ef(Gg_cQM7%}0s*^)SK6!Ym+~P^58*wnwV1BW@eG z4sZLqsUvBbFsr#8u7S1r4teQ;t)Y@jnn_m5jS$CsW1um!p&PqAcc8!zyiXHVta9QC zY~wCwCF0U%xiQPD_INKtTb;A|Zf29(mu9NI;E zc-e>*1%(LSXB`g}kd`#}O;veb<(sk~RWL|f3ljxCnEZDdNSTDV6#Td({6l&y4IjKF z^}lIUq*ZUqgTPumD)RrCN{M^jhY>E~1pn|KOZ5((%F)G|*ZQ|r4zIbrEiV%42hJV8 z3xS)=!X1+=olbdGJ=yZil?oXLct8FM{(6ikLL3E%=q#O6(H$p~gQu6T8N!plf!96| z&Q3=`L~>U0zZh;z(pGR2^S^{#PrPxTRHD1RQOON&f)Siaf`GLj#UOk&(|@0?zm;Sx ztsGt8=29-MZs5CSf1l1jNFtNt5rFNZxJPvkNu~2}7*9468TWm>nN9TP&^!;J{-h)_ z7WsHH9|F%I`Pb!>KAS3jQWKfGivTVkMJLO-HUGM_a4UQ_%RgL6WZvrW+Z4ujZn;y@ zz9$=oO!7qVTaQAA^BhX&ZxS*|5dj803M=k&2%QrXda`-Q#IoZL6E(g+tN!6CA!CP* zCpWtCujIea)ENl0liwVfj)Nc<9mV%+e@=d`haoZ*`B7+PNjEbXBkv=B+Pi^~L#EO$D$ZqTiD8f<5$eyb54-(=3 zh)6i8i|jp(@OnRrY5B8t|LFXFQVQ895n*P16cEKTrT*~yLH6Z4e*bZ5otpRDri&+A zfNbK1D5@O=sm`fN=WzWyse!za5n%^+6dHPGX#8DyIK>?9qyX}2XvBWVqbP%%D)7$= z=#$WulZlZR<{m#gU7lwqK4WS1Ne$#_P{b17qe$~UOXCl>5b|6WVh;5vVnR<%d+Lnp z$uEmML38}U4vaW8>shm6CzB(Wei3s#NAWE3)a2)z@i{4jTn;;aQS)O@l{rUM`J@K& l00vQ5JBs~;vo!vr%%-k{2_Fq1Mn4QF81S)AQ99zk{{c4yR+0b! literal 62076 zcmb5VV{~QRw)Y#`wrv{~+qP{x72B%VwzFc}c2cp;N~)5ZbDrJayPv(!dGEd-##*zr z)#n-$y^sH|_dchh3@8{H5D*j;5D<{i*8l5IFJ|DjL!e)upfGNX(kojugZ3I`oH1PvW`wFW_ske0j@lB9bX zO;2)`y+|!@X(fZ1<2n!Qx*)_^Ai@Cv-dF&(vnudG?0CsddG_&Wtae(n|K59ew)6St z#dj7_(Cfwzh$H$5M!$UDd8=4>IQsD3xV=lXUq($;(h*$0^yd+b{qq63f0r_de#!o_ zXDngc>zy`uor)4A^2M#U*DC~i+dc<)Tb1Tv&~Ev@oM)5iJ4Sn#8iRw16XXuV50BS7 zdBL5Mefch(&^{luE{*5qtCZk$oFr3RH=H!c3wGR=HJ(yKc_re_X9pD` zJ;uxPzUfVpgU>DSq?J;I@a+10l0ONXPcDkiYcihREt5~T5Gb}sT0+6Q;AWHl`S5dV>lv%-p9l#xNNy7ZCr%cyqHY%TZ8Q4 zbp&#ov1*$#grNG#1vgfFOLJCaNG@K|2!W&HSh@3@Y%T?3YI75bJp!VP*$*!< z;(ffNS_;@RJ`=c7yX04!u3JP*<8jeqLHVJu#WV&v6wA!OYJS4h<_}^QI&97-;=ojW zQ-1t)7wnxG*5I%U4)9$wlv5Fr;cIizft@&N+32O%B{R1POm$oap@&f| zh+5J{>U6ftv|vAeKGc|zC=kO(+l7_cLpV}-D#oUltScw})N>~JOZLU_0{Ka2e1evz z{^a*ZrLr+JUj;)K&u2CoCAXLC2=fVScI(m_p~0FmF>>&3DHziouln?;sxW`NB}cSX z8?IsJB)Z=aYRz!X=yJn$kyOWK%rCYf-YarNqKzmWu$ZvkP12b4qH zhS9Q>j<}(*frr?z<%9hl*i^#@*O2q(Z^CN)c2c z>1B~D;@YpG?G!Yk+*yn4vM4sO-_!&m6+`k|3zd;8DJnxsBYtI;W3We+FN@|tQ5EW= z!VU>jtim0Mw#iaT8t_<+qKIEB-WwE04lBd%Letbml9N!?SLrEG$nmn7&W(W`VB@5S zaY=sEw2}i@F_1P4OtEw?xj4@D6>_e=m=797#hg}f*l^`AB|Y0# z9=)o|%TZFCY$SzgSjS|8AI-%J4x}J)!IMxY3_KYze`_I=c1nmrk@E8c9?MVRu)7+Ue79|)rBX7tVB7U|w4*h(;Gi3D9le49B38`wuv zp7{4X^p+K4*$@gU(Tq3K1a#3SmYhvI42)GzG4f|u zwQFT1n_=n|jpi=70-yE9LA+d*T8u z`=VmmXJ_f6WmZveZPct$Cgu^~gFiyL>Lnpj*6ee>*0pz=t$IJ}+rE zsf@>jlcG%Wx;Cp5x)YSVvB1$yyY1l&o zvwX=D7k)Dn;ciX?Z)Pn8$flC8#m`nB&(8?RSdBvr?>T9?E$U3uIX7T?$v4dWCa46 z+&`ot8ZTEgp7G+c52oHJ8nw5}a^dwb_l%MOh(ebVj9>_koQP^$2B~eUfSbw9RY$_< z&DDWf2LW;b0ZDOaZ&2^i^g+5uTd;GwO(-bbo|P^;CNL-%?9mRmxEw~5&z=X^Rvbo^WJW=n_%*7974RY}JhFv46> zd}`2|qkd;89l}R;i~9T)V-Q%K)O=yfVKNM4Gbacc7AOd>#^&W&)Xx!Uy5!BHnp9kh z`a(7MO6+Ren#>R^D0K)1sE{Bv>}s6Rb9MT14u!(NpZOe-?4V=>qZ>}uS)!y~;jEUK z&!U7Fj&{WdgU#L0%bM}SYXRtM5z!6M+kgaMKt%3FkjWYh=#QUpt$XX1!*XkpSq-pl zhMe{muh#knk{9_V3%qdDcWDv}v)m4t9 zQhv{;} zc{}#V^N3H>9mFM8`i`0p+fN@GqX+kl|M94$BK3J-X`Hyj8r!#x6Vt(PXjn?N)qedP z=o1T^#?1^a{;bZ&x`U{f?}TMo8ToN zkHj5v|}r}wDEi7I@)Gj+S1aE-GdnLN+$hw!=DzglMaj#{qjXi_dwpr|HL(gcCXwGLEmi|{4&4#OZ4ChceA zKVd4K!D>_N=_X;{poT~4Q+!Le+ZV>=H7v1*l%w`|`Dx8{)McN@NDlQyln&N3@bFpV z_1w~O4EH3fF@IzJ9kDk@7@QctFq8FbkbaH7K$iX=bV~o#gfh?2JD6lZf(XP>~DACF)fGFt)X%-h1yY~MJU{nA5 ze2zxWMs{YdX3q5XU*9hOH0!_S24DOBA5usB+Ws$6{|AMe*joJ?RxfV}*7AKN9V*~J zK+OMcE@bTD>TG1*yc?*qGqjBN8mgg@h1cJLDv)0!WRPIkC` zZrWXrceVw;fB%3`6kq=a!pq|hFIsQ%ZSlo~)D z|64!aCnw-?>}AG|*iOl44KVf8@|joXi&|)1rB;EQWgm+iHfVbgllP$f!$Wf42%NO5b(j9Bw6L z;0dpUUK$5GX4QbMlTmLM_jJt!ur`_0~$b#BB7FL*%XFf<b__1o)Ao3rlobbN8-(T!1d-bR8D3S0@d zLI!*GMb5s~Q<&sjd}lBb8Nr0>PqE6_!3!2d(KAWFxa{hm`@u|a(%#i(#f8{BP2wbs zt+N_slWF4IF_O|{w`c~)Xvh&R{Au~CFmW#0+}MBd2~X}t9lz6*E7uAD`@EBDe$>7W zzPUkJx<`f$0VA$=>R57^(K^h86>09?>_@M(R4q($!Ck6GG@pnu-x*exAx1jOv|>KH zjNfG5pwm`E-=ydcb+3BJwuU;V&OS=6yM^4Jq{%AVqnTTLwV`AorIDD}T&jWr8pB&j28fVtk_y*JRP^t@l*($UZ z6(B^-PBNZ+z!p?+e8@$&jCv^EWLb$WO=}Scr$6SM*&~B95El~;W_0(Bvoha|uQ1T< zO$%_oLAwf1bW*rKWmlD+@CP&$ObiDy=nh1b2ejz%LO9937N{LDe7gle4i!{}I$;&Y zkexJ9Ybr+lrCmKWg&}p=`2&Gf10orS?4$VrzWidT=*6{KzOGMo?KI0>GL0{iFWc;C z+LPq%VH5g}6V@-tg2m{C!-$fapJ9y}c$U}aUmS{9#0CM*8pC|sfer!)nG7Ji>mfRh z+~6CxNb>6eWKMHBz-w2{mLLwdA7dA-qfTu^A2yG1+9s5k zcF=le_UPYG&q!t5Zd_*E_P3Cf5T6821bO`daa`;DODm8Ih8k89=RN;-asHIigj`n=ux>*f!OC5#;X5i;Q z+V!GUy0|&Y_*8k_QRUA8$lHP;GJ3UUD08P|ALknng|YY13)}!!HW@0z$q+kCH%xet zlWf@BXQ=b=4}QO5eNnN~CzWBbHGUivG=`&eWK}beuV*;?zt=P#pM*eTuy3 zP}c#}AXJ0OIaqXji78l;YrP4sQe#^pOqwZUiiN6^0RCd#D271XCbEKpk`HI0IsN^s zES7YtU#7=8gTn#lkrc~6)R9u&SX6*Jk4GFX7){E)WE?pT8a-%6P+zS6o&A#ml{$WX zABFz#i7`DDlo{34)oo?bOa4Z_lNH>n;f0nbt$JfAl~;4QY@}NH!X|A$KgMmEsd^&Y zt;pi=>AID7ROQfr;MsMtClr5b0)xo|fwhc=qk33wQ|}$@?{}qXcmECh>#kUQ-If0$ zseb{Wf4VFGLNc*Rax#P8ko*=`MwaR-DQ8L8V8r=2N{Gaips2_^cS|oC$+yScRo*uF zUO|5=?Q?{p$inDpx*t#Xyo6=s?bbN}y>NNVxj9NZCdtwRI70jxvm3!5R7yiWjREEd zDUjrsZhS|P&|Ng5r+f^kA6BNN#|Se}_GF>P6sy^e8kBrgMv3#vk%m}9PCwUWJg-AD zFnZ=}lbi*mN-AOm zCs)r=*YQAA!`e#1N>aHF=bb*z*hXH#Wl$z^o}x##ZrUc=kh%OHWhp=7;?8%Xj||@V?1c ziWoaC$^&04;A|T)!Zd9sUzE&$ODyJaBpvqsw19Uiuq{i#VK1!htkdRWBnb z`{rat=nHArT%^R>u#CjjCkw-7%g53|&7z-;X+ewb?OLWiV|#nuc8mp*LuGSi3IP<<*Wyo9GKV7l0Noa4Jr0g3p_$ z*R9{qn=?IXC#WU>48-k5V2Oc_>P;4_)J@bo1|pf=%Rcbgk=5m)CJZ`caHBTm3%!Z9 z_?7LHr_BXbKKr=JD!%?KhwdYSdu8XxPoA{n8^%_lh5cjRHuCY9Zlpz8g+$f@bw@0V z+6DRMT9c|>1^3D|$Vzc(C?M~iZurGH2pXPT%F!JSaAMdO%!5o0uc&iqHx?ImcX6fI zCApkzc~OOnfzAd_+-DcMp&AOQxE_EsMqKM{%dRMI5`5CT&%mQO?-@F6tE*xL?aEGZ z8^wH@wRl`Izx4sDmU>}Ym{ybUm@F83qqZPD6nFm?t?(7>h*?`fw)L3t*l%*iw0Qu#?$5eq!Qc zpQvqgSxrd83NsdO@lL6#{%lsYXWen~d3p4fGBb7&5xqNYJ)yn84!e1PmPo7ChVd%4 zHUsV0Mh?VpzZD=A6%)Qrd~i7 z96*RPbid;BN{Wh?adeD_p8YU``kOrGkNox3D9~!K?w>#kFz!4lzOWR}puS(DmfjJD z`x0z|qB33*^0mZdM&6$|+T>fq>M%yoy(BEjuh9L0>{P&XJ3enGpoQRx`v6$txXt#c z0#N?b5%srj(4xmPvJxrlF3H%OMB!jvfy z;wx8RzU~lb?h_}@V=bh6p8PSb-dG|-T#A?`c&H2`_!u+uenIZe`6f~A7r)`9m8atC zt(b|6Eg#!Q*DfRU=Ix`#B_dK)nnJ_+>Q<1d7W)eynaVn`FNuN~%B;uO2}vXr5^zi2 z!ifIF5@Zlo0^h~8+ixFBGqtweFc`C~JkSq}&*a3C}L?b5Mh-bW=e)({F_g4O3 zb@SFTK3VD9QuFgFnK4Ve_pXc3{S$=+Z;;4+;*{H}Rc;845rP?DLK6G5Y-xdUKkA6E3Dz&5f{F^FjJQ(NSpZ8q-_!L3LL@H* zxbDF{gd^U3uD;)a)sJwAVi}7@%pRM&?5IaUH%+m{E)DlA_$IA1=&jr{KrhD5q&lTC zAa3c)A(K!{#nOvenH6XrR-y>*4M#DpTTOGQEO5Jr6kni9pDW`rvY*fs|ItV;CVITh z=`rxcH2nEJpkQ^(;1c^hfb8vGN;{{oR=qNyKtR1;J>CByul*+=`NydWnSWJR#I2lN zTvgnR|MBx*XFsfdA&;tr^dYaqRZp*2NwkAZE6kV@1f{76e56eUmGrZ>MDId)oqSWw z7d&r3qfazg+W2?bT}F)4jD6sWaw`_fXZGY&wnGm$FRPFL$HzVTH^MYBHWGCOk-89y zA+n+Q6EVSSCpgC~%uHfvyg@ufE^#u?JH?<73A}jj5iILz4Qqk5$+^U(SX(-qv5agK znUkfpke(KDn~dU0>gdKqjTkVk`0`9^0n_wzXO7R!0Thd@S;U`y)VVP&mOd-2 z(hT(|$=>4FY;CBY9#_lB$;|Wd$aOMT5O_3}DYXEHn&Jrc3`2JiB`b6X@EUOD zVl0S{ijm65@n^19T3l%>*;F(?3r3s?zY{thc4%AD30CeL_4{8x6&cN}zN3fE+x<9; zt2j1RRVy5j22-8U8a6$pyT+<`f+x2l$fd_{qEp_bfxfzu>ORJsXaJn4>U6oNJ#|~p z`*ZC&NPXl&=vq2{Ne79AkQncuxvbOG+28*2wU$R=GOmns3W@HE%^r)Fu%Utj=r9t` zd;SVOnA(=MXgnOzI2@3SGKHz8HN~Vpx&!Ea+Df~`*n@8O=0!b4m?7cE^K*~@fqv9q zF*uk#1@6Re_<^9eElgJD!nTA@K9C732tV~;B`hzZ321Ph=^BH?zXddiu{Du5*IPg} zqDM=QxjT!Rp|#Bkp$(mL)aar)f(dOAXUiw81pX0DC|Y4;>Vz>>DMshoips^8Frdv} zlTD=cKa48M>dR<>(YlLPOW%rokJZNF2gp8fwc8b2sN+i6&-pHr?$rj|uFgktK@jg~ zIFS(%=r|QJ=$kvm_~@n=ai1lA{7Z}i+zj&yzY+!t$iGUy|9jH#&oTNJ;JW-3n>DF+ z3aCOzqn|$X-Olu_p7brzn`uk1F*N4@=b=m;S_C?#hy{&NE#3HkATrg?enaVGT^$qIjvgc61y!T$9<1B@?_ibtDZ{G zeXInVr5?OD_nS_O|CK3|RzzMmu+8!#Zb8Ik;rkIAR%6?$pN@d<0dKD2c@k2quB%s( zQL^<_EM6ow8F6^wJN1QcPOm|ehA+dP(!>IX=Euz5qqIq}Y3;ibQtJnkDmZ8c8=Cf3 zu`mJ!Q6wI7EblC5RvP*@)j?}W=WxwCvF3*5Up_`3*a~z$`wHwCy)2risye=1mSp%p zu+tD6NAK3o@)4VBsM!@);qgsjgB$kkCZhaimHg&+k69~drbvRTacWKH;YCK(!rC?8 zP#cK5JPHSw;V;{Yji=55X~S+)%(8fuz}O>*F3)hR;STU`z6T1aM#Wd+FP(M5*@T1P z^06O;I20Sk!bxW<-O;E081KRdHZrtsGJflFRRFS zdi5w9OVDGSL3 zNrC7GVsGN=b;YH9jp8Z2$^!K@h=r-xV(aEH@#JicPy;A0k1>g1g^XeR`YV2HfmqXY zYbRwaxHvf}OlCAwHoVI&QBLr5R|THf?nAevV-=~V8;gCsX>jndvNOcFA+DI+zbh~# zZ7`qNk&w+_+Yp!}j;OYxIfx_{f0-ONc?mHCiCUak=>j>~>YR4#w# zuKz~UhT!L~GfW^CPqG8Lg)&Rc6y^{%3H7iLa%^l}cw_8UuG;8nn9)kbPGXS}p3!L_ zd#9~5CrH8xtUd?{d2y^PJg+z(xIfRU;`}^=OlehGN2=?}9yH$4Rag}*+AWotyxfCJ zHx=r7ZH>j2kV?%7WTtp+-HMa0)_*DBBmC{sd$)np&GEJ__kEd`xB5a2A z*J+yx>4o#ZxwA{;NjhU*1KT~=ZK~GAA;KZHDyBNTaWQ1+;tOFFthnD)DrCn`DjBZ% zk$N5B4^$`n^jNSOr=t(zi8TN4fpaccsb`zOPD~iY=UEK$0Y70bG{idLx@IL)7^(pL z{??Bnu=lDeguDrd%qW1)H)H`9otsOL-f4bSu};o9OXybo6J!Lek`a4ff>*O)BDT_g z<6@SrI|C9klY(>_PfA^qai7A_)VNE4c^ZjFcE$Isp>`e5fLc)rg@8Q_d^Uk24$2bn z9#}6kZ2ZxS9sI(RqT7?El2@B+($>eBQrNi_k#CDJ8D9}8$mmm z4oSKO^F$i+NG)-HE$O6s1--6EzJa?C{x=QgK&c=)b(Q9OVoAXYEEH20G|q$}Hue%~ zO3B^bF=t7t48sN zWh_zA`w~|){-!^g?6Mqf6ieV zFx~aPUOJGR=4{KsW7I?<=J2|lY`NTU=lt=%JE9H1vBpkcn=uq(q~=?iBt_-r(PLBM zP-0dxljJO>4Wq-;stY)CLB4q`-r*T$!K2o}?E-w_i>3_aEbA^MB7P5piwt1dI-6o!qWCy0 ztYy!x9arGTS?kabkkyv*yxvsPQ7Vx)twkS6z2T@kZ|kb8yjm+^$|sEBmvACeqbz)RmxkkDQX-A*K!YFziuhwb|ym>C$}U|J)4y z$(z#)GH%uV6{ec%Zy~AhK|+GtG8u@c884Nq%w`O^wv2#A(&xH@c5M`Vjk*SR_tJnq z0trB#aY)!EKW_}{#L3lph5ow=@|D5LzJYUFD6 z7XnUeo_V0DVSIKMFD_T0AqAO|#VFDc7c?c-Q%#u00F%!_TW1@JVnsfvm@_9HKWflBOUD~)RL``-!P;(bCON_4eVdduMO>?IrQ__*zE@7(OX zUtfH@AX*53&xJW*Pu9zcqxGiM>xol0I~QL5B%Toog3Jlenc^WbVgeBvV8C8AX^Vj& z^I}H})B=VboO%q1;aU5ACMh{yK4J;xlMc`jCnZR^!~LDs_MP&8;dd@4LDWw~*>#OT zeZHwdQWS!tt5MJQI~cw|Ka^b4c|qyd_ly(+Ql2m&AAw^ zQeSXDOOH!!mAgzAp0z)DD>6Xo``b6QwzUV@w%h}Yo>)a|xRi$jGuHQhJVA%>)PUvK zBQ!l0hq<3VZ*RnrDODP)>&iS^wf64C;MGqDvx>|p;35%6(u+IHoNbK z;Gb;TneFo*`zUKS6kwF*&b!U8e5m4YAo03a_e^!5BP42+r)LFhEy?_7U1IR<; z^0v|DhCYMSj<-;MtY%R@Fg;9Kky^pz_t2nJfKWfh5Eu@_l{^ph%1z{jkg5jQrkvD< z#vdK!nku*RrH~TdN~`wDs;d>XY1PH?O<4^U4lmA|wUW{Crrv#r%N>7k#{Gc44Fr|t z@UZP}Y-TrAmnEZ39A*@6;ccsR>)$A)S>$-Cj!=x$rz7IvjHIPM(TB+JFf{ehuIvY$ zsDAwREg*%|=>Hw$`us~RP&3{QJg%}RjJKS^mC_!U;E5u>`X`jW$}P`Mf}?7G7FX#{ zE(9u1SO;3q@ZhDL9O({-RD+SqqPX)`0l5IQu4q)49TUTkxR(czeT}4`WV~pV*KY&i zAl3~X%D2cPVD^B43*~&f%+Op)wl<&|D{;=SZwImydWL6@_RJjxP2g)s=dH)u9Npki zs~z9A+3fj0l?yu4N0^4aC5x)Osnm0qrhz@?nwG_`h(71P znbIewljU%T*cC=~NJy|)#hT+lx#^5MuDDnkaMb*Efw9eThXo|*WOQzJ*#3dmRWm@! zfuSc@#kY{Um^gBc^_Xdxnl!n&y&}R4yAbK&RMc+P^Ti;YIUh|C+K1|=Z^{nZ}}rxH*v{xR!i%qO~o zTr`WDE@k$M9o0r4YUFFeQO7xCu_Zgy)==;fCJ94M_rLAv&~NhfvcLWCoaGg2ao~3e zBG?Ms9B+efMkp}7BhmISGWmJsKI@a8b}4lLI48oWKY|8?zuuNc$lt5Npr+p7a#sWu zh!@2nnLBVJK!$S~>r2-pN||^w|fY`CT{TFnJy`B|e5;=+_v4l8O-fkN&UQbA4NKTyntd zqK{xEKh}U{NHoQUf!M=2(&w+eef77VtYr;xs%^cPfKLObyOV_9q<(%76-J%vR>w9!us-0c-~Y?_EVS%v!* z15s2s3eTs$Osz$JayyH|5nPAIPEX=U;r&p;K14G<1)bvn@?bM5kC{am|C5%hyxv}a z(DeSKI5ZfZ1*%dl8frIX2?);R^^~LuDOpNpk-2R8U1w92HmG1m&|j&J{EK=|p$;f9 z7Rs5|jr4r8k5El&qcuM+YRlKny%t+1CgqEWO>3;BSRZi(LA3U%Jm{@{y+A+w(gzA< z7dBq6a1sEWa4cD0W7=Ld9z0H7RI^Z7vl(bfA;72j?SWCo`#5mVC$l1Q2--%V)-uN* z9ha*s-AdfbDZ8R8*fpwjzx=WvOtmSzGFjC#X)hD%Caeo^OWjS(3h|d9_*U)l%{Ab8 zfv$yoP{OuUl@$(-sEVNt{*=qi5P=lpxWVuz2?I7Dc%BRc+NGNw+323^ z5BXGfS71oP^%apUo(Y#xkxE)y?>BFzEBZ}UBbr~R4$%b7h3iZu3S(|A;&HqBR{nK& z$;GApNnz=kNO^FL&nYcfpB7Qg;hGJPsCW44CbkG1@l9pn0`~oKy5S777uH)l{irK!ru|X+;4&0D;VE*Ii|<3P zUx#xUqvZT5kVQxsF#~MwKnv7;1pR^0;PW@$@T7I?s`_rD1EGUdSA5Q(C<>5SzE!vw z;{L&kKFM-MO>hy#-8z`sdVx})^(Dc-dw;k-h*9O2_YZw}|9^y-|8RQ`BWJUJL(Cer zP5Z@fNc>pTXABbTRY-B5*MphpZv6#i802giwV&SkFCR zGMETyUm(KJbh+&$8X*RB#+{surjr;8^REEt`2&Dubw3$mx>|~B5IKZJ`s_6fw zKAZx9&PwBqW1Oz0r0A4GtnZd7XTKViX2%kPfv+^X3|_}RrQ2e3l=KG_VyY`H?I5&CS+lAX5HbA%TD9u6&s#v!G> zzW9n4J%d5ye7x0y`*{KZvqyXUfMEE^ZIffzI=Hh|3J}^yx7eL=s+TPH(Q2GT-sJ~3 zI463C{(ag7-hS1ETtU;_&+49ABt5!A7CwLwe z=SoA8mYZIQeU;9txI=zcQVbuO%q@E)JI+6Q!3lMc=Gbj(ASg-{V27u>z2e8n;Nc*pf}AqKz1D>p9G#QA+7mqqrEjGfw+85Uyh!=tTFTv3|O z+)-kFe_8FF_EkTw!YzwK^Hi^_dV5x-Ob*UWmD-})qKj9@aE8g240nUh=g|j28^?v7 zHRTBo{0KGaWBbyX2+lx$wgXW{3aUab6Bhm1G1{jTC7ota*JM6t+qy)c5<@ zpc&(jVdTJf(q3xB=JotgF$X>cxh7k*(T`-V~AR+`%e?YOeALQ2Qud( zz35YizXt(aW3qndR}fTw1p()Ol4t!D1pitGNL95{SX4ywzh0SF;=!wf=?Q?_h6!f* zh7<+GFi)q|XBsvXZ^qVCY$LUa{5?!CgwY?EG;*)0ceFe&=A;!~o`ae}Z+6me#^sv- z1F6=WNd6>M(~ z+092z>?Clrcp)lYNQl9jN-JF6n&Y0mp7|I0dpPx+4*RRK+VQI~>en0Dc;Zfl+x z_e_b7s`t1_A`RP3$H}y7F9_na%D7EM+**G_Z0l_nwE+&d_kc35n$Fxkd4r=ltRZhh zr9zER8>j(EdV&Jgh(+i}ltESBK62m0nGH6tCBr90!4)-`HeBmz54p~QP#dsu%nb~W z7sS|(Iydi>C@6ZM(Us!jyIiszMkd)^u<1D+R@~O>HqZIW&kearPWmT>63%_t2B{_G zX{&a(gOYJx!Hq=!T$RZ&<8LDnxsmx9+TBL0gTk$|vz9O5GkK_Yx+55^R=2g!K}NJ3 zW?C;XQCHZl7H`K5^BF!Q5X2^Mj93&0l_O3Ea3!Ave|ixx+~bS@Iv18v2ctpSt4zO{ zp#7pj!AtDmti$T`e9{s^jf(ku&E|83JIJO5Qo9weT6g?@vX!{7)cNwymo1+u(YQ94 zopuz-L@|5=h8A!(g-MXgLJC0MA|CgQF8qlonnu#j z;uCeq9ny9QSD|p)9sp3ebgY3rk#y0DA(SHdh$DUm^?GI<>%e1?&}w(b zdip1;P2Z=1wM+$q=TgLP$}svd!vk+BZ@h<^4R=GS2+sri7Z*2f`9 z5_?i)xj?m#pSVchk-SR!2&uNhzEi+#5t1Z$o0PoLGz*pT64%+|Wa+rd5Z}60(j?X= z{NLjtgRb|W?CUADqOS@(*MA-l|E342NxRaxLTDqsOyfWWe%N(jjBh}G zm7WPel6jXijaTiNita+z(5GCO0NM=Melxud57PP^d_U## zbA;9iVi<@wr0DGB8=T9Ab#2K_#zi=$igyK48@;V|W`fg~7;+!q8)aCOo{HA@vpSy-4`^!ze6-~8|QE||hC{ICKllG9fbg_Y7v z$jn{00!ob3!@~-Z%!rSZ0JO#@>|3k10mLK0JRKP-Cc8UYFu>z93=Ab-r^oL2 zl`-&VBh#=-?{l1TatC;VweM^=M7-DUE>m+xO7Xi6vTEsReyLs8KJ+2GZ&rxw$d4IT zPXy6pu^4#e;;ZTsgmG+ZPx>piodegkx2n0}SM77+Y*j^~ICvp#2wj^BuqRY*&cjmL zcKp78aZt>e{3YBb4!J_2|K~A`lN=u&5j!byw`1itV(+Q_?RvV7&Z5XS1HF)L2v6ji z&kOEPmv+k_lSXb{$)of~(BkO^py&7oOzpjdG>vI1kcm_oPFHy38%D4&A4h_CSo#lX z2#oqMCTEP7UvUR3mwkPxbl8AMW(e{ARi@HCYLPSHE^L<1I}OgZD{I#YH#GKnpRmW3 z2jkz~Sa(D)f?V?$gNi?6)Y;Sm{&?~2p=0&BUl_(@hYeX8YjaRO=IqO7neK0RsSNdYjD zaw$g2sG(>JR=8Iz1SK4`*kqd_3-?;_BIcaaMd^}<@MYbYisWZm2C2|Np_l|8r9yM|JkUngSo@?wci(7&O9a z%|V(4C1c9pps0xxzPbXH=}QTxc2rr7fXk$9`a6TbWKPCz&p=VsB8^W96W=BsB|7bc zf(QR8&Ktj*iz)wK&mW`#V%4XTM&jWNnDF56O+2bo<3|NyUhQ%#OZE8$Uv2a@J>D%t zMVMiHh?es!Ex19q&6eC&L=XDU_BA&uR^^w>fpz2_`U87q_?N2y;!Z!bjoeKrzfC)} z?m^PM=(z{%n9K`p|7Bz$LuC7!>tFOuN74MFELm}OD9?%jpT>38J;=1Y-VWtZAscaI z_8jUZ#GwWz{JqvGEUmL?G#l5E=*m>`cY?m*XOc*yOCNtpuIGD+Z|kn4Xww=BLrNYS zGO=wQh}Gtr|7DGXLF%|`G>J~l{k^*{;S-Zhq|&HO7rC_r;o`gTB7)uMZ|WWIn@e0( zX$MccUMv3ABg^$%_lNrgU{EVi8O^UyGHPNRt%R!1#MQJn41aD|_93NsBQhP80yP<9 zG4(&0u7AtJJXLPcqzjv`S~5;Q|5TVGccN=Uzm}K{v)?f7W!230C<``9(64}D2raRU zAW5bp%}VEo{4Rko`bD%Ehf=0voW?-4Mk#d3_pXTF!-TyIt6U+({6OXWVAa;s-`Ta5 zTqx&8msH3+DLrVmQOTBOAj=uoxKYT3DS1^zBXM?1W+7gI!aQNPYfUl{3;PzS9*F7g zWJN8x?KjBDx^V&6iCY8o_gslO16=kh(|Gp)kz8qlQ`dzxQv;)V&t+B}wwdi~uBs4? zu~G|}y!`3;8#vIMUdyC7YEx6bb^1o}G!Jky4cN?BV9ejBfN<&!4M)L&lRKiuMS#3} z_B}Nkv+zzxhy{dYCW$oGC&J(Ty&7%=5B$sD0bkuPmj7g>|962`(Q{ZZMDv%YMuT^KweiRDvYTEop3IgFv#)(w>1 zSzH>J`q!LK)c(AK>&Ib)A{g`Fdykxqd`Yq@yB}E{gnQV$K!}RsgMGWqC3DKE(=!{}ekB3+(1?g}xF>^icEJbc z5bdxAPkW90atZT+&*7qoLqL#p=>t-(-lsnl2XMpZcYeW|o|a322&)yO_8p(&Sw{|b zn(tY$xn5yS$DD)UYS%sP?c|z>1dp!QUD)l;aW#`%qMtQJjE!s2z`+bTSZmLK7SvCR z=@I4|U^sCwZLQSfd*ACw9B@`1c1|&i^W_OD(570SDLK`MD0wTiR8|$7+%{cF&){$G zU~|$^Ed?TIxyw{1$e|D$050n8AjJvvOWhLtLHbSB|HIfjMp+gu>DraHZJRrdO53(= z+o-f{+qNog+qSLB%KY;5>Av6X(>-qYk3IIEwZ5~6a+P9lMpC^ z8CJ0q>rEpjlsxCvJm=kms@tlN4+sv}He`xkr`S}bGih4t`+#VEIt{1veE z{ZLtb_pSbcfcYPf4=T1+|BtR!x5|X#x2TZEEkUB6kslKAE;x)*0x~ES0kl4Dex4e- zT2P~|lT^vUnMp{7e4OExfxak0EE$Hcw;D$ehTV4a6hqxru0$|Mo``>*a5=1Ym0u>BDJKO|=TEWJ5jZu!W}t$Kv{1!q`4Sn7 zrxRQOt>^6}Iz@%gA3&=5r;Lp=N@WKW;>O!eGIj#J;&>+3va^~GXRHCY2}*g#9ULab zitCJt-OV0*D_Q3Q`p1_+GbPxRtV_T`jyATjax<;zZ?;S+VD}a(aN7j?4<~>BkHK7bO8_Vqfdq1#W&p~2H z&w-gJB4?;Q&pG9%8P(oOGZ#`!m>qAeE)SeL*t8KL|1oe;#+uOK6w&PqSDhw^9-&Fa zuEzbi!!7|YhlWhqmiUm!muO(F8-F7|r#5lU8d0+=;<`{$mS=AnAo4Zb^{%p}*gZL! zeE!#-zg0FWsSnablw!9$<&K(#z!XOW z;*BVx2_+H#`1b@>RtY@=KqD)63brP+`Cm$L1@ArAddNS1oP8UE$p05R=bvZoYz+^6 z<)!v7pRvi!u_-V?!d}XWQR1~0q(H3{d^4JGa=W#^Z<@TvI6J*lk!A zZ*UIKj*hyO#5akL*Bx6iPKvR3_2-^2mw|Rh-3O_SGN3V9GRo52Q;JnW{iTGqb9W99 z7_+F(Op6>~3P-?Q8LTZ-lwB}xh*@J2Ni5HhUI3`ct|*W#pqb>8i*TXOLn~GlYECIj zhLaa_rBH|1jgi(S%~31Xm{NB!30*mcsF_wgOY2N0XjG_`kFB+uQuJbBm3bIM$qhUyE&$_u$gb zpK_r{99svp3N3p4yHHS=#csK@j9ql*>j0X=+cD2dj<^Wiu@i>c_v zK|ovi7}@4sVB#bzq$n3`EgI?~xDmkCW=2&^tD5RuaSNHf@Y!5C(Is$hd6cuyoK|;d zO}w2AqJPS`Zq+(mc*^%6qe>1d&(n&~()6-ZATASNPsJ|XnxelLkz8r1x@c2XS)R*H(_B=IN>JeQUR;T=i3<^~;$<+8W*eRKWGt7c#>N`@;#!`kZ!P!&{9J1>_g8Zj zXEXxmA=^{8A|3=Au+LfxIWra)4p<}1LYd_$1KI0r3o~s1N(x#QYgvL4#2{z8`=mXy zQD#iJ0itk1d@Iy*DtXw)Wz!H@G2St?QZFz zVPkM%H8Cd2EZS?teQN*Ecnu|PrC!a7F_XX}AzfZl3fXfhBtc2-)zaC2eKx*{XdM~QUo4IwcGgVdW69 z1UrSAqqMALf^2|(I}hgo38l|Ur=-SC*^Bo5ej`hb;C$@3%NFxx5{cxXUMnTyaX{>~ zjL~xm;*`d08bG_K3-E+TI>#oqIN2=An(C6aJ*MrKlxj?-;G zICL$hi>`F%{xd%V{$NhisHSL~R>f!F7AWR&7b~TgLu6!3s#~8|VKIX)KtqTH5aZ8j zY?wY)XH~1_a3&>#j7N}0az+HZ;is;Zw(Am{MX}YhDTe(t{ZZ;TG}2qWYO+hdX}vp9 z@uIRR8g#y~-^E`Qyem(31{H0&V?GLdq9LEOb2(ea#e-$_`5Q{T%E?W(6 z(XbX*Ck%TQM;9V2LL}*Tf`yzai{0@pYMwBu%(I@wTY!;kMrzcfq0w?X`+y@0ah510 zQX5SU(I!*Fag4U6a7Lw%LL;L*PQ}2v2WwYF(lHx_Uz2ceI$mnZ7*eZ?RFO8UvKI0H z9Pq-mB`mEqn6n_W9(s~Jt_D~j!Ln9HA)P;owD-l~9FYszs)oEKShF9Zzcmnb8kZ7% zQ`>}ki1kwUO3j~ zEmh140sOkA9v>j@#56ymn_RnSF`p@9cO1XkQy6_Kog?0ivZDb`QWOX@tjMd@^Qr(p z!sFN=A)QZm!sTh(#q%O{Ovl{IxkF!&+A)w2@50=?a-+VuZt6On1;d4YtUDW{YNDN_ zG@_jZi1IlW8cck{uHg^g=H58lPQ^HwnybWy@@8iw%G! zwB9qVGt_?~M*nFAKd|{cGg+8`+w{j_^;nD>IrPf-S%YjBslSEDxgKH{5p)3LNr!lD z4ii)^%d&cCXIU7UK?^ZQwmD(RCd=?OxmY(Ko#+#CsTLT;p#A%{;t5YpHFWgl+@)N1 zZ5VDyB;+TN+g@u~{UrWrv)&#u~k$S&GeW)G{M#&Di)LdYk?{($Cq zZGMKeYW)aMtjmKgvF0Tg>Mmkf9IB#2tYmH-s%D_9y3{tfFmX1BSMtbe<(yqAyWX60 zzkgSgKb3c{QPG2MalYp`7mIrYg|Y<4Jk?XvJK)?|Ecr+)oNf}XLPuTZK%W>;<|r+% zTNViRI|{sf1v7CsWHvFrkQ$F7+FbqPQ#Bj7XX=#M(a~9^80}~l-DueX#;b}Ajn3VE z{BWI}$q{XcQ3g{(p>IOzFcAMDG0xL)H%wA)<(gl3I-oVhK~u_m=hAr&oeo|4lZbf} z+pe)c34Am<=z@5!2;_lwya;l?xV5&kWe}*5uBvckm(d|7R>&(iJNa6Y05SvlZcWBlE{{%2- z`86)Y5?H!**?{QbzGG~|k2O%eA8q=gxx-3}&Csf6<9BsiXC)T;x4YmbBIkNf;0Nd5 z%whM^!K+9zH>on_<&>Ws?^v-EyNE)}4g$Fk?Z#748e+GFp)QrQQETx@u6(1fk2!(W zWiCF~MomG*y4@Zk;h#2H8S@&@xwBIs|82R*^K(i*0MTE%Rz4rgO&$R zo9Neb;}_ulaCcdn3i17MO3NxzyJ=l;LU*N9ztBJ30j=+?6>N4{9YXg$m=^9@Cl9VY zbo^{yS@gU=)EpQ#;UIQBpf&zfCA;00H-ee=1+TRw@(h%W=)7WYSb5a%$UqNS@oI@= zDrq|+Y9e&SmZrH^iA>Of8(9~Cf-G(P^5Xb%dDgMMIl8gk6zdyh`D3OGNVV4P9X|EvIhplXDld8d z^YWtYUz@tpg*38Xys2?zj$F8%ivA47cGSl;hjD23#*62w3+fwxNE7M7zVK?x_`dBSgPK zWY_~wF~OEZi9|~CSH8}Xi>#8G73!QLCAh58W+KMJJC81{60?&~BM_0t-u|VsPBxn* zW7viEKwBBTsn_A{g@1!wnJ8@&h&d>!qAe+j_$$Vk;OJq`hrjzEE8Wjtm)Z>h=*M25 zOgETOM9-8xuuZ&^@rLObtcz>%iWe%!uGV09nUZ*nxJAY%&KAYGY}U1WChFik7HIw% zZP$3Bx|TG_`~19XV7kfi2GaBEhKap&)Q<9`aPs#^!kMjtPb|+-fX66z3^E)iwyXK7 z8)_p<)O{|i&!qxtgBvWXx8*69WO$5zACl++1qa;)0zlXf`eKWl!0zV&I`8?sG)OD2Vy?reNN<{eK+_ za4M;Hh%&IszR%)&gpgRCP}yheQ+l#AS-GnY81M!kzhWxIR?PW`G3G?} z$d%J28uQIuK@QxzGMKU_;r8P0+oIjM+k)&lZ39i#(ntY)*B$fdJnQ3Hw3Lsi8z&V+ zZly2}(Uzpt2aOubRjttzqrvinBFH4jrN)f0hy)tj4__UTwN)#1fj3-&dC_Vh7}ri* zfJ=oqLMJ-_<#rwVyN}_a-rFBe2>U;;1(7UKH!$L??zTbbzP#bvyg7OQBGQklJ~DgP zd<1?RJ<}8lWwSL)`jM53iG+}y2`_yUvC!JkMpbZyb&50V3sR~u+lok zT0uFRS-yx@8q4fPRZ%KIpLp8R#;2%c&Ra4p(GWRT4)qLaPNxa&?8!LRVdOUZ)2vrh zBSx&kB%#Y4!+>~)<&c>D$O}!$o{<1AB$M7-^`h!eW;c(3J~ztoOgy6Ek8Pwu5Y`Xion zFl9fb!k2`3uHPAbd(D^IZmwR5d8D$495nN2`Ue&`W;M-nlb8T-OVKt|fHk zBpjX$a(IR6*-swdNk@#}G?k6F-~c{AE0EWoZ?H|ZpkBxqU<0NUtvubJtwJ1mHV%9v?GdDw; zAyXZiD}f0Zdt-cl9(P1la+vQ$Er0~v}gYJVwQazv zH#+Z%2CIfOf90fNMGos|{zf&N`c0@x0N`tkFv|_9af3~<0z@mnf*e;%r*Fbuwl-IW z{}B3=(mJ#iwLIPiUP`J3SoP~#)6v;aRXJ)A-pD2?_2_CZ#}SAZ<#v7&Vk6{*i(~|5 z9v^nC`T6o`CN*n%&9+bopj^r|E(|pul;|q6m7Tx+U|UMjWK8o-lBSgc3ZF=rP{|l9 zc&R$4+-UG6i}c==!;I#8aDIbAvgLuB66CQLRoTMu~jdw`fPlKy@AKYWS-xyZzPg&JRAa@m-H43*+ne!8B7)HkQY4 zIh}NL4Q79a-`x;I_^>s$Z4J4-Ngq=XNWQ>yAUCoe&SMAYowP>r_O}S=V+3=3&(O=h zNJDYNs*R3Y{WLmBHc?mFEeA4`0Y`_CN%?8qbDvG2m}kMAiqCv`_BK z_6a@n`$#w6Csr@e2YsMx8udNWtNt=kcqDZdWZ-lGA$?1PA*f4?X*)hjn{sSo8!bHz zb&lGdAgBx@iTNPK#T_wy`KvOIZvTWqSHb=gWUCKXAiB5ckQI`1KkPx{{%1R*F2)Oc z(9p@yG{fRSWE*M9cdbrO^)8vQ2U`H6M>V$gK*rz!&f%@3t*d-r3mSW>D;wYxOhUul zk~~&ip5B$mZ~-F1orsq<|1bc3Zpw6)Ws5;4)HilsN;1tx;N6)tuePw& z==OlmaN*ybM&-V`yt|;vDz(_+UZ0m&&9#{9O|?0I|4j1YCMW;fXm}YT$0%EZ5^YEI z4i9WV*JBmEU{qz5O{#bs`R1wU%W$qKx?bC|e-iS&d*Qm7S=l~bMT{~m3iZl+PIXq{ zn-c~|l)*|NWLM%ysfTV-oR0AJ3O>=uB-vpld{V|cWFhI~sx>ciV9sPkC*3i0Gg_9G!=4ar*-W?D9)?EFL1=;O+W8}WGdp8TT!Fgv z{HKD`W>t(`Cds_qliEzuE!r{ihwEv1l5o~iqlgjAyGBi)$%zNvl~fSlg@M=C{TE;V zQkH`zS8b&!ut(m)%4n2E6MB>p*4(oV>+PT51#I{OXs9j1vo>9I<4CL1kv1aurV*AFZ^w_qfVL*G2rG@D2 zrs87oV3#mf8^E5hd_b$IXfH6vHe&lm@7On~Nkcq~YtE!}ad~?5*?X*>y`o;6Q9lkk zmf%TYonZM`{vJg$`lt@MXsg%*&zZZ0uUSse8o=!=bfr&DV)9Y6$c!2$NHyYAQf*Rs zk{^?gl9E z5Im8wlAsvQ6C2?DyG@95gUXZ3?pPijug25g;#(esF_~3uCj3~94}b*L>N2GSk%Qst z=w|Z>UX$m!ZOd(xV*2xvWjN&c5BVEdVZ0wvmk)I+YxnyK%l~caR=7uNQ=+cnNTLZ@&M!I$Mj-r{!P=; z`C2)D=VmvK8@T5S9JZoRtN!S*D_oqOxyy!q6Zk|~4aT|*iRN)fL)c>-yycR>-is0X zKrko-iZw(f(!}dEa?hef5yl%p0-v-8#8CX8!W#n2KNyT--^3hq6r&`)5Y@>}e^4h- zlPiDT^zt}Ynk&x@F8R&=)k8j$=N{w9qUcIc&)Qo9u4Y(Ae@9tA`3oglxjj6c{^pN( zQH+Uds2=9WKjH#KBIwrQI%bbs`mP=7V>rs$KG4|}>dxl_k!}3ZSKeEen4Iswt96GGw`E6^5Ov)VyyY}@itlj&sao|>Sb5 zeY+#1EK(}iaYI~EaHQkh7Uh>DnzcfIKv8ygx1Dv`8N8a6m+AcTa-f;17RiEed>?RT zk=dAksmFYPMV1vIS(Qc6tUO+`1jRZ}tcDP? zt)=7B?yK2RcAd1+Y!$K5*ds=SD;EEqCMG6+OqPoj{&8Y5IqP(&@zq@=A7+X|JBRi4 zMv!czlMPz)gt-St2VZwDD=w_S>gRpc-g zUd*J3>bXeZ?Psjohe;z7k|d<*T21PA1i)AOi8iMRwTBSCd0ses{)Q`9o&p9rsKeLaiY zluBw{1r_IFKR76YCAfl&_S1*(yFW8HM^T()&p#6y%{(j7Qu56^ZJx1LnN`-RTwimdnuo*M8N1ISl+$C-%=HLG-s} zc99>IXRG#FEWqSV9@GFW$V8!{>=lSO%v@X*pz*7()xb>=yz{E$3VE;e)_Ok@A*~El zV$sYm=}uNlUxV~6e<6LtYli1!^X!Ii$L~j4e{sI$tq_A(OkGquC$+>Rw3NFObV2Z)3Rt~Jr{oYGnZaFZ^g5TDZlg;gaeIP} z!7;T{(9h7mv{s@piF{-35L=Ea%kOp;^j|b5ZC#xvD^^n#vPH=)lopYz1n?Kt;vZmJ z!FP>Gs7=W{sva+aO9S}jh0vBs+|(B6Jf7t4F^jO3su;M13I{2rd8PJjQe1JyBUJ5v zcT%>D?8^Kp-70bP8*rulxlm)SySQhG$Pz*bo@mb5bvpLAEp${?r^2!Wl*6d7+0Hs_ zGPaC~w0E!bf1qFLDM@}zso7i~(``)H)zRgcExT_2#!YOPtBVN5Hf5~Ll3f~rWZ(UsJtM?O*cA1_W0)&qz%{bDoA}{$S&-r;0iIkIjbY~ zaAqH45I&ALpP=9Vof4OapFB`+_PLDd-0hMqCQq08>6G+C;9R~}Ug_nm?hhdkK$xpI zgXl24{4jq(!gPr2bGtq+hyd3%Fg%nofK`psHMs}EFh@}sdWCd!5NMs)eZg`ZlS#O0 zru6b8#NClS(25tXqnl{|Ax@RvzEG!+esNW-VRxba(f`}hGoqci$U(g30i}2w9`&z= zb8XjQLGN!REzGx)mg~RSBaU{KCPvQx8)|TNf|Oi8KWgv{7^tu}pZq|BS&S<53fC2K4Fw6>M^s$R$}LD*sUxdy6Pf5YKDbVet;P!bw5Al-8I1Nr(`SAubX5^D9hk6$agWpF}T#Bdf{b9-F#2WVO*5N zp+5uGgADy7m!hAcFz{-sS0kM7O)qq*rC!>W@St~^OW@R1wr{ajyYZq5H!T?P0e+)a zaQ%IL@X_`hzp~vRH0yUblo`#g`LMC%9}P;TGt+I7qNcBSe&tLGL4zqZqB!Bfl%SUa z6-J_XLrnm*WA`34&mF+&e1sPCP9=deazrM=Pc4Bn(nV;X%HG^4%Afv4CI~&l!Sjzb z{rHZ3od0!Al{}oBO>F*mOFAJrz>gX-vs!7>+_G%BB(ljWh$252j1h;9p~xVA=9_`P z5KoFiz96_QsTK%B&>MSXEYh`|U5PjX1(+4b#1PufXRJ*uZ*KWdth1<0 zsAmgjT%bowLyNDv7bTUGy|g~N34I-?lqxOUtFpTLSV6?o?<7-UFy*`-BEUsrdANh} zBWkDt2SAcGHRiqz)x!iVoB~&t?$yn6b#T=SP6Ou8lW=B>=>@ik93LaBL56ub`>Uo!>0@O8?e)$t(sgy$I z6tk3nS@yFFBC#aFf?!d_3;%>wHR;A3f2SP?Na8~$r5C1N(>-ME@HOpv4B|Ty7%jAv zR}GJwsiJZ5@H+D$^Cwj#0XA_(m^COZl8y7Vv(k=iav1=%QgBOVzeAiw zaDzzdrxzj%sE^c9_uM5D;$A_7)Ln}BvBx^=)fO+${ou%B*u$(IzVr-gH3=zL6La;G zu0Kzy5CLyNGoKRtK=G0-w|tnwI)puPDOakRzG(}R9fl7#<|oQEX;E#yCWVg95 z;NzWbyF&wGg_k+_4x4=z1GUcn6JrdX4nOVGaAQ8#^Ga>aFvajQN{!+9rgO-dHP zIp@%&ebVg}IqnRWwZRTNxLds+gz2@~VU(HI=?Epw>?yiEdZ>MjajqlO>2KDxA>)cj z2|k%dhh%d8SijIo1~20*5YT1eZTDkN2rc^zWr!2`5}f<2f%M_$to*3?Ok>e9$X>AV z2jYmfAd)s|(h?|B(XYrIfl=Wa_lBvk9R1KaP{90-z{xKi+&8=dI$W0+qzX|ZovWGOotP+vvYR(o=jo?k1=oG?%;pSqxcU* zWVGVMw?z__XQ9mnP!hziHC`ChGD{k#SqEn*ph6l46PZVkm>JF^Q{p&0=MKy_6apts z`}%_y+Tl_dSP(;Ja&sih$>qBH;bG;4;75)jUoVqw^}ee=ciV;0#t09AOhB^Py7`NC z-m+ybq1>_OO+V*Z>dhk}QFKA8V?9Mc4WSpzj{6IWfFpF7l^au#r7&^BK2Ac7vCkCn{m0uuN93Ee&rXfl1NBY4NnO9lFUp zY++C1I;_{#OH#TeP2Dp?l4KOF8ub?m6zE@XOB5Aiu$E~QNBM@;r+A5mF2W1-c7>ex zHiB=WJ&|`6wDq*+xv8UNLVUy4uW1OT>ey~Xgj@MMpS@wQbHAh>ysYvdl-1YH@&+Q! z075(Qd4C!V`9Q9jI4 zSt{HJRvZec>vaL_brKhQQwbpQd4_Lmmr0@1GdUeU-QcC{{8o=@nwwf>+dIKFVzPriGNX4VjHCa zTbL9w{Y2V87c2ofX%`(48A+4~mYTiFFl!e{3K^C_k%{&QTsgOd0*95KmWN)P}m zTRr{`f7@=v#+z_&fKYkQT!mJn{*crj%ZJz#(+c?>cD&2Lo~FFAWy&UG*Op^pV`BR^I|g?T>4l5;b|5OQ@t*?_Slp`*~Y3`&RfKD^1uLezIW(cE-Dq2z%I zBi8bWsz0857`6e!ahet}1>`9cYyIa{pe53Kl?8|Qg2RGrx@AlvG3HAL-^9c^1GW;)vQt8IK+ zM>!IW*~682A~MDlyCukldMd;8P|JCZ&oNL(;HZgJ>ie1PlaInK7C@Jg{3kMKYui?e!b`(&?t6PTb5UPrW-6DVU%^@^E`*y-Fd(p|`+JH&MzfEq;kikdse ziFOiDWH(D< zyV7Rxt^D0_N{v?O53N$a2gu%1pxbeK;&ua`ZkgSic~$+zvt~|1Yb=UfKJW2F7wC^evlPf(*El+#}ZBy0d4kbVJsK- z05>;>?HZO(YBF&v5tNv_WcI@O@LKFl*VO?L(!BAd!KbkVzo;v@~3v`-816GG?P zY+H3ujC>5=Am3RIZDdT#0G5A6xe`vGCNq88ZC1aVXafJkUlcYmHE^+Z{*S->ol%-O znm9R0TYTr2w*N8Vs#s-5=^w*{Y}qp5GG)Yt1oLNsH7y~N@>Eghms|K*Sdt_u!&I}$ z+GSdFTpbz%KH+?B%Ncy;C`uW6oWI46(tk>r|5|-K6)?O0d_neghUUOa9BXHP*>vi; z={&jIGMn-92HvInCMJcyXwHTJ42FZp&Wxu+9Rx;1x(EcIQwPUQ@YEQQ`bbMy4q3hP zNFoq~Qd0=|xS-R}k1Im3;8s{BnS!iaHIMLx)aITl)+)?Yt#fov|Eh>}dv@o6R{tG>uHsy&jGmWN5+*wAik|78(b?jtysPHC#e+Bzz~V zS3eEXv7!Qn4uWi!FS3B?afdD*{fr9>B~&tc671fi--V}~E4un;Q|PzZRwk-azprM$4AesvUb5`S`(5x#5VJ~4%ET6&%GR$}muHV-5lTsCi_R|6KM(g2PCD@|yOpKluT zakH!1V7nKN)?6JmC-zJoA#ciFux8!)ajiY%K#RtEg$gm1#oKUKX_Ms^%hvKWi|B=~ zLbl-L)-=`bfhl`>m!^sRR{}cP`Oim-{7}oz4p@>Y(FF5FUEOfMwO!ft6YytF`iZRq zfFr{!&0Efqa{1k|bZ4KLox;&V@ZW$997;+Ld8Yle91he{BfjRhjFTFv&^YuBr^&Pe zswA|Bn$vtifycN8Lxr`D7!Kygd7CuQyWqf}Q_PM}cX~S1$-6xUD%-jrSi24sBTFNz(Fy{QL2AmNbaVggWOhP;UY4D>S zqKr!UggZ9Pl9Nh_H;qI`-WoH{ceXj?m8y==MGY`AOJ7l0Uu z)>M%?dtaz2rjn1SW3k+p`1vs&lwb%msw8R!5nLS;upDSxViY98IIbxnh{}mRfEp=9 zbrPl>HEJeN7J=KnB6?dwEA6YMs~chHNG?pJsEj#&iUubdf3JJwu=C(t?JpE6xMyhA3e}SRhunDC zn-~83*9=mADUsk^sCc%&&G1q5T^HR9$P#2DejaG`Ui*z1hI#h7dwpIXg)C{8s< z%^#@uQRAg-$z&fmnYc$Duw63_Zopx|n{Bv*9Xau{a)2%?H<6D>kYY7_)e>OFT<6TT z0A}MQLgXbC2uf`;67`mhlcUhtXd)Kbc$PMm=|V}h;*_%vCw4L6r>3Vi)lE5`8hkSg zNGmW-BAOO)(W((6*e_tW&I>Nt9B$xynx|sj^ux~?q?J@F$L4;rnm_xy8E*JYwO-02u9_@@W0_2@?B@1J{y~Q39N3NX^t7#`=34Wh)X~sU&uZWgS1Z09%_k|EjA4w_QqPdY`oIdv$dJZ;(!k)#U8L+|y~gCzn+6WmFt#d{OUuKHqh1-uX_p*Af8pFYkYvKPKBxyid4KHc}H` z*KcyY;=@wzXYR{`d{6RYPhapShXIV?0cg_?ahZ7do)Ot#mxgXYJYx}<%E1pX;zqHd zf!c(onm{~#!O$2`VIXezECAHVd|`vyP)Uyt^-075X@NZDBaQt<>trA3nY-Dayki4S zZ^j6CCmx1r46`4G9794j-WC0&R9(G7kskS>=y${j-2;(BuIZTLDmAyWTG~`0)Bxqk zd{NkDe9ug|ms@0A>JVmB-IDuse9h?z9nw!U6tr7t-Lri5H`?TjpV~8(gZWFq4Vru4 z!86bDB;3lpV%{rZ`3gtmcRH1hjj!loI9jN>6stN6A*ujt!~s!2Q+U1(EFQEQb(h4E z6VKuRouEH`G6+8Qv2C)K@^;ldIuMVXdDDu}-!7FS8~k^&+}e9EXgx~)4V4~o6P^52 z)a|`J-fOirL^oK}tqD@pqBZi_;7N43%{IQ{v&G9^Y^1?SesL`;Z(dt!nn9Oj5Odde%opv&t zxJ><~b#m+^KV&b?R#)fRi;eyqAJ_0(nL*61yPkJGt;gZxSHY#t>ATnEl-E%q$E16% zZdQfvhm5B((y4E3Hk6cBdwGdDy?i5CqBlCVHZr-rI$B#>Tbi4}Gcvyg_~2=6O9D-8 zY2|tKrNzbVR$h57R?Pe+gUU_il}ZaWu|Az#QO@};=|(L-RVf0AIW zq#pO+RfM7tdV`9lI6g;{qABNId`fG%U9Va^ravVT^)CklDcx)YJKeJdGpM{W1v8jg z@&N+mR?BPB=K1}kNwXk_pj44sd>&^;d!Z~P>O78emE@Qp@&8PyB^^4^2f7e)gekMv z2aZNvP@;%i{+_~>jK7*2wQc6nseT^n6St9KG#1~Y@$~zR_=AcO2hF5lCoH|M&c{vR zSp(GRVVl=T*m~dIA;HvYm8HOdCkW&&4M~UDd^H)`p__!4k+6b)yG0Zcek8OLw$C^K z3-BbLiG_%qX|ZYpXJ$(c@aa7b4-*IQkDF}=gZSV`*ljP|5mWuHSCcf$5qqhZTv&P?I$z^>}qP(q!Aku2yA5vu38d8x*q{6-1`%PrE_r0-9Qo?a#7Zbz#iGI7K<(@k^|i4QJ1H z4jx?{rZbgV!me2VT72@nBjucoT zUM9;Y%TCoDop?Q5fEQ35bCYk7!;gH*;t9t-QHLXGmUF;|vm365#X)6b2Njsyf1h9JW#x$;@x5Nx2$K$Z-O3txa%;OEbOn6xBzd4n4v)Va=sj5 z%rb#j7{_??Tjb8(Hac<^&s^V{yO-BL*uSUk2;X4xt%NC8SjO-3?;Lzld{gM5A=9AV z)DBu-Z8rRvXXwSVDH|dL-3FODWhfe1C_iF``F05e{dl(MmS|W%k-j)!7(ARkV?6r~ zF=o42y+VapxdZn;GnzZfGu<6oG-gQ7j7Zvgo7Am@jYxC2FpS@I;Jb%EyaJDBQC(q% zKlZ}TVu!>;i3t~OAgl@QYy1X|T~D{HOyaS*Bh}A}S#a9MYS{XV{R-|niEB*W%GPW! zP^NU(L<}>Uab<;)#H)rYbnqt|dOK(-DCnY==%d~y(1*{D{Eo1cqIV8*iMfx&J*%yh zx=+WHjt0q2m*pLx8=--UqfM6ZWjkev>W-*}_*$Y(bikH`#-Gn#!6_ zIA&kxn;XYI;eN9yvqztK-a113A%97in5CL5Z&#VsQ4=fyf&3MeKu70)(x^z_uw*RG zo2Pv&+81u*DjMO6>Mrr7vKE2CONqR6C0(*;@4FBM;jPIiuTuhQ-0&C)JIzo_k>TaS zN_hB;_G=JJJvGGpB?uGgSeKaix~AkNtYky4P7GDTW6{rW{}V9K)Cn^vBYKe*OmP!; zohJs=l-0sv5&phSCi&8JSrokrKP$LVa!LbtlN#T^cedgH@ijt5T-Acxd9{fQY z4qsg1O{|U5Rzh_j;9QD(g*j+*=xULyi-FY|-mUXl7-2O`TYQny<@jSQ%^ye*VW_N< z4mmvhrDYBJ;QSoPvwgi<`7g*Pwg5ANA8i%Kum;<=i|4lwEdN+`)U3f2%bcRZRK!P z70kd~`b0vX=j20UM5rBO#$V~+grM)WRhmzb15ya^Vba{SlSB4Kn}zf#EmEEhGruj| zBn0T2n9G2_GZXnyHcFkUlzdRZEZ0m&bP-MxNr zd;kl7=@l^9TVrg;Y6J(%!p#NV*Lo}xV^Nz0#B*~XRk0K2hgu5;7R9}O=t+R(r_U%j z$`CgPL|7CPH&1cK5vnBo<1$P{WFp8#YUP%W)rS*a_s8kKE@5zdiAh*cjmLiiKVoWD z!y$@Cc5=Wj^VDr$!04FI#%pu6(a9 zM_FAE+?2tp2<$Sqp5VtADB>yY*cRR+{OeZ5g2zW=`>(tA~*-T)X|ahF{xQmypWp%2X{385+=0S|Jyf`XA-c7wAx`#5n2b-s*R>m zP30qtS8aUXa1%8KT8p{=(yEvm2Gvux5z22;isLuY5kN{IIGwYE1Pj);?AS@ex~FEt zQ`Gc|)o-eOyCams!|F0_;YF$nxcMl^+z0sSs@ry01hpsy3p<|xOliR zr-dxK0`DlAydK!br?|Xi(>buASy4@C8)ccRCJ3w;v&tA1WOCaieifLl#(J% zODPi5fr~ASdz$Hln~PVE6xekE{Xb286t(UtYhDWo8JWN6sNyRVkIvC$unIl8QMe@^ z;1c<0RO5~Jv@@gtDGPDOdqnECOurq@l02NC#N98-suyq_)k(`G=O`dJU8I8LcP!4z z8fkgqViqFbR+3IkwLa)^>Z@O{qxTLU63~^lod{@${q;-l?S|4Tq0)As-Gz!D(*P)Vf6wm6B8GGWi7B)Q^~T?sseZeI+}LyBAG!LRZn_ktDlht1j2ok@ljteyuNUkG67 zipkCx-7k(FZQhYjZ%T9X7`tO99$Wj~K`9r0IkWhPul`Q_t1YnVK=YI1dMc_b!FEU4 zkv=PGf{5$P#w{|m92tfVnsnfd%%KW;1a*cLmga4bSYl^*49M4cs+Fe>P!n=$G6hL6 z>IM&0+c(Nvr0I!5CGx7WK*Z3V^w0+QcF=hU0B4=+;=tn*+XDxKa;NB-z4O~I zf}TSb^Z;L_Og>!D1`;w@zf@GCqCUNY%N?IPmEkTco^}bX~BWM_Hamu05>#B zBh%QfUeHPu`MsYVQQ3hOT;HmP_C|nOl zjluk7vaSICyQ01h`^c)DWp>cxPjGEc6D^~2L79hyK_J#<9H#8o`&XM4=aB`@< z<|1oR6Djf))P1l2C{qSwa4u-&LDG{FLz#ym_@I+vo}D}#%;vNN%& zW&9||THv_^B!1Fo+$3A6hEAed$I-{a^6FVvwMtT~e%*&RvY5mj<@(-{y^xn6ZCYqNK|#v^xbWpy15YL18z#Y&5YwOnd!A*@>k^7CaX0~4*6QB{Bgh$KJqesFc(lSQ{iQAKY%Ge}2CeuFJ{4YmgrP(gpcH zXJQjSH^cw`Z0tV^axT&RkOBP2A~#fvmMFrL&mwdDn<*l3;3A425_lzHL`+6sT9LeY zu@TH0u4tj199jQBzz*~Up5)7=4OP%Ok{rxQYNb!hphAoW-BFJn>O=%ov*$ir?dIx% z56Y`>?(1YQ8Fc(D7pq2`9swz@*RIoTAvMT%CPbt;$P%eG(P%*ZMjklLoXqTE*Jg^T zlEQbMi@_E|ll_>pTJ!(-x41R}4sY<5A2VVQ^#4eE{imHt#NEi+#p#EBC2C=9B4A|n zqe03T*czDqQ-VxZ+jPQG!}!M0SlFm^@wTW?otBZ+q~xkk29u1i7Q|kaJ(9{AiP1`p zbEe5&!>V;1wnQ1-Qpyn2B5!S(lh=38hl6IilCC6n4|yz~q94S9_5+Od*$c)%r|)f~ z;^-lf=6POs>Ur4i-F>-wm;3(v7Y_itzt)*M!b~&oK%;re(p^>zS#QZ+Rt$T#Y%q1{ zx+?@~+FjR1MkGr~N`OYBSsVr}lcBZ+ij!0SY{^w((2&U*M`AcfSV9apro+J{>F&tX zT~e zMvsv$Q)AQl_~);g8OOt4plYESr8}9?T!yO(Wb?b~1n0^xVG;gAP}d}#%^9wqN7~F5 z!jWIpqxZ28LyT|UFH!u?V>F6&Hd~H|<(3w*o{Ps>G|4=z`Ws9oX5~)V=uc?Wmg6y< zJKnB4Opz^9v>vAI)ZLf2$pJdm>ZwOzCX@Yw0;-fqB}Ow+u`wglzwznQAP(xbs`fA7 zylmol=ea)g}&;8;)q0h7>xCJA+01w+RY`x`RO% z9g1`ypy?w-lF8e5xJXS4(I^=k1zA46V)=lkCv?k-3hR9q?oZPzwJl$yOHWeMc9wFuE6;SObNsmC4L6;eWPuAcfHoxd59gD7^Xsb$lS_@xI|S-gb? z*;u@#_|4vo*IUEL2Fxci+@yQY6<&t=oNcWTVtfi1Ltveqijf``a!Do0s5e#BEhn5C zBXCHZJY-?lZAEx>nv3k1lE=AN10vz!hpeUY9gy4Xuy940j#Rq^yH`H0W2SgXtn=X1 zV6cY>fVbQhGwQIaEG!O#p)aE8&{gAS z^oVa-0M`bG`0DE;mV)ATVNrt;?j-o*?Tdl=M&+WrW12B{+5Um)qKHd_HIv@xPE+;& zPI|zXfrErYzDD2mOhtrZLAQ zP#f9e!vqBSyoKZ#{n6R1MAW$n8wH~)P3L~CSeBrk4T0dzIp&g9^(_5zY*7$@l%%nL zG$Z}u8pu^Mw}%{_KDBaDjp$NWes|DGAn~WKg{Msbp*uPiH9V|tJ_pLQROQY?T0Pmt zs4^NBZbn7B^L%o#q!-`*+cicZS9Ycu+m)rDb98CJ+m1u}e5ccKwbc0|q)ICBEnLN# zV)8P1s;r@hE3sG2wID0@`M9XIn~hm+W1(scCZr^Vs)w4PKIW_qasyjbOBC`ixG8K$ z9xu^v(xNy4HV{wu2z-B87XG#yWu~B6@|*X#BhR!_jeF*DG@n_RupAvc{DsC3VCHT# za6Z&9k#<*y?O0UoK3MLlSX6wRh`q&E>DOZTG=zRxj0pR0c3vskjPOqkh9;o>a1>!P zxD|LU0qw6S4~iN8EIM2^$k72(=a6-Tk?%1uSj@0;u$0f*LhC%|mC`m`w#%W)IK zN_UvJkmzdP84ZV7CP|@k>j^ zPa%;PDu1TLyNvLQdo!i1XA|49nN}DuTho6=z>Vfduv@}mpM({Jh289V%W@9opFELb z?R}D#CqVew1@W=XY-SoMNul(J)zX(BFP?#@9x<&R!D1X&d|-P;VS5Gmd?Nvu$eRNM zG;u~o*~9&A2k&w}IX}@x>LMHv`ith+t6`uQGZP8JyVimg>d}n$0dDw$Av{?qU=vRq zU@e2worL8vTFtK@%pdbaGdUK*BEe$XE=pYxE_q{(hUR_Gzkn=c#==}ZS^C6fKBIfG z@hc);p+atn`3yrTY^x+<y`F0>p02jUL8cgLa|&yknDj;g73m&Sm&@ju91?uG*w?^d%Yap&d2Bp3v7KlQmh z(N<38o-iRk9*UV?wFirV>|46JqxOZ_o8xv_eJ1dv} zw&zDHZOU%`U{9ckU8DS$lB6J!B`JuThCnwKphODv`3bd?_=~tjNHstM>xoA53-p#F zLCVB^E`@r_D>yHLr10Sm4NRX8FQ+&zw)wt)VsPmLK|vLwB-}}jwEIE!5fLE;(~|DA ztMr8D0w^FPKp{trPYHXI7-;UJf;2+DOpHt%*qRgdWawy1qdsj%#7|aRSfRmaT=a1> zJ8U>fcn-W$l-~R3oikH+W$kRR&a$L!*HdKD_g}2eu*3p)twz`D+NbtVCD|-IQdJlFnZ0%@=!g`nRA(f!)EnC0 zm+420FOSRm?OJ;~8D2w5HD2m8iH|diz%%gCWR|EjYI^n7vRN@vcBrsyQ;zha15{uh zJ^HJ`lo+k&C~bcjhccoiB77-5=SS%s7UC*H!clrU$4QY@aPf<9 z0JGDeI(6S%|K-f@U#%SP`{>6NKP~I#&rSHBTUUvHn#ul4*A@BcRR`#yL%yfZj*$_% zAa$P%`!8xJp+N-Zy|yRT$gj#4->h+eV)-R6l}+)9_3lq*A6)zZ)bnogF9`5o!)ub3 zxCx|7GPCqJlnRVPb&!227Ok@-5N2Y6^j#uF6ihXjTRfbf&ZOP zVc$!`$ns;pPW_=n|8Kw4*2&qx+WMb9!DQ7lC1f@DZyr|zeQcC|B6ma*0}X%BSmFJ6 zeDNWGf=Pmmw5b{1)OZ6^CMK$kw2z*fqN+oup2J8E^)mHj?>nWhBIN|hm#Km4eMyL= zXRqzro9k7(ulJi5J^<`KHJAh-(@W=5x>9+YMFcx$6A5dP-5i6u!k*o-zD z37IkyZqjlNh*%-)rAQrCjJo)u9Hf9Yb1f3-#a=nY&M%a{t0g7w6>{AybZ9IY46i4+%^u zwq}TCN@~S>i7_2T>GdvrCkf&=-OvQV9V3$RR_Gk7$t}63L}Y6d_4l{3b#f9vup-7s z3yKz5)54OVLzH~Ty=HwVC=c$Tl=cvi1L?R>*#ki4t6pgqdB$sx6O(IIvYO8Q>&kq;c3Y-T?b z*6XAc?orv>?V7#vxmD7geKjf%v~%yjbp%^`%e>dw96!JAm4ybAJLo0+4=TB% zShgMl)@@lgdotD?C1Ok^o&hFRYfMbmlbfk677k%%Qy-BG3V9txEjZmK+QY5nlL2D$Wq~04&rwN`-ujpp)wUm5YQc}&tK#zUR zW?HbbHFfSDsT{Xh&RoKiGp)7WPX4 zD^3(}^!TS|hm?YC16YV59v9ir>ypihBLmr?LAY87PIHgRv*SS>FqZwNJKgf6hy8?9 zaGTxa*_r`ZhE|U9S*pn5Mngb7&%!as3%^ifE@zDvX`GP+=oz@p)rAl2KL}ZO1!-us zY`+7ln`|c!2=?tVsO{C}=``aibcdc1N#;c^$BfJr84=5DCy+OT4AB1BUWkDw1R$=FneVh*ajD&(j2IcWH8stMShVcMe zAi6d7p)>hgPJbcb(=NMw$Bo;gQ}3=hCQsi{6{2s~=ZEOizY(j{zYY-W8RiNjycv00 z8(JpE{}=CHx0ib3(nZgo776X=wBUbfk$y2r*}aNG@A0_zOa4k3?1EeH7Z43{@IP>{^M+M`M)0w*@Go z>kg~UfgP1{vH+IU(0p(VRVlLNMHN1C&3cFnp*}4d1a*kwHJL)rjf`Fi5z)#RGTr7E zOhWfTtQyCo&8_N(zIYEugQI}_k|2X(=dMA43Nt*e93&otv`ha-i;ACB$tIK% zRDOtU^1CD5>7?&Vbh<+cz)(CBM}@a)qZ^ld?uYfp3OjiZOCP7u6~H# zMU;=U=1&DQ9Qp|7j4qpN5Dr7sH(p^&Sqy|{uH)lIv3wk?xoVuN`ILg}HUCLs1Bp2^ za8&M?ZQVWFX>Rg4_i$C$U`89i6O(RmWQ4&O=?B6@6`a8fI)Q6q0t{&o%)|n7jN)7V z{S;u+{UzXnUJN}bCE&4u5wBxaFv7De0huAjhy#o~6NH&1X{OA4Y>v0$F-G*gZqFym zhTZ7~nfaMdN8I&2ri;fk*`LhES$vkyq-dBuRF!BC)q%;lt0`Z(*=Sl>uvU`LAvbyt zL1|M@Jas<@1hK!prK}$@&fbf70o7>3&CovCKi815v$6T7R&1GOG~R4pEu2B z%bxG{n`u$7ps(}Tt(P608J@{+>X(?=-j8CkF!T79c`1@E%?vOL%TYrMe1ozi<##IsIC1YRojP!gD%|+7|z^-Vj$a85gbmtB#unyoy%gw9m1yB z|L^-wylT%}=pNpq!QYz9zoV7>zM2g2d9lm{Q zP|dx3=De3NSNGuMWRdO_ctQJUud?_96HbrHiSKmp;{MHZhX#*L+^I11#r;grJ8_21 zt6b*wmCaAw(>A`ftjlL@vi06Z7xF<&xNOrTHrDeMHk*$$+pGK0p+|}H=Kgl{=naBy zclyQsRTraO4!uo})OTSp_x`^0jj7>|H=FOGnAbKT_LuSUiSd3QuCMq>sEhB=V63Nm zZxrtB0)U@x2A#VHqo2ab=pn~tu>kJ;TVASb_&ePAgVcic@>^YM?^LYRLr^O12>~45 z-EE?-Z$xjxsN92EaBi)~D~1OzRVH`o!)kYv7IIx??(B)>R|xa&(wmlU2gdV0+N+3% z7r$w5(L<|?@46ITJZS5koAELgVV_&KHj(9KG??A);@gL`s1th*c#t5>U(*+nb0+H% zOhJG5tth59%*>S~JIi%<0VAi;k>}&(Ojg!fyH0(fza!1kA~a}Vt{|3z{`Pt@VuYyB zFUt(kR$<`X_J&UQ%;ui2zob1!H{PL8X>>wbpGn~@&h__AfBit)4`D^#->1+Qn^MH9 zYD?%)Pa)D-xQzVGm!g)N$^_z`9)(>)gyQ+(7N@k4GO?~43wcE-|77;CPwPXHQcfcJ^I&IOOah zzL|dhoR*#m5sw{b&L=@<-30s9F|{@V05;4Wf6Z_1gpZnJ*SVN}3O7)-=yYuj2)O0d zX=I9TzzTK%QG&ujvS!F*aJ8eqt4|#VE;``yKqCx7#8QC7AmVn+zW9km3L5TN=R>{5 zLcW`6NKkTz`c{`-w!X9zMG;JZP|skLGs7qBHaWj7Ew!VR=`>n30NX)7j~-RbDmQ6b zHr)zVcn^~e2xqFCBG4P$ZCcRDml-&1^5fqN=CHgBVu1yTg32_N>tZ;N%h*TwOf^1lE#w1$yF$kXaP|V$2XuZ+3wH4Ws6%U;^iP|c6`#etHogQ+E@+~PZ1zdGAty6qTmBM z>!)Wfgq~%lD)m>avXMm)ReN}s9!T_>ic6xA|m7$(&n(Z&j} zHC=}~I(^-*PS2pc7%>)6w}F1il&p*0jX1z)jSvG%S{I3d9w$A|5;TS)4w81yzq5f8 zZVfF~`74m1KXQg|`OS>;FCgZw!AL;2PV{&8%~rG!;`eD=g!luE0k40GjIgjD!JSDNf$eW zZtPMF)&EH_#?IwVLEx&Tosh9K8Ln4Pb$`j2=><6MAezsQvhP#YNnw&cL>12xf)dPz z1tk;{SH6HDcbV0x(+5=2n;A->&iYDa5Zr9$&j?2iAz-(l1;#Vc3-ULyqRV9d0*psG7QHE! z*J=*^sKK?iTO$g*+j~C?QzzIu`6Z{2N-ANrd5*?o%x& z&WMin)$Wq%G!?{EH(2}A?Wx@ zn8|q7xPad4Gu>l^&SBl|mhUxp;S+Cb125`h5aBz9pM34$7n-GHGx*=yqAphZKkds7 z$=5Jnt*6&8@y80jNXm|>2IR<$D5frk;c2f5zLS5xe*^W>kkZa5R1+Am34;mo{Gr=Z zD=z8fgTHwx%)7hzjOo9*Cogbru8GgDzrE;3y%TR+u`|zz%c0Tyd8;#EQXdr4Rgx(2LPRzVI2FwsbXwnF;DP^fg zdYOd|zU&AqgCJ;R+?oSgEgZM`ZX>7&$A-j2m|Tcz4ictXoQkz6Tr<2zhOudU16k<7 zLdk&FCL>=a^>0gV@m#9SnMd)R$5&1mh8p2McnUbk;1|C;`7pPkYjf|o>|a6`x`z1O zt>8~Q%zHX%C=D2!;_1eo3qfbB4QQK^{ON_f*7XhLk{6sr2(KIVmax}fUtF-zHZiUd zHPb9jidV`dE;lsw?1uQH!b%MvPE|lh9-8R_z4^PC8{XAf?S73(n*FvYPoMES+LfOx zcjm4ZZOmKY>M2e${QBVT+XnBQ(oC0fAYcXi7+=}_!hS9m>Y%G@zxn3z#Pb;bJ~-kI zAHNmWgQJp$e8L-uKQ|c4B;#0BTsfRB+}pl7xe=2_1U7pahx5S$TVbRnU0oi1?Wh|A zR7ebg9TK1GgKa4@ic#q_*<;c8?CkjX zMMyq`J()_&(j-FZY7q%z6CN^a0%V{UL)jmrvEg{doZd?qIjgJ^UPr(QUs`68;qkdI zzj_XBQ|#K2U!5?fmIEtXX6^rFY;h4=Vx<-C(d;W6Bi_Xsg{ZJPL*K;I?5U$=V-BNP zn9pKiMc=hZNe**GZBw1kVs#-8c2ZRjol}}^V@^}BqY7c0=!mA;v0`d|(d;R-iT|GK z>zt>Tt3oV09%Y;^RM6=p9C-ys_a``HB_D-pnyX(CeA(GiJqx7xxFE52Y`j~iMv;sP z%jPmx#8p%5`flAU(b!c9XBvV+fygn`BP-C#lyRa;9%>YyW6~A_g?@2J+oY0HAg{qO znT4%ViCgw&eE=W8yt-0{cw`tMieWOG3wyNX#3a^qPhE8TH1?QhwhR~}Ic zZ^q$TF8$p0b0=L8aw&qaTjuAYPmr-6x;U*k*vRnOaBwb_( z5+ls5b(E!(71*l)M&(7ZEgBCtB{6Kh#ArV4u0iNnK!ml!nK5=3;9e76yD9oU4xTAK zPGsGkjtFMMY3pRP5u07;#af?b0C7u) zD^=9X@DRasHaf#c>4rF5GAT!Ggj0!7!z?Q-1_X6ZP2g|+?nVutp|rp}eFlKc8}Q&_ z17$NpDQvQolMWZfj0W0|WKm`nd_KXYH_#wRRzs1aRBYqo#feM}a?joONn30Z4Z9PG zg1c!_<52-9D53Wq4z8pUzGkEFm1@Ws(kp4}CO7csZ-7+b)^)M)(xo}_IpTLl7}5BmbBCI{4>rw>4c_gBQHtRd5Z=SW&6Qp2qMOjr3W+ZRmP;S(U+h=^BHKohhRp6Zgf zwt&$zQXhMm@kh1@SB%dIE*kFDZym3Mky$NRljX?}&JGK`PIV1C;Pf!JV{hb4y;Ju- zlpfEPUd+mV5XQH<#BRFhZ}>b#IdF?a?x;rBg-v)@fZpA?+J{3WZjbl3E zv(a&1=pGYPxP@K!6Qg5Vx=-jwc=BA{xL3+QWb&9~DGS1EFkIC+>55{dvY4LV@s5$C zKJmCjigp7?m27*GN_GROz}y+y5%iIj=*JTYccaFjvD&VN%ewfSp=0P zspdFfDqj?gs!N64cEy5uR~wD>af!1PE*xo{^a^8BPIL2=U>B!m2AM0Jf<8qWLoHxi zxQfkbbwkRXgJgLW_j{ZkCxHLBU{@D6T5u90UNs5P769Zei|C$@nA5$L$4ZvxQl1i? z8vLHg17}e{zM$=&h%8Swbfz7yw~X^N|7Chp1bC(oV72l#R8&%Ne5>F=7wR(dB; zkDX!%&fxS19JBjP<6H7+!dO`nPLvB~xn{aDh#^iHKP|A5UQlCG%v%x9@q1w2fa#&% za^UwHu!~(qrv99G%9_e4OBbJ-CkB*1M_?t6UXZ#}4JFDzB|x(1Z}ckuiY}${zj`eVo})!rN8Je z%h2CVJG1$K$2deXx^h8trLs~Han^e>_-M6@0o4C7d548|#mKtm@DvdVAX5ZzA8=*! zKq5C+cM9u)qJ%YBJ1UAcG}6Ji4=$piaZ(K@>1BiD;$R9bR*QP`dH2T=)dgW#f7U)S zZ~i#VYLOnUZt^~Iu3x8QPJaHVUxtRyipQ+tbmWKl14iW1!f6JSDvT$xt8>~7-1ZlJ zU|)Ab*lhvz-JO!$a}RBH9u8$=R)*qeD@iS@(px~OVvML-qqO5&Ujnhw1>G~**Ld{W zE+7h|!{rDZ#;ipZx4^Tcr9vnO)0>WFPzpFu*MYST(`GFzCq*@Gqse6VwDH#x?-{rs z+=dqd$W0*AuAEhzM@GC&!oZa1*lRsx>>mP>DNYigdm^A~xzo}=uV$w#iadO+!&q_~ zT>AsHXOEGsNyfcJt2V$rhGxaIcTEvZr7CMVEu=>l30N~52^71U^<_uw6h@v@`BA2! z)ViU+wF#^$=5o44TpOj?#eyq*+A&c0ghrt8%}SiK)FgLk-;-^+ zXt|1}1vcKAAuR|?L*a8;04p%!M~U2~UC-OJK)DMtBQ#+ZttJgDFNA4zchA*T)cN(E zmpIMLU*c*NrCSV^qdLXD751DsO`#V#K1BVX4qI-B3Rg(zcvlg^mgY^V3Q*5RRQ4-8 z_kAlUisma2SNEx47euK5Y#eu_-gwRW0}M90hEI}eIJ9aU?t11^jSCn4>e~XLSF7Y3 z7JF)1ZbS_P<$<#y(*u@w!jF4FW_f~bxzi%cgP~B1K5N6GFYSAf=D_s5XomU0G9I%Y zPWc{&MItPR#^Le)?zsRkQMmHx^Cnn&;TrPzRVG`wyNH*U;|r3^2NY(z0lwikP}cWF z`p%R@?dy*7H~0&3ST>L9)b7#kwg+|n0#E&-FNf+Z_t7tpa711FogBPV`S3MW_FMGQ zJ@8Z}qXR4-l%p76mvcH`{Fu(^O;8H2@#LZUH#9p6!EX$AEYV$c`s zkPimL3kv>y=WQ+?KIAuim``%cAeBhA6g8}p_*FBH(#{vKi)CIz_D)DFXPql*ccC}O zRW;+Y6V@=&*d6QJUbRxPX+-_24tc-hYHEFaP-IAj*|-P5%xbWujQvu#TF>xigr_r! znuu7b(!PyYX=O#>;+0cGRx>Sy39(3y=TCf_BZ$<%m#inup$>o(3dA1Byfsip8S975-iVe7UklFm|$4&kaJ!n66_k-7-k}Z_?){LQe&wTeJ^CR{u6p+U#4_iSZZ1wjB-1gVGNQqnkk*-wFLj(eK8Ut{waU zb1jwb2I?Wg&98jSQWom8c?2>BWt*!3WQ?>fB$KguB9_sStno%x=JXPEFrT|hh~Po2 zSPzu3IL10O?9U(3{X8OLN-!l6DJVtgr$yYXeAPh~%(FECDe;$mIY7R4Miv1GEFk9x zpw`}E5M)qTr60D^;a#OCd0xP*w8y+my1^l8Qd*V`wLoj)GFFj;;esW2PMO=sbas{yX6asXIJ$|LW< zts$A+JaxoM({kv+2d@#bhl?#V#FZn_=8tTTvup?Vq!p!46W{be)EP=VlYE|UzAU}) zz})UzJVWi;9br0k&5>}sqwa_`TP*c}^$9+q)Dks#qEVg>p)71sqKF-YLP@UF{(>lp7;CHAWK;K0TZ_+?>EtZKprfU@;52a1IU8HNx-mnoZrb8| zP8FPb#T$0VE+G-l508;d{DSfC6#dbp(j|^i^I3z9?Qmkr+(dw^w??h}WTN{_ls-GuE~lF;1Urgbtq|Ud_r>wecb@?{{z? zX>X$&Ud+(I(5}5d^>&Z2m+qy=h#vR*lS084ATwUWZLg6PX1Ft+YI`0iI)ynij}{4X zrQE!Mr1m^-?kw<|VT0mG+5J{!;j;zJT`?_=P*09n+=e``CN|7rC$u~Ksg7LSMS(Q~ z51!n1htcK0q7*K-*u0?c8ZlvPXcNwXmFe0Or2}}R@?j@{ECCNZ6va1tZ>|ZOgGZ1j z9?mRkeSK%{X4O>J$@hyFsD)7s67Uldb>O93wQQiV%-FfbEY_@q>1VUstIJs|QgB`o1z**F#s z^joAYN~5{EQ_wZ~R6-nEV#HsQbNU59dT;G zovb$}pb=LdR^{W2Nh~8yWfq*vC_DvJxM=)2N`5x+N6Sl`3{Wl@$*BYol#0^idTuM` zJ=prt$REkxn6%dimg%99{(Dt6D67sTUR6l1F@9&Z9<)XgWK#x zVohUH6>_xRuw1^V**+BCZ@dZj97T*67OBO>6UUivH`<@ray~ym^E?bO=vKqFfK3Kv z`RKxs4raHacB<(XAeH`@0G*K2@ill_U@m=icT@F{k1PU3j4VBde`ThtW8%Z~A>)45ARjQCDXbH}_rS^IxHGp#utBEj3W3KSAU+$6I4s~9OWueETo!J-f~+DV8< z+VMtdcQ?M+?S}kl&uImYiIUJ-K0-te7W4sdWpS6Fqs-I!Tj{8Qp6lMn$Zm8uU)s{X z8|O}HN%8sEl4em&qv{VBq{}$@cCG{B z5~3DY$WRYSkO~z=sxRct5^G5bPZW;LF)(zY)HREgpRrkYV@H3^BTD6u+bJE~$cqr< zw@Gb3^|n*kHZ%Vnu6~B7pB4iM0C4kDuk8Q1R^<(x%>|sCOl%CTe^N)K?Tiepg?|#m z94!og0*38u|67h%*!)SJhUdvFimsktaqp#im9IpH-$fQc79gi259qPkEZ)XU?2uWW zRg?$8`vl;V%-Tk+rwpTGaxy)h%3AmF^78<#i+Q6~M4#>J4`NNEEzy~xZ&O*9q%}@7 zs9XBO#vSKSM<-OjPIDzO9JiAYFWrK14Am{uZT=S3zaCu~K%kZo&u*=k9L#xi6vyaG zQFD76MOE&=c1G;7Zivp<%%fRq+@3wgZg>k@AYQf|*Qyzy$tqc20m?F5nGbG@V#gW` z8RMb2oBxgiqa?)_G6&-;L#(HCoaJrs_ED{IUZ^$~)+e#0iZT!AJDb2V{Sen*70TO& zyI`*~#ZdLFhYP_#DTuoqQ0OS6j0o15r{}O&YoT5wCp|x_dD{#Y;Y}0P1ta?2VEh4* ztrRN5tL6UvoH@M9L z=%FKpf@iSp2P>C(*o<-Ng4qF#A?i!AxjXLG8%Gm`$rZxw;ZqSvv5@@sZ|N*~do5fb zKWR)T_>`kxaS|MHFh`-`fc`C%=i@EFk$O&)*_OVrgP4MWsZkE2RJB(WC>w}him zb3KV>1I&nHP9};o8Kw-K$wF8`(R?UMzNB22kSIn#dEe|V-CuMw8I7|#`qSB6dpYg$ zoaDHj%zV6*;`u`VVdsTBKv&g75Q`68rdQU6O>_wkMT9d!z@)q2E)R3(j$*C4jp$Fo z2pE>*ih{4Xzh}W+5!Qw)#M*^E(0X-6-!%wj@4*^)8F=N*0Y5Or+>d= zhMNs@R~>R9;KmyP@I@bpU3&w?)jj0rGrb@q)P>wLVbz1!TZY$#+H-mK6B^0{vdvt0 zaJ0~7p%I#1PpPm1DvBzh7*UsCl^I5^`@XzPzbg+v3T_WyKN?TJ9J=57v^IUO`aQN} z@>Y>WIj+gT@-sobU-tW%L5GP(qY?Eep&I;@osY}O*3i1Ar?Sv|EI6S-pK_!~*A$K| zs-hHESqd`vv;zIzgv2ho5-hsIL5Ke~siJ(v0`Qm7W_Rms2rB67=p&HGRhA-)$p-BS zvXSmgGIGgeJMBcsgp=L8U3Ep$VPBFhvJ!3M5{pocGBS~iZj0({9Jt9nbC{Z$LVb%= zGqzRBjlqkAU{#sOX56})^QjX;jQ26M`poAFIZ#H31td9sQlgBBrfIYgDC9+kO~}s{ zb1i*{#{5tPWhv4pecAZygXG>?5xKx7iPXd?nR;QaIfhlhqNBaLDy>9Yd1Sf3P!s4~ zhfHaFGsIFy&ZM=6^qc>>V>o!zk%5Lk5BtS7oU=YfjWUN;c zrh$6Cyr%KC@QNTzTZvb)QXQkV)01MEY+EzC%CJx)Q&6MM={paB}Dp=qCn^eJ}5LeXG9Gqynt0ir>DvSIZ=i?*_xR3=% zppf1w51ypF2KL6ug zCm}eCi>&>xT;Idzh^PmtDWrU(&eC2hAt(nmd#?;W)*&4lb2Z2Ykv*XLNDEm`_1n3C z`l!wZwiF9b?mN@z?s~>v%hT01C{E3md6M5_Xi3fKD6s26Tt~Z>8|~Ao9ds!cF_Y1| zRG>!=TD0k0`|T*)oX!SlSt8g4Uh@nc(QosCoen@i*ZCSyh|IliliuhEw$8?4ZL9N2 zMQ%%S=3Tj_QilhHW@cSr1UYTtDem{A-ZxyCa$K9A%(!`X_?ieJzXbfERST|JxqmbL zHe!hSqYk|!=!$8CJ5>q}Pj63@Q#PO{gpVb+0-qHFM`j5x_s#~dxvy5u62vywq8upP z_)N)3n9cn7YEf2D8L}x0#_B_~>HT8;;8JC5q+}1gEyd%XqYvY?deQzwD1Lx{ghI3; zv?f;&6CY$H&dDL$k#)hb)5lIqUZ~oU!z)hMI!B9THhw?9!}ykqpFJ|hB?JjV9uwqb z3_70pMV^C7I<3Cg&yMi8JJ3V2gYTOMV=IopfZ#1o>&+j-mB-V${Ok(f?I3{+vR~zE_RR$?9xI~^% z53~ z&bCl+6UeKkUWJ-%mnK{9K>?(3BM3C`@xi}v8)q#;YJhMr5dWvMtAL7X``!bHv~(%m zH8d#Q4N6G~lEW}aGn9ZZNT?v9bV$emf)dg#ASDV?(nu+wpu!_X;(vL<<1zBo-~X&N z>keyizVGaP&c65DbIyEwFn2%(L`P424ZI3nFBA%w{yJ?E} zlwSKF;jIhs(!TFOdMUW|(=qHjr#U-k>`>1u1_yL5Gyy;7@WTOt_)nfIp{D9kwR8f0 z;^Fq=iF(&yd|z30&+I`FBM-P6ouHQ@96TkIe@9=pDDL#_zgXos)-ri5lX-&2D~DsI z4R>xVM$c&aFLgFjwq{1I;jpODOx|n*#@e2+Wgdkm(E(Fad_)peD`1^CJ2TpglmgoC)F(Z)F7y2rzzDU^4wvO{bzw{mzSs4tF;*qabKkC?D!j!tbF z4D_6zbqFVI>n@2-Qmg1BiDdD}>E(72)aMv1Y9duOxwlG|E!L(QmQ#j5vmN@a7v{zIt3qQSP?96^$ITE=h~sLn|N|v8YqmA~-0HWgcPHZ@!3Dzm2X{Bozc{qm>J`Ehp}`FQ%Ecbw%+|H8f`pykvo-%&0a z?&ZtJF*{#AYs8Z|z(IFI8sBiZs)L!C9#1W@;hEInZZZdPz2ZnmhoSP9VHQt7mzZUZ zhM!!5IJbe4Z@zEoMjKaxH&Px8p}1<0YmtWwcG@ZPY@*oQSteU zRy+W=Rs>sJ##v^8EJJt0=5---o<@^?fOEp=N<~xXvcf?$gXD0zVHziRMMmC#Mp3o ze(eT!dvjmXp9_C%pV_>{H=nsqYO)n1J?Ihi zjy7f00`|S<;)I!ZyUO{~#+wXX)z(BWsN|$7n9s}H%ZzE8YQv#vRTHjq@D%tYyfe=3)|7jYxRT#E16nFk&1jFC6CH5d4kiJCVq+%r_$Rec7=G!GuZ-0*$5N2GqXB(dqWPS1Um4{xgi2k=;eO_LDy&GR=Q!)bjKY{f!0yoc0Rol&!E`2BkI$5y4U^*k0=GyL-m8XJL%8prM%;fwyX9M^ zs48n3Oh#a>FVWI7dsm~*l0$^J)lxnfTTw~1ceZ73yNvNurwd`;+^1XuucaFN85M8? z$fNl!D9g*O>6IE^POaoDq`86Sw0t4%jIi`&*EEZI?wwOiEvH8(qpfyDvAe`4pWf7k z3-pFgeT{qtj)B!1ZamZ5g3z6Nd40P(%^Kf@#!uzbIk~8w`9wbhWc~1E|sw6-FsOqrhb2DLDwlaq@)Y zAi$KoA=Vyn=Yxqxtf7wu*$47Ht>WZi{AdeN79#9ws~CtE;~gC$q7T>*5yKK3VT)Q=sllRR}lBIGd17+bOu| zeUeUrMgF=Gjk-{epAyUd_KNgwZK_Pz=H$+{4~E_ZRa3IJpU~IZ5U4Z3l%u3{Ls~`H z(iysmm+!HBJTC-$EpHM9yrXUM^_FZ(3sdmsyZ6=lU8bb3V(WK>P0$l~#QA&NMj@OA z*OQ>^-s_D-bda022~!G!bTh7@FR>t!1r`Js1;4$(^_*hH-_pUPf5C}K-v$%i#KBB! zU{~a7)R>ix z#LA|<6v#rwKkB1JBLWkWu#M0#8i1J0e4dFDP3jrlFfxhkDs%Q~)e6e7fR$U?e$<{x zfZb0?UMsB|E}Fk)@|^{)_^L7O%rp1GRNig@bUX(^6}6HoGi8IXoSKpI1A(GV)uA=7 zOXG&KjZYVjYn6}2YV0yfnKsnpDlF)h$Gv--|6$BsWFg|IWnp|#sk}zOAb6Bb?vb@t zs^7=4IdiKE_rUT@rG!D4Zy zcnas#XT77V&%igMXY(lQS|)lgO{pN9!P-94KeZH_+PK5jESYCSPMN)=D(JIAVeB%D zI_>_lvD;pylkZ#Ral0IzC6ei$J$4NnGw(pnVd`&aaNT5mfq-4)aPjj(v;`VvJ6Xxjm@3DX+Kju z@9-h++s7x>idTEL zd)ptYy?P2$S*_DI;eMR0ZdAuS)~fGEZEguO&+3AwW@Sw$&KvgJr6aGK*Ar;0wx`lr z7V&!+9C7`VcV^t+Wj~AweOGQL!)0)serr$8Fez7kC(VSVRdjqpQuq964RW^2euIre zh10&Tv)|dj*CoRozrW<4y_+5}3EGRok+G7ODl3-CF1r?JYDdw&NbcVT=7ljq_K+8bMeG3uRw@3=cof?j+v+WaKI`WqwByf#7aFK3 z0+R34xQ-6nxQ&9xJKl}`C9FlUe1-h^i?5fr5kjot#MA-$%k106t>*gM+yF3m2X#=1tt07`cK)37dA^A4d8%6R>@0U-UZ~wSvzMlK$tlm~aK`%e8|quXyH`aLM0#Dcu%sqEsKV%i zVn_*W-Qbnl)h?RP>)$rZ5JL!*H;Z{ zk7(FB`lo~h&zB|S6j-Na;y$QM*rn^tkO{>#DWZN@IwJps3*Nm&ox0{{;=J~hvPb-* zvAOEPImrdq()yl~`j`Q;R1Y%CdLKKw*;gtNaM~WDO95YXsTjKCOdRD2Is@aVRTYFD zpS=_EB!@Ub&c*JmNMF=F+)Bq)52|=83IEG;M5(Ol*97!W(S-5X-5w&7->`1Pw-0Ml zpA>jaofnyPQTCzoIG}OK9j^nn>F>jC#$iSnJY8y6ue4nxs@3HtfNx01XVK7NcX#Cu z34g-z=0!7ip&@wI>>6ynJYyFTEgH6DA?b>~V%2s_@NPDza5&6cno!S(|85*74}6_M z%s1c4`B{lqMu``(4~Jk#_`^=tu36TgXPv_}{lhhyi(rrSM_uoVVNuZOuxCXom9|wg zNf&BtzX=hVi*4dG&1J!^QW;O%fQ$jVH=W74B8WR)*tM1{(@cHRqiS_W6R^h8uxd@zV>KNI zR(-LNNkLqh>e=CmL|q9sRHm#15%q$o7_GQMp8FLX-HGnJ<+(;k{Q%+Sk+!^mM+2#1y9+gG2IDZGt%;Cfk{+ zT5}^x=!i2$tnH_se6eC zkn;kK>%ICpo=X&=cSsbxQ|AjJ;5Ff;AyIj>$YA8cw*?W^Nn}S|1jrbf@Bd zr82I8KlOh4#5C0sw3oVvuC0NFPKH4S0$~F$U4JM1Im$B%%oGm_5$Lnr{#Pv}eL1k& zMP(pG$MI^8&!nYffq#$zJ^3GF|cC%2d4V@qKV#fu6u2O

k)oKu82Fu=RODzQrHPEC+Mz{hW(G7VuCl8g1ou-Ot!41bp_>OC1&@A_6e*hc)1X zMuDvzEZyB*fW1^+7dL0%ofr;-xT6B@0~|VazatI{60!X=po^uOr6UB$1POKmuI_&b zOL&O+w*!>`k+y%?Z|wm4$@_1|WC|pKM(F{k8TR$-4hs?i|GBc9)qa{vYq)~5qa(2N zsR?s}0Pp^ufVGEB8oE9VCFa0K$x0HSpem!tIyR69y0rnjg8cqjmWyz7*Kx3~X> z|BZX}Y;oVB1HX@l9_-y7dI*WgruY@?rC&64`}3W`ECA>O@Y#Q@JS<4WBF(QbwJqHM zt)fE#6jTSyZ^E8y0INaIf!omWjvS=@15`O%V2CKg+}z=M9##kLKRN0uJuK250bXVU zwzT&n@30^dzKnlL^us;wClg?CKWEtiEb#zhPVx{PxFQiwEPp^C53zN21EdZAz?3D& zC6fK|_!S5Mq&0z;xWGLEv}!zjfpRg_orp7|fXMx=uP!@X`yT@5(N_Hza}p5fBk&|)J7fZ`NQ9Nz@5xT? zi?iV$q+bG!2LZUpF)>Yl!u;DEHV3!i{ipcJm_8Gj@Dac%N3|SQVGqRhrJ;WOR|CtrwzPTW^&$A6!A$E)h7xohm>hA8p{PUZ~ z_&zeg@OL3PxPtzkfsNZAqXCZ8Is7yQ+plm~8;}|~DEkv&f@?q5hB*OGQYXuwVQOp0 z?QQ`6qyp|-$47wjuV74IE_x2I17$+grwMBE^25d<5!lYhnszuh|5Yk;RB+Uk*hk=m zu73=E^7ul{40{A^?Rg^fq0ZfZO@C1HupR*_d;J>lkFv6&x&}4N;t}1T@2}~AC^<3b zA}RxFPPZe5R{_6dIN9N-GT29Oa}RzA2ekKuEVZbuMOB?Xf**`N5&m}?)TjigdY(rF z?~+a=`0);TlDa1j)1G`AfW? zRl883QPq=w zbB|bHEx%_u*$t@Yl#Vc;y*?2W^|^NJ)DmioQFr~1&>MSBL_b(YIpGWdDm3bT=Mgm1 e+h0K+-~H6qzyuy}`;+tYAZFmzUSVSYum1yJqxCBQ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3499ded5c..09523c0e5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index aeb74cbb4..1aa94a426 100755 --- a/gradlew +++ b/gradlew @@ -83,7 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -130,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -141,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -149,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -198,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/spotless.eclipseformat.xml b/spotless.eclipseformat.xml new file mode 100644 index 000000000..86a556a89 --- /dev/null +++ b/spotless.eclipseformat.xml @@ -0,0 +1,380 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spotless.importorder b/spotless.importorder new file mode 100644 index 000000000..bf5e227ae --- /dev/null +++ b/spotless.importorder @@ -0,0 +1,4 @@ +#Organize Import Order +0= +1=javax|java +2=\# \ No newline at end of file diff --git a/src/main/java/com/cleanroommc/groovyscript/DisabledConfigGui.java b/src/main/java/com/cleanroommc/groovyscript/DisabledConfigGui.java index b76e691a5..da1b3a728 100644 --- a/src/main/java/com/cleanroommc/groovyscript/DisabledConfigGui.java +++ b/src/main/java/com/cleanroommc/groovyscript/DisabledConfigGui.java @@ -9,8 +9,7 @@ public class DisabledConfigGui implements IModGuiFactory { @Override - public void initialize(Minecraft minecraftInstance) { - } + public void initialize(Minecraft minecraftInstance) {} @Override public boolean hasConfigGui() { diff --git a/src/main/java/com/cleanroommc/groovyscript/GroovyScript.java b/src/main/java/com/cleanroommc/groovyscript/GroovyScript.java index 7ac410fe7..f972817b1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/GroovyScript.java +++ b/src/main/java/com/cleanroommc/groovyscript/GroovyScript.java @@ -69,11 +69,12 @@ import java.util.Random; @GroovyBlacklist -@Mod(modid = GroovyScript.ID, - name = GroovyScript.NAME, - version = GroovyScript.VERSION, - dependencies = "after:mixinbooter@[8.0,);", - guiFactory = "com.cleanroommc.groovyscript.DisabledConfigGui") +@Mod( + modid = GroovyScript.ID, + name = GroovyScript.NAME, + version = GroovyScript.VERSION, + dependencies = "after:mixinbooter@[8.0,);", + guiFactory = "com.cleanroommc.groovyscript.DisabledConfigGui") @Mod.EventBusSubscriber(modid = GroovyScript.ID) public class GroovyScript { @@ -180,9 +181,10 @@ public static long runGroovyScriptsInLoader(LoadStage loadStage) { public void onPostInit(FMLPostInitializationEvent event) { CustomClickAction.registerAction("copy", value -> { GuiScreen.setClipboardString(value); - Minecraft.getMinecraft().player.sendMessage(new TextComponentTranslation("groovyscript.command.copy.copied_start") - .appendSibling(new TextComponentString(value).setStyle(new Style().setColor(TextFormatting.GOLD))) - .appendSibling(new TextComponentTranslation("groovyscript.command.copy.copied_end"))); + Minecraft.getMinecraft().player.sendMessage( + new TextComponentTranslation("groovyscript.command.copy.copied_start") + .appendSibling(new TextComponentString(value).setStyle(new Style().setColor(TextFormatting.GOLD))) + .appendSibling(new TextComponentTranslation("groovyscript.command.copy.copied_end"))); }); } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/GroovyBlacklist.java b/src/main/java/com/cleanroommc/groovyscript/api/GroovyBlacklist.java index 5199fcaff..337247984 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/GroovyBlacklist.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/GroovyBlacklist.java @@ -9,6 +9,8 @@ * Use this annotation on fields, methods or classes to make them inaccessible for groovy. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR}) +@Target({ + ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR +}) public @interface GroovyBlacklist { } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/IIngredient.java b/src/main/java/com/cleanroommc/groovyscript/api/IIngredient.java index e78083a4f..180d319f2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/IIngredient.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/IIngredient.java @@ -69,8 +69,7 @@ public int getAmount() { } @Override - public void setAmount(int amount) { - } + public void setAmount(int amount) {} @Override public boolean isEmpty() { @@ -89,7 +88,9 @@ public Ingredient toMcIngredient() { @Override public ItemStack[] getMatchingStacks() { - return new ItemStack[]{ItemStack.EMPTY}; + return new ItemStack[]{ + ItemStack.EMPTY + }; } @Override @@ -104,8 +105,7 @@ public String getMark() { } @Override - public void setMark(String mark) { - } + public void setMark(String mark) {} }; /** @@ -121,6 +121,7 @@ public IIngredient exactCopy() { @Override public Ingredient toMcIngredient() { return new Ingredient() { + @Override public boolean apply(@Nullable ItemStack p_apply_1_) { return true; @@ -144,8 +145,7 @@ public int getAmount() { } @Override - public void setAmount(int amount) { - } + public void setAmount(int amount) {} @Override public boolean test(ItemStack stack) { @@ -159,7 +159,6 @@ public String getMark() { } @Override - public void setMark(String mark) { - } + public void setMark(String mark) {} }; } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/INamed.java b/src/main/java/com/cleanroommc/groovyscript/api/INamed.java index 56007cbc7..663f49a6f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/INamed.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/INamed.java @@ -18,5 +18,4 @@ default String getName() { default boolean isEnabled() { return true; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/IScriptReloadable.java b/src/main/java/com/cleanroommc/groovyscript/api/IScriptReloadable.java index 22311b0e3..e1627f9b5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/IScriptReloadable.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/IScriptReloadable.java @@ -11,5 +11,4 @@ public interface IScriptReloadable extends INamed { @GroovyBlacklist @ApiStatus.OverrideOnly void afterScriptLoad(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Admonition.java b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Admonition.java index e2a927e33..52cf9b91d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Admonition.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Admonition.java @@ -11,7 +11,7 @@ * Admonition for Material for MkDocs. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ /* No targets allowed */}) +@Target({}) // No targets allowed public @interface Admonition { /** @@ -86,6 +86,7 @@ enum Format { *
- {@link #EXAMPLE Example}: Indicates an example of some code in practice. */ enum Type { + /** * Indicates a generic comment - the most common type of Admonition. */ @@ -138,7 +139,5 @@ enum Type { public String toString() { return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name()); } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Comp.java b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Comp.java index 51cf2ff64..997af5883 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Comp.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Comp.java @@ -25,7 +25,7 @@ * @see Property#comp() */ @Retention(RetentionPolicy.RUNTIME) -@Target({ /* No targets allowed */}) +@Target({}) // No targets allowed public @interface Comp { /** @@ -147,6 +147,7 @@ * */ enum Type { + GT(">", "groovyscript.wiki.greater_than"), GTE(">=", "groovyscript.wiki.greater_than_or_equal_to"), EQ("==", "groovyscript.wiki.equal_to"), @@ -191,7 +192,5 @@ public String getSymbol() { public String getKey() { return key; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Example.java b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Example.java index 9f2e8795f..04c47382a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Example.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Example.java @@ -23,7 +23,7 @@ * */ @Retention(RetentionPolicy.RUNTIME) -@Target({ /* No targets allowed */}) +@Target({}) // No targets allowed public @interface Example { /** @@ -92,5 +92,4 @@ * @return the example priority (relative to other examples for the same method or Recipe Builder) */ int priority() default 1000; - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/MethodDescription.java b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/MethodDescription.java index b8f105091..35b1688fc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/MethodDescription.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/MethodDescription.java @@ -97,5 +97,4 @@ enum Type { */ VALUE } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Property.java b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Property.java index 39a5d42c9..22b61e6ad 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Property.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/Property.java @@ -45,7 +45,9 @@ */ @Repeatable(Property.Properties.class) @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.FIELD, ElementType.TYPE}) +@Target({ + ElementType.FIELD, ElementType.TYPE +}) public @interface Property { /** @@ -226,7 +228,5 @@ @interface Properties { Property[] value(); - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RecipeBuilderDescription.java b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RecipeBuilderDescription.java index 277274cdd..a4f6416fd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RecipeBuilderDescription.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RecipeBuilderDescription.java @@ -50,5 +50,4 @@ * @return the method priority (relative to other recipe builder priorities in the same class) */ int priority() default 1000; - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RecipeBuilderMethodDescription.java b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RecipeBuilderMethodDescription.java index 4cc85bba4..38e42f9e8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RecipeBuilderMethodDescription.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RecipeBuilderMethodDescription.java @@ -34,5 +34,4 @@ * @return the method priority */ int priority() default 1000; - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RegistryDescription.java b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RegistryDescription.java index d5926458f..ad81d596c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RegistryDescription.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/documentation/annotations/RegistryDescription.java @@ -118,6 +118,7 @@ * - {@link Reloadability#DISABLED}: cannot be reloaded in-game, and requires a total minecraft restart to apply changes.
*/ enum Reloadability { + /** * Can be reloaded in-game, with each reload reproducing the same game-state as would be produced by restarting minecraft */ @@ -138,7 +139,6 @@ public boolean isReloadable() { public boolean hasFlaws() { return this == FLAWED; } - } /** @@ -146,6 +146,7 @@ public boolean hasFlaws() { * Currently, either specifically "recipes" or generically "entries" */ enum Category { + RECIPES("recipes"), ENTRIES("entries"); @@ -166,7 +167,5 @@ public String removing() { public String query() { return "groovyscript.wiki.query_" + category; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParser.java b/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParser.java index 3c252e47d..ea9da3bfc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParser.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParser.java @@ -40,5 +40,4 @@ public interface InfoParser { * @see InfoParserPackage */ void parse(InfoParserPackage info, boolean enabled); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParserPackage.java b/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParserPackage.java index 8791006ce..f8ae89e58 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParserPackage.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParserPackage.java @@ -177,5 +177,4 @@ public void parse() { public void parse(boolean enabled) { InfoParserRegistry.getInfoParsers().forEach(x -> x.parse(this, enabled)); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParserRegistry.java b/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParserRegistry.java index 7b3ea9542..5c9977412 100644 --- a/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParserRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/infocommand/InfoParserRegistry.java @@ -20,5 +20,4 @@ public static List getInfoParsers() { public static List getIds() { return INFO_PARSERS.stream().sorted(Comparator.comparing(InfoParser::priority)).map(InfoParser::id).collect(Collectors.toList()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/command/BaseInfoCommand.java b/src/main/java/com/cleanroommc/groovyscript/command/BaseInfoCommand.java index 8dfd860b9..6b0d0185e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/command/BaseInfoCommand.java +++ b/src/main/java/com/cleanroommc/groovyscript/command/BaseInfoCommand.java @@ -81,10 +81,11 @@ protected static Entity getEntityLookingAt(EntityPlayer player) { @Override public @NotNull String getUsage(@NotNull ICommandSender sender) { - return String.format("/gs %s [all, pretty, %s, %s]", - getName(), - String.join(", ", InfoParserRegistry.getIds()), - InfoParserRegistry.getIds().stream().map(x -> "-" + x).collect(Collectors.joining(", "))); + return String.format( + "/gs %s [all, pretty, %s, %s]", + getName(), + String.join(", ", InfoParserRegistry.getIds()), + InfoParserRegistry.getIds().stream().map(x -> "-" + x).collect(Collectors.joining(", "))); } @Override @@ -93,7 +94,9 @@ public int getRequiredPermissionLevel() { } @Override - public @NotNull List getTabCompletions(@NotNull MinecraftServer server, @NotNull ICommandSender sender, String @NotNull [] args, + public @NotNull List getTabCompletions(@NotNull MinecraftServer server, + @NotNull ICommandSender sender, + String @NotNull [] args, @Nullable BlockPos targetPos) { List enabledModes = new ArrayList<>(); enabledModes.add("all"); @@ -146,5 +149,4 @@ public void execute(@NotNull MinecraftServer server, @NotNull ICommandSender sen print(player, messages, argList); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/command/GSCommand.java b/src/main/java/com/cleanroommc/groovyscript/command/GSCommand.java index 452012aeb..a73933e03 100644 --- a/src/main/java/com/cleanroommc/groovyscript/command/GSCommand.java +++ b/src/main/java/com/cleanroommc/groovyscript/command/GSCommand.java @@ -29,17 +29,6 @@ public class GSCommand extends CommandTreeBase { - public static void runReload(EntityPlayerMP player, MinecraftServer server) { - if (server.isDedicatedServer()) { - player.sendMessage(new TextComponentString("Reloading in multiplayer is currently not allowed to avoid desync.")); - return; - } - GroovyLog.get().info("========== Reloading Groovy scripts =========="); - long time = GroovyScript.runGroovyScriptsInLoader(LoadStage.POST_INIT); - GroovyScript.postScriptRunResult(player, false, true, false, time); - NetworkHandler.sendToPlayer(new SReloadScripts(null, false, true), player); - } - public GSCommand() { addSubcommand(new SimpleCommand("log", (server, sender, args) -> postLogFiles(sender))); @@ -70,26 +59,36 @@ public GSCommand() { addSubcommand(new InfoLookingCommand()); addSubcommand(new InfoSelfCommand()); - addSubcommand(new SimpleCommand("wiki", (server, sender, args) -> sender.sendMessage( - new TextComponentString("GroovyScript wiki").setStyle(new Style().setColor(TextFormatting.GOLD).setHoverEvent( - new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new TextComponentString("Click to open wiki in browser"))).setClickEvent( - new ClickEvent(ClickEvent.Action.OPEN_URL, "https://cleanroommc.com/groovy-script/")))), "doc", "docs", - "documentation")); + addSubcommand( + new SimpleCommand( + "wiki", + (server, sender, args) -> sender.sendMessage( + new TextComponentString("GroovyScript wiki").setStyle( + new Style().setColor(TextFormatting.GOLD) + .setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString("Click to open wiki in browser"))) + .setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://cleanroommc.com/groovy-script/")))), + "doc", + "docs", + "documentation")); addSubcommand(new SimpleCommand("generateWiki", (server, sender, args) -> { Documentation.generateWiki(); sender.sendMessage( new TextComponentString("Generated a local version of the Groovyscript wiki has been generated to the ").appendSibling( - getTextForFile("Wiki Folder", Documentation.WIKI.toPath().toString(), - new TextComponentString("Click to open the generated GroovyScript wiki folder")))); + getTextForFile( + "Wiki Folder", + Documentation.WIKI.toPath().toString(), + new TextComponentString("Click to open the generated GroovyScript wiki folder")))); }, "generateDoc", "generateDocs", "generateDocumentation")); addSubcommand(new SimpleCommand("generateExamples", (server, sender, args) -> { Documentation.generateExamples(); - sender.sendMessage(new TextComponentString("Generated examples for the enabled Groovyscript compat to the ").appendSibling( - getTextForFile("Examples Folder", Documentation.EXAMPLES.toPath().toString(), - new TextComponentString("Click to open the Groovyscript examples folder")))); + sender.sendMessage( + new TextComponentString("Generated examples for the enabled Groovyscript compat to the ").appendSibling( + getTextForFile( + "Examples Folder", + Documentation.EXAMPLES.toPath().toString(), + new TextComponentString("Click to open the Groovyscript examples folder")))); })); addSubcommand(new SimpleCommand("creativeTabs", (server, sender, args) -> { @@ -97,9 +96,12 @@ public GSCommand() { for (CreativeTabs tab : CreativeTabs.CREATIVE_TAB_ARRAY) { GroovyLog.get().getWriter().println(" - " + tab.getTabLabel()); } - sender.sendMessage(new TextComponentString("Creative tabs has been logged to the ").appendSibling( - GSCommand.getTextForFile("Groovy Log", GroovyLog.get().getLogFilePath().toString(), - new TextComponentString("Click to open GroovyScript log")))); + sender.sendMessage( + new TextComponentString("Creative tabs has been logged to the ").appendSibling( + GSCommand.getTextForFile( + "Groovy Log", + GroovyLog.get().getLogFilePath().toString(), + new TextComponentString("Click to open GroovyScript log")))); })); addSubcommand(new SimpleCommand("deleteScriptCache", (server, sender, args) -> { @@ -129,22 +131,15 @@ public GSCommand() { } } - @Override - @NotNull - public String getName() { - return "groovyscript"; - } - - @Override - @NotNull - public List getAliases() { - return Arrays.asList("grs", "GroovyScript", "gs"); - } - - @Override - @NotNull - public String getUsage(@NotNull ICommandSender sender) { - return "/grs []"; + public static void runReload(EntityPlayerMP player, MinecraftServer server) { + if (server.isDedicatedServer()) { + player.sendMessage(new TextComponentString("Reloading in multiplayer is currently not allowed to avoid desync.")); + return; + } + GroovyLog.get().info("========== Reloading Groovy scripts =========="); + long time = GroovyScript.runGroovyScriptsInLoader(LoadStage.POST_INIT); + GroovyScript.postScriptRunResult(player, false, true, false, time); + NetworkHandler.sendToPlayer(new SReloadScripts(null, false, true), player); } public static void postLogFiles(ICommandSender sender) { @@ -154,9 +149,7 @@ public static void postLogFiles(ICommandSender sender) { public static ITextComponent getTextForFile(String name, String path, ITextComponent hoverText) { return new TextComponentString(TextFormatting.UNDERLINE + (TextFormatting.GOLD + name)) - .setStyle(new Style() - .setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, path)) - .setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverText))); + .setStyle(new Style().setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, path)).setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverText))); } public static boolean hasArgument(String[] args, String arg) { @@ -166,4 +159,21 @@ public static boolean hasArgument(String[] args, String arg) { return false; } + @Override + @NotNull + public String getName() { + return "groovyscript"; + } + + @Override + @NotNull + public List getAliases() { + return Arrays.asList("grs", "GroovyScript", "gs"); + } + + @Override + @NotNull + public String getUsage(@NotNull ICommandSender sender) { + return "/grs []"; + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/command/InfoHandCommand.java b/src/main/java/com/cleanroommc/groovyscript/command/InfoHandCommand.java index 8e7cef6ae..e9da3d386 100644 --- a/src/main/java/com/cleanroommc/groovyscript/command/InfoHandCommand.java +++ b/src/main/java/com/cleanroommc/groovyscript/command/InfoHandCommand.java @@ -28,5 +28,4 @@ void gatherInfo(InfoParserPackage info, EntityPlayer player) { info.setBlockState(itemBlock.getBlock().getStateFromMeta(info.getStack().getMetadata())); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/command/InfoInfoCommand.java b/src/main/java/com/cleanroommc/groovyscript/command/InfoInfoCommand.java index 7103b26e5..c4d910632 100644 --- a/src/main/java/com/cleanroommc/groovyscript/command/InfoInfoCommand.java +++ b/src/main/java/com/cleanroommc/groovyscript/command/InfoInfoCommand.java @@ -38,5 +38,4 @@ void gatherInfo(InfoParserPackage info, EntityPlayer player) { info.setBlockState(itemBlock.getBlock().getStateFromMeta(info.getStack().getMetadata())); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/command/InfoLookingCommand.java b/src/main/java/com/cleanroommc/groovyscript/command/InfoLookingCommand.java index 4106988ff..349be774b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/command/InfoLookingCommand.java +++ b/src/main/java/com/cleanroommc/groovyscript/command/InfoLookingCommand.java @@ -24,5 +24,4 @@ void gatherInfo(InfoParserPackage info, EntityPlayer player) { info.copyFromPos(getBlockLookingAt(player)); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/command/InfoSelfCommand.java b/src/main/java/com/cleanroommc/groovyscript/command/InfoSelfCommand.java index d19f2a176..f002803b8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/command/InfoSelfCommand.java +++ b/src/main/java/com/cleanroommc/groovyscript/command/InfoSelfCommand.java @@ -20,5 +20,4 @@ protected String targetDescription() { void gatherInfo(InfoParserPackage info, EntityPlayer player) { info.setEntity(player); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/content/Content.java b/src/main/java/com/cleanroommc/groovyscript/compat/content/Content.java index f254c465e..3c8e0477b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/content/Content.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/content/Content.java @@ -60,6 +60,7 @@ public GroovyFluid.Builder createFluid(String name) { public CreativeTabs createCreativeTab(String name, ItemStack icon) { return new CreativeTabs(name) { + @Override public @NotNull ItemStack createIcon() { return icon.copy(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/content/GroovyFluid.java b/src/main/java/com/cleanroommc/groovyscript/compat/content/GroovyFluid.java index 6fe92ec5f..eb8807b2b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/content/GroovyFluid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/content/GroovyFluid.java @@ -219,9 +219,7 @@ public Fluid register() { FluidRegistry.registerFluid(fluid); FluidRegistry.addBucketForFluid(fluid); if (this.createBlock) { - BlockFluidBase block = this.finiteFluidBlock ? - new BlockFluidFinite(fluid, this.material) : - new BlockFluidClassic(fluid, this.material); + BlockFluidBase block = this.finiteFluidBlock ? new BlockFluidFinite(fluid, this.material) : new BlockFluidClassic(fluid, this.material); block.setRegistryName(new ResourceLocation(mod, this.name)); fluidBlocks.add(block); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/content/GroovyResourcePack.java b/src/main/java/com/cleanroommc/groovyscript/compat/content/GroovyResourcePack.java index 98060239a..ce871ad97 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/content/GroovyResourcePack.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/content/GroovyResourcePack.java @@ -40,4 +40,4 @@ public T getPackMetadata(@NotNull MetadataSerialize public @NotNull String getPackName() { return "GroovyScriptResources"; } -} \ No newline at end of file +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java index 4fc31e8ef..abfa7e19e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java @@ -8,7 +8,6 @@ import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.StandardListRegistry; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.cleanroommc.groovyscript.sandbox.ClosureHelper; import groovy.lang.Closure; import net.minecraft.entity.item.EntityItem; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java index c9d9ef08c..feebda65e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java @@ -139,8 +139,13 @@ public void validate(GroovyLog.Msg msg) { @Override public @Nullable FluidToBlock.Recipe register() { - Recipe recipe = new Recipe(this.fluidInput.get(0).getFluid(), this.input.toArray(new IIngredient[0]), this.chances.toFloatArray(), - this.startCondition, this.afterRecipe, this.outputBlock); + Recipe recipe = new Recipe( + this.fluidInput.get(0).getFluid(), + this.input.toArray(new IIngredient[0]), + this.chances.toFloatArray(), + this.startCondition, + this.afterRecipe, + this.outputBlock); VanillaModule.inWorldCrafting.fluidToBlock.add(recipe); return recipe; } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java index 64b4bf1ae..c0534d2a2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java @@ -125,8 +125,13 @@ public void validate(GroovyLog.Msg msg) { @Override public @Nullable Recipe register() { - Recipe recipe = new Recipe(this.fluidInput.get(0).getFluid(), this.input.toArray(new IIngredient[0]), this.chances.toFloatArray(), - this.startCondition, this.afterRecipe, this.fluidOutput.get(0).getFluid()); + Recipe recipe = new Recipe( + this.fluidInput.get(0).getFluid(), + this.input.toArray(new IIngredient[0]), + this.chances.toFloatArray(), + this.startCondition, + this.afterRecipe, + this.fluidOutput.get(0).getFluid()); VanillaModule.inWorldCrafting.fluidToFluid.add(recipe); return recipe; } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java index 8c51d2b26..1c7c82021 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java @@ -149,8 +149,14 @@ public void validate(GroovyLog.Msg msg) { @Override public @Nullable FluidToItem.Recipe register() { - Recipe recipe = new Recipe(this.fluidInput.get(0).getFluid(), this.input.toArray(new IIngredient[0]), this.chances.toFloatArray(), - this.startCondition, this.afterRecipe, this.output.get(0), this.fluidConsumptionChance); + Recipe recipe = new Recipe( + this.fluidInput.get(0).getFluid(), + this.input.toArray(new IIngredient[0]), + this.chances.toFloatArray(), + this.startCondition, + this.afterRecipe, + this.output.get(0), + this.fluidConsumptionChance); VanillaModule.inWorldCrafting.fluidToItem.add(recipe); return recipe; } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/jei/InWorldCraftingJeiPlugin.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/jei/InWorldCraftingJeiPlugin.java index b589743ec..89469a3c7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/jei/InWorldCraftingJeiPlugin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/jei/InWorldCraftingJeiPlugin.java @@ -42,5 +42,4 @@ public static void register(IModRegistry registry) { registry.addRecipes(VanillaModule.inWorldCrafting.burning.getRecipeWrappers(), BurningRecipeCategory.UID); registry.addRecipes(VanillaModule.inWorldCrafting.pistonPush.getRecipeWrappers(), PistonPushRecipeCategory.UID); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/loot/GroovyLootCondition.java b/src/main/java/com/cleanroommc/groovyscript/compat/loot/GroovyLootCondition.java index 427da5a39..0dfb95db8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/loot/GroovyLootCondition.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/loot/GroovyLootCondition.java @@ -12,11 +12,15 @@ public class GroovyLootCondition implements LootCondition { + private static final Class[] CLOSURE_CLASSES = { + Random.class, LootContext.class + }; + public final Closure condition; public GroovyLootCondition(Closure condition) { this.condition = condition; - if (!Arrays.equals(condition.getParameterTypes(), new Class[]{Random.class, LootContext.class})) { + if (!Arrays.equals(condition.getParameterTypes(), CLOSURE_CLASSES)) { GroovyLog.msg("Warning: LootCondition closures must take the following parameters (java.util.Random, net.minecraft.world.storage.loot.LootContext)") .debug() .post(); @@ -27,5 +31,4 @@ public GroovyLootCondition(Closure condition) { public boolean testCondition(@NotNull Random rand, @NotNull LootContext context) { return ClosureHelper.call(true, condition, rand, context); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/loot/GroovyLootFunction.java b/src/main/java/com/cleanroommc/groovyscript/compat/loot/GroovyLootFunction.java index 73f908906..25df34e1b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/loot/GroovyLootFunction.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/loot/GroovyLootFunction.java @@ -14,6 +14,10 @@ public class GroovyLootFunction extends LootFunction { + private static final Class[] CLOSURE_CLASSES = { + ItemStack.class, Random.class, LootContext.class + }; + private final Closure function; public GroovyLootFunction(Closure function) { @@ -23,7 +27,7 @@ public GroovyLootFunction(Closure function) { public GroovyLootFunction(LootCondition[] conditions, Closure function) { super(conditions); this.function = function; - if (!Arrays.equals(function.getParameterTypes(), new Class[]{ItemStack.class, Random.class, LootContext.class})) { + if (!Arrays.equals(function.getParameterTypes(), CLOSURE_CLASSES)) { GroovyLog.msg("Warning: LootFunction closures must take the following parameters (net.minecraft.item.ItemStack, java.util.Random, net.minecraft.world.storage.loot.LootContext)") .debug() .post(); @@ -34,5 +38,4 @@ public GroovyLootFunction(LootCondition[] conditions, Closure function) public @NotNull ItemStack apply(@NotNull ItemStack stack, @NotNull Random rand, @NotNull LootContext context) { return ClosureHelper.call(stack, function, stack, rand, context); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/loot/Loot.java b/src/main/java/com/cleanroommc/groovyscript/compat/loot/Loot.java index 6875dfd78..8be92a335 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/loot/Loot.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/loot/Loot.java @@ -43,5 +43,4 @@ public void afterScriptLoad() { } } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/loot/LootEntryBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/loot/LootEntryBuilder.java index d677d6c2a..5f1327b79 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/loot/LootEntryBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/loot/LootEntryBuilder.java @@ -144,7 +144,7 @@ public LootEntryBuilder enchantRandomly(Enchantment enchantment, LootCondition.. public LootEntryBuilder enchantRandomly(Enchantment[] enchantments, LootCondition... conditions) { List list = (enchantments != null) ? Lists.newArrayList(enchantments) : null; - this.functions.add(new EnchantRandomly((conditions == null)? EMPTY_CONDITIONS : conditions, list)); + this.functions.add(new EnchantRandomly((conditions == null) ? EMPTY_CONDITIONS : conditions, list)); return this; } @@ -164,7 +164,7 @@ public LootEntryBuilder lootingBonus(float min, float max, int limit, LootCondit out.add(min < 0.0f, () -> "lootingEnchantBonus minimum cannot be less than 0."); out.add(max < 0.0f, () -> "lootingEnchantBonus maximum cannot be less than 0."); out.add(limit < 0, () -> "lootingEnchantBonus limit cannot be less than 0."); - this.functions.add(new LootingEnchantBonus((conditions == null)? EMPTY_CONDITIONS : conditions, new RandomValueRange(Math.max(min, 0.0f), Math.max(max, 0.0f)), Math.max(limit, 0))); + this.functions.add(new LootingEnchantBonus((conditions == null) ? EMPTY_CONDITIONS : conditions, new RandomValueRange(Math.max(min, 0.0f), Math.max(max, 0.0f)), Math.max(limit, 0))); return this; } @@ -183,7 +183,7 @@ public LootEntryBuilder setDamage(int min, int max) { public LootEntryBuilder setDamage(int min, int max, LootCondition... conditions) { out.add(min < 0 || min >= 32767, () -> "setDamage minimum cannot be less than 0 or more than 32766."); out.add(max < 0 || min >= 32767, () -> "setDamage maximum cannot be less than 0 or more than 32766."); - this.functions.add(new SetDamage((conditions == null)? EMPTY_CONDITIONS : conditions, new RandomValueRange(Math.max(min, 0.0f), Math.max(max, 0.0f)))); + this.functions.add(new SetDamage((conditions == null) ? EMPTY_CONDITIONS : conditions, new RandomValueRange(Math.max(min, 0.0f), Math.max(max, 0.0f)))); return this; } @@ -202,7 +202,7 @@ public LootEntryBuilder setCount(int min, int max) { public LootEntryBuilder setCount(int min, int max, LootCondition... conditions) { out.add(min < 0, () -> "setCount minimum cannot be less than 0."); out.add(max < 0, () -> "setCount maximum cannot be less than 0."); - this.functions.add(new SetCount((conditions == null)? EMPTY_CONDITIONS : conditions, new RandomValueRange(Math.max(min, 0.0f), Math.max(max, 0.0f)))); + this.functions.add(new SetCount((conditions == null) ? EMPTY_CONDITIONS : conditions, new RandomValueRange(Math.max(min, 0.0f), Math.max(max, 0.0f)))); return this; } @@ -221,7 +221,7 @@ public LootEntryBuilder setMetadata(int min, int max) { public LootEntryBuilder setMetadata(int min, int max, LootCondition... conditions) { out.add(min < 0 || min >= 32767, () -> "setMetadata minimum cannot be less than 0 or more than 32766."); out.add(max < 0 || min >= 32767, () -> "setMetadata maximum cannot be less than 0 or more than 32766."); - this.functions.add(new SetMetadata((conditions == null)? EMPTY_CONDITIONS : conditions, new RandomValueRange(Math.max(min, 0.0f), Math.max(max, 0.0f)))); + this.functions.add(new SetMetadata((conditions == null) ? EMPTY_CONDITIONS : conditions, new RandomValueRange(Math.max(min, 0.0f), Math.max(max, 0.0f)))); return this; } @@ -256,7 +256,7 @@ public LootEntryBuilder setNBT(Map tag, LootCondition... conditi } public LootEntryBuilder setNBT(NBTTagCompound tag, LootCondition... conditions) { - this.functions.add(new SetNBT((conditions == null)? EMPTY_CONDITIONS : conditions, tag)); + this.functions.add(new SetNBT((conditions == null) ? EMPTY_CONDITIONS : conditions, tag)); return this; } @@ -332,9 +332,8 @@ public LootEntry build() { public void register() { if (!validate(true)) return; - VanillaModule.loot.tables.get(tableName).getPool(poolName).addEntry( - new LootEntryItem(item, weight, quality, functions.toArray(new LootFunction[0]), conditions.toArray(new LootCondition[0]), name) - ); + VanillaModule.loot.tables.get(tableName) + .getPool(poolName) + .addEntry(new LootEntryItem(item, weight, quality, functions.toArray(new LootFunction[0]), conditions.toArray(new LootCondition[0]), name)); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/loot/LootPoolBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/loot/LootPoolBuilder.java index 55314495b..80b7308d7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/loot/LootPoolBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/loot/LootPoolBuilder.java @@ -53,10 +53,12 @@ public LootPoolBuilder entry(LootEntry entry) { } public LootPoolBuilder entry(ItemStack stack, int weight) { - this.lootEntries.add(new LootEntryBuilder() - .name(stack.getItem().getRegistryName().getNamespace() + ":" + stack.getMetadata()) - .item(stack) - .weight(weight).build()); + this.lootEntries.add( + new LootEntryBuilder() + .name(stack.getItem().getRegistryName().getNamespace() + ":" + stack.getMetadata()) + .item(stack) + .weight(weight) + .build()); return this; } @@ -133,9 +135,9 @@ public LootPool build() { public void register() { if (!validate(true)) return; - VanillaModule.loot.tables.get(tableName).addPool( - new LootPool(lootEntries.toArray(new LootEntry[0]), poolConditions.toArray(new LootCondition[0]), rolls, bonusRolls, name) - ); + VanillaModule.loot.tables.get(tableName) + .addPool( + new LootPool(lootEntries.toArray(new LootEntry[0]), poolConditions.toArray(new LootCondition[0]), rolls, bonusRolls, name) + ); } - -} \ No newline at end of file +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/GroovyPropertyContainer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/GroovyPropertyContainer.java index 0950602c8..081e0b1d2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/GroovyPropertyContainer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/GroovyPropertyContainer.java @@ -47,13 +47,12 @@ public Map getProperties() { */ @GroovyBlacklist @ApiStatus.OverrideOnly - public void initialize(GroovyContainer owner) { - } + public void initialize(GroovyContainer owner) {} protected void addPropertyFieldsOf(Object object, boolean privateToo) { boolean staticOnly = false; Class clazz; - if (object instanceof Class c) { + if (object instanceof Classc) { clazz = c; staticOnly = true; } else { @@ -61,10 +60,7 @@ protected void addPropertyFieldsOf(Object object, boolean privateToo) { } for (Field field : clazz.getDeclaredFields()) { boolean isStatic = Modifier.isStatic(field.getModifiers()); - if (!field.isAnnotationPresent(GroovyBlacklist.class) && - INamed.class.isAssignableFrom(field.getType()) && - (!staticOnly || isStatic) && - (privateToo || (Modifier.isPublic(field.getModifiers())))) { + if (!field.isAnnotationPresent(GroovyBlacklist.class) && INamed.class.isAssignableFrom(field.getType()) && (!staticOnly || isStatic) && (privateToo || (Modifier.isPublic(field.getModifiers())))) { try { if (!field.isAccessible()) field.setAccessible(true); Object o = field.get(isStatic ? null : object); @@ -78,4 +74,3 @@ protected void addPropertyFieldsOf(Object object, boolean privateToo) { } } } - diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/InternalModContainer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/InternalModContainer.java index 1333a67c6..efd2c5005 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/InternalModContainer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/InternalModContainer.java @@ -78,6 +78,5 @@ public T get() { } @Override - public void onCompatLoaded(GroovyContainer container) { - } + public void onCompatLoaded(GroovyContainer container) {} } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/ActuallyAdditions.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/ActuallyAdditions.java index 4640e6e26..b8a6b6fcc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/ActuallyAdditions.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/ActuallyAdditions.java @@ -13,5 +13,4 @@ public class ActuallyAdditions extends GroovyPropertyContainer { public final AtomicReconstructor atomicReconstructor = new AtomicReconstructor(); public final NetherMiningLens netherMiningLens = new NetherMiningLens(); public final StoneMiningLens stoneMiningLens = new StoneMiningLens(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java index 827eaa175..fa0633d2d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java @@ -104,7 +104,9 @@ public RecipeBuilder time(int time) { return this; } - @RecipeBuilderMethodDescription(field = {"red", "green", "blue"}) + @RecipeBuilderMethodDescription(field = { + "red", "green", "blue" + }) public RecipeBuilder particleColor(float... color) { if (color.length != 3) { GroovyLog.get().warn("Error setting color in Actually Additions Empowerer recipe. color must contain 3 floats, yet it contained {}", color.length); @@ -116,13 +118,17 @@ public RecipeBuilder particleColor(float... color) { return this; } - @RecipeBuilderMethodDescription(field = {"red", "green", "blue"}) + @RecipeBuilderMethodDescription(field = { + "red", "green", "blue" + }) public RecipeBuilder color(float... color) { return this.particleColor(color); } - @RecipeBuilderMethodDescription(field = {"red", "green", "blue"}) + @RecipeBuilderMethodDescription(field = { + "red", "green", "blue" + }) public RecipeBuilder particleColor(int hex) { Color color = new Color(hex); this.red = color.getRed() / 255.0f; @@ -132,7 +138,9 @@ public RecipeBuilder particleColor(int hex) { } - @RecipeBuilderMethodDescription(field = {"red", "green", "blue"}) + @RecipeBuilderMethodDescription(field = { + "red", "green", "blue" + }) public RecipeBuilder color(int hex) { return this.particleColor(hex); } @@ -195,7 +203,9 @@ public void validate(GroovyLog.Msg msg) { input.get(3).toMcIngredient(), energyPerStand, time, - new float[]{red, green, blue} + new float[]{ + red, green, blue + } ); ModSupport.ACTUALLY_ADDITIONS.get().empowerer.add(recipe); return recipe; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/AdvancedMortars.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/AdvancedMortars.java index ce9d03c15..14e6f5231 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/AdvancedMortars.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/AdvancedMortars.java @@ -5,5 +5,4 @@ public class AdvancedMortars extends GroovyPropertyContainer { public final Mortar mortar = new Mortar(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java index fb8daa71d..2b55b1c44 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java @@ -166,7 +166,9 @@ public RecipeBuilder secondaryOutput(ItemStack itemStack) { return this; } - @RecipeBuilderMethodDescription(field = {"secondaryOutput", "secondaryOutputChance"}) + @RecipeBuilderMethodDescription(field = { + "secondaryOutput", "secondaryOutputChance" + }) public RecipeBuilder secondaryOutput(ItemStack itemStack, float chance) { this.secondaryOutput = itemStack; this.secondaryOutputChance = chance; @@ -207,5 +209,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/AdvancedRocketry.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/AdvancedRocketry.java index 83301a4a8..04bfcb3e8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/AdvancedRocketry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/AdvancedRocketry.java @@ -1,19 +1,18 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; - -public class AdvancedRocketry extends GroovyPropertyContainer { - - public final Centrifuge centrifuge = new Centrifuge(); - public final ChemicalReactor reactor = new ChemicalReactor(); - public final Crystallizer crystallizer = new Crystallizer(); - public final CuttingMachine cutting = new CuttingMachine(); - public final ElectricArcFurnace arcFurnace = new ElectricArcFurnace(); - public final Electrolyser electrolyser = new Electrolyser(); - public final Lathe lathe = new Lathe(); - public final PrecisionAssembler assembler = new PrecisionAssembler(); - public final PrecisionLaserEtcher laserEtcher = new PrecisionLaserEtcher(); - public final RollingMachine rolling = new RollingMachine(); - public final SmallPlatePresser platePress = new SmallPlatePresser(); - -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; + +public class AdvancedRocketry extends GroovyPropertyContainer { + + public final Centrifuge centrifuge = new Centrifuge(); + public final ChemicalReactor reactor = new ChemicalReactor(); + public final Crystallizer crystallizer = new Crystallizer(); + public final CuttingMachine cutting = new CuttingMachine(); + public final ElectricArcFurnace arcFurnace = new ElectricArcFurnace(); + public final Electrolyser electrolyser = new Electrolyser(); + public final Lathe lathe = new Lathe(); + public final PrecisionAssembler assembler = new PrecisionAssembler(); + public final PrecisionLaserEtcher laserEtcher = new PrecisionLaserEtcher(); + public final RollingMachine rolling = new RollingMachine(); + public final SmallPlatePresser platePress = new SmallPlatePresser(); +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/BaseRegistry.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/BaseRegistry.java index 1e5c3485d..88e558a3a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/BaseRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/BaseRegistry.java @@ -1,198 +1,199 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.Comp; -import com.cleanroommc.groovyscript.api.documentation.annotations.Property; -import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderMethodDescription; -import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderRegistrationMethod; -import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.StandardListRegistry; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import zmaster587.libVulpes.interfaces.IRecipe; -import zmaster587.libVulpes.recipe.RecipesMachine; -import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; - -import java.util.*; - -public abstract class BaseRegistry extends StandardListRegistry { - - protected abstract Class getMachineClass(); - - @Override - @NotNull - @SuppressWarnings("unchecked") - public Collection getRecipes() { - Class clazz = getMachineClass(); - RecipesMachine registry = RecipesMachine.getInstance(); - List recipes = registry.getRecipes(clazz); - if (recipes == null) { - recipes = new LinkedList<>(); - // NOTE: this cast is completely invalid but Advanced Rocketry's code is abusing type erasure on Class generic - // to perform the same cast when adding recipes to Small Plate Press (which is not a TileMultiblockMachine) - registry.recipeList.put((Class) clazz, recipes); - } - return recipes; - } - - public boolean removeByFluidInput(FluidStack fluidStack) { - return getRecipes().removeIf(r -> { - List inputFluid = r.getFluidIngredients(); - if (inputFluid.stream().anyMatch(fluidIn -> fluidIn.isFluidEqual(fluidStack))) { - addBackup(r); - return true; - } - return false; - }); - } - - public boolean removeByInput(IIngredient inputItem) { - if (inputItem instanceof FluidStack) { - return removeByFluidInput((FluidStack) inputItem); - } - return getRecipes().removeIf(r -> { - List> input = r.getIngredients(); - if (input.stream().anyMatch(itemStacks -> itemStacks.stream().anyMatch(inputItem))) { - addBackup(r); - return true; - } - return false; - }); - } - - public boolean removeByFluidOutput(FluidStack fluidStack) { - return getRecipes().removeIf(r -> { - List outputFluid = r.getFluidOutputs(); - if (outputFluid.stream().anyMatch(fluidOut -> fluidOut.isFluidEqual(fluidStack))) { - addBackup(r); - return true; - } - return false; - }); - } - - public boolean removeByOutput(IIngredient outputItem) { - if (outputItem instanceof FluidStack) { - return removeByFluidInput((FluidStack) outputItem); - } - return getRecipes().removeIf(r -> { - List output = r.getOutput(); - if (output.stream().anyMatch(outputItem)) { - addBackup(r); - return true; - } - return false; - }); - } - - public abstract static class RecipeBuilder extends AbstractRecipeBuilder { - // still have to override the Validate method + add getRegistry method - - @Property(value = "groovyscript.wiki.advancedrocketry.power.value", needsOverride = true) - protected int power = 0; - @Property(value = "groovyscript.wiki.advancedrocketry.time.value", needsOverride = true) - protected int time = 0; - @Property(value = "groovyscript.wiki.advancedrocketry.outputSize.value", needsOverride = true) - protected int outputSize = 0; - - protected final List outputChances = new ArrayList<>(); - - // 0.0f is used because that's what AR uses for "100% chance". Copium. - @Override - @RecipeBuilderMethodDescription - public RecipeBuilder output(ItemStack output) { - return output(output, 0.0f); - } - - @RecipeBuilderMethodDescription(field = {"output", "outputChances"}) - protected RecipeBuilder output(ItemStack output, float chance) { - this.output.add(output); - this.outputChances.add(chance); - return this; - } - - @Override - public String getErrorMsg() { - return String.format("Error adding Advanced Rocketry %s recipe", getRegistry().getName()); - } - - protected int getHatchesNeeded() { - return (int) (Math.ceil(((double) input.size()) / 4) + Math.ceil(((double) output.size()) / 4) + fluidInput.size() + fluidOutput.size()); - } - - protected abstract BaseRegistry getRegistry(); - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable IRecipe register() { - if (!validate()) return null; - List> inputs = new LinkedList<>(); - Map oredicts = new HashMap<>(); - for (int i = 0; i < input.size(); i++) { - IIngredient in = input.get(i); - inputs.add(Arrays.asList(in.getMatchingStacks())); - if (in instanceof OreDictIngredient) { - oredicts.put(i, ((OreDictIngredient) in).getOreDict()); - } - } - - List outputs = new LinkedList<>(); - for (int i = 0; i < output.size(); i++) { - ItemStack out = output.get(i); - float chance = outputChances.get(i); - outputs.add(new RecipesMachine.ChanceItemStack(out, chance)); - } - - List fluidOutputs = new LinkedList<>(); - for (FluidStack out : fluidOutput) { - // Fluid chances don't work properly, at least in the centrifuge. - fluidOutputs.add(new RecipesMachine.ChanceFluidStack(out, 1.0f)); - } - - RecipesMachine.Recipe r = new RecipesMachine.Recipe(outputs, inputs, fluidOutputs, fluidInput, time, power, oredicts); - if (outputSize > 0) r.setMaxOutputSize(outputSize); - getRegistry().add(r); - return r; - } - } - - @Property(property = "power", comp = @Comp(gte = 1), value = "groovyscript.wiki.advancedrocketry.power.value", hierarchy = 5) - @Property(property = "time", comp = @Comp(gte = 1), value = "groovyscript.wiki.advancedrocketry.time.value", hierarchy = 5) - @Property(property = "outputSize", comp = @Comp(gte = 1), value = "groovyscript.wiki.advancedrocketry.outputSize.value", hierarchy = 5) - public abstract static class MultiblockRecipeBuilder extends RecipeBuilder { - - @RecipeBuilderMethodDescription - public MultiblockRecipeBuilder time(int time) { - this.time = time; - return this; - } - - @RecipeBuilderMethodDescription - public MultiblockRecipeBuilder power(int power) { - this.power = power; - return this; - } - - @RecipeBuilderMethodDescription - public MultiblockRecipeBuilder outputSize(int outputSize) { - this.outputSize = outputSize; - return this; - } - - @Override - @RecipeBuilderMethodDescription - public RecipeBuilder output(ItemStack output) { - return output(output, 0.0f); - } - - @Override - @RecipeBuilderMethodDescription - public RecipeBuilder output(ItemStack output, float chance) { - return super.output(output, chance); - } - } - -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.Comp; +import com.cleanroommc.groovyscript.api.documentation.annotations.Property; +import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderMethodDescription; +import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderRegistrationMethod; +import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.StandardListRegistry; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import zmaster587.libVulpes.interfaces.IRecipe; +import zmaster587.libVulpes.recipe.RecipesMachine; +import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; + +import java.util.*; + +public abstract class BaseRegistry extends StandardListRegistry { + + protected abstract Class getMachineClass(); + + @Override + @NotNull + @SuppressWarnings("unchecked") + public Collection getRecipes() { + Class clazz = getMachineClass(); + RecipesMachine registry = RecipesMachine.getInstance(); + List recipes = registry.getRecipes(clazz); + if (recipes == null) { + recipes = new LinkedList<>(); + // NOTE: this cast is completely invalid but Advanced Rocketry's code is abusing type erasure on Class generic + // to perform the same cast when adding recipes to Small Plate Press (which is not a TileMultiblockMachine) + registry.recipeList.put((Class) clazz, recipes); + } + return recipes; + } + + public boolean removeByFluidInput(FluidStack fluidStack) { + return getRecipes().removeIf(r -> { + List inputFluid = r.getFluidIngredients(); + if (inputFluid.stream().anyMatch(fluidIn -> fluidIn.isFluidEqual(fluidStack))) { + addBackup(r); + return true; + } + return false; + }); + } + + public boolean removeByInput(IIngredient inputItem) { + if (inputItem instanceof FluidStack) { + return removeByFluidInput((FluidStack) inputItem); + } + return getRecipes().removeIf(r -> { + List> input = r.getIngredients(); + if (input.stream().anyMatch(itemStacks -> itemStacks.stream().anyMatch(inputItem))) { + addBackup(r); + return true; + } + return false; + }); + } + + public boolean removeByFluidOutput(FluidStack fluidStack) { + return getRecipes().removeIf(r -> { + List outputFluid = r.getFluidOutputs(); + if (outputFluid.stream().anyMatch(fluidOut -> fluidOut.isFluidEqual(fluidStack))) { + addBackup(r); + return true; + } + return false; + }); + } + + public boolean removeByOutput(IIngredient outputItem) { + if (outputItem instanceof FluidStack) { + return removeByFluidInput((FluidStack) outputItem); + } + return getRecipes().removeIf(r -> { + List output = r.getOutput(); + if (output.stream().anyMatch(outputItem)) { + addBackup(r); + return true; + } + return false; + }); + } + + public abstract static class RecipeBuilder extends AbstractRecipeBuilder { + // still have to override the Validate method + add getRegistry method + + @Property(value = "groovyscript.wiki.advancedrocketry.power.value", needsOverride = true) + protected int power = 0; + @Property(value = "groovyscript.wiki.advancedrocketry.time.value", needsOverride = true) + protected int time = 0; + @Property(value = "groovyscript.wiki.advancedrocketry.outputSize.value", needsOverride = true) + protected int outputSize = 0; + + protected final List outputChances = new ArrayList<>(); + + // 0.0f is used because that's what AR uses for "100% chance". Copium. + @Override + @RecipeBuilderMethodDescription + public RecipeBuilder output(ItemStack output) { + return output(output, 0.0f); + } + + @RecipeBuilderMethodDescription(field = { + "output", "outputChances" + }) + protected RecipeBuilder output(ItemStack output, float chance) { + this.output.add(output); + this.outputChances.add(chance); + return this; + } + + @Override + public String getErrorMsg() { + return String.format("Error adding Advanced Rocketry %s recipe", getRegistry().getName()); + } + + protected int getHatchesNeeded() { + return (int) (Math.ceil(((double) input.size()) / 4) + Math.ceil(((double) output.size()) / 4) + fluidInput.size() + fluidOutput.size()); + } + + protected abstract BaseRegistry getRegistry(); + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable IRecipe register() { + if (!validate()) return null; + List> inputs = new LinkedList<>(); + Map oredicts = new HashMap<>(); + for (int i = 0; i < input.size(); i++) { + IIngredient in = input.get(i); + inputs.add(Arrays.asList(in.getMatchingStacks())); + if (in instanceof OreDictIngredient) { + oredicts.put(i, ((OreDictIngredient) in).getOreDict()); + } + } + + List outputs = new LinkedList<>(); + for (int i = 0; i < output.size(); i++) { + ItemStack out = output.get(i); + float chance = outputChances.get(i); + outputs.add(new RecipesMachine.ChanceItemStack(out, chance)); + } + + List fluidOutputs = new LinkedList<>(); + for (FluidStack out : fluidOutput) { + // Fluid chances don't work properly, at least in the centrifuge. + fluidOutputs.add(new RecipesMachine.ChanceFluidStack(out, 1.0f)); + } + + RecipesMachine.Recipe r = new RecipesMachine.Recipe(outputs, inputs, fluidOutputs, fluidInput, time, power, oredicts); + if (outputSize > 0) r.setMaxOutputSize(outputSize); + getRegistry().add(r); + return r; + } + } + + @Property(property = "power", comp = @Comp(gte = 1), value = "groovyscript.wiki.advancedrocketry.power.value", hierarchy = 5) + @Property(property = "time", comp = @Comp(gte = 1), value = "groovyscript.wiki.advancedrocketry.time.value", hierarchy = 5) + @Property(property = "outputSize", comp = @Comp(gte = 1), value = "groovyscript.wiki.advancedrocketry.outputSize.value", hierarchy = 5) + public abstract static class MultiblockRecipeBuilder extends RecipeBuilder { + + @RecipeBuilderMethodDescription + public MultiblockRecipeBuilder time(int time) { + this.time = time; + return this; + } + + @RecipeBuilderMethodDescription + public MultiblockRecipeBuilder power(int power) { + this.power = power; + return this; + } + + @RecipeBuilderMethodDescription + public MultiblockRecipeBuilder outputSize(int outputSize) { + this.outputSize = outputSize; + return this; + } + + @Override + @RecipeBuilderMethodDescription + public RecipeBuilder output(ItemStack output) { + return output(output, 0.0f); + } + + @Override + @RecipeBuilderMethodDescription + public RecipeBuilder output(ItemStack output, float chance) { + return super.output(output, chance); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Centrifuge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Centrifuge.java index c688a8d8d..41306fadf 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Centrifuge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Centrifuge.java @@ -1,51 +1,52 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import zmaster587.advancedRocketry.tile.multiblock.machine.TileCentrifuge; -import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; - -@RegistryDescription(admonition = { - @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING), - @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.output_slots", type = Admonition.Type.WARNING), -}) -public class Centrifuge extends BaseRegistry { - @RecipeBuilderDescription( - example = @Example(".fluidInput(fluid('lava') * 500).output(item('minecraft:slime_ball'), 0.1f).output(item('minecraft:stone'), 0.9f).fluidOutput(fluid('enrichedlava') * 500).power(50).time(100).outputSize(1)")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - protected Class getMachineClass() { - return TileCentrifuge.class; - } - - @Override - @MethodDescription(example = @Example("fluid('enrichedlava')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - - @Property(property = "fluidInput", comp = @Comp(eq = 1)) - @Property(property = "output", comp = @Comp(lte = 12), value = "groovyscript.wiki.advancedrocketry.output.value") - @Property(property = "fluidOutput", comp = @Comp(lte = 4)) - public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { - - @Override - protected BaseRegistry getRegistry() { - return ModSupport.ADVANCED_ROCKETRY.get().centrifuge; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 0, 0, 0, 12); - validateFluids(msg, 1, 1, 0, 4); - msg.add(fluidOutput.isEmpty() && output.isEmpty(), "No outputs provided!"); - msg.add(power < 1, "Power must be 1 or greater, got {}", power); - msg.add(time < 1, "Time must be 1 or greater, got {}", time); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import zmaster587.advancedRocketry.tile.multiblock.machine.TileCentrifuge; +import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; + +@RegistryDescription(admonition = { + @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING), + @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.output_slots", type = Admonition.Type.WARNING), +}) +public class Centrifuge extends BaseRegistry { + + @RecipeBuilderDescription( + example = @Example(".fluidInput(fluid('lava') * 500).output(item('minecraft:slime_ball'), 0.1f).output(item('minecraft:stone'), 0.9f).fluidOutput(fluid('enrichedlava') * 500).power(50).time(100).outputSize(1)")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + protected Class getMachineClass() { + return TileCentrifuge.class; + } + + @Override + @MethodDescription(example = @Example("fluid('enrichedlava')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + + @Property(property = "fluidInput", comp = @Comp(eq = 1)) + @Property(property = "output", comp = @Comp(lte = 12), value = "groovyscript.wiki.advancedrocketry.output.value") + @Property(property = "fluidOutput", comp = @Comp(lte = 4)) + public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { + + @Override + protected BaseRegistry getRegistry() { + return ModSupport.ADVANCED_ROCKETRY.get().centrifuge; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 0, 0, 0, 12); + validateFluids(msg, 1, 1, 0, 4); + msg.add(fluidOutput.isEmpty() && output.isEmpty(), "No outputs provided!"); + msg.add(power < 1, "Power must be 1 or greater, got {}", power); + msg.add(time < 1, "Time must be 1 or greater, got {}", time); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/ChemicalReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/ChemicalReactor.java index d9123c50e..f045bc5cd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/ChemicalReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/ChemicalReactor.java @@ -1,60 +1,60 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import zmaster587.advancedRocketry.tile.multiblock.machine.TileChemicalReactor; -import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; - -@RegistryDescription(admonition = { - @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING), - @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.input_slots", type = Admonition.Type.WARNING), -}) -public class ChemicalReactor extends BaseRegistry { - @RecipeBuilderDescription( - example = @Example(".input(item('minecraft:chorus_fruit_popped')).fluidInput(fluid('lava') * 500)" + - ".output(item('minecraft:end_rod') * 4).fluidOutput(fluid('water') * 500).power(50).time(100)")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - protected Class getMachineClass() { - return TileChemicalReactor.class; - } - - @Override - @MethodDescription(example = @Example("item('minecraft:leather_helmet')")) - public boolean removeByOutput(IIngredient output) { - return super.removeByOutput(output); - } - - @Override - @MethodDescription(example = @Example("item('minecraft:bone')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - - @Property(property = "input", comp = @Comp(lte = 8, unique = "groovyscript.wiki.advancedrocketry.input.required")) - @Property(property = "fluidInput", comp = @Comp(lte = 2, unique = "groovyscript.wiki.advancedrocketry.input.required")) - @Property(property = "output", comp = @Comp(lte = 4, unique = "groovyscript.wiki.advancedrocketry.output.required"), value = "groovyscript.wiki.advancedrocketry.output.value") - @Property(property = "fluidOutput", comp = @Comp(lte = 1, unique = "groovyscript.wiki.advancedrocketry.output.required")) - public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { - - @Override - protected BaseRegistry getRegistry() { - return ModSupport.ADVANCED_ROCKETRY.get().reactor; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 0, 8, 0, 4); - validateFluids(msg, 0, 2, 0, 1); - msg.add(input.isEmpty() && fluidInput.isEmpty(), "No inputs provided!"); - msg.add(output.isEmpty() && fluidOutput.isEmpty(), "No outputs provided!"); - msg.add(power < 1, "Power must be 1 or greater, got {}", power); - msg.add(time < 1, "Time must be 1 or greater, got {}", time); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import zmaster587.advancedRocketry.tile.multiblock.machine.TileChemicalReactor; +import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; + +@RegistryDescription(admonition = { + @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING), + @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.input_slots", type = Admonition.Type.WARNING), +}) +public class ChemicalReactor extends BaseRegistry { + + @RecipeBuilderDescription( + example = @Example(".input(item('minecraft:chorus_fruit_popped')).fluidInput(fluid('lava') * 500)" + ".output(item('minecraft:end_rod') * 4).fluidOutput(fluid('water') * 500).power(50).time(100)")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + protected Class getMachineClass() { + return TileChemicalReactor.class; + } + + @Override + @MethodDescription(example = @Example("item('minecraft:leather_helmet')")) + public boolean removeByOutput(IIngredient output) { + return super.removeByOutput(output); + } + + @Override + @MethodDescription(example = @Example("item('minecraft:bone')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + + @Property(property = "input", comp = @Comp(lte = 8, unique = "groovyscript.wiki.advancedrocketry.input.required")) + @Property(property = "fluidInput", comp = @Comp(lte = 2, unique = "groovyscript.wiki.advancedrocketry.input.required")) + @Property(property = "output", comp = @Comp(lte = 4, unique = "groovyscript.wiki.advancedrocketry.output.required"), value = "groovyscript.wiki.advancedrocketry.output.value") + @Property(property = "fluidOutput", comp = @Comp(lte = 1, unique = "groovyscript.wiki.advancedrocketry.output.required")) + public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { + + @Override + protected BaseRegistry getRegistry() { + return ModSupport.ADVANCED_ROCKETRY.get().reactor; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 0, 8, 0, 4); + validateFluids(msg, 0, 2, 0, 1); + msg.add(input.isEmpty() && fluidInput.isEmpty(), "No inputs provided!"); + msg.add(output.isEmpty() && fluidOutput.isEmpty(), "No outputs provided!"); + msg.add(power < 1, "Power must be 1 or greater, got {}", power); + msg.add(time < 1, "Time must be 1 or greater, got {}", time); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Crystallizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Crystallizer.java index 23ae66b73..f8247aecf 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Crystallizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Crystallizer.java @@ -1,56 +1,57 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import zmaster587.advancedRocketry.tile.multiblock.machine.TileCrystallizer; -import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; - -@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) -public class Crystallizer extends BaseRegistry { - @RecipeBuilderDescription( - example = @Example(".input(item('minecraft:blaze_powder') * 4).output(item('minecraft:blaze_rod')).power(50).time(100)")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - protected Class getMachineClass() { - return TileCrystallizer.class; - } - - @Override - @MethodDescription(example = @Example("item('libvulpes:productgem')")) - public boolean removeByOutput(IIngredient output) { - return super.removeByOutput(output); - } - - @Override - @MethodDescription(example = @Example("item('libvulpes:productingot', 3)")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - - @Property(property = "input", comp = @Comp(lte = 4, unique = "groovyscript.wiki.advancedrocketry.input.required")) - @Property(property = "fluidInput", comp = @Comp(lte = 1, unique = "groovyscript.wiki.advancedrocketry.input.required")) - @Property(property = "output", comp = @Comp(lte = 4, unique = "groovyscript.wiki.advancedrocketry.output.required"), value = "groovyscript.wiki.advancedrocketry.output.value") - @Property(property = "fluidOutput", comp = @Comp(lte = 1, unique = "groovyscript.wiki.advancedrocketry.output.required")) - public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { - - @Override - protected BaseRegistry getRegistry() { - return ModSupport.ADVANCED_ROCKETRY.get().crystallizer; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 0, 4, 0, 4); - validateFluids(msg, 0, 1, 0, 1); - msg.add(input.isEmpty() && fluidInput.isEmpty(), "No inputs provided!"); - msg.add(output.isEmpty() && fluidOutput.isEmpty(), "No outputs provided!"); - msg.add(power < 1, "Power must be 1 or greater, got {}", power); - msg.add(time < 1, "Time must be 1 or greater, got {}", time); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import zmaster587.advancedRocketry.tile.multiblock.machine.TileCrystallizer; +import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; + +@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) +public class Crystallizer extends BaseRegistry { + + @RecipeBuilderDescription( + example = @Example(".input(item('minecraft:blaze_powder') * 4).output(item('minecraft:blaze_rod')).power(50).time(100)")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + protected Class getMachineClass() { + return TileCrystallizer.class; + } + + @Override + @MethodDescription(example = @Example("item('libvulpes:productgem')")) + public boolean removeByOutput(IIngredient output) { + return super.removeByOutput(output); + } + + @Override + @MethodDescription(example = @Example("item('libvulpes:productingot', 3)")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + + @Property(property = "input", comp = @Comp(lte = 4, unique = "groovyscript.wiki.advancedrocketry.input.required")) + @Property(property = "fluidInput", comp = @Comp(lte = 1, unique = "groovyscript.wiki.advancedrocketry.input.required")) + @Property(property = "output", comp = @Comp(lte = 4, unique = "groovyscript.wiki.advancedrocketry.output.required"), value = "groovyscript.wiki.advancedrocketry.output.value") + @Property(property = "fluidOutput", comp = @Comp(lte = 1, unique = "groovyscript.wiki.advancedrocketry.output.required")) + public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { + + @Override + protected BaseRegistry getRegistry() { + return ModSupport.ADVANCED_ROCKETRY.get().crystallizer; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 0, 4, 0, 4); + validateFluids(msg, 0, 1, 0, 1); + msg.add(input.isEmpty() && fluidInput.isEmpty(), "No inputs provided!"); + msg.add(output.isEmpty() && fluidOutput.isEmpty(), "No outputs provided!"); + msg.add(power < 1, "Power must be 1 or greater, got {}", power); + msg.add(time < 1, "Time must be 1 or greater, got {}", time); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/CuttingMachine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/CuttingMachine.java index 2c03e6fd9..b3ee14d1e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/CuttingMachine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/CuttingMachine.java @@ -1,53 +1,56 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import zmaster587.advancedRocketry.tile.multiblock.machine.TileCuttingMachine; -import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; - -@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) -public class CuttingMachine extends BaseRegistry { - @RecipeBuilderDescription( - example = @Example(".input(item('minecraft:blaze_rod')).output(item('minecraft:blaze_powder') * 4).power(50).time(100)")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - protected Class getMachineClass() { - return TileCuttingMachine.class; - } - - @Override - @MethodDescription(example = @Example("item('minecraft:planks', 1)")) - public boolean removeByOutput(IIngredient output) { - return super.removeByOutput(output); - } - - @Override - @MethodDescription(example = @Example("item('advancedrocketry:alienwood')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - - @Property(property = "input", comp = @Comp(gte = 1, lte = 4)) - @Property(property = "output", comp = @Comp(gte = 1, lte = 4), - value = "groovyscript.wiki.advancedrocketry.output.value") - public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { - - @Override - protected BaseRegistry getRegistry() { - return ModSupport.ADVANCED_ROCKETRY.get().cutting; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 4, 1, 4); - validateFluids(msg); - msg.add(power < 1, "Power must be 1 or greater, got {}", power); - msg.add(time < 1, "Time must be 1 or greater, got {}", time); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import zmaster587.advancedRocketry.tile.multiblock.machine.TileCuttingMachine; +import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; + +@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) +public class CuttingMachine extends BaseRegistry { + + @RecipeBuilderDescription( + example = @Example(".input(item('minecraft:blaze_rod')).output(item('minecraft:blaze_powder') * 4).power(50).time(100)")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + protected Class getMachineClass() { + return TileCuttingMachine.class; + } + + @Override + @MethodDescription(example = @Example("item('minecraft:planks', 1)")) + public boolean removeByOutput(IIngredient output) { + return super.removeByOutput(output); + } + + @Override + @MethodDescription(example = @Example("item('advancedrocketry:alienwood')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + + @Property(property = "input", comp = @Comp(gte = 1, lte = 4)) + @Property( + property = "output", + comp = @Comp(gte = 1, lte = 4), + value = "groovyscript.wiki.advancedrocketry.output.value") + public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { + + @Override + protected BaseRegistry getRegistry() { + return ModSupport.ADVANCED_ROCKETRY.get().cutting; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 4, 1, 4); + validateFluids(msg); + msg.add(power < 1, "Power must be 1 or greater, got {}", power); + msg.add(time < 1, "Time must be 1 or greater, got {}", time); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/ElectricArcFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/ElectricArcFurnace.java index 8a3079c66..3cb9871b3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/ElectricArcFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/ElectricArcFurnace.java @@ -14,6 +14,7 @@ @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.hatch_count_11", type = Admonition.Type.INFO), }) public class ElectricArcFurnace extends BaseRegistry { + @RecipeBuilderDescription( example = @Example(".input(item('minecraft:blaze_powder') * 4).output(item('minecraft:blaze_rod')).power(50).time(100)")) public RecipeBuilder recipeBuilder() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Electrolyser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Electrolyser.java index c345ce314..e1808da92 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Electrolyser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Electrolyser.java @@ -1,52 +1,53 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import zmaster587.advancedRocketry.tile.multiblock.machine.TileElectrolyser; -import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; - -@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) -public class Electrolyser extends BaseRegistry { - @RecipeBuilderDescription( - example = @Example(".fluidInput(fluid('lava') * 10).fluidOutput(fluid('nitrogen') * 50).power(50).time(100)")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - protected Class getMachineClass() { - return TileElectrolyser.class; - } - - @Override - @MethodDescription(example = @Example(value = "fluid('oxygen')", commented = true)) - public boolean removeByOutput(IIngredient output) { - return super.removeByOutput(output); - } - - @Override - @MethodDescription(example = @Example("fluid('water')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - - @Property(property = "fluidInput", comp = @Comp(eq = 1)) - @Property(property = "fluidOutput", comp = @Comp(gte = 1, lte = 2)) - public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { - - @Override - protected BaseRegistry getRegistry() { - return ModSupport.ADVANCED_ROCKETRY.get().electrolyser; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg); - validateFluids(msg, 1, 1, 1, 2); - msg.add(power < 1, "Power must be 1 or greater, got {}", power); - msg.add(time < 1, "Time must be 1 or greater, got {}", time); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import zmaster587.advancedRocketry.tile.multiblock.machine.TileElectrolyser; +import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; + +@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) +public class Electrolyser extends BaseRegistry { + + @RecipeBuilderDescription( + example = @Example(".fluidInput(fluid('lava') * 10).fluidOutput(fluid('nitrogen') * 50).power(50).time(100)")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + protected Class getMachineClass() { + return TileElectrolyser.class; + } + + @Override + @MethodDescription(example = @Example(value = "fluid('oxygen')", commented = true)) + public boolean removeByOutput(IIngredient output) { + return super.removeByOutput(output); + } + + @Override + @MethodDescription(example = @Example("fluid('water')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + + @Property(property = "fluidInput", comp = @Comp(eq = 1)) + @Property(property = "fluidOutput", comp = @Comp(gte = 1, lte = 2)) + public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { + + @Override + protected BaseRegistry getRegistry() { + return ModSupport.ADVANCED_ROCKETRY.get().electrolyser; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg); + validateFluids(msg, 1, 1, 1, 2); + msg.add(power < 1, "Power must be 1 or greater, got {}", power); + msg.add(time < 1, "Time must be 1 or greater, got {}", time); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Lathe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Lathe.java index f2785a4ea..42515250f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Lathe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/Lathe.java @@ -1,52 +1,53 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import zmaster587.advancedRocketry.tile.multiblock.machine.TileLathe; -import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; - -@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) -public class Lathe extends BaseRegistry { - @RecipeBuilderDescription( - example = @Example(".input(ore('plankWood')).output(item('minecraft:stick') * 2).power(50).time(100)")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - protected Class getMachineClass() { - return TileLathe.class; - } - - @Override - @MethodDescription(example = @Example("item('libvulpes:productrod', 4)")) - public boolean removeByOutput(IIngredient output) { - return super.removeByOutput(output); - } - - @Override - @MethodDescription(example = @Example("item('libvulpes:productingot', 6)")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - - @Property(property = "input", comp = @Comp(gte = 1, lte = 4)) - @Property(property = "output", comp = @Comp(gte = 1, lte = 4), value = "groovyscript.wiki.advancedrocketry.output.value") - public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { - - @Override - protected BaseRegistry getRegistry() { - return ModSupport.ADVANCED_ROCKETRY.get().lathe; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 4, 1, 4); - validateFluids(msg); - msg.add(power < 1, "Power must be 1 or greater, got {}", power); - msg.add(time < 1, "Time must be 1 or greater, got {}", time); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import zmaster587.advancedRocketry.tile.multiblock.machine.TileLathe; +import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; + +@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) +public class Lathe extends BaseRegistry { + + @RecipeBuilderDescription( + example = @Example(".input(ore('plankWood')).output(item('minecraft:stick') * 2).power(50).time(100)")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + protected Class getMachineClass() { + return TileLathe.class; + } + + @Override + @MethodDescription(example = @Example("item('libvulpes:productrod', 4)")) + public boolean removeByOutput(IIngredient output) { + return super.removeByOutput(output); + } + + @Override + @MethodDescription(example = @Example("item('libvulpes:productingot', 6)")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + + @Property(property = "input", comp = @Comp(gte = 1, lte = 4)) + @Property(property = "output", comp = @Comp(gte = 1, lte = 4), value = "groovyscript.wiki.advancedrocketry.output.value") + public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { + + @Override + protected BaseRegistry getRegistry() { + return ModSupport.ADVANCED_ROCKETRY.get().lathe; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 4, 1, 4); + validateFluids(msg); + msg.add(power < 1, "Power must be 1 or greater, got {}", power); + msg.add(time < 1, "Time must be 1 or greater, got {}", time); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/PrecisionAssembler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/PrecisionAssembler.java index ef715f332..d0ee7ca33 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/PrecisionAssembler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/PrecisionAssembler.java @@ -61,5 +61,4 @@ public void validate(GroovyLog.Msg msg) { msg.add(time < 1, "Time must be 1 or greater, got {}", time); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/PrecisionLaserEtcher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/PrecisionLaserEtcher.java index 801bf6f68..682de307b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/PrecisionLaserEtcher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/PrecisionLaserEtcher.java @@ -1,53 +1,56 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import zmaster587.advancedRocketry.tile.multiblock.machine.TilePrecisionLaserEtcher; -import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; - -@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) -public class PrecisionLaserEtcher extends BaseRegistry { - @RecipeBuilderDescription( - example = @Example(".input(item('minecraft:blaze_powder') * 4, item('advancedrocketry:wafer')).output(item('advancedrocketry:itemcircuitplate')).power(50).time(100)")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - protected Class getMachineClass() { - return TilePrecisionLaserEtcher.class; - } - - @Override - @MethodDescription(example = @Example("item('advancedrocketry:itemcircuitplate')")) - public boolean removeByOutput(IIngredient output) { - return super.removeByOutput(output); - } - - @Override - @MethodDescription(example = @Example("item('minecraft:redstone_block')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - - @Property(property = "input", comp = @Comp(gte = 1, lte = 4)) - @Property(property = "output", comp = @Comp(gte = 1, lte = 4), - value = "groovyscript.wiki.advancedrocketry.output.value") - public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { - - @Override - protected BaseRegistry getRegistry() { - return ModSupport.ADVANCED_ROCKETRY.get().laserEtcher; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 4, 1, 4); - validateFluids(msg); - msg.add(power < 1, "Power must be 1 or greater, got {}", power); - msg.add(time < 1, "Time must be 1 or greater, got {}", time); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import zmaster587.advancedRocketry.tile.multiblock.machine.TilePrecisionLaserEtcher; +import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; + +@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) +public class PrecisionLaserEtcher extends BaseRegistry { + + @RecipeBuilderDescription( + example = @Example(".input(item('minecraft:blaze_powder') * 4, item('advancedrocketry:wafer')).output(item('advancedrocketry:itemcircuitplate')).power(50).time(100)")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + protected Class getMachineClass() { + return TilePrecisionLaserEtcher.class; + } + + @Override + @MethodDescription(example = @Example("item('advancedrocketry:itemcircuitplate')")) + public boolean removeByOutput(IIngredient output) { + return super.removeByOutput(output); + } + + @Override + @MethodDescription(example = @Example("item('minecraft:redstone_block')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + + @Property(property = "input", comp = @Comp(gte = 1, lte = 4)) + @Property( + property = "output", + comp = @Comp(gte = 1, lte = 4), + value = "groovyscript.wiki.advancedrocketry.output.value") + public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { + + @Override + protected BaseRegistry getRegistry() { + return ModSupport.ADVANCED_ROCKETRY.get().laserEtcher; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 4, 1, 4); + validateFluids(msg); + msg.add(power < 1, "Power must be 1 or greater, got {}", power); + msg.add(time < 1, "Time must be 1 or greater, got {}", time); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/RollingMachine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/RollingMachine.java index 5c6d442e7..fd88739ba 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/RollingMachine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/RollingMachine.java @@ -1,54 +1,55 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import zmaster587.advancedRocketry.tile.multiblock.machine.TileRollingMachine; -import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; - -@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) -public class RollingMachine extends BaseRegistry { - @RecipeBuilderDescription( - example = @Example(".input(item('minecraft:snow'), fluid('water') * 300).output(item('minecraft:snow_layer') * 2).power(50).time(100)")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - protected Class getMachineClass() { - return TileRollingMachine.class; - } - - @Override - @MethodDescription(example = @Example("item('libvulpes:productsheet', 1)")) - public boolean removeByOutput(IIngredient output) { - return super.removeByOutput(output); - } - - @Override - @MethodDescription(example = @Example("item('libvulpes:productplate')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - - @Property(property = "input", comp = @Comp(lte = 4, unique = "groovyscript.wiki.advancedrocketry.input.required")) - @Property(property = "fluidInput", comp = @Comp(lte = 1, unique = "groovyscript.wiki.advancedrocketry.input.required")) - @Property(property = "output", comp = @Comp(gte = 1, lte = 4), value = "groovyscript.wiki.advancedrocketry.output.value") - public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { - - @Override - protected BaseRegistry getRegistry() { - return ModSupport.ADVANCED_ROCKETRY.get().rolling; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 0, 4, 1, 4); - validateFluids(msg, 0, 1, 0, 0); - msg.add(input.isEmpty() && fluidInput.isEmpty(), "No inputs provided!"); - msg.add(power < 1, "Power must be 1 or greater, got {}", power); - msg.add(time < 1, "Time must be 1 or greater, got {}", time); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import zmaster587.advancedRocketry.tile.multiblock.machine.TileRollingMachine; +import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine; + +@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.advancedrocketry.admonition.weights", type = Admonition.Type.WARNING)) +public class RollingMachine extends BaseRegistry { + + @RecipeBuilderDescription( + example = @Example(".input(item('minecraft:snow'), fluid('water') * 300).output(item('minecraft:snow_layer') * 2).power(50).time(100)")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + protected Class getMachineClass() { + return TileRollingMachine.class; + } + + @Override + @MethodDescription(example = @Example("item('libvulpes:productsheet', 1)")) + public boolean removeByOutput(IIngredient output) { + return super.removeByOutput(output); + } + + @Override + @MethodDescription(example = @Example("item('libvulpes:productplate')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + + @Property(property = "input", comp = @Comp(lte = 4, unique = "groovyscript.wiki.advancedrocketry.input.required")) + @Property(property = "fluidInput", comp = @Comp(lte = 1, unique = "groovyscript.wiki.advancedrocketry.input.required")) + @Property(property = "output", comp = @Comp(gte = 1, lte = 4), value = "groovyscript.wiki.advancedrocketry.output.value") + public static class RecipeBuilder extends BaseRegistry.MultiblockRecipeBuilder { + + @Override + protected BaseRegistry getRegistry() { + return ModSupport.ADVANCED_ROCKETRY.get().rolling; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 0, 4, 1, 4); + validateFluids(msg, 0, 1, 0, 0); + msg.add(input.isEmpty() && fluidInput.isEmpty(), "No inputs provided!"); + msg.add(power < 1, "Power must be 1 or greater, got {}", power); + msg.add(time < 1, "Time must be 1 or greater, got {}", time); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/SmallPlatePresser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/SmallPlatePresser.java index 578e507ae..deb9a1a21 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/SmallPlatePresser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedrocketry/SmallPlatePresser.java @@ -1,55 +1,55 @@ -package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import net.minecraft.item.ItemBlock; -import zmaster587.advancedRocketry.block.BlockSmallPlatePress; - -import java.util.Arrays; - -@RegistryDescription -public class SmallPlatePresser extends BaseRegistry { - - @RecipeBuilderDescription( - example = @Example(".input(item('minecraft:cobblestone')).output(item('minecraft:diamond'))")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - protected Class getMachineClass() { - return BlockSmallPlatePress.class; - } - - @Override - @MethodDescription(example = @Example("item('libvulpes:productplate', 2)")) - public boolean removeByOutput(IIngredient output) { - return super.removeByOutput(output); - } - - @Override - @MethodDescription(example = @Example("item('minecraft:iron_block')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - - @Property(property = "input", comp = @Comp(eq = 1, unique = "groovyscript.wiki.advancedrocketry.input.block")) - @Property(property = "output", comp = @Comp(eq = 1)) - public static class RecipeBuilder extends BaseRegistry.RecipeBuilder { - - @Override - protected BaseRegistry getRegistry() { - return ModSupport.ADVANCED_ROCKETRY.get().platePress; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 1, 1, 1); - validateFluids(msg); - boolean allBlocks = Arrays.stream(input.get(0).getMatchingStacks()).allMatch(s -> s.getItem() instanceof ItemBlock); - msg.add(!allBlocks, "All inputs to Small Plate Press recipes must be blocks!"); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.advancedrocketry; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import net.minecraft.item.ItemBlock; +import zmaster587.advancedRocketry.block.BlockSmallPlatePress; + +import java.util.Arrays; + +@RegistryDescription +public class SmallPlatePresser extends BaseRegistry { + + @RecipeBuilderDescription( + example = @Example(".input(item('minecraft:cobblestone')).output(item('minecraft:diamond'))")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + protected Class getMachineClass() { + return BlockSmallPlatePress.class; + } + + @Override + @MethodDescription(example = @Example("item('libvulpes:productplate', 2)")) + public boolean removeByOutput(IIngredient output) { + return super.removeByOutput(output); + } + + @Override + @MethodDescription(example = @Example("item('minecraft:iron_block')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + + @Property(property = "input", comp = @Comp(eq = 1, unique = "groovyscript.wiki.advancedrocketry.input.block")) + @Property(property = "output", comp = @Comp(eq = 1)) + public static class RecipeBuilder extends BaseRegistry.RecipeBuilder { + + @Override + protected BaseRegistry getRegistry() { + return ModSupport.ADVANCED_ROCKETRY.get().platePress; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 1, 1, 1); + validateFluids(msg); + boolean allBlocks = Arrays.stream(input.get(0).getMatchingStacks()).allMatch(s -> s.getItem() instanceof ItemBlock); + msg.add(!allBlocks, "All inputs to Small Plate Press recipes must be blocks!"); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Accessory.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Accessory.java index 68ef1af55..f3a612ffa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Accessory.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Accessory.java @@ -90,5 +90,4 @@ public void validate(GroovyLog.Msg msg) { return accessory; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Aether.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Aether.java index ac38eca74..0581f44a2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Aether.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Aether.java @@ -9,5 +9,4 @@ public class Aether extends GroovyPropertyContainer { public final Freezer freezer = new Freezer(); public final FreezerFuel freezerFuel = new FreezerFuel(); public final Accessory accessory = new Accessory(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java index f3b9a66ec..6d6691564 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java @@ -78,5 +78,4 @@ public void validate(GroovyLog.Msg msg) { return enchantment; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/EnchanterFuel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/EnchanterFuel.java index 48259357c..20535860f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/EnchanterFuel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/EnchanterFuel.java @@ -21,9 +21,10 @@ public EnchanterFuel() { @MethodDescription(type = MethodDescription.Type.ADDITION, example = @Example("item('minecraft:blaze_rod'), 1000")) public void add(ItemStack fuel, int timeGiven) { if (IngredientHelper.overMaxSize(fuel, 1)) { - GroovyLog.msg("Error adding Enchanter Fuel").error() - .add("Fuel must have stack size of 1, got {}", fuel.getCount()) - .post(); + GroovyLog.msg("Error adding Enchanter Fuel") + .error() + .add("Fuel must have stack size of 1, got {}", fuel.getCount()) + .post(); return; } AetherEnchantmentFuel enchantmentFuel = new AetherEnchantmentFuel(fuel, timeGiven); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java index 3d9371355..a3253f2ef 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java @@ -77,5 +77,4 @@ public void validate(GroovyLog.Msg msg) { return freezable; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/FreezerFuel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/FreezerFuel.java index 3ae553430..cb55df350 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/FreezerFuel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/FreezerFuel.java @@ -21,9 +21,10 @@ public FreezerFuel() { @MethodDescription(type = MethodDescription.Type.ADDITION, example = @Example("item('minecraft:packed_ice'), 1000")) public void add(ItemStack fuel, int timeGiven) { if (IngredientHelper.overMaxSize(fuel, 1)) { - GroovyLog.msg("Error adding Freezer Fuel").error() - .add("Fuel must have stack size of 1, got {}", fuel.getCount()) - .post(); + GroovyLog.msg("Error adding Freezer Fuel") + .error() + .add("Fuel must have stack size of 1, got {}", fuel.getCount()) + .post(); return; } AetherFreezableFuel freezableFuel = new AetherFreezableFuel(fuel, timeGiven); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java index 5b89b5209..0b98bb9ed 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java @@ -132,11 +132,16 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public ElectrolyzerRecipe register() { if (!validate()) return null; - ElectrolyzerRecipe recipe = new ElectrolyzerRecipe(fluidInput.get(0), - input.size() >= 1 ? input.get(0).toMcIngredient() : Ingredient.EMPTY, consumptionChance, - output.get(0), output.getOrEmpty(1), - output.getOrEmpty(2), chance.size() >= 1 ? chance.getInt(0) : 0, - output.getOrEmpty(3), chance.size() >= 2 ? chance.getInt(1) : 0); + ElectrolyzerRecipe recipe = new ElectrolyzerRecipe( + fluidInput.get(0), + input.size() >= 1 ? input.get(0).toMcIngredient() : Ingredient.EMPTY, + consumptionChance, + output.get(0), + output.getOrEmpty(1), + output.getOrEmpty(2), + chance.size() >= 1 ? chance.getInt(0) : 0, + output.getOrEmpty(3), + chance.size() >= 2 ? chance.getInt(1) : 0); ModSupport.ALCHEMISTRY.get().electrolyzer.add(recipe); return recipe; } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/InfoParserCompound.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/InfoParserCompound.java index 845e0b7cf..c37da5951 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/InfoParserCompound.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/InfoParserCompound.java @@ -35,5 +35,4 @@ public void parse(InfoParserPackage info) { } } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/InfoParserElement.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/InfoParserElement.java index faa277cfc..2aaa6c8b4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/InfoParserElement.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/InfoParserElement.java @@ -35,5 +35,4 @@ public void parse(InfoParserPackage info) { } } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Attunement.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Attunement.java index 112aff676..d14f7876e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Attunement.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Attunement.java @@ -77,7 +77,8 @@ public void remove(Capability capability, TunnelType tunnel) { @MethodDescription public void removeByItem(ItemStack item) { - for (Map.Entry pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getTunnels().entrySet() + for (Map.Entry pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getTunnels() + .entrySet() .stream() .filter(x -> x.getKey().isItemEqual(item)) .collect(Collectors.toList())) { @@ -88,7 +89,8 @@ public void removeByItem(ItemStack item) { @MethodDescription public void removeByMod(String modid) { - for (Map.Entry pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getModIdTunnels().entrySet() + for (Map.Entry pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getModIdTunnels() + .entrySet() .stream() .filter(x -> x.getKey().equals(modid)) .collect(Collectors.toList())) { @@ -99,7 +101,8 @@ public void removeByMod(String modid) { @MethodDescription public void removeByCapability(Capability capability) { - for (Map.Entry, TunnelType> pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getCapTunnels().entrySet() + for (Map.Entry, TunnelType> pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getCapTunnels() + .entrySet() .stream() .filter(x -> x.getKey() == capability) .collect(Collectors.toList())) { @@ -110,21 +113,24 @@ public void removeByCapability(Capability capability) { @MethodDescription(example = @Example("tunnel('item')")) public void removeByTunnel(TunnelType tunnel) { - for (Map.Entry pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getTunnels().entrySet() + for (Map.Entry pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getTunnels() + .entrySet() .stream() .filter(x -> x.getValue() == tunnel) .collect(Collectors.toList())) { addBackup(Pair.of(pair.getKey(), pair.getValue())); ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getTunnels().entrySet().removeIf(x -> x.getKey().isItemEqual(pair.getKey())); } - for (Map.Entry pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getModIdTunnels().entrySet() + for (Map.Entry pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getModIdTunnels() + .entrySet() .stream() .filter(x -> x.getValue() == tunnel) .collect(Collectors.toList())) { addBackup(Pair.of(pair.getKey(), pair.getValue())); ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getModIdTunnels().entrySet().removeIf(x -> x.getKey().equals(pair.getKey())); } - for (Map.Entry, TunnelType> pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getCapTunnels().entrySet() + for (Map.Entry, TunnelType> pair : ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getCapTunnels() + .entrySet() .stream() .filter(x -> x.getValue() == tunnel) .collect(Collectors.toList())) { @@ -142,5 +148,4 @@ public void removeAll() { ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getCapTunnels().forEach((item, value) -> addBackup(Pair.of(item, value))); ((P2PTunnelRegistryAccessor) AEApi.instance().registries().p2pTunnel()).getCapTunnels().clear(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/CannonAmmo.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/CannonAmmo.java index cd658313b..37ab5fda5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/CannonAmmo.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/CannonAmmo.java @@ -30,9 +30,10 @@ public void onReload() { @MethodDescription(type = MethodDescription.Type.ADDITION, example = @Example("item('minecraft:clay'), 10000")) public void add(ItemStack item, double value) { if (IngredientHelper.overMaxSize(item, 1)) { - GroovyLog.msg("Error adding Cannon Ammo").error() - .add("Item must have stack size of 1, got {}", item.getCount()) - .post(); + GroovyLog.msg("Error adding Cannon Ammo") + .error() + .add("Item must have stack size of 1, got {}", item.getCount()) + .post(); return; } addScripted(Pair.of(item, value)); @@ -50,5 +51,4 @@ public void removeAll() { ((MatterCannonAmmoRegistryAccessor) AEApi.instance().registries().matterCannon()).getDamageModifiers().forEach((item, value) -> addBackup(Pair.of(item, value))); ((MatterCannonAmmoRegistryAccessor) AEApi.instance().registries().matterCannon()).getDamageModifiers().clear(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java index df5f7e55d..e01a6b7c4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java @@ -89,7 +89,9 @@ public RecipeBuilder turns(int turns) { return this; } - @RecipeBuilderMethodDescription(field = {"chance1", "chance2"}) + @RecipeBuilderMethodDescription(field = { + "chance1", "chance2" + }) public RecipeBuilder chance(float chance1, float chance2) { this.chance1 = chance1; this.chance2 = chance2; @@ -126,7 +128,10 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable IGrinderRecipe register() { if (!validate()) return null; - IGrinderRecipeBuilder builder = AEApi.instance().registries().grinder().builder() + IGrinderRecipeBuilder builder = AEApi.instance() + .registries() + .grinder() + .builder() .withInput(input.get(0).toMcIngredient().getMatchingStacks()[0]) .withOutput(output.get(0)) .withTurns(turns); @@ -137,5 +142,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/InfoParserTunnel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/InfoParserTunnel.java index 25e6c1a71..9ad08c597 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/InfoParserTunnel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/InfoParserTunnel.java @@ -35,5 +35,4 @@ public void parse(InfoParserPackage info) { if (tunnelType == null) return; instance.add(info.getMessages(), tunnelType, info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java index a64adb732..8a9d7b064 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java @@ -133,7 +133,10 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable IInscriberRecipe register() { if (!validate()) return null; - IInscriberRecipeBuilder builder = AEApi.instance().registries().inscriber().builder() + IInscriberRecipeBuilder builder = AEApi.instance() + .registries() + .inscriber() + .builder() .withInputs(input.stream().flatMap(x -> Arrays.stream(x.toMcIngredient().getMatchingStacks())).collect(Collectors.toList())) .withOutput(output.get(0)) .withProcessType(type); @@ -144,5 +147,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/ArcaneArchives.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/ArcaneArchives.java index b0431bfa1..17b02ced0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/ArcaneArchives.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/ArcaneArchives.java @@ -5,5 +5,4 @@ public class ArcaneArchives extends GroovyPropertyContainer { public final GemCuttingTable gemCuttingTable = new GemCuttingTable(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java index 61976cb4f..f11e1c4b7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java @@ -55,7 +55,8 @@ public boolean remove(IGCTRecipe recipe) { @MethodDescription(example = @Example("item('minecraft:gold_nugget')")) public boolean removeByInput(IIngredient input) { return GCTRecipeList.instance.getRecipes().values().removeIf(recipe -> { - boolean found = recipe.getIngredients().stream() + boolean found = recipe.getIngredients() + .stream() .map(IngredientStack::getIngredient) .map(Ingredient::getMatchingStacks) .flatMap(Arrays::stream) @@ -122,5 +123,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/ChaliceInteraction.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/ChaliceInteraction.java index 49da053ad..20e14d75c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/ChaliceInteraction.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/ChaliceInteraction.java @@ -43,8 +43,7 @@ public LiquidInteraction add(int probability, FluidStack component1, FluidStack @MethodDescription public void removeByInput(Fluid fluid1, Fluid fluid2) { getRecipes().removeIf(rec -> { - if ((rec.getComponent1().getFluid().equals(fluid1) && rec.getComponent2().getFluid().equals(fluid2)) || - (rec.getComponent1().getFluid().equals(fluid2) && rec.getComponent2().getFluid().equals(fluid1))) { + if ((rec.getComponent1().getFluid().equals(fluid1) && rec.getComponent2().getFluid().equals(fluid2)) || (rec.getComponent1().getFluid().equals(fluid2) && rec.getComponent2().getFluid().equals(fluid1))) { addBackup(rec); return true; } @@ -93,48 +92,64 @@ public static class RecipeBuilder extends AbstractRecipeBuilder> { + private static final Class[] CLOSURE_CLASSES = { + int.class, long.class + }; + @Override @GroovyBlacklist @ApiStatus.Internal @@ -28,7 +32,7 @@ public void onReload() { @MethodDescription(example = @Example(value = "{ int i, long prev -> prev + 1000L + MathHelper.lfloor(Math.pow(2.0, i / 2.0F + 3)) }", imports = "net.minecraft.util.math.MathHelper"), type = MethodDescription.Type.VALUE) public void setXpFunction(Closure func) { - if (!Arrays.equals(func.getParameterTypes(), new Class[]{int.class, long.class})) { + if (!Arrays.equals(func.getParameterTypes(), CLOSURE_CLASSES)) { GroovyLog.msg("Warning: Astral Perk xp closures must take the following parameters (int levelNumber, long previousLevelXp)").debug().post(); } this.xpFunction = func; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/AltarInputOrder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/AltarInputOrder.java index ecb4e8316..353d66bb3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/AltarInputOrder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/AltarInputOrder.java @@ -7,6 +7,7 @@ public class AltarInputOrder { + // @formatter:off public static final int[][] DISCOVERY = new int[][]{ {0, 1, 2}, {3, 4, 5}, @@ -33,6 +34,7 @@ public class AltarInputOrder { {17, 6, 7, 8, 18}, {11, 19, 24, 20, 12} }; + // @formatter:on public static int[][] getMap(TileAltar.AltarLevel level) { return switch (level) { @@ -55,5 +57,4 @@ public static ItemHandle[] initInputList(TileAltar.AltarLevel level) { if (rVal != null) Arrays.fill(rVal, null); return rVal; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/AltarRecipeBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/AltarRecipeBuilder.java index 04c3fe42b..3f2d301f7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/AltarRecipeBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/AltarRecipeBuilder.java @@ -62,6 +62,7 @@ private static List computeFluidConsumptionSlots(ItemHandle[] inputs) { private static DiscoveryRecipe discoveryAltar(String name, ItemStack output, ItemHandle[] inputs, int starlightRequired, int craftingTickTime, List fluidStacks) { return new DiscoveryRecipe(registerNative(name, output, inputs)) { + @Override public int getPassiveStarlightRequired() { return starlightRequired; @@ -81,6 +82,7 @@ public boolean mayDecrement(TileAltar ta, ShapedRecipeSlot slot) { private static AttunementRecipe attunementAltar(String name, ItemStack output, ItemHandle[] inputs, int starlightRequired, int craftingTickTime, List fluidStacks) { AttunementRecipe recipe = new AttunementRecipe(registerNative(name, output, inputs)) { + @Override public int getPassiveStarlightRequired() { return starlightRequired; @@ -113,6 +115,7 @@ public boolean mayDecrement(TileAltar ta, AttunementAltarSlot slot) { private static ConstellationRecipe constellationAltar(String name, ItemStack output, ItemHandle[] inputs, int starlightRequired, int craftingTickTime, List fluidStacks) { ConstellationRecipe recipe = new ConstellationRecipe(registerNative(name, output, inputs)) { + @Override public int getPassiveStarlightRequired() { return starlightRequired; @@ -155,6 +158,7 @@ public boolean mayDecrement(TileAltar ta, ConstellationAtlarSlot slot) { private static TraitRecipe traitAltar(String name, ItemStack output, ItemHandle[] inputs, int starlightRequired, int craftingTickTime, List fluidStacks, IConstellation requiredConstellation, ItemHandle[] outerInputs) { TraitRecipe recipe = new TraitRecipe(registerNative(name, output, inputs)) { + @Override public int getPassiveStarlightRequired() { return starlightRequired; @@ -380,4 +384,4 @@ public AbstractAltarRecipe register() { return recipe; } } -} \ No newline at end of file +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Atum.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Atum.java index 0cc49b9a1..16f6247dc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Atum.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Atum.java @@ -7,5 +7,4 @@ public class Atum extends GroovyPropertyContainer { public final Kiln kiln = new Kiln(); public final Quern quern = new Quern(); public final SpinningWheel spinningWheel = new SpinningWheel(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Avaritia.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Avaritia.java index c6f6006be..41058d331 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Avaritia.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Avaritia.java @@ -6,5 +6,4 @@ public class Avaritia extends GroovyPropertyContainer { public final ExtremeCrafting extremeCrafting = new ExtremeCrafting(); public final Compressor compressor = new Compressor(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java index b1d8c36ba..0ddf0b589 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java @@ -89,7 +89,9 @@ public class RecipeBuilder extends AbstractRecipeBuilder { private int inputCount = 300; @Override - @RecipeBuilderMethodDescription(field = {"input", "inputCount"}) + @RecipeBuilderMethodDescription(field = { + "input", "inputCount" + }) public AbstractRecipeBuilder input(IIngredient ingredient) { if (ingredient == null) return this; if (ingredient.getAmount() > 1) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeRecipeBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeRecipeBuilder.java index b28cfaa14..968a2d452 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeRecipeBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeRecipeBuilder.java @@ -26,7 +26,8 @@ public String getRecipeNamePrefix() { @Override @RecipeBuilderRegistrationMethod(hierarchy = 5) public IExtremeRecipe register() { - GroovyLog.Msg msg = GroovyLog.msg("Error adding shaped Extended Crafting Table recipe").error() + GroovyLog.Msg msg = GroovyLog.msg("Error adding shaped Extended Crafting Table recipe") + .error() .add((keyBasedMatrix == null || keyBasedMatrix.length == 0) && (ingredientMatrix == null || ingredientMatrix.isEmpty()), () -> "No matrix was defined") .add(keyBasedMatrix != null && ingredientMatrix != null, () -> "A key based matrix AND a ingredient based matrix was defined. This is not allowed!"); if (msg.postIfNotEmpty()) return null; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java index 936d33da0..b7e7fca77 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java @@ -64,5 +64,4 @@ public boolean removeByInput(IIngredient input) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilRecipeBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilRecipeBuilder.java index 13e6d9a62..85d285491 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilRecipeBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilRecipeBuilder.java @@ -23,7 +23,8 @@ public Shaped() { @Override @RecipeBuilderRegistrationMethod public IRecipe register() { - GroovyLog.Msg msg = GroovyLog.msg("Error adding shaped Better With Mods Anvil recipe").error() + GroovyLog.Msg msg = GroovyLog.msg("Error adding shaped Better With Mods Anvil recipe") + .error() .add((keyBasedMatrix == null || keyBasedMatrix.length == 0) && (ingredientMatrix == null || ingredientMatrix.isEmpty()), () -> "No matrix was defined") .add(keyBasedMatrix != null && ingredientMatrix != null, () -> "A key based matrix AND a ingredient based matrix was defined. This is not allowed!"); if (msg.postIfNotEmpty()) return null; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/BetterWithMods.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/BetterWithMods.java index f2033d46c..ca3afc008 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/BetterWithMods.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/BetterWithMods.java @@ -14,5 +14,4 @@ public class BetterWithMods extends GroovyPropertyContainer { public final Heat heat = new Heat(); public final Hopper hopper = new Hopper(); public final HopperFilters hopperFilters = new HopperFilters(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Cauldron.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Cauldron.java index d415d14b5..949bfac1d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Cauldron.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Cauldron.java @@ -22,7 +22,7 @@ public class Cauldron extends StandardListRegistry { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).heat(2)"), @Example(".input(item('minecraft:diamond')).output(item('minecraft:gold_ingot') * 16).ignoreHeat()") }) - @RecipeBuilderMethodDescription + @RecipeBuilderMethodDescription public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } @@ -118,5 +118,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Crucible.java index aaf8b8677..04bf83028 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Crucible.java @@ -24,7 +24,7 @@ public class Crucible extends StandardListRegistry { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).heat(2)"), @Example(".input(item('minecraft:diamond')).output(item('minecraft:gold_ingot') * 16).ignoreHeat()") }) - @RecipeBuilderMethodDescription + @RecipeBuilderMethodDescription public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } @@ -123,5 +123,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java index 4d3e5a5ba..31d5991cb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java @@ -108,5 +108,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/HopperFilters.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/HopperFilters.java index c3e097262..5dc16226c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/HopperFilters.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/HopperFilters.java @@ -138,5 +138,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Kiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Kiln.java index a6522858e..2257f1036 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Kiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Kiln.java @@ -144,5 +144,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/MillStone.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/MillStone.java index 3ae30ee25..c906884ea 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/MillStone.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/MillStone.java @@ -130,5 +130,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Saw.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Saw.java index 681e6afe6..b485982a6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Saw.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Saw.java @@ -19,7 +19,7 @@ public class Saw extends StandardListRegistry { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond_block')).output(item('minecraft:gold_ingot') * 16)")) - @RecipeBuilderMethodDescription + @RecipeBuilderMethodDescription public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } @@ -119,5 +119,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java index d8836bda5..4f74b95c2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java @@ -140,5 +140,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java index c3db6e1f6..cf1a554f5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java @@ -1,6 +1,5 @@ package com.cleanroommc.groovyscript.compat.mods.bloodmagic; -import WayofTime.bloodmagic.altar.AltarTier; import WayofTime.bloodmagic.api.impl.BloodMagicAPI; import WayofTime.bloodmagic.api.impl.recipe.RecipeAlchemyTable; import com.cleanroommc.groovyscript.api.GroovyLog; @@ -20,10 +19,11 @@ import java.util.Collections; @RegistryDescription( - admonition = @Admonition(type = Admonition.Type.DANGER, - format = Admonition.Format.STANDARD, - hasTitle = true, - value = "groovyscript.wiki.bloodmagic.alchemy_table.note0") + admonition = @Admonition( + type = Admonition.Type.DANGER, + format = Admonition.Format.STANDARD, + hasTitle = true, + value = "groovyscript.wiki.bloodmagic.alchemy_table.note0") ) public class AlchemyTable extends StandardListRegistry { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java index c67302f4c..140963190 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java @@ -19,10 +19,11 @@ @RegistryDescription( admonition = { @Admonition("groovyscript.wiki.bloodmagic.blood_altar.note0"), - @Admonition(value = "groovyscript.wiki.bloodmagic.blood_altar.note1", - type = Admonition.Type.DANGER, - format = Admonition.Format.STANDARD, - hasTitle = true) + @Admonition( + value = "groovyscript.wiki.bloodmagic.blood_altar.note1", + type = Admonition.Type.DANGER, + format = Admonition.Format.STANDARD, + hasTitle = true) } ) public class BloodAltar extends StandardListRegistry { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodMagic.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodMagic.java index 06af2a84e..db3de3f86 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodMagic.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodMagic.java @@ -11,5 +11,4 @@ public class BloodMagic extends GroovyPropertyContainer { public final Tranquility tranquility = new Tranquility(); public final Sacrificial sacrificial = new Sacrificial(); public final Meteor meteor = new Meteor(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java index 18008c2b0..7c4f94cc8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java @@ -59,11 +59,15 @@ public boolean removeByOutput(IIngredient output) { @MethodDescription(example = @Example("ore('runeFireB')")) public boolean removeByInput(IIngredient... inputs) { - List converted = Arrays.stream(inputs).map(i -> i instanceof OreDictIngredient ? ((OreDictIngredient) i).getOreDict() - : i.getMatchingStacks()[0]).collect(Collectors.toList()); + List converted = Arrays.stream(inputs) + .map(i -> i instanceof OreDictIngredient ? ((OreDictIngredient) i).getOreDict() : i.getMatchingStacks()[0]) + .collect(Collectors.toList()); if (getRecipes().removeIf(recipe -> { - boolean found = converted.stream().allMatch(o -> recipe.getInputs().stream().anyMatch(i -> o instanceof String || i instanceof String ? o.equals(i) - : ItemStack.areItemStacksEqual((ItemStack) i, (ItemStack) o))); + boolean found = converted.stream() + .allMatch( + o -> recipe.getInputs() + .stream() + .anyMatch(i -> o instanceof String || i instanceof String ? o.equals(i) : ItemStack.areItemStacksEqual((ItemStack) i, (ItemStack) o))); if (found) addBackup(recipe); return found; })) return true; @@ -105,8 +109,14 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable RecipePetals register() { if (!validate()) return null; - RecipePetals recipe = new RecipePetals(output.get(0), input.stream().map(i -> i instanceof OreDictIngredient ? ((OreDictIngredient) i).getOreDict() - : i.getMatchingStacks()[0]).toArray()); + RecipePetals recipe = new RecipePetals( + output.get(0), + input.stream() + .map( + i -> i instanceof OreDictIngredient + ? ((OreDictIngredient) i).getOreDict() + : i.getMatchingStacks()[0]) + .toArray()); add(recipe); return recipe; } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Brew.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Brew.java index 0bff41c3d..1a730a4a6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Brew.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Brew.java @@ -182,7 +182,5 @@ public vazkii.botania.api.brew.Brew register() { ModSupport.BOTANIA.get().brew.add(brew); return brew; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java index 6f1cd5157..6953d4128 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java @@ -51,12 +51,15 @@ public boolean removeByOutput(vazkii.botania.api.brew.Brew brew) { @MethodDescription(example = @Example("item('minecraft:iron_ingot')")) public boolean removeByInput(IIngredient... inputs) { - List converted = Arrays.stream(inputs).map(i -> i instanceof OreDictIngredient ? ((OreDictIngredient) i).getOreDict() - : i.getMatchingStacks()[0]).collect(Collectors.toList()); + List converted = Arrays.stream(inputs) + .map(i -> i instanceof OreDictIngredient ? ((OreDictIngredient) i).getOreDict() : i.getMatchingStacks()[0]) + .collect(Collectors.toList()); if (getRecipes().removeIf(recipe -> { - boolean found = converted.stream().allMatch(o -> recipe.getInputs().stream().anyMatch(i -> (i instanceof String || o instanceof String) - ? i.equals(o) - : ItemStack.areItemStacksEqual((ItemStack) i, (ItemStack) o))); + boolean found = converted.stream() + .allMatch( + o -> recipe.getInputs() + .stream() + .anyMatch(i -> (i instanceof String || o instanceof String) ? i.equals(o) : ItemStack.areItemStacksEqual((ItemStack) i, (ItemStack) o))); if (found) addBackup(recipe); return found; })) return true; @@ -106,11 +109,16 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable RecipeBrew register() { if (!validate()) return null; - RecipeBrew recipe = new RecipeBrew(brew, input.stream().map(i -> i instanceof OreDictIngredient ? ((OreDictIngredient) i).getOreDict() - : i.getMatchingStacks()[0]).toArray()); + RecipeBrew recipe = new RecipeBrew( + brew, + input.stream() + .map( + i -> i instanceof OreDictIngredient + ? ((OreDictIngredient) i).getOreDict() + : i.getMatchingStacks()[0]) + .toArray()); add(recipe); return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java index d6e80f4a0..ecd2a02a8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java @@ -29,8 +29,12 @@ public Collection getRecipes() { } protected Object[] convertIngredients(IIngredient[] inputs) { - return Arrays.stream(inputs).map(input -> input instanceof OreDictIngredient ? ((OreDictIngredient) input).getOreDict() - : input.getMatchingStacks()[0]).toArray(); + return Arrays.stream(inputs) + .map( + input -> input instanceof OreDictIngredient + ? ((OreDictIngredient) input).getOreDict() + : input.getMatchingStacks()[0]) + .toArray(); } @MethodDescription(type = MethodDescription.Type.ADDITION) @@ -73,8 +77,12 @@ public boolean removeByInputs(IIngredient... inputs) { List converted = Arrays.asList(convertIngredients(inputs)); List list = Arrays.asList(inputs); if (getRecipes().removeIf(recipe -> { - boolean found = recipe.getInputs().stream().allMatch(input -> input instanceof String ? converted.contains(input) - : list.stream().anyMatch(i -> i.test((ItemStack) input))); + boolean found = recipe.getInputs() + .stream() + .allMatch( + input -> input instanceof String + ? converted.contains(input) + : list.stream().anyMatch(i -> i.test((ItemStack) input))); if (found) addBackup(recipe); return found; })) return true; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/InfoParserBrew.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/InfoParserBrew.java index 800540068..d4667f323 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/InfoParserBrew.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/InfoParserBrew.java @@ -39,5 +39,4 @@ public void parse(InfoParserPackage info) { instance.add(info.getMessages(), brew, info.isPrettyNbt()); InfoParserTranslationKey.instance.add(info.getMessages(), brew.getUnlocalizedName(), info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Lexicon.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Lexicon.java index 17d9a3b01..bb1e2dddb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Lexicon.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Lexicon.java @@ -76,7 +76,6 @@ public boolean removeCategory(String name) { public SimpleObjectStream streamCategories() { return streamRecipes(); } - } @RegistryDescription( diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java index 31497851d..ee4a5035c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java @@ -52,8 +52,9 @@ public boolean removeByOutput(ItemStack output) { @MethodDescription(example = @Example("item('minecraft:ender_pearl')")) public boolean removeByInput(IIngredient input) { if (getRecipes().removeIf(recipe -> { - boolean found = recipe.getInput() instanceof ItemStack ? input.test((ItemStack) recipe.getInput()) - : (input instanceof OreDictIngredient && ((OreDictIngredient) input).getOreDict().equals(recipe.getInput())); + boolean found = recipe.getInput() instanceof ItemStack + ? input.test((ItemStack) recipe.getInput()) + : (input instanceof OreDictIngredient && ((OreDictIngredient) input).getOreDict().equals(recipe.getInput())); if (found) addBackup(recipe); return found; })) return true; @@ -133,9 +134,10 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable RecipeManaInfusion register() { if (!validate()) return null; - RecipeManaInfusion recipe = new RecipeManaInfusion(output.get(0), - input.get(0) instanceof OreDictIngredient ? ((OreDictIngredient) input.get(0)).getOreDict() - : input.get(0).getMatchingStacks()[0], mana); + RecipeManaInfusion recipe = new RecipeManaInfusion( + output.get(0), + input.get(0) instanceof OreDictIngredient ? ((OreDictIngredient) input.get(0)).getOreDict() : input.get(0).getMatchingStacks()[0], + mana); if (catalyst != null) recipe.setCatalyst(catalyst); add(recipe); return recipe; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java index fcf3ae3b3..0c00bf079 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java @@ -37,7 +37,9 @@ public OrechidRecipe add(String output, int weight) { return recipe; } - @MethodDescription(type = MethodDescription.Type.ADDITION, example = {@Example("ore('oreEmerald'), 1350"), @Example("ore('blockGold'), 1800")}) + @MethodDescription(type = MethodDescription.Type.ADDITION, example = { + @Example("ore('oreEmerald'), 1350"), @Example("ore('blockGold'), 1800") + }) public OrechidRecipe add(OreDictIngredient output, int weight) { return add(output.getOreDict(), weight); } @@ -73,7 +75,9 @@ public boolean removeByOutput(String output) { return false; } - @MethodDescription(example = {@Example(value = "ore('oreEmerald')", commented = true), @Example(value = "ore('oreQuartz')", commented = true)}) + @MethodDescription(example = { + @Example(value = "ore('oreEmerald')", commented = true), @Example(value = "ore('oreQuartz')", commented = true) + }) public boolean removeByOutput(OreDictIngredient output) { return removeByOutput(output.getOreDict()); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java index de28efa80..2fdf31ac9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java @@ -53,12 +53,15 @@ public boolean removeByOutput(IIngredient output) { @MethodDescription(example = @Example("ore('runeEarthB')")) public boolean removeByInput(IIngredient... inputs) { - List converted = Arrays.stream(inputs).map(i -> i instanceof OreDictIngredient ? ((OreDictIngredient) i).getOreDict() - : i.getMatchingStacks()[0]).collect(Collectors.toList()); + List converted = Arrays.stream(inputs) + .map(i -> i instanceof OreDictIngredient ? ((OreDictIngredient) i).getOreDict() : i.getMatchingStacks()[0]) + .collect(Collectors.toList()); if (getRecipes().removeIf(recipe -> { - boolean found = converted.stream().allMatch(o -> recipe.getInputs().stream().anyMatch(i -> (i instanceof String || o instanceof String) - ? i.equals(o) - : ItemStack.areItemStacksEqual((ItemStack) i, (ItemStack) o))); + boolean found = converted.stream() + .allMatch( + o -> recipe.getInputs() + .stream() + .anyMatch(i -> (i instanceof String || o instanceof String) ? i.equals(o) : ItemStack.areItemStacksEqual((ItemStack) i, (ItemStack) o))); if (found) addBackup(recipe); return found; })) return true; @@ -103,7 +106,8 @@ public String getErrorMsg() { public void validate(GroovyLog.Msg msg) { validateFluids(msg); validateItems(msg, 1, 20, 1, 1); - msg.add(input.stream().anyMatch(x -> x.test(new ItemStack(Item.getItemFromBlock(ModBlocks.livingrock), 1, 0))), + msg.add( + input.stream().anyMatch(x -> x.test(new ItemStack(Item.getItemFromBlock(ModBlocks.livingrock), 1, 0))), "input cannot contain a livingrock item"); msg.add(mana < 1, "mana must be at least 1, got " + mana); } @@ -112,9 +116,15 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable RecipeRuneAltar register() { if (!validate()) return null; - RecipeRuneAltar recipe = new RecipeRuneAltar(output.get(0), mana, input.stream().map(i -> i instanceof OreDictIngredient - ? ((OreDictIngredient) i).getOreDict() - : i.getMatchingStacks()[0]).toArray()); + RecipeRuneAltar recipe = new RecipeRuneAltar( + output.get(0), + mana, + input.stream() + .map( + i -> i instanceof OreDictIngredient + ? ((OreDictIngredient) i).getOreDict() + : i.getMatchingStacks()[0]) + .toArray()); add(recipe); return recipe; } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botaniatweaks/AgglomerationPlate.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botaniatweaks/AgglomerationPlate.java index 8f281ce3b..948b6e888 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botaniatweaks/AgglomerationPlate.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botaniatweaks/AgglomerationPlate.java @@ -10,7 +10,6 @@ import com.google.common.collect.ImmutableList; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; import org.jetbrains.annotations.Nullable; import quaternary.botaniatweaks.modules.botania.recipe.AgglomerationRecipe; import quaternary.botaniatweaks.modules.botania.recipe.AgglomerationRecipes; @@ -117,14 +116,18 @@ public RecipeBuilder colorEnd(int colorEnd) { return this; } - @RecipeBuilderMethodDescription(field = {"colorStart", "colorEnd"}) + @RecipeBuilderMethodDescription(field = { + "colorStart", "colorEnd" + }) public RecipeBuilder color(int colorStart, int colorEnd) { this.colorStart = colorStart; this.colorEnd = colorEnd; return this; } - @RecipeBuilderMethodDescription(field = {"center", "edge", "corner"}) + @RecipeBuilderMethodDescription(field = { + "center", "edge", "corner" + }) public RecipeBuilder baseStructure() { this.center = ModBlocks.livingrock.getDefaultState(); this.edge = Objects.requireNonNull(Blocks.LAPIS_BLOCK).getDefaultState(); @@ -197,7 +200,5 @@ public void validate(GroovyLog.Msg msg) { ModSupport.BOTANIA_TWEAKS.get().agglomerationPlate.add(recipe); return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botaniatweaks/BotaniaTweaks.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botaniatweaks/BotaniaTweaks.java index fb197ca2c..7f1a538ad 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botaniatweaks/BotaniaTweaks.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botaniatweaks/BotaniaTweaks.java @@ -5,5 +5,4 @@ public class BotaniaTweaks extends GroovyPropertyContainer { public final AgglomerationPlate agglomerationPlate = new AgglomerationPlate(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botanicadditions/BotanicAdditions.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botanicadditions/BotanicAdditions.java index dbf042726..e9b7facd6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botanicadditions/BotanicAdditions.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botanicadditions/BotanicAdditions.java @@ -5,5 +5,4 @@ public class BotanicAdditions extends GroovyPropertyContainer { public final GaiaPlate gaiaPlate = new GaiaPlate(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botanicadditions/GaiaPlate.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botanicadditions/GaiaPlate.java index 039aa924c..1f131460c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botanicadditions/GaiaPlate.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botanicadditions/GaiaPlate.java @@ -45,8 +45,7 @@ public boolean removeByOutput(IIngredient output) { public boolean removeByInput(IIngredient input) { return getRecipes().removeIf(r -> { for (Object ingredient : r.getInputs()) { - if ((ingredient instanceof String s && (input instanceof OreDictIngredient ore && ore.getOreDict().equals(s) || OreDictionary.getOres(s, false).stream().anyMatch(input))) || - (ingredient instanceof ItemStack is && input.test(is))) { + if ((ingredient instanceof String s && (input instanceof OreDictIngredient ore && ore.getOreDict().equals(s) || OreDictionary.getOres(s, false).stream().anyMatch(input))) || (ingredient instanceof ItemStack is && input.test(is))) { addBackup(r); return true; } @@ -92,5 +91,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/Calculator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/Calculator.java index c05681afd..a0890dfe3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/Calculator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/Calculator.java @@ -59,5 +59,4 @@ public static List toSonarRecipeObjectList(IngredientList specialOutput = new ArrayList<>(); specialOutput.add(output.get(0)); - specialOutput.add(new ExtractionChamberRecipes.ExtractionChamberOutput(new ItemStack( - isDamaged ? sonar.calculator.mod.Calculator.circuitDamaged : sonar.calculator.mod.Calculator.circuitDirty, 1, 32767))); + specialOutput.add( + new ExtractionChamberRecipes.ExtractionChamberOutput( + new ItemStack( + isDamaged ? sonar.calculator.mod.Calculator.circuitDamaged : sonar.calculator.mod.Calculator.circuitDirty, + 1, + 32767))); CalculatorRecipe recipe = ExtractionChamberRecipes.instance() .buildDefaultRecipe(Calculator.toSonarRecipeObjectList(input), specialOutput, new ArrayList<>(), false); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java index ef20b0afc..15c7a2659 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java @@ -57,14 +57,17 @@ public void onReload() { }); } - @MethodDescription(example = {@Example("'demo', item('minecraft:diamond_block')"), - @Example("'demo', item('chisel:antiblock:3')"), - @Example("'demo', item('minecraft:sea_lantern')")}, type = MethodDescription.Type.ADDITION) + @MethodDescription(example = { + @Example("'demo', item('minecraft:diamond_block')"), + @Example("'demo', item('chisel:antiblock:3')"), + @Example("'demo', item('minecraft:sea_lantern')") + }, type = MethodDescription.Type.ADDITION) public void addVariation(String groupName, ItemStack item) { if (IngredientHelper.overMaxSize(item, 1)) { - GroovyLog.msg("Error adding Chisel Carving").error() - .add("Item must have stack size of 1, got {}", item.getCount()) - .post(); + GroovyLog.msg("Error adding Chisel Carving") + .error() + .add("Item must have stack size of 1, got {}", item.getCount()) + .post(); return; } try { @@ -79,7 +82,9 @@ public void addVariation(String groupName, ItemStack item) { } } - @MethodDescription(example = {@Example("'antiblock', item('chisel:antiblock:3')"), @Example("'antiblock', item('chisel:antiblock:15')")}) + @MethodDescription(example = { + @Example("'antiblock', item('chisel:antiblock:3')"), @Example("'antiblock', item('chisel:antiblock:15')") + }) public void removeVariation(String groupName, ItemStack item) { try { getRegistry().removeVariation(item, groupName); @@ -199,5 +204,4 @@ public CarvingGroup remove(Collection items) { return this; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Chisel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Chisel.java index a3873ec1b..0961a8f1e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Chisel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Chisel.java @@ -5,5 +5,4 @@ public class Chisel extends GroovyPropertyContainer { public final Carving carving = new Carving(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/CompactMachines.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/CompactMachines.java index fbcfac0d6..4c0a8ceeb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/CompactMachines.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/CompactMachines.java @@ -5,5 +5,4 @@ public class CompactMachines extends GroovyPropertyContainer { public final Miniaturization miniaturization = new Miniaturization(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java index fb464fe3b..7925d828f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java @@ -164,7 +164,8 @@ public void validate(GroovyLog.Msg msg) { for (String error : errors) { msg.add(error); } - String missingKeys = shape.stream().flatMap(l -> l.stream().flatMap(g -> Arrays.stream(g.split("")).map(q -> q.charAt(0)))) + String missingKeys = shape.stream() + .flatMap(l -> l.stream().flatMap(g -> Arrays.stream(g.split("")).map(q -> q.charAt(0)))) .distinct() .filter(x -> !(keyMap.containsKey(x) || x == ' ' || x == '_')) .map(String::valueOf) @@ -188,8 +189,12 @@ public org.dave.compactmachines3.miniaturization.MultiblockRecipe register() { ticks ); - String[][][] target = shape.stream().map(l -> l.stream().map(g -> g.replace(" ", "_").split("")) - .toArray(String[][]::new)).toArray(String[][][]::new); + String[][][] target = shape.stream() + .map( + l -> l.stream() + .map(g -> g.replace(" ", "_").split("")) + .toArray(String[][]::new)) + .toArray(String[][][]::new); recipe.setPositionMap(target); @@ -234,9 +239,6 @@ public boolean isIgnoreMeta() { public ItemStack getReference() { return reference; } - } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Cyclic.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Cyclic.java index 7f7a7e21e..daeb51f45 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Cyclic.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Cyclic.java @@ -9,5 +9,4 @@ public class Cyclic extends GroovyPropertyContainer { public final Melter melter = new Melter(); public final Packager packager = new Packager(); public final Solidifier solidifier = new Solidifier(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java index c11498768..88019142e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java @@ -1,7 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.cyclic; -import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java index 8c5c20c05..2a5e82eb7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java @@ -38,7 +38,9 @@ public Collection getRecipes() { return RecipeSolidifier.recipes; } - @MethodDescription(example = {@Example("item('minecraft:bucket')"), @Example("fluid('water')"),}) + @MethodDescription(example = { + @Example("item('minecraft:bucket')"), @Example("fluid('water')"), + }) public boolean removeByInput(IIngredient input) { return getRecipes().removeIf(recipe -> { if (input.test(recipe.getFluidIngredient()) || recipe.getRecipeInput().stream().anyMatch(input)) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/GroovyFusionRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/GroovyFusionRecipe.java index b0e7dbe83..75caec3c5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/GroovyFusionRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/GroovyFusionRecipe.java @@ -127,9 +127,7 @@ public void craft(IFusionCraftingInventory inventory, World world, BlockPos bloc } @Override - public void onCraftingTick(IFusionCraftingInventory iFusionCraftingInventory, World world, BlockPos blockPos) { - - } + public void onCraftingTick(IFusionCraftingInventory iFusionCraftingInventory, World world, BlockPos blockPos) {} @Override public String canCraft(IFusionCraftingInventory inventory, World world, BlockPos blockPos) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStateEnergyCoreStructure.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStateEnergyCoreStructure.java index 2777fe295..5caa6fbf1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStateEnergyCoreStructure.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStateEnergyCoreStructure.java @@ -142,8 +142,7 @@ public void forBlock(BlockStates states, World world, BlockPos pos, BlockPos sta if (states == null) return; - if (states.isWildcard() || - states.equals(coreBlock())) + if (states.isWildcard() || states.equals(coreBlock())) return; //region Render Build Guide diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStateMultiblockHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStateMultiblockHelper.java index 76351e5dd..cf426dbb4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStateMultiblockHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStateMultiblockHelper.java @@ -17,7 +17,8 @@ public void setBlock(BlockStates states, World world, BlockPos pos) { } } - @SuppressWarnings({"unused", "EmptyMethod"}) - public void forBlock(BlockStates state, World world, BlockPos pos, BlockPos startPos, int flag) { - } + @SuppressWarnings({ + "unused", "EmptyMethod" + }) + public void forBlock(BlockStates state, World world, BlockPos pos, BlockPos startPos, int flag) {} } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStates.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStates.java index 38f9c137e..a60957483 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStates.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/helpers/BlockStates.java @@ -16,6 +16,7 @@ public class BlockStates { public static final BlockStates ANY = new BlockStates(null) { + @Override public boolean matches(IBlockState state, boolean wildCardAir) { if (wildCardAir) return state.getBlock().equals(Blocks.AIR); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java index a855d6d93..145a6260c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java @@ -118,17 +118,14 @@ public List find(ItemStack output) { private void removeInternal(Collection recipes) { AlloyRecipeManagerAccessor accessor = (AlloyRecipeManagerAccessor) AlloyRecipeManager.getInstance(); @SuppressWarnings("unchecked") - Int2ObjectOpenHashMap, ItemRecipeNode>>> map = - ((ItemRecipeNodeAccessor>>) - ((TriItemLookupAccessor) accessor.getLookup()).getRoot()).getMap(); + Int2ObjectOpenHashMap, ItemRecipeNode>>> map = ((ItemRecipeNodeAccessor>>) ((TriItemLookupAccessor) accessor.getLookup()).getRoot()).getMap(); for (NNPair, ItemRecipeNode>> pair : map.values()) { Iterator listIter = pair.left.iterator(); while (listIter.hasNext()) { if (recipes.contains(listIter.next())) { listIter.remove(); @SuppressWarnings("unchecked") - Int2ObjectOpenHashMap, ItemRecipeLeafNode>> nestedMap = - ((ItemRecipeNodeAccessor>) pair.right).getMap(); + Int2ObjectOpenHashMap, ItemRecipeLeafNode>> nestedMap = ((ItemRecipeNodeAccessor>) pair.right).getMap(); for (NNPair, ItemRecipeLeafNode> nestedPair : nestedMap.values()) { Iterator nestedListIter = nestedPair.left.iterator(); while (nestedListIter.hasNext()) { @@ -149,9 +146,12 @@ private void removeInternal(Collection recipes) { @MethodDescription(type = MethodDescription.Type.QUERY) public SimpleObjectStream streamRecipes() { - List list = MachineRecipeRegistry.instance.getRecipesForMachine(MachineRecipeRegistry.ALLOYSMELTER).values().stream() + List list = MachineRecipeRegistry.instance.getRecipesForMachine(MachineRecipeRegistry.ALLOYSMELTER) + .values() + .stream() .filter(r -> r instanceof IManyToOneRecipe) - .map(r -> (IManyToOneRecipe) r).collect(Collectors.toList()); + .map(r -> (IManyToOneRecipe) r) + .collect(Collectors.toList()); return new SimpleObjectStream<>(list) .setRemover(this::remove); } @@ -160,9 +160,7 @@ public SimpleObjectStream streamRecipes() { public void removeAll() { AlloyRecipeManagerAccessor accessor = (AlloyRecipeManagerAccessor) AlloyRecipeManager.getInstance(); @SuppressWarnings("unchecked") - Int2ObjectOpenHashMap, ItemRecipeNode>>> map = - ((ItemRecipeNodeAccessor>>) - ((TriItemLookupAccessor) accessor.getLookup()).getRoot()).getMap(); + Int2ObjectOpenHashMap, ItemRecipeNode>>> map = ((ItemRecipeNodeAccessor>>) ((TriItemLookupAccessor) accessor.getLookup()).getRoot()).getMap(); for (NNPair, ItemRecipeNode>> pair : map.values()) { Iterator listIter = pair.left.iterator(); while (listIter.hasNext()) { @@ -209,5 +207,4 @@ public void validate(GroovyLog.Msg msg) { return null; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java index 15c7eb7b0..f57907e03 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java @@ -149,7 +149,8 @@ public RecipeBuilder customLapis(IIngredient lapis) { @Override public boolean validate() { - GroovyLog.Msg msg = GroovyLog.msg("Error adding EnderIO Enchanter recipe").error() + GroovyLog.Msg msg = GroovyLog.msg("Error adding EnderIO Enchanter recipe") + .error() .add(enchantment == null, () -> "enchantment must not be null") .add(IngredientHelper.isEmpty(input), () -> "input must not be empty") .add(IngredientHelper.isEmpty(book), () -> "custom book must not be empty") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/EnderIO.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/EnderIO.java index b4fe0ee75..431aacbd0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/EnderIO.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/EnderIO.java @@ -14,5 +14,4 @@ public class EnderIO extends GroovyPropertyContainer { public final SoulBinder soulBinder = new SoulBinder(); public final Tank tank = new Tank(); public final Vat vat = new Vat(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/FluidCoolant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/FluidCoolant.java index 2e97683ed..f15e7a91f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/FluidCoolant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/FluidCoolant.java @@ -112,5 +112,4 @@ public void removeAll() { }); ((FluidFuelRegisterAccessor) FluidFuelRegister.instance).getCoolants().clear(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/FluidFuel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/FluidFuel.java index 11d414b80..cbcdc9a96 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/FluidFuel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/FluidFuel.java @@ -107,5 +107,4 @@ public void removeAll() { }); ((FluidFuelRegisterAccessor) FluidFuelRegister.instance).getFuels().clear(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java index 24c372e94..9bc84d1f7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java @@ -65,7 +65,9 @@ public static class RecipeBuilder extends EnderIORecipeBuilder { @Property(defaultValue = "RecipeBonusType.NONE") private RecipeBonusType bonusType = RecipeBonusType.NONE; - @RecipeBuilderMethodDescription(field = {"output", "chances"}) + @RecipeBuilderMethodDescription(field = { + "output", "chances" + }) public RecipeBuilder output(ItemStack itemStack, float chance) { this.output.add(itemStack); this.chances.add(Math.max(0, chance)); @@ -73,7 +75,9 @@ public RecipeBuilder output(ItemStack itemStack, float chance) { } @Override - @RecipeBuilderMethodDescription(field = {"output", "chances"}) + @RecipeBuilderMethodDescription(field = { + "output", "chances" + }) public AbstractRecipeBuilder output(ItemStack output) { return output(output, 1.0f); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java index 74e1ade9d..b27b109be 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java @@ -242,8 +242,7 @@ public void validate(GroovyLog.Msg msg) { validateItems(msg, 1, 1, 0, 1); if (isFilling) validateFluids(msg, 0, 0, 1, 1); else validateFluids(msg, 1, 1, 0, 0); - msg.add(msg.hasSubMessages(), "The Tank Recipe Builder requires an input fluid stack if it is draining and " + - "an output fluid stack if it is filling. This recipe was {}.", isFilling ? "filling" : "draining"); + msg.add(msg.hasSubMessages(), "The Tank Recipe Builder requires an input fluid stack if it is draining and " + "an output fluid stack if it is filling. This recipe was {}.", isFilling ? "filling" : "draining"); } @Override @@ -252,8 +251,14 @@ public void validate(GroovyLog.Msg msg) { if (!validate()) return null; Things in = RecipeUtils.toThings(input.get(0)); Things out = new Things().add(output.getOrEmpty(0)); - TankMachineRecipe recipe = new TankMachineRecipe(super.name.toString(), isFilling, in, isFilling ? fluidOutput.get(0) - : fluidInput.get(0), out, TankMachineRecipe.Logic.NONE, RecipeLevel.IGNORE); + TankMachineRecipe recipe = new TankMachineRecipe( + super.name.toString(), + isFilling, + in, + isFilling ? fluidOutput.get(0) : fluidInput.get(0), + out, + TankMachineRecipe.Logic.NONE, + RecipeLevel.IGNORE); ModSupport.ENDER_IO.get().tank.add(recipe); return recipe; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java index 517d4fa12..85805cb17 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java @@ -125,14 +125,18 @@ public RecipeBuilder baseMultiplier(float baseMultiplier) { return this; } - @RecipeBuilderMethodDescription(field = {"itemInputs1", "multipliers1"}) + @RecipeBuilderMethodDescription(field = { + "itemInputs1", "multipliers1" + }) public RecipeBuilder itemInputLeft(IIngredient ingredient, float multiplier) { itemInputs1.add(ingredient); multipliers1.add(multiplier); return this; } - @RecipeBuilderMethodDescription(field = {"itemInputs2", "multipliers2"}) + @RecipeBuilderMethodDescription(field = { + "itemInputs2", "multipliers2" + }) public RecipeBuilder itemInputRight(IIngredient ingredient, float multiplier) { itemInputs2.add(ingredient); multipliers2.add(multiplier); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/recipe/CustomEnchanterRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/recipe/CustomEnchanterRecipe.java index 4ab7bdb1c..1f12df67a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/recipe/CustomEnchanterRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/recipe/CustomEnchanterRecipe.java @@ -49,7 +49,6 @@ public boolean isRecipe(@NotNull RecipeLevel machineLevel, @NotNull NNList extends AbstractRecipeBuilder { - @Property(value = "groovyscript.wiki.enderio.level.value", needsOverride = true,defaultValue = "RecipeLevel.IGNORE", hierarchy = 20) + @Property(value = "groovyscript.wiki.enderio.level.value", needsOverride = true, defaultValue = "RecipeLevel.IGNORE", hierarchy = 20) protected RecipeLevel level = RecipeLevel.IGNORE; @Property(value = "groovyscript.wiki.enderio.energy.value", needsOverride = true, hierarchy = 20) protected int energy; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/recipe/RecipeInput.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/recipe/RecipeInput.java index f03a521fc..503c78358 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/recipe/RecipeInput.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/recipe/RecipeInput.java @@ -90,5 +90,4 @@ public void shrinkStack(int count) { public int getStackSize() { return ing.getAmount(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java index e81393d46..5ad691057 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java @@ -1,92 +1,92 @@ -package com.cleanroommc.groovyscript.compat.mods.essentialcraft; - -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.Admonition; -import com.cleanroommc.groovyscript.api.documentation.annotations.Example; -import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; -import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.helper.Alias; -import com.cleanroommc.groovyscript.helper.SimpleObjectStream; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import essentialcraft.api.DemonTrade; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.registry.EntityEntry; - -@RegistryDescription( - category = RegistryDescription.Category.ENTRIES, - admonition = @Admonition(value = "groovyscript.wiki.essentialcraft.demon_trade.note0", type = Admonition.Type.DANGER)) -public class DemonTradeManager extends VirtualizedRegistry { - - public DemonTradeManager() { - super(Alias.generateOf("DemonTrade")); - } - - @Override - public void onReload() { - removeScripted().forEach(DemonTrade::removeTrade); - restoreFromBackup().forEach(r -> { - DemonTrade.TRADES.add(r); - if (r.desiredItem.isEmpty()) { - DemonTrade.ALL_MOBS.add(r.entityType); - } - }); - } - - @MethodDescription(example = @Example("item('minecraft:diamond')"), type = MethodDescription.Type.ADDITION) - public void add(IIngredient x) { - for (ItemStack it : x.getMatchingStacks()) { - DemonTrade t = new DemonTrade(it); // this automatically registers the trade - addScripted(t); - } - } - - @MethodDescription(example = @Example("entity('minecraft:chicken')"), type = MethodDescription.Type.ADDITION) - public void add(EntityEntry x) { - DemonTrade t = new DemonTrade(x); // this automatically registers the trade - addScripted(t); - } - - @MethodDescription(example = @Example("item('minecraft:nether_star')")) - public boolean remove(IIngredient x) { - return DemonTrade.TRADES.removeIf(r -> { - if (!r.desiredItem.isEmpty() && x.test(r.desiredItem)) { - addBackup(r); - return true; - } - return false; - }); - } - - @MethodDescription(description = "groovyscript.wiki.essentialcraft.demon_trade.removeEntity", example = @Example("entity('minecraft:enderman')")) - public boolean remove(EntityEntry x) { - return DemonTrade.TRADES.removeIf(r -> { - if (r.desiredItem.isEmpty() && x.equals(r.entityType)) { - addBackup(r); - DemonTrade.ALL_MOBS.remove(r.entityType); - return true; - } - return false; - }); - } - - private boolean remove(DemonTrade t) { - if (DemonTrade.TRADES.stream().anyMatch(r -> r.equals(t))) { - addBackup(t); - DemonTrade.removeTrade(t); - return true; - } - return false; - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeAll() { - DemonTrade.TRADES.forEach(this::addBackup); - DemonTrade.TRADES.clear(); - DemonTrade.ALL_MOBS.clear(); - } - - @MethodDescription(type = MethodDescription.Type.QUERY) - public SimpleObjectStream streamRecipes() { - return new SimpleObjectStream<>(DemonTrade.TRADES).setRemover(this::remove); - } -} \ No newline at end of file +package com.cleanroommc.groovyscript.compat.mods.essentialcraft; + +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.Admonition; +import com.cleanroommc.groovyscript.api.documentation.annotations.Example; +import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; +import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.helper.Alias; +import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import essentialcraft.api.DemonTrade; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.registry.EntityEntry; + +@RegistryDescription( + category = RegistryDescription.Category.ENTRIES, + admonition = @Admonition(value = "groovyscript.wiki.essentialcraft.demon_trade.note0", type = Admonition.Type.DANGER)) +public class DemonTradeManager extends VirtualizedRegistry { + + public DemonTradeManager() { + super(Alias.generateOf("DemonTrade")); + } + + @Override + public void onReload() { + removeScripted().forEach(DemonTrade::removeTrade); + restoreFromBackup().forEach(r -> { + DemonTrade.TRADES.add(r); + if (r.desiredItem.isEmpty()) { + DemonTrade.ALL_MOBS.add(r.entityType); + } + }); + } + + @MethodDescription(example = @Example("item('minecraft:diamond')"), type = MethodDescription.Type.ADDITION) + public void add(IIngredient x) { + for (ItemStack it : x.getMatchingStacks()) { + DemonTrade t = new DemonTrade(it); // this automatically registers the trade + addScripted(t); + } + } + + @MethodDescription(example = @Example("entity('minecraft:chicken')"), type = MethodDescription.Type.ADDITION) + public void add(EntityEntry x) { + DemonTrade t = new DemonTrade(x); // this automatically registers the trade + addScripted(t); + } + + @MethodDescription(example = @Example("item('minecraft:nether_star')")) + public boolean remove(IIngredient x) { + return DemonTrade.TRADES.removeIf(r -> { + if (!r.desiredItem.isEmpty() && x.test(r.desiredItem)) { + addBackup(r); + return true; + } + return false; + }); + } + + @MethodDescription(description = "groovyscript.wiki.essentialcraft.demon_trade.removeEntity", example = @Example("entity('minecraft:enderman')")) + public boolean remove(EntityEntry x) { + return DemonTrade.TRADES.removeIf(r -> { + if (r.desiredItem.isEmpty() && x.equals(r.entityType)) { + addBackup(r); + DemonTrade.ALL_MOBS.remove(r.entityType); + return true; + } + return false; + }); + } + + private boolean remove(DemonTrade t) { + if (DemonTrade.TRADES.stream().anyMatch(r -> r.equals(t))) { + addBackup(t); + DemonTrade.removeTrade(t); + return true; + } + return false; + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeAll() { + DemonTrade.TRADES.forEach(this::addBackup); + DemonTrade.TRADES.clear(); + DemonTrade.ALL_MOBS.clear(); + } + + @MethodDescription(type = MethodDescription.Type.QUERY) + public SimpleObjectStream streamRecipes() { + return new SimpleObjectStream<>(DemonTrade.TRADES).setRemover(this::remove); + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/EssentialCraft.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/EssentialCraft.java index 172955437..f1430f679 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/EssentialCraft.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/EssentialCraft.java @@ -1,13 +1,13 @@ -package com.cleanroommc.groovyscript.compat.mods.essentialcraft; - -import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; - -public class EssentialCraft extends GroovyPropertyContainer { - - public final DemonTradeManager demonTrade = new DemonTradeManager(); - public final MagicianTable magicianTable = new MagicianTable(); - public final MagmaticSmeltery magmaticSmeltery = new MagmaticSmeltery(); - public final MithrilineFurnace mithrilineFurnace = new MithrilineFurnace(); - public final RadiatingChamber radiatingChamber = new RadiatingChamber(); - public final WindRune windRune = new WindRune(); -} +package com.cleanroommc.groovyscript.compat.mods.essentialcraft; + +import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; + +public class EssentialCraft extends GroovyPropertyContainer { + + public final DemonTradeManager demonTrade = new DemonTradeManager(); + public final MagicianTable magicianTable = new MagicianTable(); + public final MagmaticSmeltery magmaticSmeltery = new MagmaticSmeltery(); + public final MithrilineFurnace mithrilineFurnace = new MithrilineFurnace(); + public final RadiatingChamber radiatingChamber = new RadiatingChamber(); + public final WindRune windRune = new WindRune(); +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java index e28356d70..be1923c86 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java @@ -1,81 +1,81 @@ -package com.cleanroommc.groovyscript.compat.mods.essentialcraft; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.StandardListRegistry; -import essentialcraft.api.MagicianTableRecipe; -import essentialcraft.api.MagicianTableRecipes; -import net.minecraft.item.crafting.Ingredient; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; - -@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.essentialcraft.magician_table.note0", type = Admonition.Type.WARNING)) -public class MagicianTable extends StandardListRegistry { - - @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond'), ore('ingotGold'), ore('ingotGold'), ore('stickWood'), ore('stickWood')).output(item('minecraft:iron_ingot')).mru(500)")) - public MagicianTable.RecipeBuilder recipeBuilder() { - return new MagicianTable.RecipeBuilder(); - } - - @Override - public Collection getRecipes() { - return MagicianTableRecipes.RECIPES; - } - - @MethodDescription(example = @Example("item('essentialcraft:genitem')")) - public boolean removeByOutput(IIngredient x) { - return getRecipes().removeIf(r -> { - if (x.test(r.getRecipeOutput())) { - addBackup(r); - return true; - } - return false; - }); - } - - @Property(property = "input", comp = @Comp(gte = 1, lte = 5)) - @Property(property = "output", comp = @Comp(eq = 1)) - public static class RecipeBuilder extends AbstractRecipeBuilder { - - @Property(comp = @Comp(gte = 1)) - private int mru; - - @RecipeBuilderMethodDescription - public RecipeBuilder mru(int cost) { - mru = cost; - return this; - } - - @Override - protected int getMaxItemInput() { - return 1; - } - - @Override - public String getErrorMsg() { - return "Error adding Magician Table Recipe"; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 5, 1, 1); - validateFluids(msg); - msg.add(mru < 1, "mru cost must be 1 or greater, got {}", mru); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable MagicianTableRecipe register() { - if (!validate()) return null; - Ingredient[] inputIngredient = input.stream().map(IIngredient::toMcIngredient).toArray(Ingredient[]::new); - MagicianTableRecipe recipe = new MagicianTableRecipe(inputIngredient, output.get(0), mru); - ModSupport.ESSENTIALCRAFT.get().magicianTable.addScripted(recipe); - MagicianTableRecipes.addRecipe(recipe); - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.essentialcraft; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.StandardListRegistry; +import essentialcraft.api.MagicianTableRecipe; +import essentialcraft.api.MagicianTableRecipes; +import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; + +@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.essentialcraft.magician_table.note0", type = Admonition.Type.WARNING)) +public class MagicianTable extends StandardListRegistry { + + @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond'), ore('ingotGold'), ore('ingotGold'), ore('stickWood'), ore('stickWood')).output(item('minecraft:iron_ingot')).mru(500)")) + public MagicianTable.RecipeBuilder recipeBuilder() { + return new MagicianTable.RecipeBuilder(); + } + + @Override + public Collection getRecipes() { + return MagicianTableRecipes.RECIPES; + } + + @MethodDescription(example = @Example("item('essentialcraft:genitem')")) + public boolean removeByOutput(IIngredient x) { + return getRecipes().removeIf(r -> { + if (x.test(r.getRecipeOutput())) { + addBackup(r); + return true; + } + return false; + }); + } + + @Property(property = "input", comp = @Comp(gte = 1, lte = 5)) + @Property(property = "output", comp = @Comp(eq = 1)) + public static class RecipeBuilder extends AbstractRecipeBuilder { + + @Property(comp = @Comp(gte = 1)) + private int mru; + + @RecipeBuilderMethodDescription + public RecipeBuilder mru(int cost) { + mru = cost; + return this; + } + + @Override + protected int getMaxItemInput() { + return 1; + } + + @Override + public String getErrorMsg() { + return "Error adding Magician Table Recipe"; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 5, 1, 1); + validateFluids(msg); + msg.add(mru < 1, "mru cost must be 1 or greater, got {}", mru); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable MagicianTableRecipe register() { + if (!validate()) return null; + Ingredient[] inputIngredient = input.stream().map(IIngredient::toMcIngredient).toArray(Ingredient[]::new); + MagicianTableRecipe recipe = new MagicianTableRecipe(inputIngredient, output.get(0), mru); + ModSupport.ESSENTIALCRAFT.get().magicianTable.addScripted(recipe); + MagicianTableRecipes.addRecipe(recipe); + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagmaticSmeltery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagmaticSmeltery.java index 396b05870..5536fc9ac 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagmaticSmeltery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagmaticSmeltery.java @@ -1,133 +1,133 @@ -package com.cleanroommc.groovyscript.compat.mods.essentialcraft; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.helper.SimpleObjectStream; -import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; -import com.cleanroommc.groovyscript.helper.recipe.IRecipeBuilder; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import essentialcraft.api.OreSmeltingRecipe; -import org.jetbrains.annotations.Nullable; - -@RegistryDescription(reloadability = RegistryDescription.Reloadability.DISABLED, admonition = { - @Admonition(value = "groovyscript.wiki.essentialcraft.magmatic_smeltery.note0", type = Admonition.Type.WARNING), -}) -public class MagmaticSmeltery extends VirtualizedRegistry { - - @RecipeBuilderDescription(example = @Example(".input('blockIron').output('ingotGold').factor(3).color(0x0000ff)")) - public MagmaticSmeltery.RecipeBuilder recipeBuilder() { - return new MagmaticSmeltery.RecipeBuilder(); - } - - @Override - public void onReload() { - removeScripted().forEach(OreSmeltingRecipe::removeRecipe); - restoreFromBackup().forEach(OreSmeltingRecipe::register); - } - - @MethodDescription(example = @Example("ore('oreIron')")) - public boolean removeByInput(OreDictIngredient x) { - return removeByInput(x.getOreDict()); - } - - @MethodDescription(example = @Example("'oreDiamond'")) - public boolean removeByInput(String x) { - if (OreSmeltingRecipe.RECIPE_MAP.containsKey(x)) { - OreSmeltingRecipe recipe = OreSmeltingRecipe.RECIPE_MAP.get(x); - addBackup(recipe); - OreSmeltingRecipe.removeRecipe(recipe); - return true; - } - return false; - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeAll() { - OreSmeltingRecipe.RECIPES.forEach(this::addBackup); - OreSmeltingRecipe.RECIPES.clear(); - OreSmeltingRecipe.RECIPE_MAP.clear(); - } - - @MethodDescription(type = MethodDescription.Type.QUERY) - public SimpleObjectStream streamRecipes() { - return new SimpleObjectStream<>(OreSmeltingRecipe.RECIPES).setRemover(r -> removeByInput(r.oreName)); - } - - public static class RecipeBuilder implements IRecipeBuilder { - - @Property(comp = @Comp(eq = 1)) - private String input; - - @Property(comp = @Comp(eq = 1)) - private String output; - - @Property(comp = @Comp(gte = 0, unique = "groovyscript.wiki.essentialcraft.magmatic_smeltery.color.required")) - private int color; - - @Property(comp = @Comp(gte = 1), defaultValue = "1") - private int factor = 1; - - @RecipeBuilderMethodDescription - public MagmaticSmeltery.RecipeBuilder input(String input) { - this.input = input; - return this; - } - - @RecipeBuilderMethodDescription - public MagmaticSmeltery.RecipeBuilder input(OreDictIngredient input) { - this.input = input.getOreDict(); - return this; - } - - @RecipeBuilderMethodDescription - public MagmaticSmeltery.RecipeBuilder output(String output) { - this.output = output; - return this; - } - - @RecipeBuilderMethodDescription - public MagmaticSmeltery.RecipeBuilder output(OreDictIngredient output) { - this.output = output.getOreDict(); - return this; - } - - @RecipeBuilderMethodDescription - public MagmaticSmeltery.RecipeBuilder color(int color) { - this.color = color; - return this; - } - - @RecipeBuilderMethodDescription - public MagmaticSmeltery.RecipeBuilder factor(int factor) { - this.factor = factor; - return this; - } - - public String getErrorMsg() { - return "Error adding Magmatic Smeltery Recipe"; - } - - public void validate(GroovyLog.Msg msg) { - msg.add(OreSmeltingRecipe.RECIPE_MAP.containsKey(input), "This OreDict can already be processed in Magmatic Smeltery: {}", input); - msg.add(color < 0 || color >= (1 << 24), "color must be between 0 and 0xffffff, got {}", Integer.toHexString(color)); - } - - @Override - public boolean validate() { - GroovyLog.Msg msg = GroovyLog.msg(getErrorMsg()).error(); - validate(msg); - return !msg.postIfNotEmpty(); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable OreSmeltingRecipe register() { - if (!validate()) return null; - OreSmeltingRecipe recipe = new OreSmeltingRecipe(input, output, color, factor); - recipe.register(); - ModSupport.ESSENTIALCRAFT.get().magmaticSmeltery.addScripted(recipe); - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.essentialcraft; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; +import com.cleanroommc.groovyscript.helper.recipe.IRecipeBuilder; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import essentialcraft.api.OreSmeltingRecipe; +import org.jetbrains.annotations.Nullable; + +@RegistryDescription(reloadability = RegistryDescription.Reloadability.DISABLED, admonition = { + @Admonition(value = "groovyscript.wiki.essentialcraft.magmatic_smeltery.note0", type = Admonition.Type.WARNING), +}) +public class MagmaticSmeltery extends VirtualizedRegistry { + + @RecipeBuilderDescription(example = @Example(".input('blockIron').output('ingotGold').factor(3).color(0x0000ff)")) + public MagmaticSmeltery.RecipeBuilder recipeBuilder() { + return new MagmaticSmeltery.RecipeBuilder(); + } + + @Override + public void onReload() { + removeScripted().forEach(OreSmeltingRecipe::removeRecipe); + restoreFromBackup().forEach(OreSmeltingRecipe::register); + } + + @MethodDescription(example = @Example("ore('oreIron')")) + public boolean removeByInput(OreDictIngredient x) { + return removeByInput(x.getOreDict()); + } + + @MethodDescription(example = @Example("'oreDiamond'")) + public boolean removeByInput(String x) { + if (OreSmeltingRecipe.RECIPE_MAP.containsKey(x)) { + OreSmeltingRecipe recipe = OreSmeltingRecipe.RECIPE_MAP.get(x); + addBackup(recipe); + OreSmeltingRecipe.removeRecipe(recipe); + return true; + } + return false; + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeAll() { + OreSmeltingRecipe.RECIPES.forEach(this::addBackup); + OreSmeltingRecipe.RECIPES.clear(); + OreSmeltingRecipe.RECIPE_MAP.clear(); + } + + @MethodDescription(type = MethodDescription.Type.QUERY) + public SimpleObjectStream streamRecipes() { + return new SimpleObjectStream<>(OreSmeltingRecipe.RECIPES).setRemover(r -> removeByInput(r.oreName)); + } + + public static class RecipeBuilder implements IRecipeBuilder { + + @Property(comp = @Comp(eq = 1)) + private String input; + + @Property(comp = @Comp(eq = 1)) + private String output; + + @Property(comp = @Comp(gte = 0, unique = "groovyscript.wiki.essentialcraft.magmatic_smeltery.color.required")) + private int color; + + @Property(comp = @Comp(gte = 1), defaultValue = "1") + private int factor = 1; + + @RecipeBuilderMethodDescription + public MagmaticSmeltery.RecipeBuilder input(String input) { + this.input = input; + return this; + } + + @RecipeBuilderMethodDescription + public MagmaticSmeltery.RecipeBuilder input(OreDictIngredient input) { + this.input = input.getOreDict(); + return this; + } + + @RecipeBuilderMethodDescription + public MagmaticSmeltery.RecipeBuilder output(String output) { + this.output = output; + return this; + } + + @RecipeBuilderMethodDescription + public MagmaticSmeltery.RecipeBuilder output(OreDictIngredient output) { + this.output = output.getOreDict(); + return this; + } + + @RecipeBuilderMethodDescription + public MagmaticSmeltery.RecipeBuilder color(int color) { + this.color = color; + return this; + } + + @RecipeBuilderMethodDescription + public MagmaticSmeltery.RecipeBuilder factor(int factor) { + this.factor = factor; + return this; + } + + public String getErrorMsg() { + return "Error adding Magmatic Smeltery Recipe"; + } + + public void validate(GroovyLog.Msg msg) { + msg.add(OreSmeltingRecipe.RECIPE_MAP.containsKey(input), "This OreDict can already be processed in Magmatic Smeltery: {}", input); + msg.add(color < 0 || color >= (1 << 24), "color must be between 0 and 0xffffff, got {}", Integer.toHexString(color)); + } + + @Override + public boolean validate() { + GroovyLog.Msg msg = GroovyLog.msg(getErrorMsg()).error(); + validate(msg); + return !msg.postIfNotEmpty(); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable OreSmeltingRecipe register() { + if (!validate()) return null; + OreSmeltingRecipe recipe = new OreSmeltingRecipe(input, output, color, factor); + recipe.register(); + ModSupport.ESSENTIALCRAFT.get().magmaticSmeltery.addScripted(recipe); + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java index 77b92a049..4811799f4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java @@ -1,104 +1,104 @@ -package com.cleanroommc.groovyscript.compat.mods.essentialcraft; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.helper.SimpleObjectStream; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import essentialcraft.api.MithrilineFurnaceRecipe; -import essentialcraft.api.MithrilineFurnaceRecipes; -import net.minecraft.item.crafting.Ingredient; -import org.jetbrains.annotations.Nullable; - -import java.util.Arrays; - -@RegistryDescription -public class MithrilineFurnace extends VirtualizedRegistry { - - @RecipeBuilderDescription(example = @Example(".input(item('minecraft:coal_block') * 3).output(item('minecraft:diamond_block')).espe(500)")) - public MithrilineFurnace.RecipeBuilder recipeBuilder() { - return new MithrilineFurnace.RecipeBuilder(); - } - - @Override - public void onReload() { - removeScripted().forEach(MithrilineFurnaceRecipes::removeRecipe); - restoreFromBackup().forEach(MithrilineFurnaceRecipes::addRecipe); - } - - @MethodDescription(example = @Example("ore('dustGlowstone')")) - public boolean removeByInput(IIngredient x) { - return MithrilineFurnaceRecipes.RECIPES.removeIf(r -> { - if (Arrays.stream(x.getMatchingStacks()).anyMatch(r.input)) { - addBackup(r); - return true; - } - return false; - }); - } - - @MethodDescription(example = @Example("item('minecraft:emerald')")) - public boolean removeByOutput(IIngredient x) { - return MithrilineFurnaceRecipes.RECIPES.removeIf(r -> { - if (x.test(r.result)) { - addBackup(r); - return true; - } - return false; - }); - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeAll() { - MithrilineFurnaceRecipes.RECIPES.forEach(this::addBackup); - MithrilineFurnaceRecipes.RECIPES.clear(); - } - - @MethodDescription(type = MethodDescription.Type.QUERY) - public SimpleObjectStream streamRecipes() { - return new SimpleObjectStream<>(MithrilineFurnaceRecipes.RECIPES).setRemover(r -> { - addBackup(r); - return MithrilineFurnaceRecipes.RECIPES.remove(r); - }); - } - - @Property(property = "input", comp = @Comp(eq = 1)) - @Property(property = "output", comp = @Comp(eq = 1)) - public static class RecipeBuilder extends AbstractRecipeBuilder { - - @Property(comp = @Comp(gte = 1)) - private int espe; - - @RecipeBuilderMethodDescription - public RecipeBuilder espe(int cost) { - espe = cost; - return this; - } - - @Override - public String getErrorMsg() { - return "Error adding Mithriline Furnace Recipe"; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 1, 1, 1); - validateFluids(msg); - msg.add(espe < 1, "espe cost must be 1 or greater, got {}", espe); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable MithrilineFurnaceRecipe register() { - if (!validate()) return null; - int stackSize = input.get(0).getAmount(); - Ingredient inputItem = input.get(0).withAmount(1).toMcIngredient(); - MithrilineFurnaceRecipe recipe = new MithrilineFurnaceRecipe(inputItem, output.get(0), (float) espe, stackSize); - ModSupport.ESSENTIALCRAFT.get().mithrilineFurnace.addScripted(recipe); - MithrilineFurnaceRecipes.addRecipe(recipe); - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.essentialcraft; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import essentialcraft.api.MithrilineFurnaceRecipe; +import essentialcraft.api.MithrilineFurnaceRecipes; +import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.Nullable; + +import java.util.Arrays; + +@RegistryDescription +public class MithrilineFurnace extends VirtualizedRegistry { + + @RecipeBuilderDescription(example = @Example(".input(item('minecraft:coal_block') * 3).output(item('minecraft:diamond_block')).espe(500)")) + public MithrilineFurnace.RecipeBuilder recipeBuilder() { + return new MithrilineFurnace.RecipeBuilder(); + } + + @Override + public void onReload() { + removeScripted().forEach(MithrilineFurnaceRecipes::removeRecipe); + restoreFromBackup().forEach(MithrilineFurnaceRecipes::addRecipe); + } + + @MethodDescription(example = @Example("ore('dustGlowstone')")) + public boolean removeByInput(IIngredient x) { + return MithrilineFurnaceRecipes.RECIPES.removeIf(r -> { + if (Arrays.stream(x.getMatchingStacks()).anyMatch(r.input)) { + addBackup(r); + return true; + } + return false; + }); + } + + @MethodDescription(example = @Example("item('minecraft:emerald')")) + public boolean removeByOutput(IIngredient x) { + return MithrilineFurnaceRecipes.RECIPES.removeIf(r -> { + if (x.test(r.result)) { + addBackup(r); + return true; + } + return false; + }); + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeAll() { + MithrilineFurnaceRecipes.RECIPES.forEach(this::addBackup); + MithrilineFurnaceRecipes.RECIPES.clear(); + } + + @MethodDescription(type = MethodDescription.Type.QUERY) + public SimpleObjectStream streamRecipes() { + return new SimpleObjectStream<>(MithrilineFurnaceRecipes.RECIPES).setRemover(r -> { + addBackup(r); + return MithrilineFurnaceRecipes.RECIPES.remove(r); + }); + } + + @Property(property = "input", comp = @Comp(eq = 1)) + @Property(property = "output", comp = @Comp(eq = 1)) + public static class RecipeBuilder extends AbstractRecipeBuilder { + + @Property(comp = @Comp(gte = 1)) + private int espe; + + @RecipeBuilderMethodDescription + public RecipeBuilder espe(int cost) { + espe = cost; + return this; + } + + @Override + public String getErrorMsg() { + return "Error adding Mithriline Furnace Recipe"; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 1, 1, 1); + validateFluids(msg); + msg.add(espe < 1, "espe cost must be 1 or greater, got {}", espe); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable MithrilineFurnaceRecipe register() { + if (!validate()) return null; + int stackSize = input.get(0).getAmount(); + Ingredient inputItem = input.get(0).withAmount(1).toMcIngredient(); + MithrilineFurnaceRecipe recipe = new MithrilineFurnaceRecipe(inputItem, output.get(0), (float) espe, stackSize); + ModSupport.ESSENTIALCRAFT.get().mithrilineFurnace.addScripted(recipe); + MithrilineFurnaceRecipes.addRecipe(recipe); + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java index 900e703bd..4e2774717 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java @@ -1,113 +1,113 @@ -package com.cleanroommc.groovyscript.compat.mods.essentialcraft; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.StandardListRegistry; -import essentialcraft.api.RadiatingChamberRecipe; -import essentialcraft.api.RadiatingChamberRecipes; -import net.minecraft.item.crafting.Ingredient; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; - -@RegistryDescription -public class RadiatingChamber extends StandardListRegistry { - - @RecipeBuilderDescription(example = @Example(".input(item('minecraft:nether_star'), item('minecraft:stone')).output(item('minecraft:beacon')).time(100).mruPerTick(10.0f).upperBalance(1.5f).lowerBalance(0.25f)")) - public RadiatingChamber.RecipeBuilder recipeBuilder() { - return new RadiatingChamber.RecipeBuilder(); - } - - @Override - public Collection getRecipes() { - return RadiatingChamberRecipes.RECIPES; - } - - @MethodDescription(example = @Example("item('essentialcraft:genitem', 42)")) - public boolean removeByOutput(IIngredient x) { - return getRecipes().removeIf(r -> { - if (x.test(r.getRecipeOutput())) { - addBackup(r); - return true; - } - return false; - }); - } - - @Property(property = "input", comp = @Comp(gte = 1, lte = 2)) - @Property(property = "output", comp = @Comp(eq = 1)) - public static class RecipeBuilder extends AbstractRecipeBuilder { - - @Property(comp = @Comp(gte = 1)) - private int time; - - @Property(comp = @Comp(gte = 1), defaultValue = "1.0f") - private float mruPerTick = 1.0f; - - @Property(comp = @Comp(gte = 0, lte = 2)) - private float lowerBalance; - - @Property(comp = @Comp(gte = 0, lte = 2), defaultValue = "2.0f") - private float upperBalance = 2.0f; - - @RecipeBuilderMethodDescription - public RadiatingChamber.RecipeBuilder time(int time) { - this.time = time; - return this; - } - - @RecipeBuilderMethodDescription - public RadiatingChamber.RecipeBuilder mruPerTick(float mruPerTick) { - this.mruPerTick = mruPerTick; - return this; - } - - @RecipeBuilderMethodDescription - public RadiatingChamber.RecipeBuilder lowerBalance(float lowerBalance) { - this.lowerBalance = lowerBalance; - return this; - } - - @RecipeBuilderMethodDescription - public RadiatingChamber.RecipeBuilder upperBalance(float upperBalance) { - this.upperBalance = upperBalance; - return this; - } - - @Override - protected int getMaxItemInput() { - return 1; - } - - @Override - public String getErrorMsg() { - return "Error adding Radiating Chamber Recipe"; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 2, 1, 1); - validateFluids(msg); - msg.add(time < 1, "time must be 1 or greater, got {}", time); - msg.add(mruPerTick < 1.0f, "mru per tick must be at least 1.0f, got {}", mruPerTick); - msg.add(lowerBalance < 0.0f || lowerBalance > 2.0f, "lower balance must be between 0.0f and 2.0f, got {}", lowerBalance); - msg.add(upperBalance < 0.0f || upperBalance > 2.0f, "upper balance must be between 0.0f and 2.0f, got {}", upperBalance); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable RadiatingChamberRecipe register() { - if (!validate()) return null; - Ingredient[] inputIngredient = input.stream().map(IIngredient::toMcIngredient).toArray(Ingredient[]::new); - // the attribute names lie to the devs, they're called 'int mruRequired' and 'float costModifier' - // but actually they're 'int timeInTicks' and 'float mruPerTick' - RadiatingChamberRecipe recipe = new RadiatingChamberRecipe(inputIngredient, output.get(0), time, upperBalance, lowerBalance, mruPerTick); - ModSupport.ESSENTIALCRAFT.get().radiatingChamber.addScripted(recipe); - RadiatingChamberRecipes.addRecipe(recipe); - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.essentialcraft; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.StandardListRegistry; +import essentialcraft.api.RadiatingChamberRecipe; +import essentialcraft.api.RadiatingChamberRecipes; +import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; + +@RegistryDescription +public class RadiatingChamber extends StandardListRegistry { + + @RecipeBuilderDescription(example = @Example(".input(item('minecraft:nether_star'), item('minecraft:stone')).output(item('minecraft:beacon')).time(100).mruPerTick(10.0f).upperBalance(1.5f).lowerBalance(0.25f)")) + public RadiatingChamber.RecipeBuilder recipeBuilder() { + return new RadiatingChamber.RecipeBuilder(); + } + + @Override + public Collection getRecipes() { + return RadiatingChamberRecipes.RECIPES; + } + + @MethodDescription(example = @Example("item('essentialcraft:genitem', 42)")) + public boolean removeByOutput(IIngredient x) { + return getRecipes().removeIf(r -> { + if (x.test(r.getRecipeOutput())) { + addBackup(r); + return true; + } + return false; + }); + } + + @Property(property = "input", comp = @Comp(gte = 1, lte = 2)) + @Property(property = "output", comp = @Comp(eq = 1)) + public static class RecipeBuilder extends AbstractRecipeBuilder { + + @Property(comp = @Comp(gte = 1)) + private int time; + + @Property(comp = @Comp(gte = 1), defaultValue = "1.0f") + private float mruPerTick = 1.0f; + + @Property(comp = @Comp(gte = 0, lte = 2)) + private float lowerBalance; + + @Property(comp = @Comp(gte = 0, lte = 2), defaultValue = "2.0f") + private float upperBalance = 2.0f; + + @RecipeBuilderMethodDescription + public RadiatingChamber.RecipeBuilder time(int time) { + this.time = time; + return this; + } + + @RecipeBuilderMethodDescription + public RadiatingChamber.RecipeBuilder mruPerTick(float mruPerTick) { + this.mruPerTick = mruPerTick; + return this; + } + + @RecipeBuilderMethodDescription + public RadiatingChamber.RecipeBuilder lowerBalance(float lowerBalance) { + this.lowerBalance = lowerBalance; + return this; + } + + @RecipeBuilderMethodDescription + public RadiatingChamber.RecipeBuilder upperBalance(float upperBalance) { + this.upperBalance = upperBalance; + return this; + } + + @Override + protected int getMaxItemInput() { + return 1; + } + + @Override + public String getErrorMsg() { + return "Error adding Radiating Chamber Recipe"; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 2, 1, 1); + validateFluids(msg); + msg.add(time < 1, "time must be 1 or greater, got {}", time); + msg.add(mruPerTick < 1.0f, "mru per tick must be at least 1.0f, got {}", mruPerTick); + msg.add(lowerBalance < 0.0f || lowerBalance > 2.0f, "lower balance must be between 0.0f and 2.0f, got {}", lowerBalance); + msg.add(upperBalance < 0.0f || upperBalance > 2.0f, "upper balance must be between 0.0f and 2.0f, got {}", upperBalance); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable RadiatingChamberRecipe register() { + if (!validate()) return null; + Ingredient[] inputIngredient = input.stream().map(IIngredient::toMcIngredient).toArray(Ingredient[]::new); + // the attribute names lie to the devs, they're called 'int mruRequired' and 'float costModifier' + // but actually they're 'int timeInTicks' and 'float mruPerTick' + RadiatingChamberRecipe recipe = new RadiatingChamberRecipe(inputIngredient, output.get(0), time, upperBalance, lowerBalance, mruPerTick); + ModSupport.ESSENTIALCRAFT.get().radiatingChamber.addScripted(recipe); + RadiatingChamberRecipes.addRecipe(recipe); + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java index cde4391c0..af19062f0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java @@ -1,93 +1,93 @@ -package com.cleanroommc.groovyscript.compat.mods.essentialcraft; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.StandardListRegistry; -import essentialcraft.api.WindImbueRecipe; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; - -@RegistryDescription -public class WindRune extends StandardListRegistry { - - @RecipeBuilderDescription(example = @Example(".input(item('minecraft:gold_block')).output(item('minecraft:diamond_block')).espe(500)")) - public WindRune.RecipeBuilder recipeBuilder() { - return new WindRune.RecipeBuilder(); - } - - @Override - public Collection getRecipes() { - return WindImbueRecipe.RECIPES; - } - - @MethodDescription(example = @Example("item('minecraft:diamond')")) - public boolean removeByInput(IIngredient x) { - ItemStack[] stacks = x.getMatchingStacks(); - if (stacks.length == 0) return false; - return getRecipes().removeIf(r -> { - if (r.input.test(stacks[0])) { - addBackup(r); - return true; - } - return false; - }); - } - - @MethodDescription(example = @Example("item('essentialcraft:air_potion')")) - public boolean removeByOutput(IIngredient x) { - return getRecipes().removeIf(r -> { - if (x.test(r.result)) { - addBackup(r); - return true; - } - return false; - }); - } - - @Property(property = "input", comp = @Comp(eq = 1)) - @Property(property = "output", comp = @Comp(eq = 1)) - public static class RecipeBuilder extends AbstractRecipeBuilder { - - @Property(comp = @Comp(gte = 1)) - private int espe; - - @RecipeBuilderMethodDescription - public RecipeBuilder espe(int cost) { - espe = cost; - return this; - } - - @Override - protected int getMaxItemInput() { - return 1; - } - - @Override - public String getErrorMsg() { - return "Error adding Wind Rune Recipe"; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 1, 1, 1); - validateFluids(msg); - msg.add(espe < 1, "espe cost must be 1 or greater, got {}", espe); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable WindImbueRecipe register() { - if (!validate()) return null; - Ingredient inputItem = input.get(0).toMcIngredient(); - WindImbueRecipe recipe = new WindImbueRecipe(inputItem, output.get(0), espe); // also adds the recipe - ModSupport.ESSENTIALCRAFT.get().windRune.addScripted(recipe); - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.essentialcraft; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.StandardListRegistry; +import essentialcraft.api.WindImbueRecipe; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; + +@RegistryDescription +public class WindRune extends StandardListRegistry { + + @RecipeBuilderDescription(example = @Example(".input(item('minecraft:gold_block')).output(item('minecraft:diamond_block')).espe(500)")) + public WindRune.RecipeBuilder recipeBuilder() { + return new WindRune.RecipeBuilder(); + } + + @Override + public Collection getRecipes() { + return WindImbueRecipe.RECIPES; + } + + @MethodDescription(example = @Example("item('minecraft:diamond')")) + public boolean removeByInput(IIngredient x) { + ItemStack[] stacks = x.getMatchingStacks(); + if (stacks.length == 0) return false; + return getRecipes().removeIf(r -> { + if (r.input.test(stacks[0])) { + addBackup(r); + return true; + } + return false; + }); + } + + @MethodDescription(example = @Example("item('essentialcraft:air_potion')")) + public boolean removeByOutput(IIngredient x) { + return getRecipes().removeIf(r -> { + if (x.test(r.result)) { + addBackup(r); + return true; + } + return false; + }); + } + + @Property(property = "input", comp = @Comp(eq = 1)) + @Property(property = "output", comp = @Comp(eq = 1)) + public static class RecipeBuilder extends AbstractRecipeBuilder { + + @Property(comp = @Comp(gte = 1)) + private int espe; + + @RecipeBuilderMethodDescription + public RecipeBuilder espe(int cost) { + espe = cost; + return this; + } + + @Override + protected int getMaxItemInput() { + return 1; + } + + @Override + public String getErrorMsg() { + return "Error adding Wind Rune Recipe"; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 1, 1, 1); + validateFluids(msg); + msg.add(espe < 1, "espe cost must be 1 or greater, got {}", espe); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable WindImbueRecipe register() { + if (!validate()) return null; + Ingredient inputItem = input.get(0).toMcIngredient(); + WindImbueRecipe recipe = new WindImbueRecipe(inputItem, output.get(0), espe); // also adds the recipe + ModSupport.ESSENTIALCRAFT.get().windRune.addScripted(recipe); + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java index 1439a79b9..40bdf224c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java @@ -130,8 +130,9 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable IRecipe register() { if (!validate()) return null; - IRecipe recipe = - org.cyclops.evilcraft.block.BloodInfuser.getInstance().getRecipeRegistry().registerRecipe( + IRecipe recipe = org.cyclops.evilcraft.block.BloodInfuser.getInstance() + .getRecipeRegistry() + .registerRecipe( new IngredientFluidStackAndTierRecipeComponent(input.get(0).toMcIngredient(), fluidInput.get(0), tier), new IngredientRecipeComponent(output.get(0)), new DurationXpRecipeProperties(duration, xp) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java index 3c8d58630..adcf4d02d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java @@ -155,8 +155,9 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable IRecipe register() { if (!validate()) return null; - IRecipe recipe = - org.cyclops.evilcraft.block.EnvironmentalAccumulator.getInstance().getRecipeRegistry().registerRecipe( + IRecipe recipe = org.cyclops.evilcraft.block.EnvironmentalAccumulator.getInstance() + .getRecipeRegistry() + .registerRecipe( new EnvironmentalAccumulatorRecipeComponent(input.get(0).toMcIngredient(), inputWeather), new EnvironmentalAccumulatorRecipeComponent(output.get(0), outputWeather), new EnvironmentalAccumulatorRecipeProperties(duration, cooldowntime, processingspeed) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/InfoParserWeather.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/InfoParserWeather.java index 611f80c95..a64d8e433 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/InfoParserWeather.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/InfoParserWeather.java @@ -39,5 +39,4 @@ public void parse(InfoParserPackage info) { } instance.add(info.getMessages(), "clear", info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java index 93e6793c1..f82b93ca6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java @@ -76,5 +76,4 @@ public boolean removeByOutput(ItemStack stack) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/ExtendedCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/ExtendedCrafting.java index dad091452..13d144f9e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/ExtendedCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/ExtendedCrafting.java @@ -8,5 +8,4 @@ public class ExtendedCrafting extends GroovyPropertyContainer { public final EnderCrafting enderCrafting = new EnderCrafting(); public final CombinationCrafting combinationCrafting = new CombinationCrafting(); public final CompressionCrafting compressionCrafting = new CompressionCrafting(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java index ebdf85daa..59c843517 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java @@ -75,5 +75,4 @@ public boolean removeByOutput(ItemStack stack) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableRecipeBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableRecipeBuilder.java index 9d5a5a809..ce129c229 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableRecipeBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableRecipeBuilder.java @@ -70,7 +70,8 @@ public TableRecipeBuilder.Shaped tier(int tier) { @Override @RecipeBuilderRegistrationMethod public ITieredRecipe register() { - GroovyLog.Msg msg = GroovyLog.msg("Error adding shaped Extended Crafting Table recipe").error() + GroovyLog.Msg msg = GroovyLog.msg("Error adding shaped Extended Crafting Table recipe") + .error() .add((keyBasedMatrix == null || keyBasedMatrix.length == 0) && (ingredientMatrix == null || ingredientMatrix.isEmpty()), () -> "No matrix was defined") .add(keyBasedMatrix != null && ingredientMatrix != null, () -> "A key based matrix AND a ingredient based matrix was defined. This is not allowed!"); if (msg.postIfNotEmpty()) return null; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/ExtraBotany.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/ExtraBotany.java index baad8bfca..e3a2b8d80 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/ExtraBotany.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/ExtraBotany.java @@ -5,5 +5,4 @@ public class ExtraBotany extends GroovyPropertyContainer { public final Pedestal pedestal = new Pedestal(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/ExtraUtils2.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/ExtraUtils2.java index f2a6047a7..45c005871 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/ExtraUtils2.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/ExtraUtils2.java @@ -10,5 +10,4 @@ public class ExtraUtils2 extends GroovyPropertyContainer { public final Furnace furnace = new Furnace(); public final GridPowerPassiveGenerator gridPowerPassiveGenerator = new GridPowerPassiveGenerator(); public final Generator generator = new Generator(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java index 043955af1..1e232c5c0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java @@ -15,10 +15,11 @@ import java.util.List; @RegistryDescription( - admonition = @Admonition(type = Admonition.Type.WARNING, - format = Admonition.Format.STANDARD, - hasTitle = true, - value = "groovyscript.wiki.extrautils2.furnace.removeWarning") + admonition = @Admonition( + type = Admonition.Type.WARNING, + format = Admonition.Format.STANDARD, + hasTitle = true, + value = "groovyscript.wiki.extrautils2.furnace.removeWarning") ) public class Furnace extends VirtualizedRegistry { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java index 24979b381..d2fa4c2fb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java @@ -19,7 +19,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; @RegistryDescription public class Generator extends VirtualizedRegistry> { @@ -244,7 +243,6 @@ public static Generators byName(String name) { public String toString() { return location; } - } @Property(property = "input", comp = @Comp(gte = 0, lte = 2)) @@ -329,5 +327,4 @@ public IMachineRecipe register() { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/GridPowerPassiveGenerator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/GridPowerPassiveGenerator.java index be143938d..083a9174f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/GridPowerPassiveGenerator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/GridPowerPassiveGenerator.java @@ -23,6 +23,10 @@ @RegistryDescription public class GridPowerPassiveGenerator extends VirtualizedRegistry> { + private static final Class[] CLOSURE_CLASSES = { + TilePassiveGenerator.class, World.class + }; + public final Map basePowerMap = new Object2FloatOpenHashMap<>(); public final Map> powerLevelMap = new Object2ObjectOpenHashMap<>(); private final Map scalingMap = new Object2ObjectArrayMap<>(); @@ -70,8 +74,9 @@ public void setPowerMultiplier(String generator, IWorldPowerMultiplier worldPowe setPowerMultiplier(new ResourceLocation(generator), worldPowerMultiplier); } - @MethodDescription(type = MethodDescription.Type.VALUE, - example = @Example(value = "resource('generators:solar'), { TilePassiveGenerator generator, World world -> 100f }", imports = "com.rwtema.extrautils2.tile.TilePassiveGenerator")) + @MethodDescription( + type = MethodDescription.Type.VALUE, + example = @Example(value = "resource('generators:solar'), { TilePassiveGenerator generator, World world -> 100f }", imports = "com.rwtema.extrautils2.tile.TilePassiveGenerator")) public void setPowerLevel(ResourceLocation generator, Closure powerLevel) { if (powerLevel == null) { GroovyLog.msg("Extra Utilities 2 Grid Power Passive Generator powerLevel closure must be defined") @@ -79,7 +84,7 @@ public void setPowerLevel(ResourceLocation generator, Closure powerLevel) .post(); return; } - if (!Arrays.equals(powerLevel.getParameterTypes(), new Class[]{TilePassiveGenerator.class, World.class})) { + if (!Arrays.equals(powerLevel.getParameterTypes(), CLOSURE_CLASSES)) { GroovyLog.msg("Extra Utilities 2 Grid Power Passive Generator powerLevel closure should be a closure with exactly two parameters:") .add("com.rwtema.extrautils2.tile.TilePassiveGenerator generator, net.minecraft.world.World world in that order.") .add("but had {}, {} instead", (Object[]) powerLevel.getParameterTypes()) @@ -116,5 +121,4 @@ public void setScaling(ResourceLocation generator, float... scaling) { public void setScaling(String generator, float... scaling) { setScaling(new ResourceLocation(generator), scaling); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java index de3b16080..4bd0da346 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java @@ -117,7 +117,9 @@ public RecipeBuilder shouldProgress(Closure shouldProgress) { .post(); return this; } - if (!Arrays.equals(shouldProgress.getParameterTypes(), new Class[]{TileEntity.class, int.class, ItemStack.class})) { + if (!Arrays.equals(shouldProgress.getParameterTypes(), new Class[]{ + TileEntity.class, int.class, ItemStack.class + })) { GroovyLog.msg("Extra Utilities 2 Resonator shouldProgress closure should be a closure with exactly three parameters:") .add("net.minecraft.tileentity.TileEntity resonator, int frequency, net.minecraft.item.ItemStack input in that order.") .add("but had {}, {}, {} instead", (Object[]) shouldProgress.getParameterTypes()) @@ -129,7 +131,9 @@ public RecipeBuilder shouldProgress(Closure shouldProgress) { } @SuppressWarnings("unchecked") - @RecipeBuilderMethodDescription(field = {"requirementText", "shouldProgress"}) + @RecipeBuilderMethodDescription(field = { + "requirementText", "shouldProgress" + }) public RecipeBuilder rainbow() { this.requirementText = Lang.translate("[Requires an active Rainbow Generator]"); @@ -171,6 +175,7 @@ public void validate(GroovyLog.Msg msg) { public IResonatorRecipe register() { if (!validate()) return null; IResonatorRecipe recipe = new ResonatorRecipe(input.get(0).getMatchingStacks()[0], output.get(0), energy, ownerTag) { + @Override public String getRequirementText() { return requirementText == null ? "" : requirementText; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/BeeMutations.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/BeeMutations.java index e8739c1c9..bb21c8aca 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/BeeMutations.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/BeeMutations.java @@ -39,7 +39,10 @@ public boolean isEnabled() { return ForestryAPI.moduleManager.isModuleEnabled("forestry", ForestryModuleUids.APICULTURE); } - public IBeeMutation add(AlleleBeeSpecies output, AlleleBeeSpecies a, AlleleBeeSpecies b, double chance, + public IBeeMutation add(AlleleBeeSpecies output, + AlleleBeeSpecies a, + AlleleBeeSpecies b, + double chance, @Nullable Function requirement) { BeeMutation mutation = new BeeMutation(a, b, Objects.requireNonNull(BeeManager.beeRoot).getTemplate(output), (int) Math.round(100 * chance)); if (requirement != null) mutation = (BeeMutation) requirement.apply(mutation); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Carpenter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Carpenter.java index bd7334c21..0faaac9fd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Carpenter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Carpenter.java @@ -1,10 +1,8 @@ package com.cleanroommc.groovyscript.compat.mods.forestry; -import com.cleanroommc.groovyscript.GroovyScriptConfig; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.IResourceStack; import com.cleanroommc.groovyscript.core.mixin.forestry.CarpenterRecipeManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Fermenter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Fermenter.java index 053679855..9fca57a25 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Fermenter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Fermenter.java @@ -63,8 +63,9 @@ public boolean removeByInput(FluidStack input) { public boolean removeByCatalyst(IIngredient input) { if (FermenterRecipeManagerAccessor.getRecipes().removeIf(recipe -> { - boolean found = input instanceof OreDictIngredient ? recipe.getResourceOreName().equals(((OreDictIngredient) input).getOreDict()) - : recipe.getResource().isItemEqual(input.getMatchingStacks()[0]); + boolean found = input instanceof OreDictIngredient + ? recipe.getResourceOreName().equals(((OreDictIngredient) input).getOreDict()) + : recipe.getResource().isItemEqual(input.getMatchingStacks()[0]); if (found) addBackup(recipe); return found; })) return true; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Forestry.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Forestry.java index df1991481..2a9d9596c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Forestry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/Forestry.java @@ -30,7 +30,9 @@ public static Result parseSpecies(String mainArg, Object... ar String[] parts = mainArg.split(":"); if (parts.length < 2) { if (args.length > 0 && args[0] instanceof String s) { - parts = new String[]{parts[0], s}; + parts = new String[]{ + parts[0], s + }; } else { Result.error("Can't find bee species for '{}'", mainArg); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/ForestryRegistry.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/ForestryRegistry.java index 296bdd622..4f1adba39 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/ForestryRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/forestry/ForestryRegistry.java @@ -11,8 +11,7 @@ public abstract class ForestryRegistry extends VirtualizedRegistry { - public ForestryRegistry() { - } + public ForestryRegistry() {} public ForestryRegistry(@Nullable Collection aliases) { super(aliases); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/BlastFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/BlastFurnace.java index 71b89a02e..4d9733d81 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/BlastFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/BlastFurnace.java @@ -62,7 +62,5 @@ public void validate(GroovyLog.Msg msg) { ModSupport.FUTURE_MC.get().blastFurnace.add(recipe); return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Campfire.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Campfire.java index e44c28fdb..fa5f4fe46 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Campfire.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Campfire.java @@ -72,7 +72,5 @@ public void validate(GroovyLog.Msg msg) { ModSupport.FUTURE_MC.get().campfire.add(recipe); return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/FutureMC.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/FutureMC.java index 7d97d45b9..bb3520e0b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/FutureMC.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/FutureMC.java @@ -9,5 +9,4 @@ public class FutureMC extends GroovyPropertyContainer { public final Smithing smithing = new Smithing(); public final Smoker smoker = new Smoker(); public final Stonecutter stonecutter = new Stonecutter(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Smithing.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Smithing.java index 36f4c3fab..6a54f7788 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Smithing.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Smithing.java @@ -64,7 +64,5 @@ public void validate(GroovyLog.Msg msg) { ModSupport.FUTURE_MC.get().smithing.add(recipe); return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Smoker.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Smoker.java index bf2b0c7a8..c3c8fedf0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Smoker.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Smoker.java @@ -62,7 +62,5 @@ public void validate(GroovyLog.Msg msg) { ModSupport.FUTURE_MC.get().smoker.add(recipe); return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Stonecutter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Stonecutter.java index 7be7fe088..0bd941408 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Stonecutter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/futuremc/Stonecutter.java @@ -62,7 +62,5 @@ public void validate(GroovyLog.Msg msg) { ModSupport.FUTURE_MC.get().stonecutter.add(recipe); return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/Centrifuge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/Centrifuge.java index f6cb96693..4fd09c7cb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/Centrifuge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/Centrifuge.java @@ -57,7 +57,7 @@ public void removeByOutput(ItemStack... outputs) { .post(); return; } - for (Iterator>> iterator = Recipes.centrifuge.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.centrifuge.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> recipe = iterator.next(); if (recipe.getOutput().size() == outputs.length) { @@ -84,7 +84,7 @@ public void removeByInput(ItemStack input) { .post(); return; } - for (Iterator>> iterator = Recipes.centrifuge.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.centrifuge.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(input)) { iterator.remove(); @@ -94,7 +94,7 @@ public void removeByInput(ItemStack input) { } public void removeAll() { - for (Iterator>> iterator = Recipes.centrifuge.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.centrifuge.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); iterator.remove(); addBackup(rec); @@ -106,7 +106,7 @@ public SimpleObjectStream>> st } private boolean remove(MachineRecipe> recipe, boolean backup) { - for (Iterator>> iterator = Recipes.centrifuge.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.centrifuge.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(recipe.getInput().getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/MetalFormer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/MetalFormer.java index 4772931b1..52e8af874 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/MetalFormer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/MetalFormer.java @@ -62,7 +62,7 @@ public void removeByOutput(int type, ItemStack output) { .postIfNotEmpty()) { return; } - for (Iterator>> iterator = getManager(type).getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = getManager(type).getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (ItemStack.areItemStacksEqual((ItemStack) rec.getOutput().toArray()[0], output)) { iterator.remove(); @@ -79,7 +79,7 @@ public void removeByInput(int type, ItemStack input) { .postIfNotEmpty()) { return; } - for (Iterator>> iterator = getManager(type).getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = getManager(type).getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(input)) { iterator.remove(); @@ -96,7 +96,7 @@ public void removeAll(int type) { .post(); return; } - for (Iterator>> iterator = getManager(type).getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = getManager(type).getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); iterator.remove(); addBackup(new MetalFormerRecipe(type, rec)); @@ -104,7 +104,7 @@ public void removeAll(int type) { } private boolean remove(int type, MachineRecipe> recipe, boolean backup) { - for (Iterator>> iterator = getManager(type).getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = getManager(type).getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(recipe.getInput().getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/OreWasher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/OreWasher.java index dc1055f55..802f97748 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/OreWasher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/OreWasher.java @@ -61,7 +61,7 @@ public void removeByOutput(ItemStack... outputs) { .post(); return; } - for (Iterator>> iterator = Recipes.oreWashing.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.oreWashing.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> recipe = iterator.next(); if (recipe.getOutput().size() == outputs.length) { @@ -88,7 +88,7 @@ public void removeByInput(ItemStack input) { .post(); return; } - for (Iterator>> iterator = Recipes.oreWashing.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.oreWashing.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(input)) { iterator.remove(); @@ -98,7 +98,7 @@ public void removeByInput(ItemStack input) { } public void removeAll() { - for (Iterator>> iterator = Recipes.oreWashing.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.oreWashing.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); iterator.remove(); addBackup(rec); @@ -106,7 +106,7 @@ public void removeAll() { } private boolean remove(MachineRecipe> recipe, boolean backup) { - for (Iterator>> iterator = Recipes.oreWashing.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.oreWashing.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(recipe.getInput().getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/BlastFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/BlastFurnace.java index ee63a9064..1cf4710db 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/BlastFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/BlastFurnace.java @@ -72,7 +72,7 @@ public void removeByOutput(ItemStack... outputs) { .post(); return; } - for (Iterator>> iterator = Recipes.blastfurnace.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.blastfurnace.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> recipe = iterator.next(); if (recipe.getOutput().size() == outputs.length) { @@ -99,7 +99,7 @@ public void removeByInput(ItemStack input) { .post(); return; } - for (Iterator>> iterator = Recipes.blastfurnace.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.blastfurnace.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(input)) { iterator.remove(); @@ -109,7 +109,7 @@ public void removeByInput(ItemStack input) { } public void removeAll() { - for (Iterator>> iterator = Recipes.blastfurnace.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.blastfurnace.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); iterator.remove(); addBackup(rec); @@ -117,7 +117,7 @@ public void removeAll() { } private boolean remove(MachineRecipe> recipe, boolean backup) { - for (Iterator>> iterator = Recipes.blastfurnace.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.blastfurnace.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(recipe.getInput().getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/BlockCutter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/BlockCutter.java index 7fc48c947..e9669aea4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/BlockCutter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/BlockCutter.java @@ -59,7 +59,7 @@ public void removeByOutput(ItemStack output) { .post(); return; } - for (Iterator>> iterator = Recipes.blockcutter.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.blockcutter.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (ItemStack.areItemStacksEqual((ItemStack) rec.getOutput().toArray()[0], output)) { iterator.remove(); @@ -76,7 +76,7 @@ public void removeByInput(ItemStack input) { .post(); return; } - for (Iterator>> iterator = Recipes.blockcutter.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.blockcutter.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(input)) { iterator.remove(); @@ -86,7 +86,7 @@ public void removeByInput(ItemStack input) { } public void removeAll() { - for (Iterator>> iterator = Recipes.blockcutter.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.blockcutter.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); iterator.remove(); addBackup(rec); @@ -94,7 +94,7 @@ public void removeAll() { } private boolean remove(MachineRecipe> recipe, boolean backup) { - for (Iterator>> iterator = Recipes.blockcutter.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.blockcutter.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(recipe.getInput().getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Compressor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Compressor.java index f9e5f93e8..341ee0093 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Compressor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Compressor.java @@ -68,7 +68,7 @@ public void removeByOutput(ItemStack output) { .post(); return; } - for (Iterator>> iterator = Recipes.compressor.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.compressor.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (ItemStack.areItemStacksEqual((ItemStack) rec.getOutput().toArray()[0], output)) { iterator.remove(); @@ -79,7 +79,7 @@ public void removeByOutput(ItemStack output) { public void removeByInput(ItemStack input) { if (!IngredientHelper.isEmpty(input)) { - for (Iterator>> iterator = Recipes.compressor.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.compressor.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(input)) { iterator.remove(); @@ -95,7 +95,7 @@ public void removeByInput(ItemStack input) { } public void removeAll() { - for (Iterator>> iterator = Recipes.compressor.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.compressor.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); iterator.remove(); addBackup(rec); @@ -103,7 +103,7 @@ public void removeAll() { } private boolean remove(MachineRecipe> recipe, boolean backup) { - for (Iterator>> iterator = Recipes.compressor.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.compressor.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(recipe.getInput().getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Extractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Extractor.java index b93a4ac4f..efe1303c9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Extractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Extractor.java @@ -68,7 +68,7 @@ public void removeByOutput(ItemStack output) { .post(); return; } - for (Iterator>> iterator = Recipes.extractor.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.extractor.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (ItemStack.areItemStacksEqual((ItemStack) rec.getOutput().toArray()[0], output)) { iterator.remove(); @@ -85,7 +85,7 @@ public void removeByInput(ItemStack input) { .post(); return; } - for (Iterator>> iterator = Recipes.extractor.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.extractor.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(input)) { iterator.remove(); @@ -95,7 +95,7 @@ public void removeByInput(ItemStack input) { } public void removeAll() { - for (Iterator>> iterator = Recipes.extractor.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.extractor.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); iterator.remove(); addBackup(rec); @@ -103,7 +103,7 @@ public void removeAll() { } private boolean remove(MachineRecipe> recipe, boolean backup) { - for (Iterator>> iterator = Recipes.extractor.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.extractor.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(recipe.getInput().getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/FluidCanner.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/FluidCanner.java index 2659bc4c0..eb88f1e0a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/FluidCanner.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/FluidCanner.java @@ -73,7 +73,7 @@ public void removeByOutput(FluidStack output) { .post(); return; } - for (Iterator> iterator = Recipes.cannerEnrich.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator> iterator = Recipes.cannerEnrich.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe rec = iterator.next(); if (rec.getOutput().isFluidEqual(output) && rec.getOutput().amount == output.amount) { iterator.remove(); @@ -90,7 +90,7 @@ public void removeByInput(FluidStack input, ItemStack input1) { .postIfNotEmpty()) { return; } - for (Iterator> iterator = Recipes.cannerEnrich.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator> iterator = Recipes.cannerEnrich.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe rec = iterator.next(); if (rec.getInput().fluid.getFluid() == input.getFluid() && rec.getInput().additive.matches(input1)) { iterator.remove(); @@ -100,7 +100,7 @@ public void removeByInput(FluidStack input, ItemStack input1) { } public void removeAll() { - for (Iterator> iterator = Recipes.cannerEnrich.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator> iterator = Recipes.cannerEnrich.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe rec = iterator.next(); iterator.remove(); addBackup(rec); @@ -108,7 +108,7 @@ public void removeAll() { } private boolean remove(MachineRecipe recipe, boolean backup) { - for (Iterator> iterator = Recipes.cannerEnrich.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator> iterator = Recipes.cannerEnrich.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe rec = iterator.next(); if (recipe.getInput().matches(rec.getInput().fluid, rec.getInput().additive.getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Macerator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Macerator.java index 939698794..98f2f26bc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Macerator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Macerator.java @@ -68,7 +68,7 @@ public void removeByOutput(ItemStack output) { .post(); return; } - for (Iterator>> iterator = Recipes.macerator.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.macerator.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> recipe = iterator.next(); if (ItemStack.areItemStacksEqual((ItemStack) recipe.getOutput().toArray()[0], output)) { iterator.remove(); @@ -85,7 +85,7 @@ public void removeByInput(ItemStack input) { .post(); return; } - for (Iterator>> iterator = Recipes.macerator.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.macerator.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> recipe = iterator.next(); if (recipe.getInput().matches(input)) { iterator.remove(); @@ -95,7 +95,7 @@ public void removeByInput(ItemStack input) { } public void removeAll() { - for (Iterator>> iterator = Recipes.macerator.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.macerator.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); iterator.remove(); addBackup(rec); @@ -103,7 +103,7 @@ public void removeAll() { } private boolean remove(MachineRecipe> recipe, boolean backup) { - for (Iterator>> iterator = Recipes.macerator.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator>> iterator = Recipes.macerator.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe> rec = iterator.next(); if (rec.getInput().matches(recipe.getInput().getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Recycler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Recycler.java index ee9b6f458..503fab098 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Recycler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/Recycler.java @@ -21,12 +21,12 @@ public class Recycler extends VirtualizedRegistry { public void onReload() { removeScripted().forEach(recipe -> { if (type == 0) { - for (Iterator iterator = Recipes.recyclerWhitelist.iterator(); iterator.hasNext(); ) { + for (Iterator iterator = Recipes.recyclerWhitelist.iterator(); iterator.hasNext();) { IRecipeInput input = iterator.next(); if (input == recipe) iterator.remove(); } } else { - for (Iterator iterator = Recipes.recyclerBlacklist.iterator(); iterator.hasNext(); ) { + for (Iterator iterator = Recipes.recyclerBlacklist.iterator(); iterator.hasNext();) { IRecipeInput input = iterator.next(); if (input == recipe) iterator.remove(); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/SolidCanner.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/SolidCanner.java index 1aed4d846..c8055edc1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/SolidCanner.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ic2/exp/SolidCanner.java @@ -72,7 +72,7 @@ public void removeByOutput(ItemStack output) { .post(); return; } - for (Iterator> iterator = Recipes.cannerBottle.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator> iterator = Recipes.cannerBottle.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe rec = iterator.next(); if (ItemStack.areItemStacksEqual(rec.getOutput(), output)) { iterator.remove(); @@ -89,7 +89,7 @@ public void removeByInput(ItemStack input, ItemStack input1) { .postIfNotEmpty()) { return; } - for (Iterator> iterator = Recipes.cannerBottle.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator> iterator = Recipes.cannerBottle.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe rec = iterator.next(); if (rec.getInput().container.matches(input) && rec.getInput().fill.matches(input1)) { iterator.remove(); @@ -99,7 +99,7 @@ public void removeByInput(ItemStack input, ItemStack input1) { } public void removeAll() { - for (Iterator> iterator = Recipes.cannerBottle.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator> iterator = Recipes.cannerBottle.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe rec = iterator.next(); iterator.remove(); addBackup(rec); @@ -107,7 +107,7 @@ public void removeAll() { } private boolean remove(MachineRecipe recipe, boolean backup) { - for (Iterator> iterator = Recipes.cannerBottle.getRecipes().iterator(); iterator.hasNext(); ) { + for (Iterator> iterator = Recipes.cannerBottle.getRecipes().iterator(); iterator.hasNext();) { MachineRecipe rec = iterator.next(); if (recipe.getInput().matches(rec.getInput().container.getInputs().get(0), rec.getInput().fill.getInputs().get(0))) { iterator.remove(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java index 0997b0a12..bec372918 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java @@ -107,5 +107,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java index 92494597a..50e0c3134 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java @@ -71,8 +71,7 @@ public void removeByInput(IIngredient main, List inputAndAdditives) return; } List recipes = getRecipes().stream() - .filter(r -> ImmersiveEngineering.areIngredientsEquals(r.input, main) && - (inputAndAdditives.stream().anyMatch(check -> Arrays.stream(r.additives).anyMatch(target -> ImmersiveEngineering.areIngredientsEquals(target, check))))) + .filter(r -> ImmersiveEngineering.areIngredientsEquals(r.input, main) && (inputAndAdditives.stream().anyMatch(check -> Arrays.stream(r.additives).anyMatch(target -> ImmersiveEngineering.areIngredientsEquals(target, check))))) .collect(Collectors.toList()); for (ArcFurnaceRecipe recipe : recipes) { remove(recipe); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java index 4d874fce1..699be091a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java @@ -95,5 +95,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java index 65a168168..9f7872c2f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java @@ -88,12 +88,16 @@ public static class RecipeBuilder extends AbstractRecipeBuilder { @Property(comp = @Comp(gte = 0)) private int energy; - @RecipeBuilderMethodDescription(field = {"secondaryOutputItems", "secondaryOutputChances"}) + @RecipeBuilderMethodDescription(field = { + "secondaryOutputItems", "secondaryOutputChances" + }) public RecipeBuilder secondaryOutput(ItemStack item) { return this.secondaryOutput(item, 1); } - @RecipeBuilderMethodDescription(field = {"secondaryOutputItems", "secondaryOutputChances"}) + @RecipeBuilderMethodDescription(field = { + "secondaryOutputItems", "secondaryOutputChances" + }) public RecipeBuilder secondaryOutput(ItemStack item, float chance) { this.secondaryOutputItems.add(item); this.secondaryOutputChances.add(chance); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Excavator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Excavator.java index f0bd40b89..6b8201aa2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Excavator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Excavator.java @@ -18,9 +18,10 @@ @RegistryDescription( category = RegistryDescription.Category.ENTRIES, - admonition = @Admonition(value = "groovyscript.wiki.immersiveengineering.excavator.note0", - type = Admonition.Type.WARNING, - format = Admonition.Format.STANDARD) + admonition = @Admonition( + value = "groovyscript.wiki.immersiveengineering.excavator.note0", + type = Admonition.Type.WARNING, + format = Admonition.Format.STANDARD) ) public class Excavator extends VirtualizedRegistry> { @@ -64,7 +65,8 @@ public boolean remove(ExcavatorHandler.MineralMix recipe) { @MethodDescription(example = @Example("'silt'")) public boolean removeByMineral(String key) { - List entries = ExcavatorHandler.mineralList.keySet().stream() + List entries = ExcavatorHandler.mineralList.keySet() + .stream() .filter(r -> r.name.equalsIgnoreCase(key)) .collect(Collectors.toList()); for (ExcavatorHandler.MineralMix recipe : entries) { @@ -89,7 +91,8 @@ public void removeByOres(String... ores) { .post(); return; } - List entries = ExcavatorHandler.mineralList.keySet().stream() + List entries = ExcavatorHandler.mineralList.keySet() + .stream() .filter(r -> Arrays.stream(ores).anyMatch(check -> Arrays.stream(r.ores).anyMatch(target -> target.matches(check)))) .collect(Collectors.toList()); for (ExcavatorHandler.MineralMix recipe : entries) { @@ -112,7 +115,8 @@ public void removeByOres(OreDictIngredient... ores) { .post(); return; } - List entries = ExcavatorHandler.mineralList.keySet().stream() + List entries = ExcavatorHandler.mineralList.keySet() + .stream() .filter(r -> Arrays.stream(ores).anyMatch(check -> Arrays.stream(r.ores).anyMatch(target -> target.matches(check.getOreDict())))) .collect(Collectors.toList()); for (ExcavatorHandler.MineralMix recipe : entries) { @@ -174,14 +178,18 @@ public RecipeBuilder fail(float fail) { return this; } - @RecipeBuilderMethodDescription(field = {"ores", "chances"}) + @RecipeBuilderMethodDescription(field = { + "ores", "chances" + }) public RecipeBuilder ore(String ore, float chance) { this.ores.add(ore); this.chances.add(chance); return this; } - @RecipeBuilderMethodDescription(field = {"ores", "chances"}) + @RecipeBuilderMethodDescription(field = { + "ores", "chances" + }) public RecipeBuilder ore(OreDictIngredient ore, float chance) { this.ores.add(ore.getOreDict()); this.chances.add(chance); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ImmersiveEngineering.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ImmersiveEngineering.java index 527d235db..ec0e4808d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ImmersiveEngineering.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ImmersiveEngineering.java @@ -55,5 +55,4 @@ public static Object toIEInput(IIngredient ingredient) { ItemStack[] matchingStacks = ingredient.getMatchingStacks(); return matchingStacks.length == 0 ? ItemStack.EMPTY : matchingStacks[0]; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java index f86a683da..95b0cf947 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java @@ -68,8 +68,8 @@ public void removeByInput(IIngredient... itemInputs) { .postIfNotEmpty()) { return; } - List recipes = getRecipes().stream().filter(r -> r.itemInputs.length == itemInputs.length && - Arrays.stream(itemInputs).anyMatch(check -> Arrays.stream(r.itemInputs).anyMatch(target -> ImmersiveEngineering.areIngredientsEquals(target, check)))) + List recipes = getRecipes().stream() + .filter(r -> r.itemInputs.length == itemInputs.length && Arrays.stream(itemInputs).anyMatch(check -> Arrays.stream(r.itemInputs).anyMatch(target -> ImmersiveEngineering.areIngredientsEquals(target, check)))) .collect(Collectors.toList()); for (MixerRecipe recipe : recipes) { remove(recipe); @@ -91,9 +91,8 @@ public void removeByInput(FluidStack fluidInput, IIngredient... itemInput) { .postIfNotEmpty()) { return; } - List recipes = getRecipes().stream().filter(r -> fluidInput.isFluidEqual(r.fluidInput) && - r.itemInputs.length == itemInput.length && - Arrays.stream(itemInput).anyMatch(check -> Arrays.stream(r.itemInputs).anyMatch(target -> ImmersiveEngineering.areIngredientsEquals(target, check)))) + List recipes = getRecipes().stream() + .filter(r -> fluidInput.isFluidEqual(r.fluidInput) && r.itemInputs.length == itemInput.length && Arrays.stream(itemInput).anyMatch(check -> Arrays.stream(r.itemInputs).anyMatch(target -> ImmersiveEngineering.areIngredientsEquals(target, check)))) .collect(Collectors.toList()); for (MixerRecipe recipe : recipes) { remove(recipe); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java index b64e5e764..6236e9cc9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java @@ -77,7 +77,9 @@ public static class RecipeBuilder extends AbstractRecipeBuilder> { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Boiler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Boiler.java index 350aba9b0..60f3bda2a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Boiler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Boiler.java @@ -94,5 +94,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/BoilerFuel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/BoilerFuel.java index e2d05c735..619a3a4c3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/BoilerFuel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/BoilerFuel.java @@ -88,7 +88,5 @@ public void validate(GroovyLog.Msg msg) { ModSupport.IMMERSIVE_TECHNOLOGY.get().boilerFuel.add(recipe); return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/CoolingTower.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/CoolingTower.java index 783834469..f8f3ec0af 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/CoolingTower.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/CoolingTower.java @@ -94,5 +94,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Distiller.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Distiller.java index 45e518192..dbeff1e6d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Distiller.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Distiller.java @@ -48,7 +48,9 @@ public void removeByInput(IIngredient input) { }); } - @MethodDescription(example = {@Example("fluid('distwater')"), @Example(value = "item('immersivetech:material')", commented = true)}) + @MethodDescription(example = { + @Example("fluid('distwater')"), @Example(value = "item('immersivetech:material')", commented = true) + }) public void removeByOutput(IIngredient output) { getRecipes().removeIf(r -> { for (FluidStack fluidStack : r.getFluidOutputs()) { @@ -120,5 +122,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/ElectrolyticCrucibleBattery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/ElectrolyticCrucibleBattery.java index 56e5b2110..f2f9a27d7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/ElectrolyticCrucibleBattery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/ElectrolyticCrucibleBattery.java @@ -105,5 +105,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/GasTurbine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/GasTurbine.java index 107c7a3f0..38f7fecf3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/GasTurbine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/GasTurbine.java @@ -47,7 +47,7 @@ public void removeByInput(IIngredient input) { }); } - @MethodDescription(example = @Example(value = "fluid('fluegas')",commented = true)) + @MethodDescription(example = @Example(value = "fluid('fluegas')", commented = true)) public void removeByOutput(IIngredient output) { getRecipes().removeIf(r -> { for (FluidStack fluidStack : r.getFluidOutputs()) { @@ -94,5 +94,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/HeatExchanger.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/HeatExchanger.java index ba67ac52e..0a3f80ce4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/HeatExchanger.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/HeatExchanger.java @@ -103,5 +103,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/HighPressureSteamTurbine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/HighPressureSteamTurbine.java index dcafccded..09d92bc60 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/HighPressureSteamTurbine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/HighPressureSteamTurbine.java @@ -47,7 +47,7 @@ public void removeByInput(IIngredient input) { }); } - @MethodDescription(example = @Example(value = "fluid('steam')",commented = true)) + @MethodDescription(example = @Example(value = "fluid('steam')", commented = true)) public void removeByOutput(IIngredient output) { getRecipes().removeIf(r -> { for (FluidStack fluidStack : r.getFluidOutputs()) { @@ -94,5 +94,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/ImmersiveTechnology.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/ImmersiveTechnology.java index 2a30c1eca..2b18cb7d2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/ImmersiveTechnology.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/ImmersiveTechnology.java @@ -16,5 +16,4 @@ public class ImmersiveTechnology extends GroovyPropertyContainer { public final Radiator radiator = new Radiator(); public final SolarTower solarTower = new SolarTower(); public final SteamTurbine steamTurbine = new SteamTurbine(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/MeltingCrucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/MeltingCrucible.java index 9c7a22313..75971b29b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/MeltingCrucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/MeltingCrucible.java @@ -103,5 +103,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Radiator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Radiator.java index 387df3940..73c78229c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Radiator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/Radiator.java @@ -47,7 +47,7 @@ public void removeByInput(IIngredient input) { }); } - @MethodDescription(example = @Example(value = "fluid('distwater')",commented = true)) + @MethodDescription(example = @Example(value = "fluid('distwater')", commented = true)) public void removeByOutput(IIngredient output) { getRecipes().removeIf(r -> { for (FluidStack fluidStack : r.getFluidOutputs()) { @@ -94,5 +94,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/SolarTower.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/SolarTower.java index c2478fb3f..bd1c20cba 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/SolarTower.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/SolarTower.java @@ -94,5 +94,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/SteamTurbine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/SteamTurbine.java index bef45c13b..c077e1f00 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/SteamTurbine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivetechnology/SteamTurbine.java @@ -94,5 +94,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java index 70423202d..1939b3b07 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java @@ -32,9 +32,10 @@ public IReactorEntry add(ItemStack input) { @MethodDescription(description = "groovyscript.wiki.industrialforegoing.bio_reactor.add1", type = MethodDescription.Type.ADDITION) public IReactorEntry add(ItemStack input, @Nullable Predicate nbtCheck) { if (IngredientHelper.overMaxSize(input, 1)) { - GroovyLog.msg("Error adding Bioreactor recipe").error() - .add("Input stack size must be 1") - .post(); + GroovyLog.msg("Error adding Bioreactor recipe") + .error() + .add("Input stack size must be 1") + .post(); return null; } IReactorEntry recipe = new BioReactorEntry(input, nbtCheck); @@ -52,5 +53,4 @@ public boolean removeByInput(IIngredient input) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java index 64ff59c73..6d9120940 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java @@ -34,9 +34,10 @@ public ExtractorEntry add(ItemStack input, FluidStack output) { @MethodDescription(description = "groovyscript.wiki.industrialforegoing.extractor.add1", type = MethodDescription.Type.ADDITION, example = @Example("item('minecraft:stone'), fluid('water') * 100, 1")) public ExtractorEntry add(ItemStack input, FluidStack output, float breakChance) { if (IngredientHelper.overMaxSize(input, 1)) { - GroovyLog.msg("Error adding Fluid Extractor recipe").error() - .add("Stack size of input must be 1") - .post(); + GroovyLog.msg("Error adding Fluid Extractor recipe") + .error() + .add("Stack size of input must be 1") + .post(); return null; } ExtractorEntry recipe = new ExtractorEntry(input, output, breakChance); @@ -65,5 +66,4 @@ public boolean removeByOutput(IIngredient output) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java index 000624c0d..14031fa5d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java @@ -71,5 +71,4 @@ public boolean removeByOutput(String fluid) { public boolean removeByOutput(FluidStack fluid) { return removeByOutput(fluid.getFluid().getName()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/IndustrialForegoing.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/IndustrialForegoing.java index bc2322ae7..85ad2c6d9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/IndustrialForegoing.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/IndustrialForegoing.java @@ -14,5 +14,4 @@ public class IndustrialForegoing extends GroovyPropertyContainer { public final ProteinReactor proteinReactor = new ProteinReactor(); public final SludgeRefiner sludgeRefiner = new SludgeRefiner(); public final Straw straw = new Straw(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java index b94a080f6..1031b5123 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java @@ -256,5 +256,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java index ed27ad998..648a154b5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java @@ -51,5 +51,4 @@ public boolean removeByOutput(IIngredient output) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java index 3490de3cb..fa45062c1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java @@ -32,9 +32,10 @@ public Collection getRecipes() { }) public OreFluidEntryRaw add(OreDictIngredient ore, FluidStack input, FluidStack output) { if (IngredientHelper.overMaxSize(ore, 1)) { - GroovyLog.msg("Error adding Ore Washer recipe").error() - .add("Stack size of input ore must be 1") - .post(); + GroovyLog.msg("Error adding Ore Washer recipe") + .error() + .add("Stack size of input ore must be 1") + .post(); return null; } return add(ore.getOreDict(), input, output); @@ -84,5 +85,4 @@ public boolean removeByOutput(IIngredient output) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java index eb60981d6..73a69e96b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java @@ -32,9 +32,10 @@ public Collection getRecipes() { }) public OreFluidEntrySieve add(FluidStack input, ItemStack output, ItemStack sieveItem) { if (IngredientHelper.overMaxSize(sieveItem, 1)) { - GroovyLog.msg("Error adding Fluid Sieving recipe").error() - .add("Sieve item stack size must be 1") - .post(); + GroovyLog.msg("Error adding Fluid Sieving recipe") + .error() + .add("Sieve item stack size must be 1") + .post(); return null; } OreFluidEntrySieve recipe = new OreFluidEntrySieve(input, output, sieveItem); @@ -66,5 +67,4 @@ public boolean removeByOutput(IIngredient output) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java index 65e04109f..00b6d790c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java @@ -32,9 +32,10 @@ public IReactorEntry add(ItemStack input) { @MethodDescription(description = "groovyscript.wiki.industrialforegoing.protein_reactor.add1", type = MethodDescription.Type.ADDITION) public IReactorEntry add(ItemStack input, @Nullable Predicate nbtCheck) { if (IngredientHelper.overMaxSize(input, 1)) { - GroovyLog.msg("Error adding Protein Reactor recipe").error() - .add("Input stack size must be 1") - .post(); + GroovyLog.msg("Error adding Protein Reactor recipe") + .error() + .add("Input stack size must be 1") + .post(); return null; } IReactorEntry recipe = new ProteinReactorEntry(input, nbtCheck); @@ -52,5 +53,4 @@ public boolean removeByInput(IIngredient input) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java index b2f0ff358..492b04dc7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java @@ -44,5 +44,4 @@ public boolean removeByOutput(IIngredient output) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java index e348f6055..41e86505e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java @@ -79,7 +79,9 @@ public boolean remove(Material material) { @MethodDescription public void removeByInput(IBlockState input) { - for (Map.Entry recipe : InspirationsRegistryAccessor.getAnvilSmashing().entrySet().stream() + for (Map.Entry recipe : InspirationsRegistryAccessor.getAnvilSmashing() + .entrySet() + .stream() .filter(r -> r.getKey().equals(input)) .collect(Collectors.toList())) { addBackup(Pair.of(recipe.getKey(), recipe.getValue())); @@ -89,7 +91,9 @@ public void removeByInput(IBlockState input) { @MethodDescription(example = @Example("blockstate('minecraft:packed_ice')")) public void removeByInput(Block input) { - for (Map.Entry recipe : InspirationsRegistryAccessor.getAnvilSmashingBlocks().entrySet().stream() + for (Map.Entry recipe : InspirationsRegistryAccessor.getAnvilSmashingBlocks() + .entrySet() + .stream() .filter(r -> r.getKey().equals(input)) .collect(Collectors.toList())) { blockStorage.addBackup(Pair.of(recipe.getKey(), recipe.getValue())); @@ -99,13 +103,17 @@ public void removeByInput(Block input) { @MethodDescription(example = @Example("blockstate('minecraft:cobblestone')")) public void removeByOutput(IBlockState output) { - for (Map.Entry recipe : InspirationsRegistryAccessor.getAnvilSmashing().entrySet().stream() + for (Map.Entry recipe : InspirationsRegistryAccessor.getAnvilSmashing() + .entrySet() + .stream() .filter(r -> r.getValue().equals(output)) .collect(Collectors.toList())) { addBackup(Pair.of(recipe.getKey(), recipe.getValue())); InspirationsRegistryAccessor.getAnvilSmashing().remove(recipe.getKey(), recipe.getValue()); } - for (Map.Entry recipe : InspirationsRegistryAccessor.getAnvilSmashingBlocks().entrySet().stream() + for (Map.Entry recipe : InspirationsRegistryAccessor.getAnvilSmashingBlocks() + .entrySet() + .stream() .filter(r -> r.getValue().equals(output)) .collect(Collectors.toList())) { blockStorage.addBackup(Pair.of(recipe.getKey(), recipe.getValue())); @@ -180,5 +188,4 @@ public void validate(GroovyLog.Msg msg) { return Pair.of(inputBlock, output); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java index 7acc0c783..2f5aa59c0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java @@ -32,10 +32,7 @@ public class Cauldron extends StandardListRegistry { private static boolean checkRecipeMatches(ISimpleCauldronRecipe recipe, IIngredient input, ItemStack output, Object inputState, Object outputState) { // Check all relevant parts to determine if we need to match them and if they do match. - return (inputState == null || compareFluids(inputState, recipe.getInputState())) - && (outputState == null || compareFluids(outputState, recipe.getState())) - && (output == null || output.isItemEqual(recipe.getResult())) - && (input == null || recipe.getInput().stream().anyMatch(input)); + return (inputState == null || compareFluids(inputState, recipe.getInputState())) && (outputState == null || compareFluids(outputState, recipe.getState())) && (output == null || output.isItemEqual(recipe.getResult())) && (input == null || recipe.getInput().stream().anyMatch(input)); } private static boolean compareFluids(Object first, Object second) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Inspirations.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Inspirations.java index 41eabc3af..702dec272 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Inspirations.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Inspirations.java @@ -6,5 +6,4 @@ public class Inspirations extends GroovyPropertyContainer { public final Cauldron cauldron = new Cauldron(); public final AnvilSmashing anvilSmashing = new AnvilSmashing(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java index c0e9eeb68..49608b96d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java @@ -132,19 +132,23 @@ public void validate(GroovyLog.Msg msg) { if (basic) { ModSupport.INTEGRATED_DYNAMICS.get().dryingBasin.addScripted( - BlockDryingBasin.getInstance().getRecipeRegistry().registerRecipe( - new IngredientAndFluidStackRecipeComponent(itemInput, true, fluidInput.getOrEmpty(0)), - new IngredientAndFluidStackRecipeComponent(output.get(0), fluidOutput.getOrEmpty(0)), - new DurationRecipeProperties(duration) - )); + BlockDryingBasin.getInstance() + .getRecipeRegistry() + .registerRecipe( + new IngredientAndFluidStackRecipeComponent(itemInput, true, fluidInput.getOrEmpty(0)), + new IngredientAndFluidStackRecipeComponent(output.get(0), fluidOutput.getOrEmpty(0)), + new DurationRecipeProperties(duration) + )); } if (mechanical) { ModSupport.INTEGRATED_DYNAMICS.get().mechanicalDryingBasin.addScripted( - BlockMechanicalDryingBasin.getInstance().getRecipeRegistry().registerRecipe( - new IngredientAndFluidStackRecipeComponent(itemInput, true, fluidInput.getOrEmpty(0)), - new IngredientAndFluidStackRecipeComponent(output.getOrEmpty(0), fluidOutput.getOrEmpty(0)), - new DurationRecipeProperties(duration) - )); + BlockMechanicalDryingBasin.getInstance() + .getRecipeRegistry() + .registerRecipe( + new IngredientAndFluidStackRecipeComponent(itemInput, true, fluidInput.getOrEmpty(0)), + new IngredientAndFluidStackRecipeComponent(output.getOrEmpty(0), fluidOutput.getOrEmpty(0)), + new DurationRecipeProperties(duration) + )); } return null; } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/IntegratedDynamics.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/IntegratedDynamics.java index a8a281db5..fc5554f02 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/IntegratedDynamics.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/IntegratedDynamics.java @@ -8,5 +8,4 @@ public class IntegratedDynamics extends GroovyPropertyContainer { public final MechanicalDryingBasin mechanicalDryingBasin = new MechanicalDryingBasin(); public final Squeezer squeezer = new Squeezer(); public final MechanicalSqueezer mechanicalSqueezer = new MechanicalSqueezer(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java index fad729e97..55b6f1f97 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java @@ -58,8 +58,10 @@ public boolean removeByInput(ItemStack input) { @Property(property = "fluidOutput", comp = @Comp(gte = 0, lte = 1)) public static class RecipeBuilder extends AbstractRecipeBuilder> { - @Property(value = "groovyscript.wiki.integrateddynamics.squeezer.output.value", ignoresInheritedMethods = true, - comp = @Comp(gte = 0, lte = 3)) + @Property( + value = "groovyscript.wiki.integrateddynamics.squeezer.output.value", + ignoresInheritedMethods = true, + comp = @Comp(gte = 0, lte = 3)) private final List output = new ArrayList<>(); @Property(value = "groovyscript.wiki.integrateddynamics.squeezer.duration.value", defaultValue = "10") private int duration = 10; @@ -143,19 +145,23 @@ public void validate(GroovyLog.Msg msg) { if (basic) { ModSupport.INTEGRATED_DYNAMICS.get().squeezer.addScripted( - BlockSqueezer.getInstance().getRecipeRegistry().registerRecipe( - new IngredientRecipeComponent(input.get(0).toMcIngredient()), - new IngredientsAndFluidStackRecipeComponent(output, fluidOutput.getOrEmpty(0)), - new DummyPropertiesComponent() - )); + BlockSqueezer.getInstance() + .getRecipeRegistry() + .registerRecipe( + new IngredientRecipeComponent(input.get(0).toMcIngredient()), + new IngredientsAndFluidStackRecipeComponent(output, fluidOutput.getOrEmpty(0)), + new DummyPropertiesComponent() + )); } if (mechanical) { ModSupport.INTEGRATED_DYNAMICS.get().mechanicalSqueezer.addScripted( - BlockMechanicalSqueezer.getInstance().getRecipeRegistry().registerRecipe( - new IngredientRecipeComponent(input.get(0).toMcIngredient()), - new IngredientsAndFluidStackRecipeComponent(output, fluidOutput.getOrEmpty(0)), - new DurationRecipeProperties(duration) - )); + BlockMechanicalSqueezer.getInstance() + .getRecipeRegistry() + .registerRecipe( + new IngredientRecipeComponent(input.get(0).toMcIngredient()), + new IngredientsAndFluidStackRecipeComponent(output, fluidOutput.getOrEmpty(0)), + new DurationRecipeProperties(duration) + )); } return null; } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Catalyst.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Catalyst.java index 4c38fb524..96024df5d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Catalyst.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Catalyst.java @@ -22,10 +22,9 @@ public class Catalyst extends VirtualizedRegistry> { @GroovyBlacklist public void applyChanges(IModRegistry modRegistry) { for (var backupRecipe : getBackupRecipes()) { - ((ModRegistryAccessor) modRegistry).getRecipeCatalysts().get(backupRecipe.getKey()) - .removeIf(x -> backupRecipe.getValue() == null || - x instanceof ItemStack && - ItemStack.areItemStacksEqual((ItemStack) x, backupRecipe.getValue())); + ((ModRegistryAccessor) modRegistry).getRecipeCatalysts() + .get(backupRecipe.getKey()) + .removeIf(x -> backupRecipe.getValue() == null || x instanceof ItemStack && ItemStack.areItemStacksEqual((ItemStack) x, backupRecipe.getValue())); } for (var scriptedRecipe : getScriptedRecipes()) { modRegistry.addRecipeCatalyst(scriptedRecipe.getValue(), scriptedRecipe.getKey()); @@ -72,5 +71,4 @@ public void remove(String category, Collection item) { public void removeByType(String category) { addBackup(Pair.of(category, null)); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Category.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Category.java index da0af4020..ffcb813f8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Category.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Category.java @@ -21,8 +21,9 @@ import java.util.Objects; import java.util.function.Function; -@RegistryDescription(category = RegistryDescription.Category.ENTRIES, - admonition = @Admonition("groovyscript.wiki.jei.category.note0")) +@RegistryDescription( + category = RegistryDescription.Category.ENTRIES, + admonition = @Admonition("groovyscript.wiki.jei.category.note0")) public class Category extends VirtualizedRegistry { private boolean hideAllCategories; @@ -117,16 +118,17 @@ public void hideAll() { @SuppressWarnings("ClassCanBeRecord") public static final class CustomCategory { - + private final String id; private final Function> category; private final List catalysts; private final List wrappers; - public CustomCategory(String id, - Function> category, - List catalysts, - List wrappers) { + public CustomCategory( + String id, + Function> category, + List catalysts, + List wrappers) { this.id = id; this.category = category; this.catalysts = catalysts; @@ -154,10 +156,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (CustomCategory) obj; - return Objects.equals(this.id, that.id) && - Objects.equals(this.category, that.category) && - Objects.equals(this.catalysts, that.catalysts) && - Objects.equals(this.wrappers, that.wrappers); + return Objects.equals(this.id, that.id) && Objects.equals(this.category, that.category) && Objects.equals(this.catalysts, that.catalysts) && Objects.equals(this.wrappers, that.wrappers); } @Override @@ -167,11 +166,7 @@ public int hashCode() { @Override public String toString() { - return "CustomCategory[" + - "id=" + id + ", " + - "category=" + category + ", " + - "catalysts=" + catalysts + ", " + - "wrappers=" + wrappers + ']'; + return "CustomCategory[" + "id=" + id + ", " + "category=" + category + ", " + "catalysts=" + catalysts + ", " + "wrappers=" + wrappers + ']'; } } @@ -269,5 +264,4 @@ public boolean validate() { return customCategory; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java index 04b37c619..98765b96c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java @@ -30,10 +30,11 @@ public class Description extends VirtualizedRegistry, Lis @GroovyBlacklist public void applyAdditions(IModRegistry modRegistry) { for (Pair, List> entry : this.getScriptedRecipes()) { - modRegistry.addIngredientInfo(entry.getLeft().stream().flatMap(x -> Stream.of(x.getMatchingStacks())).collect(Collectors.toList()), - // Currently, it is only possible to add VanillaTypes.ITEM. It may be desirable to add the ability to do other types. - VanillaTypes.ITEM, - entry.getRight().toArray(new String[0])); + modRegistry.addIngredientInfo( + entry.getLeft().stream().flatMap(x -> Stream.of(x.getMatchingStacks())).collect(Collectors.toList()), + // Currently, it is only possible to add VanillaTypes.ITEM. It may be desirable to add the ability to do other types. + VanillaTypes.ITEM, + entry.getRight().toArray(new String[0])); } } @@ -94,5 +95,4 @@ public void remove(List target) { public void remove(IIngredient... target) { addBackup(Pair.of(Arrays.asList(target), null)); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/InfoParserTab.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/InfoParserTab.java index 836f6d190..b24a9e567 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/InfoParserTab.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/InfoParserTab.java @@ -48,5 +48,4 @@ public void parse(InfoParserPackage info) { instance.add(info.getMessages(), list, info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Ingredient.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Ingredient.java index ee4c6766f..526100fbe 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Ingredient.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Ingredient.java @@ -21,8 +21,9 @@ import java.util.*; -@RegistryDescription(category = RegistryDescription.Category.ENTRIES, - admonition = @Admonition("groovyscript.wiki.jei.ingredient.note0")) +@RegistryDescription( + category = RegistryDescription.Category.ENTRIES, + admonition = @Admonition("groovyscript.wiki.jei.ingredient.note0")) public class Ingredient extends VirtualizedRegistry { private final Map, List> hiddenIngredients = new Object2ObjectOpenHashMap<>(); @@ -55,7 +56,6 @@ public void applyChanges(IIngredientRegistry ingredientRegistry) { //noinspection unchecked,rawtypes ingredientRegistry.addIngredientsAtRuntime(entry.getKey(), ingredientRegistry.getIngredientHelper(entry.getKey()).expandSubtypes((List) entry.getValue())); } - } @Override @@ -253,5 +253,4 @@ public void yeet(IIngredient... ingredients) { public void yeet(Iterable ingredients) { removeAndHide(ingredients); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiPlugin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiPlugin.java index 27900602f..48ba5ab51 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiPlugin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiPlugin.java @@ -88,8 +88,9 @@ public static SimpleCommand getJeiCategoriesCommand() { for (IRecipeCategory category : recipeRegistry.getRecipeCategories()) { GroovyLog.get().getWriter().println(" - " + category.getUid()); } - sender.sendMessage(new TextComponentString("JEI Categories has been logged to the ") - .appendSibling(GSCommand.getTextForFile("Groovy Log", GroovyLog.get().getLogFilePath().toString(), new TextComponentString("Click to open GroovyScript log")))); + sender.sendMessage( + new TextComponentString("JEI Categories has been logged to the ") + .appendSibling(GSCommand.getTextForFile("Groovy Log", GroovyLog.get().getLogFilePath().toString(), new TextComponentString("Click to open GroovyScript log")))); }); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JustEnoughItems.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JustEnoughItems.java index 66e6172e4..35401ecd3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JustEnoughItems.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JustEnoughItems.java @@ -15,5 +15,4 @@ public class JustEnoughItems extends GroovyPropertyContainer { public void initialize(GroovyContainer owner) { InfoParserRegistry.addInfoParser(InfoParserTab.instance); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java index 6c8f2b1db..6a19f1ea6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java @@ -82,5 +82,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java index ea3a8db1b..e403c135c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java @@ -81,5 +81,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java index 06667b152..a2df1ba14 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java @@ -91,5 +91,4 @@ protected int getMaxItemInput() { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java index 29b14d31a..7b3487943 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java @@ -98,5 +98,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/LazyAE2.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/LazyAE2.java index b2a557d29..66581fd99 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/LazyAE2.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/LazyAE2.java @@ -17,5 +17,4 @@ public class LazyAE2 extends GroovyPropertyContainer { public static IDisplayableMatcher matchesIIngredient(IIngredient ingredient) { return IDisplayableMatcher.ofMany(() -> Arrays.asList(ingredient.getMatchingStacks()), ingredient); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/CrushingTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/CrushingTable.java index ea33cb4b7..f64ac6bb6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/CrushingTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/CrushingTable.java @@ -77,7 +77,5 @@ public void validate(GroovyLog.Msg msg) { } return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/GasificationUnit.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/GasificationUnit.java index f55d6dc36..e970dd619 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/GasificationUnit.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/GasificationUnit.java @@ -97,7 +97,5 @@ public void validate(GroovyLog.Msg msg) { } return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Grinder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Grinder.java index 6326500d1..6fb34e970 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Grinder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Grinder.java @@ -89,7 +89,5 @@ public void validate(GroovyLog.Msg msg) { } return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/HydraulicPress.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/HydraulicPress.java index b7677a29b..1f817be7b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/HydraulicPress.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/HydraulicPress.java @@ -123,7 +123,5 @@ public void validate(GroovyLog.Msg msg) { } return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Magneticraft.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Magneticraft.java index 8b9f6a29b..3e496487f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Magneticraft.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Magneticraft.java @@ -13,5 +13,4 @@ public class Magneticraft extends GroovyPropertyContainer { public final Sieve sieve = new Sieve(); public final SluiceBox sluiceBox = new SluiceBox(); public final Thermopile thermopile = new Thermopile(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/OilHeater.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/OilHeater.java index f17cec0f4..f1d91108a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/OilHeater.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/OilHeater.java @@ -79,7 +79,5 @@ public void validate(GroovyLog.Msg msg) { ModSupport.MAGNETICRAFT.get().oilHeater.add(recipe); return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Refinery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Refinery.java index 99449abcb..e2edbee37 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Refinery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Refinery.java @@ -71,7 +71,5 @@ public void validate(GroovyLog.Msg msg) { ModSupport.MAGNETICRAFT.get().refinery.add(recipe); return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Sieve.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Sieve.java index 84e399601..f4ba21364 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Sieve.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/Sieve.java @@ -57,7 +57,9 @@ public RecipeBuilder duration(float duration) { return this; } - @RecipeBuilderMethodDescription(field = {"output", "chances"}) + @RecipeBuilderMethodDescription(field = { + "output", "chances" + }) public RecipeBuilder output(ItemStack item, float chance) { this.output.add(item); this.chances.add(chance); @@ -65,7 +67,9 @@ public RecipeBuilder output(ItemStack item, float chance) { } @Override - @RecipeBuilderMethodDescription(field = {"output", "chances"}) + @RecipeBuilderMethodDescription(field = { + "output", "chances" + }) public RecipeBuilder output(ItemStack item) { return output(item, 1.0f); } @@ -106,7 +110,5 @@ public void validate(GroovyLog.Msg msg) { } return recipe; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/SluiceBox.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/SluiceBox.java index 6175c4d6e..29c35d895 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/SluiceBox.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/magneticraft/SluiceBox.java @@ -50,7 +50,9 @@ public static class RecipeBuilder extends AbstractRecipeBuilder> { @@ -225,7 +226,5 @@ public InfusionItems removeAll() { ModSupport.MEKANISM.get().infusion.removeByType(type); return this; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Mekanism.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Mekanism.java index d80202003..22b0b3120 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Mekanism.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Mekanism.java @@ -90,5 +90,4 @@ public void initialize(GroovyContainer container) { InfoParserRegistry.addInfoParser(InfoParserGas.instance); InfoParserRegistry.addInfoParser(InfoParserInfusion.instance); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PressurizedReactionChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PressurizedReactionChamber.java index e49e8a0fe..85fe0ec64 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PressurizedReactionChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PressurizedReactionChamber.java @@ -36,7 +36,8 @@ public PressurizedRecipe add(IIngredient inputSolid, FluidStack inputFluid, GasS @MethodDescription(example = @Example("ore('logWood'), fluid('water'), gas('oxygen')")) public boolean removeByInput(IIngredient inputSolid, FluidStack inputFluid, GasStack inputGas) { - if (GroovyLog.msg("Error removing Mekanism Pressurized Reaction Chamber recipe").error() + if (GroovyLog.msg("Error removing Mekanism Pressurized Reaction Chamber recipe") + .error() .add(IngredientHelper.isEmpty(inputSolid), () -> "item input must not be empty") .add(IngredientHelper.isEmpty(inputFluid), () -> "fluid input must not be empty") .add(Mekanism.isEmpty(inputGas), () -> "input gas must not be empty") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Sawmill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Sawmill.java index 2608f1842..f15e6293e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Sawmill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Sawmill.java @@ -99,8 +99,8 @@ public void validate(GroovyLog.Msg msg) { public @Nullable SawmillRecipe register() { if (!validate()) return null; ChanceOutput chanceOutput = IngredientHelper.isEmpty(extra) - ? new ChanceOutput(output.get(0)) - : new ChanceOutput(output.get(0), extra, chance); + ? new ChanceOutput(output.get(0)) + : new ChanceOutput(output.get(0), extra, chance); SawmillRecipe recipe = null; for (ItemStack itemStack : input.get(0).getMatchingStacks()) { SawmillRecipe r = new SawmillRecipe(new ItemStackInput(itemStack), chanceOutput); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Smelting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Smelting.java index a1c437cb2..414c7e572 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Smelting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Smelting.java @@ -15,10 +15,11 @@ import org.jetbrains.annotations.Nullable; @RegistryDescription( - admonition = @Admonition(value = "groovyscript.wiki.mekanism.smelting.note0", - type = Admonition.Type.DANGER, - format = Admonition.Format.STANDARD, - hasTitle = true)) + admonition = @Admonition( + value = "groovyscript.wiki.mekanism.smelting.note0", + type = Admonition.Type.DANGER, + format = Admonition.Format.STANDARD, + hasTitle = true)) public class Smelting extends VirtualizedMekanismRegistry { public Smelting() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/GasRecipeBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/GasRecipeBuilder.java index 9ad4f79f8..9101e4949 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/GasRecipeBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/GasRecipeBuilder.java @@ -70,5 +70,4 @@ public void validateGases(GroovyLog.Msg msg, int minInput, int maxInput, int min public void validateGases(GroovyLog.Msg msg) { validateGases(msg, 0, 0, 0, 0); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/GasStackList.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/GasStackList.java index 8c9779007..2bd7c50b7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/GasStackList.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/GasStackList.java @@ -8,8 +8,7 @@ public class GasStackList extends ArrayList { - public GasStackList() { - } + public GasStackList() {} public GasStackList(Collection collection) { super(collection); @@ -45,5 +44,4 @@ public void copyElements() { } } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/MekanismIngredientHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/MekanismIngredientHelper.java index 55c409e0d..1a7672ae7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/MekanismIngredientHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/MekanismIngredientHelper.java @@ -18,8 +18,7 @@ public class MekanismIngredientHelper { - private MekanismIngredientHelper() { - } + private MekanismIngredientHelper() {} public static IIngredient optionalIngredient(IIngredient ingredient) { return ingredient != null ? ingredient : IIngredient.ANY; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/MysticalAgriculture.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/MysticalAgriculture.java index cc7ba1834..e22d7eba6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/MysticalAgriculture.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/MysticalAgriculture.java @@ -5,5 +5,4 @@ public class MysticalAgriculture extends GroovyPropertyContainer { public Reprocessor reprocessor = new Reprocessor(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/NaturesAura.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/NaturesAura.java index dc99007d8..ecd914f9c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/NaturesAura.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/NaturesAura.java @@ -8,5 +8,4 @@ public class NaturesAura extends GroovyPropertyContainer { public final Ritual ritual = new Ritual(); public final Offering offering = new Offering(); public final Spawning spawning = new Spawning(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java index 9c963f610..d275a9b86 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java @@ -55,7 +55,7 @@ public boolean removeByName(ResourceLocation name) { return true; } - @MethodDescription( example = @Example("item('naturesaura:infused_stone')")) + @MethodDescription(example = @Example("item('naturesaura:infused_stone')")) public boolean removeByInput(IIngredient input) { return NaturesAuraAPI.TREE_RITUAL_RECIPES.entrySet().removeIf(r -> { for (var ingredient : r.getValue().ingredients) { @@ -83,7 +83,7 @@ public boolean removeBySapling(IIngredient catalyst) { }); } - @MethodDescription( example = @Example("item('naturesaura:eye')")) + @MethodDescription(example = @Example("item('naturesaura:eye')")) public boolean removeByOutput(IIngredient output) { return NaturesAuraAPI.TREE_RITUAL_RECIPES.entrySet().removeIf(r -> { if (output.test(r.getValue().result)) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java index 0a707b4d9..2f6c824c2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java @@ -193,5 +193,4 @@ private static void register(boolean periodic, AmadronOffer recipe) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java index fa97d92f9..56b5b5b50 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java @@ -96,5 +96,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java index 90ecea9f5..5862b6706 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java @@ -79,5 +79,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/LiquidFuel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/LiquidFuel.java index da5d370ce..158a76ecb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/LiquidFuel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/LiquidFuel.java @@ -95,5 +95,4 @@ public void validate(GroovyLog.Msg msg) { return Pair.of(fluidInput.get(0), pressure); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java index 6803f4dd6..1de6e0e08 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java @@ -160,5 +160,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PneumaticCraft.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PneumaticCraft.java index baa56195d..f907d27d0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PneumaticCraft.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PneumaticCraft.java @@ -25,5 +25,4 @@ public static ItemIngredient toItemIngredient(IIngredient ingredient) { if (IngredientHelper.isItem(ingredient)) return new ItemIngredient(IngredientHelper.toItemStack(ingredient).copy()); return new ItemIngredient(ItemStack.EMPTY); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java index 0a2d8dab0..582e19990 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java @@ -85,5 +85,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java index 9e7c5cd61..344d3b172 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java @@ -84,5 +84,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java index bf064149b..1e232ae98 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java @@ -40,7 +40,9 @@ public boolean removeByOutput(IIngredient output) { }); } - @MethodDescription(example = {@Example("item('minecraft:coal')"), @Example("fluid('diesel')")}) + @MethodDescription(example = { + @Example("item('minecraft:coal')"), @Example("fluid('diesel')") + }) public boolean removeByInput(IIngredient input) { return getRecipes().removeIf(entry -> { if (entry instanceof BasicThermopneumaticProcessingPlantRecipe recipe && (input.test(recipe.getInputLiquid()) || input.test(recipe.getInputItem()))) { @@ -102,5 +104,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/XpFluid.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/XpFluid.java index 68ddbc41e..70a5311b1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/XpFluid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/XpFluid.java @@ -105,5 +105,4 @@ public void validate(GroovyLog.Msg msg) { return Pair.of(fluidInput.get(0), ratio); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/PrimalTech.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/PrimalTech.java index ea905b395..0b112bad5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/PrimalTech.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/PrimalTech.java @@ -8,5 +8,4 @@ public class PrimalTech extends GroovyPropertyContainer { public final StoneAnvil stoneAnvil = new StoneAnvil(); public final WaterSaw waterSaw = new WaterSaw(); public final WoodenBasin woodenBasin = new WoodenBasin(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java index 47589e783..c9424c76d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java @@ -47,15 +47,16 @@ public WoodenBasinRecipes add(ItemStack output, FluidStack fluid, IIngredient... .register(); } - @MethodDescription(example = {@Example("fluid('lava')"), @Example(value = "item('minecraft:cobblestone')", commented = true)}) + @MethodDescription(example = { + @Example("fluid('lava')"), @Example(value = "item('minecraft:cobblestone')", commented = true) + }) public boolean removeByInput(IIngredient input) { return getRecipes().removeIf(recipe -> { - if (input.test(recipe.getFluidStack()) || - Arrays.stream(recipe.getInputs()).anyMatch(x -> { - if (x instanceof ItemStack is) return input.test(is); - if (x instanceof List list) return list.stream().map(i -> (ItemStack) i).anyMatch(input); - return false; - })) { + if (input.test(recipe.getFluidStack()) || Arrays.stream(recipe.getInputs()).anyMatch(x -> { + if (x instanceof ItemStack is) return input.test(is); + if (x instanceof Listlist) return list.stream().map(i -> (ItemStack) i).anyMatch(input); + return false; + })) { addBackup(recipe); return true; } @@ -96,7 +97,9 @@ public void validate(GroovyLog.Msg msg) { if (!validate()) return null; WoodenBasinRecipes recipe = null; List> cartesian = Lists.cartesianProduct( - input.stream().map(x -> x instanceof OreDictIngredient ore + input.stream() + .map( + x -> x instanceof OreDictIngredient ore ? Collections.singletonList(ore.getOreDict()) : Arrays.asList(x.toMcIngredient().getMatchingStacks())) .collect(Collectors.toList())); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java index ef659be33..2b77a03a6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java @@ -1,200 +1,200 @@ -package com.cleanroommc.groovyscript.compat.mods.prodigytech; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.helper.SimpleObjectStream; -import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import lykrast.prodigytech.common.recipe.AtomicReshaperManager; -import lykrast.prodigytech.common.util.Config; -import net.minecraft.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -@RegistryDescription -public class AtomicReshaper extends VirtualizedRegistry { - - @RecipeBuilderDescription(example = { - @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:emerald_block')).primordium(10).time(50)"), - @Example(".input(item('minecraft:gold_block')).output(item('minecraft:diamond_block'), 10).output(item('minecraft:carrot'), 3).primordium(7)") - }) - public AtomicReshaper.RecipeBuilder recipeBuilder() { - return new AtomicReshaper.RecipeBuilder(); - } - - @Override - public void onReload() { - removeScripted().forEach(recipe -> { - if (recipe.isOreRecipe()) { - AtomicReshaperManager.INSTANCE.removeOreRecipe(recipe.getOreInput()); - } else { - AtomicReshaperManager.INSTANCE.removeRecipe(recipe.getInput()); - } - }); - restoreFromBackup().forEach(AtomicReshaperManager.INSTANCE::addRecipe); - } - - @MethodDescription(example = @Example("ore('paper')")) - public boolean removeByInput(IIngredient input) { - if (input instanceof OreDictIngredient) { - AtomicReshaperManager.AtomicReshaperRecipe recipe = AtomicReshaperManager.INSTANCE.removeOreRecipe(((OreDictIngredient) input).getOreDict()); - if (recipe == null) return false; - addBackup(recipe); - return true; - } else { - boolean success = false; - for (ItemStack it : input.getMatchingStacks()) { - AtomicReshaperManager.AtomicReshaperRecipe recipe = AtomicReshaperManager.INSTANCE.removeRecipe(it); - if (recipe != null) { - success = true; - addBackup(recipe); - } - } - return success; - } - } - - private boolean backupAndRemove(AtomicReshaperManager.AtomicReshaperRecipe recipe) { - AtomicReshaperManager.AtomicReshaperRecipe removed; - if (recipe.isOreRecipe()) { - removed = AtomicReshaperManager.INSTANCE.removeOreRecipe(recipe.getOreInput()); - } else { - removed = AtomicReshaperManager.INSTANCE.removeRecipe(recipe.getInput()); - } - if (removed == null) { - return false; - } - addBackup(removed); - return true; - } - - public void add(AtomicReshaperManager.AtomicReshaperRecipe recipe) { - AtomicReshaperManager.INSTANCE.addRecipe(recipe); - addScripted(recipe); - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeAll() { - AtomicReshaperManager.INSTANCE.getAllRecipes().forEach(this::addBackup); - AtomicReshaperManager.INSTANCE.removeAll(); - } - - @MethodDescription(type = MethodDescription.Type.QUERY) - public SimpleObjectStream streamRecipes() { - return new SimpleObjectStream<>(AtomicReshaperManager.INSTANCE.getAllRecipes()) - .setRemover(this::backupAndRemove); - } - - @Property(property = "input", comp = @Comp(eq = 1)) - @Property(property = "output", comp = @Comp(gte = 1)) - public static class RecipeBuilder extends AbstractRecipeBuilder { - - @Property(comp = @Comp(gte = 1), defaultValue = "Config.atomicReshaperProcessTime") - private int time = Config.atomicReshaperProcessTime; - - @Property(comp = @Comp(gte = 1)) - private int primordium; - - private final List outputWeights = new ArrayList<>(); - - @RecipeBuilderMethodDescription - public AtomicReshaper.RecipeBuilder time(int time) { - this.time = time; - return this; - } - - @RecipeBuilderMethodDescription - public AtomicReshaper.RecipeBuilder primordium(int primordium) { - this.primordium = primordium; - return this; - } - - public AtomicReshaper.RecipeBuilder output(ItemStack output) { - output(output, 1); - return this; - } - - public AtomicReshaper.RecipeBuilder output(ItemStack... outputs) { - for (ItemStack output : outputs) { - output(output, 1); - } - return this; - } - - public AtomicReshaper.RecipeBuilder output(Collection outputs) { - for (ItemStack output : outputs) { - output(output, 1); - } - return this; - } - - @RecipeBuilderMethodDescription - public AtomicReshaper.RecipeBuilder output(ItemStack output, int weight) { - this.output.add(output); - outputWeights.add(weight); - return this; - } - - @Override - public String getErrorMsg() { - return "Error adding ProdigyTech Atomic Reshaper Recipe"; - } - - @Override - protected int getMaxItemInput() { - // The recipe correctly requires an increased amount of input items, but only consumes 1 - return 1; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 1, 1, Integer.MAX_VALUE); - validateFluids(msg); - - // I think this check is not possible to fail at all but still, adding it for consistency - msg.add(output.size() != outputWeights.size(), "Outputs and output weights must be the same size!"); - - msg.add(outputWeights.stream().anyMatch(x -> x <= 0), "all weighted outputs must be greater than 0, yet they were {}", outputWeights); - msg.add(primordium <= 0, "primordium must be greater than or equal to 1, yet it was {}", primordium); - // 100 is hardcoded in the source - int capacity = Config.atomicReshaperMaxPrimordium * 100; - msg.add(primordium > capacity, "primordium must be less than or equal to the Reshaper's capacity {}, yet it was {}", capacity, primordium); - msg.add(time <= 0, "time must be greater than 0, got {}", time); - } - - private Object[] getRecipeOutput() { - List target = new ArrayList<>(); - for (int i = 0; i < output.size(); i++) { - target.add(output.get(i)); - target.add(outputWeights.get(i)); - } - return target.toArray(); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable AtomicReshaperManager.AtomicReshaperRecipe register() { - if (!validate()) return null; - AtomicReshaperManager.AtomicReshaperRecipe recipe = null; - IIngredient inputItem = input.get(0); - if (inputItem instanceof OreDictIngredient) { - String oredict = ((OreDictIngredient) inputItem).getOreDict(); - recipe = new AtomicReshaperManager.AtomicReshaperRecipe(oredict, time, primordium, getRecipeOutput()); - ModSupport.PRODIGY_TECH.get().atomicReshaper.add(recipe); - } else { - for (ItemStack it : inputItem.getMatchingStacks()) { - recipe = new AtomicReshaperManager.AtomicReshaperRecipe(it, time, primordium, getRecipeOutput()); - ModSupport.PRODIGY_TECH.get().atomicReshaper.add(recipe); - } - } - - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.prodigytech; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import lykrast.prodigytech.common.recipe.AtomicReshaperManager; +import lykrast.prodigytech.common.util.Config; +import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +@RegistryDescription +public class AtomicReshaper extends VirtualizedRegistry { + + @RecipeBuilderDescription(example = { + @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:emerald_block')).primordium(10).time(50)"), + @Example(".input(item('minecraft:gold_block')).output(item('minecraft:diamond_block'), 10).output(item('minecraft:carrot'), 3).primordium(7)") + }) + public AtomicReshaper.RecipeBuilder recipeBuilder() { + return new AtomicReshaper.RecipeBuilder(); + } + + @Override + public void onReload() { + removeScripted().forEach(recipe -> { + if (recipe.isOreRecipe()) { + AtomicReshaperManager.INSTANCE.removeOreRecipe(recipe.getOreInput()); + } else { + AtomicReshaperManager.INSTANCE.removeRecipe(recipe.getInput()); + } + }); + restoreFromBackup().forEach(AtomicReshaperManager.INSTANCE::addRecipe); + } + + @MethodDescription(example = @Example("ore('paper')")) + public boolean removeByInput(IIngredient input) { + if (input instanceof OreDictIngredient) { + AtomicReshaperManager.AtomicReshaperRecipe recipe = AtomicReshaperManager.INSTANCE.removeOreRecipe(((OreDictIngredient) input).getOreDict()); + if (recipe == null) return false; + addBackup(recipe); + return true; + } else { + boolean success = false; + for (ItemStack it : input.getMatchingStacks()) { + AtomicReshaperManager.AtomicReshaperRecipe recipe = AtomicReshaperManager.INSTANCE.removeRecipe(it); + if (recipe != null) { + success = true; + addBackup(recipe); + } + } + return success; + } + } + + private boolean backupAndRemove(AtomicReshaperManager.AtomicReshaperRecipe recipe) { + AtomicReshaperManager.AtomicReshaperRecipe removed; + if (recipe.isOreRecipe()) { + removed = AtomicReshaperManager.INSTANCE.removeOreRecipe(recipe.getOreInput()); + } else { + removed = AtomicReshaperManager.INSTANCE.removeRecipe(recipe.getInput()); + } + if (removed == null) { + return false; + } + addBackup(removed); + return true; + } + + public void add(AtomicReshaperManager.AtomicReshaperRecipe recipe) { + AtomicReshaperManager.INSTANCE.addRecipe(recipe); + addScripted(recipe); + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeAll() { + AtomicReshaperManager.INSTANCE.getAllRecipes().forEach(this::addBackup); + AtomicReshaperManager.INSTANCE.removeAll(); + } + + @MethodDescription(type = MethodDescription.Type.QUERY) + public SimpleObjectStream streamRecipes() { + return new SimpleObjectStream<>(AtomicReshaperManager.INSTANCE.getAllRecipes()) + .setRemover(this::backupAndRemove); + } + + @Property(property = "input", comp = @Comp(eq = 1)) + @Property(property = "output", comp = @Comp(gte = 1)) + public static class RecipeBuilder extends AbstractRecipeBuilder { + + @Property(comp = @Comp(gte = 1), defaultValue = "Config.atomicReshaperProcessTime") + private int time = Config.atomicReshaperProcessTime; + + @Property(comp = @Comp(gte = 1)) + private int primordium; + + private final List outputWeights = new ArrayList<>(); + + @RecipeBuilderMethodDescription + public AtomicReshaper.RecipeBuilder time(int time) { + this.time = time; + return this; + } + + @RecipeBuilderMethodDescription + public AtomicReshaper.RecipeBuilder primordium(int primordium) { + this.primordium = primordium; + return this; + } + + public AtomicReshaper.RecipeBuilder output(ItemStack output) { + output(output, 1); + return this; + } + + public AtomicReshaper.RecipeBuilder output(ItemStack... outputs) { + for (ItemStack output : outputs) { + output(output, 1); + } + return this; + } + + public AtomicReshaper.RecipeBuilder output(Collection outputs) { + for (ItemStack output : outputs) { + output(output, 1); + } + return this; + } + + @RecipeBuilderMethodDescription + public AtomicReshaper.RecipeBuilder output(ItemStack output, int weight) { + this.output.add(output); + outputWeights.add(weight); + return this; + } + + @Override + public String getErrorMsg() { + return "Error adding ProdigyTech Atomic Reshaper Recipe"; + } + + @Override + protected int getMaxItemInput() { + // The recipe correctly requires an increased amount of input items, but only consumes 1 + return 1; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 1, 1, Integer.MAX_VALUE); + validateFluids(msg); + + // I think this check is not possible to fail at all but still, adding it for consistency + msg.add(output.size() != outputWeights.size(), "Outputs and output weights must be the same size!"); + + msg.add(outputWeights.stream().anyMatch(x -> x <= 0), "all weighted outputs must be greater than 0, yet they were {}", outputWeights); + msg.add(primordium <= 0, "primordium must be greater than or equal to 1, yet it was {}", primordium); + // 100 is hardcoded in the source + int capacity = Config.atomicReshaperMaxPrimordium * 100; + msg.add(primordium > capacity, "primordium must be less than or equal to the Reshaper's capacity {}, yet it was {}", capacity, primordium); + msg.add(time <= 0, "time must be greater than 0, got {}", time); + } + + private Object[] getRecipeOutput() { + List target = new ArrayList<>(); + for (int i = 0; i < output.size(); i++) { + target.add(output.get(i)); + target.add(outputWeights.get(i)); + } + return target.toArray(); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable AtomicReshaperManager.AtomicReshaperRecipe register() { + if (!validate()) return null; + AtomicReshaperManager.AtomicReshaperRecipe recipe = null; + IIngredient inputItem = input.get(0); + if (inputItem instanceof OreDictIngredient) { + String oredict = ((OreDictIngredient) inputItem).getOreDict(); + recipe = new AtomicReshaperManager.AtomicReshaperRecipe(oredict, time, primordium, getRecipeOutput()); + ModSupport.PRODIGY_TECH.get().atomicReshaper.add(recipe); + } else { + for (ItemStack it : inputItem.getMatchingStacks()) { + recipe = new AtomicReshaperManager.AtomicReshaperRecipe(it, time, primordium, getRecipeOutput()); + ModSupport.PRODIGY_TECH.get().atomicReshaper.add(recipe); + } + } + + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java index 3535dcc46..5d5fe3958 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java @@ -1,231 +1,226 @@ -package com.cleanroommc.groovyscript.compat.mods.prodigytech; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.Example; -import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; -import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; -import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; -import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import lykrast.prodigytech.common.recipe.ExplosionFurnaceManager; -import net.minecraft.item.ItemStack; - -import java.util.Objects; - -@RegistryDescription(category = RegistryDescription.Category.ENTRIES) -public class ExplosionFurnaceAdditives extends VirtualizedRegistry { - - @Override - public void onReload() { - removeScripted().forEach(EFAdditiveRecipe::unregister); - restoreFromBackup().forEach(EFAdditiveRecipe::register); - } - - private void add(EFAdditiveRecipe recipe) { - recipe.register(); - addScripted(recipe); - } - - private void remove(EFAdditiveRecipe recipe) { - recipe.unregister(); - addBackup(recipe); - } - - @MethodDescription(example = @Example("item('minecraft:cobblestone'), 50"), type = MethodDescription.Type.ADDITION) - public void addExplosive(IIngredient explosive, int power) { - if (IngredientHelper.overMaxSize(explosive, 1)) { - GroovyLog.msg("Error adding Explosion Furnace Explosive").error() - .add("Expected input stack size of 1") - .post(); - return; - } - - EFAdditiveRecipe recipe = new EFAdditiveExplosive(explosive, power); - add(recipe); - } - - @MethodDescription(example = @Example("ore('gunpowder')")) - public boolean removeExplosive(IIngredient explosive) { - for (ItemStack it : explosive.getMatchingStacks()) { - ExplosionFurnaceManager.Explosive externalExplosive = ExplosionFurnaceManager.findExplosive(it); - if (externalExplosive == null) continue; - EFAdditiveRecipe recipe = new EFAdditiveExplosive(explosive, externalExplosive.getPower()); - remove(recipe); - return true; - } - return false; - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeAllExplosives() { - ExplosionFurnaceManager.EXPLOSIVES.getAllContent().forEach(r -> addBackup(new EFAdditiveExplosive(new ItemsIngredient(r.getMatchingStacks()), r.getPower()))); - ExplosionFurnaceManager.removeAllExplosives(); - } - - @MethodDescription(example = @Example("item('minecraft:stone'), 50"), type = MethodDescription.Type.ADDITION) - public void addDampener(IIngredient dampener, int power) { - if (IngredientHelper.overMaxSize(dampener, 1)) { - GroovyLog.msg("Error adding Explosion Furnace Dampener").error() - .add("Expected input stack size of 1") - .post(); - return; - } - - EFAdditiveRecipe recipe = new EFAdditiveDampener(dampener, power); - add(recipe); - } - - @MethodDescription(example = @Example("ore('dustAsh')")) - public boolean removeDampener(IIngredient dampener) { - for (ItemStack it : dampener.getMatchingStacks()) { - ExplosionFurnaceManager.Dampener externalDampener = ExplosionFurnaceManager.findDampener(it); - if (externalDampener == null) continue; - EFAdditiveRecipe recipe = new EFAdditiveDampener(dampener, externalDampener.getDampening()); - remove(recipe); - return true; - } - return false; - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeAllDampeners() { - ExplosionFurnaceManager.DAMPENERS.getAllContent().forEach(r -> - addBackup(new EFAdditiveDampener(new ItemsIngredient(r.getMatchingStacks()), r.getDampening()))); - ExplosionFurnaceManager.removeAllDampeners(); - } - - public interface EFAdditiveRecipe { - - void register(); - - void unregister(); - } - - @SuppressWarnings("ClassCanBeRecord") - public static final class EFAdditiveExplosive implements EFAdditiveRecipe { - - private final IIngredient input; - private final int value; - - public EFAdditiveExplosive(IIngredient input, int value) { - this.input = input; - this.value = value; - } - - @Override - public void register() { - if (this.input instanceof OreDictIngredient) { - ExplosionFurnaceManager.addExplosive(((OreDictIngredient) this.input).getOreDict(), this.value); - } else { - for (ItemStack it : this.input.getMatchingStacks()) { - ExplosionFurnaceManager.addExplosive(it, this.value); - } - } - } - - @Override - public void unregister() { - if (this.input instanceof OreDictIngredient) { - ExplosionFurnaceManager.removeExplosive(((OreDictIngredient) this.input).getOreDict()); - } else { - for (ItemStack it : this.input.getMatchingStacks()) { - ExplosionFurnaceManager.removeExplosive(it); - } - } - } - - public IIngredient input() { - return input; - } - - public int value() { - return value; - } - - @Override - public boolean equals(Object obj) { - if (obj == this) return true; - if (obj == null || obj.getClass() != this.getClass()) return false; - var that = (EFAdditiveExplosive) obj; - return Objects.equals(this.input, that.input) && - this.value == that.value; - } - - @Override - public int hashCode() { - return Objects.hash(input, value); - } - - @Override - public String toString() { - return "EFAdditiveExplosive[" + - "input=" + input + ", " + - "value=" + value + ']'; - } - } - - @SuppressWarnings("ClassCanBeRecord") - public static final class EFAdditiveDampener implements EFAdditiveRecipe { - - private final IIngredient input; - private final int value; - - public EFAdditiveDampener(IIngredient input, int value) { - this.input = input; - this.value = value; - } - - @Override - public void register() { - if (this.input instanceof OreDictIngredient) { - ExplosionFurnaceManager.addDampener(((OreDictIngredient) this.input).getOreDict(), this.value); - } else { - for (ItemStack it : this.input.getMatchingStacks()) { - ExplosionFurnaceManager.addDampener(it, this.value); - } - } - } - - @Override - public void unregister() { - if (this.input instanceof OreDictIngredient) { - ExplosionFurnaceManager.removeDampener(((OreDictIngredient) this.input).getOreDict()); - } else { - for (ItemStack it : this.input.getMatchingStacks()) { - ExplosionFurnaceManager.removeDampener(it); - } - } - } - - public IIngredient input() { - return input; - } - - public int value() { - return value; - } - - @Override - public boolean equals(Object obj) { - if (obj == this) return true; - if (obj == null || obj.getClass() != this.getClass()) return false; - var that = (EFAdditiveDampener) obj; - return Objects.equals(this.input, that.input) && - this.value == that.value; - } - - @Override - public int hashCode() { - return Objects.hash(input, value); - } - - @Override - public String toString() { - return "EFAdditiveDampener[" + - "input=" + input + ", " + - "value=" + value + ']'; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.prodigytech; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.Example; +import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; +import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; +import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; +import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import lykrast.prodigytech.common.recipe.ExplosionFurnaceManager; +import net.minecraft.item.ItemStack; + +import java.util.Objects; + +@RegistryDescription(category = RegistryDescription.Category.ENTRIES) +public class ExplosionFurnaceAdditives extends VirtualizedRegistry { + + @Override + public void onReload() { + removeScripted().forEach(EFAdditiveRecipe::unregister); + restoreFromBackup().forEach(EFAdditiveRecipe::register); + } + + private void add(EFAdditiveRecipe recipe) { + recipe.register(); + addScripted(recipe); + } + + private void remove(EFAdditiveRecipe recipe) { + recipe.unregister(); + addBackup(recipe); + } + + @MethodDescription(example = @Example("item('minecraft:cobblestone'), 50"), type = MethodDescription.Type.ADDITION) + public void addExplosive(IIngredient explosive, int power) { + if (IngredientHelper.overMaxSize(explosive, 1)) { + GroovyLog.msg("Error adding Explosion Furnace Explosive") + .error() + .add("Expected input stack size of 1") + .post(); + return; + } + + EFAdditiveRecipe recipe = new EFAdditiveExplosive(explosive, power); + add(recipe); + } + + @MethodDescription(example = @Example("ore('gunpowder')")) + public boolean removeExplosive(IIngredient explosive) { + for (ItemStack it : explosive.getMatchingStacks()) { + ExplosionFurnaceManager.Explosive externalExplosive = ExplosionFurnaceManager.findExplosive(it); + if (externalExplosive == null) continue; + EFAdditiveRecipe recipe = new EFAdditiveExplosive(explosive, externalExplosive.getPower()); + remove(recipe); + return true; + } + return false; + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeAllExplosives() { + ExplosionFurnaceManager.EXPLOSIVES.getAllContent().forEach(r -> addBackup(new EFAdditiveExplosive(new ItemsIngredient(r.getMatchingStacks()), r.getPower()))); + ExplosionFurnaceManager.removeAllExplosives(); + } + + @MethodDescription(example = @Example("item('minecraft:stone'), 50"), type = MethodDescription.Type.ADDITION) + public void addDampener(IIngredient dampener, int power) { + if (IngredientHelper.overMaxSize(dampener, 1)) { + GroovyLog.msg("Error adding Explosion Furnace Dampener") + .error() + .add("Expected input stack size of 1") + .post(); + return; + } + + EFAdditiveRecipe recipe = new EFAdditiveDampener(dampener, power); + add(recipe); + } + + @MethodDescription(example = @Example("ore('dustAsh')")) + public boolean removeDampener(IIngredient dampener) { + for (ItemStack it : dampener.getMatchingStacks()) { + ExplosionFurnaceManager.Dampener externalDampener = ExplosionFurnaceManager.findDampener(it); + if (externalDampener == null) continue; + EFAdditiveRecipe recipe = new EFAdditiveDampener(dampener, externalDampener.getDampening()); + remove(recipe); + return true; + } + return false; + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeAllDampeners() { + ExplosionFurnaceManager.DAMPENERS.getAllContent().forEach(r -> addBackup(new EFAdditiveDampener(new ItemsIngredient(r.getMatchingStacks()), r.getDampening()))); + ExplosionFurnaceManager.removeAllDampeners(); + } + + public interface EFAdditiveRecipe { + + void register(); + + void unregister(); + } + + @SuppressWarnings("ClassCanBeRecord") + public static final class EFAdditiveExplosive implements EFAdditiveRecipe { + + private final IIngredient input; + private final int value; + + public EFAdditiveExplosive(IIngredient input, int value) { + this.input = input; + this.value = value; + } + + @Override + public void register() { + if (this.input instanceof OreDictIngredient) { + ExplosionFurnaceManager.addExplosive(((OreDictIngredient) this.input).getOreDict(), this.value); + } else { + for (ItemStack it : this.input.getMatchingStacks()) { + ExplosionFurnaceManager.addExplosive(it, this.value); + } + } + } + + @Override + public void unregister() { + if (this.input instanceof OreDictIngredient) { + ExplosionFurnaceManager.removeExplosive(((OreDictIngredient) this.input).getOreDict()); + } else { + for (ItemStack it : this.input.getMatchingStacks()) { + ExplosionFurnaceManager.removeExplosive(it); + } + } + } + + public IIngredient input() { + return input; + } + + public int value() { + return value; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + if (obj == null || obj.getClass() != this.getClass()) return false; + var that = (EFAdditiveExplosive) obj; + return Objects.equals(this.input, that.input) && this.value == that.value; + } + + @Override + public int hashCode() { + return Objects.hash(input, value); + } + + @Override + public String toString() { + return "EFAdditiveExplosive[" + "input=" + input + ", " + "value=" + value + ']'; + } + } + + @SuppressWarnings("ClassCanBeRecord") + public static final class EFAdditiveDampener implements EFAdditiveRecipe { + + private final IIngredient input; + private final int value; + + public EFAdditiveDampener(IIngredient input, int value) { + this.input = input; + this.value = value; + } + + @Override + public void register() { + if (this.input instanceof OreDictIngredient) { + ExplosionFurnaceManager.addDampener(((OreDictIngredient) this.input).getOreDict(), this.value); + } else { + for (ItemStack it : this.input.getMatchingStacks()) { + ExplosionFurnaceManager.addDampener(it, this.value); + } + } + } + + @Override + public void unregister() { + if (this.input instanceof OreDictIngredient) { + ExplosionFurnaceManager.removeDampener(((OreDictIngredient) this.input).getOreDict()); + } else { + for (ItemStack it : this.input.getMatchingStacks()) { + ExplosionFurnaceManager.removeDampener(it); + } + } + } + + public IIngredient input() { + return input; + } + + public int value() { + return value; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + if (obj == null || obj.getClass() != this.getClass()) return false; + var that = (EFAdditiveDampener) obj; + return Objects.equals(this.input, that.input) && this.value == that.value; + } + + @Override + public int hashCode() { + return Objects.hash(input, value); + } + + @Override + public String toString() { + return "EFAdditiveDampener[" + "input=" + input + ", " + "value=" + value + ']'; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java index acc1c81a2..1405fa6ed 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java @@ -1,87 +1,90 @@ -package com.cleanroommc.groovyscript.compat.mods.prodigytech; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.Example; -import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; -import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.helper.SimpleObjectStream; -import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; -import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; -import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import lykrast.prodigytech.common.recipe.PrimordialisReactorManager; -import net.minecraft.item.ItemStack; - -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -@RegistryDescription(category = RegistryDescription.Category.ENTRIES) -public class PrimordialisReactor extends VirtualizedRegistry { - - @Override - public void onReload() { - removeScripted().forEach(this::removeRecipeBase); - restoreFromBackup().forEach(this::addRecipeBase); - } - - private void addRecipeBase(IIngredient x) { - if (x instanceof OreDictIngredient) { - PrimordialisReactorManager.addInput(((OreDictIngredient) x).getOreDict()); - } else { - for (ItemStack it : x.getMatchingStacks()) { - PrimordialisReactorManager.addInput(it); - } - } - } - - private boolean removeRecipeBase(IIngredient x) { - if (x instanceof OreDictIngredient) { - PrimordialisReactorManager.removeInput(((OreDictIngredient) x).getOreDict()); - } else { - for (ItemStack it : x.getMatchingStacks()) { - PrimordialisReactorManager.removeInput(it); - } - } - // the mod's API does not expose a boolean there - return true; - } - - @MethodDescription(example = @Example("item('minecraft:diamond')"), type = MethodDescription.Type.ADDITION) - public void add(IIngredient x) { - if (IngredientHelper.overMaxSize(x, 1)) { - // PT modifies the recipe to only consume 1 item - GroovyLog.msg("Error adding Primordialis Reactor fuel").error() - .add("Expected input stack size of 1") - .post(); - return; - } - - addScripted(x); - addRecipeBase(x); - } - - @MethodDescription(example = @Example("ore('sugarcane')")) - public boolean remove(IIngredient x) { - addBackup(x); - return removeRecipeBase(x); - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeAll() { - PrimordialisReactorManager.getAllEntries().forEach(r -> addBackup(new ItemsIngredient(r))); - PrimordialisReactorManager.getAllOreEntries().forEach(r -> addBackup(new OreDictIngredient(r))); - PrimordialisReactorManager.removeAll(); - } - - @MethodDescription(type = MethodDescription.Type.QUERY) - public SimpleObjectStream streamRecipes() { - Stream normalRecipes = PrimordialisReactorManager.getAllEntries().stream() - .map(ItemsIngredient::new); - Stream oreDictRecipes = PrimordialisReactorManager.getAllOreEntries().stream() - .map(OreDictIngredient::new); - List items = Stream.concat(normalRecipes, oreDictRecipes).collect(Collectors.toList()); - return new SimpleObjectStream<>(items).setRemover(this::remove); - } -} +package com.cleanroommc.groovyscript.compat.mods.prodigytech; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.Example; +import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; +import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; +import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; +import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import lykrast.prodigytech.common.recipe.PrimordialisReactorManager; +import net.minecraft.item.ItemStack; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +@RegistryDescription(category = RegistryDescription.Category.ENTRIES) +public class PrimordialisReactor extends VirtualizedRegistry { + + @Override + public void onReload() { + removeScripted().forEach(this::removeRecipeBase); + restoreFromBackup().forEach(this::addRecipeBase); + } + + private void addRecipeBase(IIngredient x) { + if (x instanceof OreDictIngredient) { + PrimordialisReactorManager.addInput(((OreDictIngredient) x).getOreDict()); + } else { + for (ItemStack it : x.getMatchingStacks()) { + PrimordialisReactorManager.addInput(it); + } + } + } + + private boolean removeRecipeBase(IIngredient x) { + if (x instanceof OreDictIngredient) { + PrimordialisReactorManager.removeInput(((OreDictIngredient) x).getOreDict()); + } else { + for (ItemStack it : x.getMatchingStacks()) { + PrimordialisReactorManager.removeInput(it); + } + } + // the mod's API does not expose a boolean there + return true; + } + + @MethodDescription(example = @Example("item('minecraft:diamond')"), type = MethodDescription.Type.ADDITION) + public void add(IIngredient x) { + if (IngredientHelper.overMaxSize(x, 1)) { + // PT modifies the recipe to only consume 1 item + GroovyLog.msg("Error adding Primordialis Reactor fuel") + .error() + .add("Expected input stack size of 1") + .post(); + return; + } + + addScripted(x); + addRecipeBase(x); + } + + @MethodDescription(example = @Example("ore('sugarcane')")) + public boolean remove(IIngredient x) { + addBackup(x); + return removeRecipeBase(x); + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeAll() { + PrimordialisReactorManager.getAllEntries().forEach(r -> addBackup(new ItemsIngredient(r))); + PrimordialisReactorManager.getAllOreEntries().forEach(r -> addBackup(new OreDictIngredient(r))); + PrimordialisReactorManager.removeAll(); + } + + @MethodDescription(type = MethodDescription.Type.QUERY) + public SimpleObjectStream streamRecipes() { + Stream normalRecipes = PrimordialisReactorManager.getAllEntries() + .stream() + .map(ItemsIngredient::new); + Stream oreDictRecipes = PrimordialisReactorManager.getAllOreEntries() + .stream() + .map(OreDictIngredient::new); + List items = Stream.concat(normalRecipes, oreDictRecipes).collect(Collectors.toList()); + return new SimpleObjectStream<>(items).setRemover(this::remove); + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ProdigyTech.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ProdigyTech.java index 893819a76..e9aa197c0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ProdigyTech.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ProdigyTech.java @@ -1,18 +1,17 @@ -package com.cleanroommc.groovyscript.compat.mods.prodigytech; - -import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; - -public class ProdigyTech extends GroovyPropertyContainer { - - public final AtomicReshaper atomicReshaper = new AtomicReshaper(); - public final ExplosionFurnace explosionFurnace = new ExplosionFurnace(); - public final ExplosionFurnaceAdditives explosionAdditives = new ExplosionFurnaceAdditives(); - public final SimpleRecipeHandler magneticReassembler = new SimpleRecipeHandler.MagneticReassembler(); - public final SimpleRecipeHandlerSecondaryOutput oreRefinery = new SimpleRecipeHandlerSecondaryOutput.OreRefinery(); - public final SimpleRecipeHandler grinder = new SimpleRecipeHandler.RotaryGrinder(); - public final PrimordialisReactor primordialisReactor = new PrimordialisReactor(); - public final SimpleRecipeHandlerSecondaryOutput sawmill = new SimpleRecipeHandlerSecondaryOutput.HeatSawmill(); - public final Solderer solderer = new Solderer(); - public final ZorraAltar zorraAltar = new ZorraAltar(); - -} +package com.cleanroommc.groovyscript.compat.mods.prodigytech; + +import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; + +public class ProdigyTech extends GroovyPropertyContainer { + + public final AtomicReshaper atomicReshaper = new AtomicReshaper(); + public final ExplosionFurnace explosionFurnace = new ExplosionFurnace(); + public final ExplosionFurnaceAdditives explosionAdditives = new ExplosionFurnaceAdditives(); + public final SimpleRecipeHandler magneticReassembler = new SimpleRecipeHandler.MagneticReassembler(); + public final SimpleRecipeHandlerSecondaryOutput oreRefinery = new SimpleRecipeHandlerSecondaryOutput.OreRefinery(); + public final SimpleRecipeHandler grinder = new SimpleRecipeHandler.RotaryGrinder(); + public final PrimordialisReactor primordialisReactor = new PrimordialisReactor(); + public final SimpleRecipeHandlerSecondaryOutput sawmill = new SimpleRecipeHandlerSecondaryOutput.HeatSawmill(); + public final Solderer solderer = new Solderer(); + public final ZorraAltar zorraAltar = new ZorraAltar(); +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/SimpleRecipeHandler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/SimpleRecipeHandler.java index 9cae6add8..2377f442e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/SimpleRecipeHandler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/SimpleRecipeHandler.java @@ -1,117 +1,117 @@ -package com.cleanroommc.groovyscript.compat.mods.prodigytech; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import lykrast.prodigytech.common.recipe.MagneticReassemblerManager; -import lykrast.prodigytech.common.recipe.RotaryGrinderManager; -import lykrast.prodigytech.common.recipe.SimpleRecipe; -import lykrast.prodigytech.common.recipe.SimpleRecipeManager; -import lykrast.prodigytech.common.util.Config; -import net.minecraft.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -public abstract class SimpleRecipeHandler extends SimpleRecipeHandlerAbstract { - - @RecipeBuilderDescription(example = { - @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:diamond')).time(50)"), - @Example(".input(item('minecraft:iron_ingot')).output(item('minecraft:coal'))") - }) - public SimpleRecipeHandler.RecipeBuilder recipeBuilder() { - return new SimpleRecipeHandler.RecipeBuilder(); - } - - SimpleRecipeHandler(String name, SimpleRecipeManager instance) { - super(name, instance); - } - - @Property(property = "input", comp = @Comp(eq = 1)) - @Property(property = "output", comp = @Comp(eq = 1)) - public class RecipeBuilder extends AbstractRecipeBuilder { - - @Property(comp = @Comp(gte = 1), defaultValue = "(default time for this machine in the mod's config)") - private int time = getDefaultTime(); - - @RecipeBuilderMethodDescription - public RecipeBuilder time(int time) { - this.time = time; - return this; - } - - @Override - protected int getMaxItemInput() { - // PT modifies the recipe to only consume 1 item - return 1; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 1, 1, 1); - validateFluids(msg); - msg.add(time <= 0, "time must be greater than 0, got {}", time); - } - - @Override - public String getErrorMsg() { - return String.format("Error adding ProdigyTech %s Recipe", SimpleRecipeHandler.this.name); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable SimpleRecipe register() { - if (!validate()) return null; - SimpleRecipe recipe = null; - IIngredient input1 = input.get(0); - if (input1 instanceof OreDictIngredient) { - recipe = new SimpleRecipe(((OreDictIngredient) input1).getOreDict(), output.get(0), time); - addRecipe(recipe); - } else { - for (ItemStack input : input1.getMatchingStacks()) { - recipe = new SimpleRecipe(input, output.get(0), time); - addRecipe(recipe); - } - } - return recipe; - } - } - - @RegistryDescription - public static class RotaryGrinder extends SimpleRecipeHandler { - - RotaryGrinder() { - super("Rotary Grinder", RotaryGrinderManager.INSTANCE); - } - - @Override - protected int getDefaultTime() { - return Config.rotaryGrinderProcessTime; - } - - @Override - @MethodDescription(example = @Example("item('minecraft:gravel')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - } - - @RegistryDescription - public static class MagneticReassembler extends SimpleRecipeHandler { - - MagneticReassembler() { - super("Magnetic Reassembler", MagneticReassemblerManager.INSTANCE); - } - - @Override - protected int getDefaultTime() { - return Config.magneticReassemblerProcessTime; - } - - @Override - @MethodDescription(example = @Example("item('minecraft:gravel')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.prodigytech; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import lykrast.prodigytech.common.recipe.MagneticReassemblerManager; +import lykrast.prodigytech.common.recipe.RotaryGrinderManager; +import lykrast.prodigytech.common.recipe.SimpleRecipe; +import lykrast.prodigytech.common.recipe.SimpleRecipeManager; +import lykrast.prodigytech.common.util.Config; +import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +public abstract class SimpleRecipeHandler extends SimpleRecipeHandlerAbstract { + + @RecipeBuilderDescription(example = { + @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:diamond')).time(50)"), + @Example(".input(item('minecraft:iron_ingot')).output(item('minecraft:coal'))") + }) + public SimpleRecipeHandler.RecipeBuilder recipeBuilder() { + return new SimpleRecipeHandler.RecipeBuilder(); + } + + SimpleRecipeHandler(String name, SimpleRecipeManager instance) { + super(name, instance); + } + + @Property(property = "input", comp = @Comp(eq = 1)) + @Property(property = "output", comp = @Comp(eq = 1)) + public class RecipeBuilder extends AbstractRecipeBuilder { + + @Property(comp = @Comp(gte = 1), defaultValue = "(default time for this machine in the mod's config)") + private int time = getDefaultTime(); + + @RecipeBuilderMethodDescription + public RecipeBuilder time(int time) { + this.time = time; + return this; + } + + @Override + protected int getMaxItemInput() { + // PT modifies the recipe to only consume 1 item + return 1; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 1, 1, 1); + validateFluids(msg); + msg.add(time <= 0, "time must be greater than 0, got {}", time); + } + + @Override + public String getErrorMsg() { + return String.format("Error adding ProdigyTech %s Recipe", SimpleRecipeHandler.this.name); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable SimpleRecipe register() { + if (!validate()) return null; + SimpleRecipe recipe = null; + IIngredient input1 = input.get(0); + if (input1 instanceof OreDictIngredient) { + recipe = new SimpleRecipe(((OreDictIngredient) input1).getOreDict(), output.get(0), time); + addRecipe(recipe); + } else { + for (ItemStack input : input1.getMatchingStacks()) { + recipe = new SimpleRecipe(input, output.get(0), time); + addRecipe(recipe); + } + } + return recipe; + } + } + + @RegistryDescription + public static class RotaryGrinder extends SimpleRecipeHandler { + + RotaryGrinder() { + super("Rotary Grinder", RotaryGrinderManager.INSTANCE); + } + + @Override + protected int getDefaultTime() { + return Config.rotaryGrinderProcessTime; + } + + @Override + @MethodDescription(example = @Example("item('minecraft:gravel')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + } + + @RegistryDescription + public static class MagneticReassembler extends SimpleRecipeHandler { + + MagneticReassembler() { + super("Magnetic Reassembler", MagneticReassemblerManager.INSTANCE); + } + + @Override + protected int getDefaultTime() { + return Config.magneticReassemblerProcessTime; + } + + @Override + @MethodDescription(example = @Example("item('minecraft:gravel')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/SimpleRecipeHandlerSecondaryOutput.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/SimpleRecipeHandlerSecondaryOutput.java index 9931036b6..05b81d28e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/SimpleRecipeHandlerSecondaryOutput.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/SimpleRecipeHandlerSecondaryOutput.java @@ -1,127 +1,127 @@ -package com.cleanroommc.groovyscript.compat.mods.prodigytech; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import lykrast.prodigytech.common.recipe.*; -import lykrast.prodigytech.common.util.Config; -import net.minecraft.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -public abstract class SimpleRecipeHandlerSecondaryOutput extends SimpleRecipeHandlerAbstract { - - @RecipeBuilderDescription(example = { - @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:diamond')).time(50)"), - @Example(".input(item('minecraft:iron_ingot')).output(item('minecraft:coal'))"), - @Example(".input(item('minecraft:iron_block')).output(item('minecraft:emerald'), item('minecraft:clay'))"), - @Example(".input(item('minecraft:gold_block')).output(item('minecraft:emerald'), item('minecraft:nether_star')).secondaryChance(0.25).time(50)") - }) - public SimpleRecipeHandlerSecondaryOutput.RecipeBuilder recipeBuilder() { - return new SimpleRecipeHandlerSecondaryOutput.RecipeBuilder(); - } - - SimpleRecipeHandlerSecondaryOutput(String name, SimpleRecipeManagerSecondaryOutput instance) { - super(name, instance); - } - - @Property(property = "input", comp = @Comp(eq = 1)) - @Property(property = "output", comp = @Comp(gte = 1, lte = 2)) - public class RecipeBuilder extends AbstractRecipeBuilder { - - @Property(comp = @Comp(gte = 1)) - private int time = getDefaultTime(); - - @Property(comp = @Comp(lte = 1), defaultValue = "1.0f") - private float secondaryChance = 1.0f; - - @RecipeBuilderMethodDescription - public SimpleRecipeHandlerSecondaryOutput.RecipeBuilder time(int time) { - this.time = time; - return this; - } - - @RecipeBuilderMethodDescription - public SimpleRecipeHandlerSecondaryOutput.RecipeBuilder secondaryChance(float secondaryOutput) { - this.secondaryChance = secondaryOutput; - return this; - } - - @Override - protected int getMaxItemInput() { - // PT modifies the recipe to only consume 1 item - return 1; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 1, 1, 2); - validateFluids(msg); - msg.add(time <= 0, "time must be greater than 0, got {}", time); - msg.add(secondaryChance > 1.0f || secondaryChance < 0.0f, "secondary output has to be between 0 and 1, got {}", secondaryChance); - } - - @Override - public String getErrorMsg() { - return String.format("Error adding ProdigyTech %s Recipe", SimpleRecipeHandlerSecondaryOutput.this.name); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable SimpleRecipeSecondaryOutput register() { - if (!validate()) return null; - SimpleRecipeSecondaryOutput recipe = null; - IIngredient input1 = input.get(0); - ItemStack secondaryOutput = output.size() == 1 ? ItemStack.EMPTY : output.get(1); - if (input1 instanceof OreDictIngredient) { - recipe = new SimpleRecipeSecondaryOutput(((OreDictIngredient) input1).getOreDict(), output.get(0), secondaryOutput, time, secondaryChance); - addRecipe(recipe); - } else { - for (ItemStack input : input1.getMatchingStacks()) { - recipe = new SimpleRecipeSecondaryOutput(input, output.get(0), secondaryOutput, time, secondaryChance); - addRecipe(recipe); - } - } - return recipe; - } - } - - @RegistryDescription - public static class HeatSawmill extends SimpleRecipeHandlerSecondaryOutput { - - HeatSawmill() { - super("Heat Sawmill", HeatSawmillManager.INSTANCE); - } - - @Override - protected int getDefaultTime() { - return Config.heatSawmillProcessTime; - } - - @Override - @MethodDescription(example = @Example("ore('plankWood')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - } - - @RegistryDescription - public static class OreRefinery extends SimpleRecipeHandlerSecondaryOutput { - - OreRefinery() { - super("Ore Refinery", OreRefineryManager.INSTANCE); - } - - @Override - protected int getDefaultTime() { - return Config.oreRefineryProcessTime; - } - - @Override - @MethodDescription(example = @Example("ore('oreLapis')")) - public boolean removeByInput(IIngredient input) { - return super.removeByInput(input); - } - } -} +package com.cleanroommc.groovyscript.compat.mods.prodigytech; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import lykrast.prodigytech.common.recipe.*; +import lykrast.prodigytech.common.util.Config; +import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +public abstract class SimpleRecipeHandlerSecondaryOutput extends SimpleRecipeHandlerAbstract { + + @RecipeBuilderDescription(example = { + @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:diamond')).time(50)"), + @Example(".input(item('minecraft:iron_ingot')).output(item('minecraft:coal'))"), + @Example(".input(item('minecraft:iron_block')).output(item('minecraft:emerald'), item('minecraft:clay'))"), + @Example(".input(item('minecraft:gold_block')).output(item('minecraft:emerald'), item('minecraft:nether_star')).secondaryChance(0.25).time(50)") + }) + public SimpleRecipeHandlerSecondaryOutput.RecipeBuilder recipeBuilder() { + return new SimpleRecipeHandlerSecondaryOutput.RecipeBuilder(); + } + + SimpleRecipeHandlerSecondaryOutput(String name, SimpleRecipeManagerSecondaryOutput instance) { + super(name, instance); + } + + @Property(property = "input", comp = @Comp(eq = 1)) + @Property(property = "output", comp = @Comp(gte = 1, lte = 2)) + public class RecipeBuilder extends AbstractRecipeBuilder { + + @Property(comp = @Comp(gte = 1)) + private int time = getDefaultTime(); + + @Property(comp = @Comp(lte = 1), defaultValue = "1.0f") + private float secondaryChance = 1.0f; + + @RecipeBuilderMethodDescription + public SimpleRecipeHandlerSecondaryOutput.RecipeBuilder time(int time) { + this.time = time; + return this; + } + + @RecipeBuilderMethodDescription + public SimpleRecipeHandlerSecondaryOutput.RecipeBuilder secondaryChance(float secondaryOutput) { + this.secondaryChance = secondaryOutput; + return this; + } + + @Override + protected int getMaxItemInput() { + // PT modifies the recipe to only consume 1 item + return 1; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 1, 1, 2); + validateFluids(msg); + msg.add(time <= 0, "time must be greater than 0, got {}", time); + msg.add(secondaryChance > 1.0f || secondaryChance < 0.0f, "secondary output has to be between 0 and 1, got {}", secondaryChance); + } + + @Override + public String getErrorMsg() { + return String.format("Error adding ProdigyTech %s Recipe", SimpleRecipeHandlerSecondaryOutput.this.name); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable SimpleRecipeSecondaryOutput register() { + if (!validate()) return null; + SimpleRecipeSecondaryOutput recipe = null; + IIngredient input1 = input.get(0); + ItemStack secondaryOutput = output.size() == 1 ? ItemStack.EMPTY : output.get(1); + if (input1 instanceof OreDictIngredient) { + recipe = new SimpleRecipeSecondaryOutput(((OreDictIngredient) input1).getOreDict(), output.get(0), secondaryOutput, time, secondaryChance); + addRecipe(recipe); + } else { + for (ItemStack input : input1.getMatchingStacks()) { + recipe = new SimpleRecipeSecondaryOutput(input, output.get(0), secondaryOutput, time, secondaryChance); + addRecipe(recipe); + } + } + return recipe; + } + } + + @RegistryDescription + public static class HeatSawmill extends SimpleRecipeHandlerSecondaryOutput { + + HeatSawmill() { + super("Heat Sawmill", HeatSawmillManager.INSTANCE); + } + + @Override + protected int getDefaultTime() { + return Config.heatSawmillProcessTime; + } + + @Override + @MethodDescription(example = @Example("ore('plankWood')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + } + + @RegistryDescription + public static class OreRefinery extends SimpleRecipeHandlerSecondaryOutput { + + OreRefinery() { + super("Ore Refinery", OreRefineryManager.INSTANCE); + } + + @Override + protected int getDefaultTime() { + return Config.oreRefineryProcessTime; + } + + @Override + @MethodDescription(example = @Example("ore('oreLapis')")) + public boolean removeByInput(IIngredient input) { + return super.removeByInput(input); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java index 8cca3a0db..ba346500a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java @@ -1,168 +1,168 @@ -package com.cleanroommc.groovyscript.compat.mods.prodigytech; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.helper.SimpleObjectStream; -import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import lykrast.prodigytech.common.recipe.SoldererManager; -import lykrast.prodigytech.common.util.Config; -import net.minecraft.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -@RegistryDescription -public class Solderer extends VirtualizedRegistry { - - @RecipeBuilderDescription(example = { - @Example(".pattern(item('minecraft:clay')).input(item('minecraft:gold_ingot')).output(item('minecraft:diamond')).gold(5).time(100)"), - @Example(".pattern(item('minecraft:coal_block')).output(item('minecraft:nether_star')).gold(75)"), - }) - public Solderer.RecipeBuilder recipeBuilder() { - return new Solderer.RecipeBuilder(); - } - - @Override - public void onReload() { - removeScripted().forEach(x -> SoldererManager.removeRecipe(x.getPattern(), x.getAdditive(), 9999)); - restoreFromBackup().forEach(SoldererManager::addRecipe); - } - - public void add(SoldererManager.SoldererRecipe recipe) { - if (recipe == null) return; - addScripted(recipe); - SoldererManager.addRecipe(recipe); - } - - public boolean remove(SoldererManager.SoldererRecipe recipe) { - if (recipe == null) return false; - addBackup(recipe); - return SoldererManager.removeRecipe(recipe.getPattern(), recipe.getAdditive(), 9999) != null; - } - - @MethodDescription(example = @Example("item('prodigytech:pattern_circuit_refined')")) - public boolean removeByPattern(IIngredient pattern) { - return SoldererManager.RECIPES.removeIf(r -> { - if (pattern.test(r.getPattern())) { - addBackup(r); - return true; - } - return false; - }); - } - - @MethodDescription(example = @Example("item('minecraft:iron_ingot')")) - public boolean removeByAdditive(IIngredient additive) { - return SoldererManager.RECIPES.removeIf(r -> { - if (r.requiresAdditive() && additive.test(r.getPattern())) { - addBackup(r); - return true; - } - return false; - }); - } - - @MethodDescription(example = @Example("item('prodigytech:circuit_refined')")) - public boolean removeByOutput(IIngredient output) { - return SoldererManager.RECIPES.removeIf(r -> { - if (output.test(r.getPattern())) { - addBackup(r); - return true; - } - return false; - }); - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeAll() { - SoldererManager.RECIPES.forEach(this::addBackup); - SoldererManager.removeAll(); - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeWithoutAdditive() { - SoldererManager.RECIPES.removeIf(r -> { - if (r.requiresAdditive()) return false; - addBackup(r); - return true; - }); - } - - @MethodDescription(type = MethodDescription.Type.QUERY) - public SimpleObjectStream streamRecipes() { - return new SimpleObjectStream<>(SoldererManager.RECIPES) - .setRemover(this::remove); - } - - @Property(property = "input", comp = @Comp(gte = 0, lte = 1)) - @Property(property = "output", comp = @Comp(eq = 1)) - public static class RecipeBuilder extends AbstractRecipeBuilder { - - @Property(comp = @Comp(gte = 1)) - private int time = Config.soldererProcessTime; - - @Property(comp = @Comp(gte = 1)) - private int gold; - - @Property(comp = @Comp(eq = 1)) - private IIngredient pattern; - - @RecipeBuilderMethodDescription - public Solderer.RecipeBuilder time(int time) { - this.time = time; - return this; - } - - @RecipeBuilderMethodDescription - public Solderer.RecipeBuilder gold(int gold) { - this.gold = gold; - return this; - } - - @RecipeBuilderMethodDescription - public Solderer.RecipeBuilder pattern(IIngredient pattern) { - this.pattern = pattern; - return this; - } - - @Override - public String getErrorMsg() { - return "Error adding ProdigyTech Solderer Recipe"; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 0, 1, 1, 1); - validateFluids(msg); - msg.add(gold <= 0, "gold must be greater than or equal to 1, yet it was {}", gold); - msg.add(IngredientHelper.isEmpty(pattern), "pattern cannot be empty"); - int capacity = Config.soldererMaxGold; - msg.add(gold > capacity, "gold must be less than or equal to the Solderer's capacity {}, yet it was {}", capacity, gold); - msg.add(time <= 0, "time must be greater than 0, got {}", time); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable SoldererManager.SoldererRecipe register() { - if (!validate()) return null; - SoldererManager.SoldererRecipe recipe = null; - for (ItemStack pat : pattern.getMatchingStacks()) { - if (input.isEmpty()) { - SoldererManager.SoldererRecipe theRecipe = new SoldererManager.SoldererRecipe(pat, ItemStack.EMPTY, output.get(0), gold, time); - ModSupport.PRODIGY_TECH.get().solderer.add(theRecipe); - if (recipe == null) recipe = theRecipe; - } else { - for (ItemStack additive : input.get(0).getMatchingStacks()) { - SoldererManager.SoldererRecipe theRecipe = new SoldererManager.SoldererRecipe(pat, additive, output.get(0), gold, time); - ModSupport.PRODIGY_TECH.get().solderer.add(theRecipe); - if (recipe == null) recipe = theRecipe; - } - } - } - - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.prodigytech; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import lykrast.prodigytech.common.recipe.SoldererManager; +import lykrast.prodigytech.common.util.Config; +import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +@RegistryDescription +public class Solderer extends VirtualizedRegistry { + + @RecipeBuilderDescription(example = { + @Example(".pattern(item('minecraft:clay')).input(item('minecraft:gold_ingot')).output(item('minecraft:diamond')).gold(5).time(100)"), + @Example(".pattern(item('minecraft:coal_block')).output(item('minecraft:nether_star')).gold(75)"), + }) + public Solderer.RecipeBuilder recipeBuilder() { + return new Solderer.RecipeBuilder(); + } + + @Override + public void onReload() { + removeScripted().forEach(x -> SoldererManager.removeRecipe(x.getPattern(), x.getAdditive(), 9999)); + restoreFromBackup().forEach(SoldererManager::addRecipe); + } + + public void add(SoldererManager.SoldererRecipe recipe) { + if (recipe == null) return; + addScripted(recipe); + SoldererManager.addRecipe(recipe); + } + + public boolean remove(SoldererManager.SoldererRecipe recipe) { + if (recipe == null) return false; + addBackup(recipe); + return SoldererManager.removeRecipe(recipe.getPattern(), recipe.getAdditive(), 9999) != null; + } + + @MethodDescription(example = @Example("item('prodigytech:pattern_circuit_refined')")) + public boolean removeByPattern(IIngredient pattern) { + return SoldererManager.RECIPES.removeIf(r -> { + if (pattern.test(r.getPattern())) { + addBackup(r); + return true; + } + return false; + }); + } + + @MethodDescription(example = @Example("item('minecraft:iron_ingot')")) + public boolean removeByAdditive(IIngredient additive) { + return SoldererManager.RECIPES.removeIf(r -> { + if (r.requiresAdditive() && additive.test(r.getPattern())) { + addBackup(r); + return true; + } + return false; + }); + } + + @MethodDescription(example = @Example("item('prodigytech:circuit_refined')")) + public boolean removeByOutput(IIngredient output) { + return SoldererManager.RECIPES.removeIf(r -> { + if (output.test(r.getPattern())) { + addBackup(r); + return true; + } + return false; + }); + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeAll() { + SoldererManager.RECIPES.forEach(this::addBackup); + SoldererManager.removeAll(); + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeWithoutAdditive() { + SoldererManager.RECIPES.removeIf(r -> { + if (r.requiresAdditive()) return false; + addBackup(r); + return true; + }); + } + + @MethodDescription(type = MethodDescription.Type.QUERY) + public SimpleObjectStream streamRecipes() { + return new SimpleObjectStream<>(SoldererManager.RECIPES) + .setRemover(this::remove); + } + + @Property(property = "input", comp = @Comp(gte = 0, lte = 1)) + @Property(property = "output", comp = @Comp(eq = 1)) + public static class RecipeBuilder extends AbstractRecipeBuilder { + + @Property(comp = @Comp(gte = 1)) + private int time = Config.soldererProcessTime; + + @Property(comp = @Comp(gte = 1)) + private int gold; + + @Property(comp = @Comp(eq = 1)) + private IIngredient pattern; + + @RecipeBuilderMethodDescription + public Solderer.RecipeBuilder time(int time) { + this.time = time; + return this; + } + + @RecipeBuilderMethodDescription + public Solderer.RecipeBuilder gold(int gold) { + this.gold = gold; + return this; + } + + @RecipeBuilderMethodDescription + public Solderer.RecipeBuilder pattern(IIngredient pattern) { + this.pattern = pattern; + return this; + } + + @Override + public String getErrorMsg() { + return "Error adding ProdigyTech Solderer Recipe"; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 0, 1, 1, 1); + validateFluids(msg); + msg.add(gold <= 0, "gold must be greater than or equal to 1, yet it was {}", gold); + msg.add(IngredientHelper.isEmpty(pattern), "pattern cannot be empty"); + int capacity = Config.soldererMaxGold; + msg.add(gold > capacity, "gold must be less than or equal to the Solderer's capacity {}, yet it was {}", capacity, gold); + msg.add(time <= 0, "time must be greater than 0, got {}", time); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable SoldererManager.SoldererRecipe register() { + if (!validate()) return null; + SoldererManager.SoldererRecipe recipe = null; + for (ItemStack pat : pattern.getMatchingStacks()) { + if (input.isEmpty()) { + SoldererManager.SoldererRecipe theRecipe = new SoldererManager.SoldererRecipe(pat, ItemStack.EMPTY, output.get(0), gold, time); + ModSupport.PRODIGY_TECH.get().solderer.add(theRecipe); + if (recipe == null) recipe = theRecipe; + } else { + for (ItemStack additive : input.get(0).getMatchingStacks()) { + SoldererManager.SoldererRecipe theRecipe = new SoldererManager.SoldererRecipe(pat, additive, output.get(0), gold, time); + ModSupport.PRODIGY_TECH.get().solderer.add(theRecipe); + if (recipe == null) recipe = theRecipe; + } + } + } + + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ZorraAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ZorraAltar.java index c28f19087..d383329db 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ZorraAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ZorraAltar.java @@ -1,120 +1,117 @@ -package com.cleanroommc.groovyscript.compat.mods.prodigytech; - -import com.cleanroommc.groovyscript.api.GroovyBlacklist; -import com.cleanroommc.groovyscript.api.documentation.annotations.Example; -import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; -import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import lykrast.prodigytech.common.recipe.ZorraAltarManager; -import lykrast.prodigytech.common.util.Config; -import net.minecraft.enchantment.Enchantment; - -import java.util.Map; -import java.util.Objects; - - -@RegistryDescription -public class ZorraAltar extends VirtualizedRegistry { - - @GroovyBlacklist - private static final Map managers = new Object2ObjectOpenHashMap<>(); - - ZorraAltar() { - managers.put("sword", ZorraAltarManager.SWORD); - managers.put("bow", ZorraAltarManager.BOW); - } - - public ZorraAltarManager createRegistry(String key) { - ZorraAltarManager manager = new ZorraAltarManager(); - managers.put(key, manager); - return manager; - } - - public ZorraAltarManager getRegistry(String key) { - return managers.get(key); - } - - @GroovyBlacklist - public void onReload() { - removeScripted().forEach(this::removeEnchantment); - restoreFromBackup().forEach(this::addEnchantment); - } - - private void addEnchantment(ZorraRecipeData recipe) { - if (!managers.containsKey(recipe.registry)) return; - managers.get(recipe.registry).addEnchant(recipe.enchantment, recipe.maxLevel); - } - - private void removeEnchantment(ZorraRecipeData recipe) { - if (!managers.containsKey(recipe.registry)) return; - managers.get(recipe.registry).removeEnchant(recipe.enchantment); - } - - @MethodDescription(example = { - @Example("'sword', enchantment('minecraft:power'), 10"), - @Example("'stick', enchantment('minecraft:knockback'), 20") - }) - public void addEnchantment(String registry, Enchantment enchantment, int maxLevel) { - if (!managers.containsKey(registry)) return; - managers.get(registry).addEnchant(enchantment, maxLevel); - addScripted(new ZorraRecipeData(registry, enchantment, maxLevel)); - } - - @MethodDescription(example = @Example("'sword', enchantment('minecraft:sharpness')")) - public boolean removeEnchantment(String registry, Enchantment enchantment) { - if (!managers.containsKey(registry)) return false; - int maxLevel = enchantment.getMaxLevel(); - if (maxLevel > 1) - maxLevel += Config.altarBonusLvl; - addBackup(new ZorraRecipeData(registry, enchantment, maxLevel)); - return managers.get(registry).removeEnchant(enchantment); - } - - @SuppressWarnings("ClassCanBeRecord") - public static final class ZorraRecipeData { - - private final String registry; - private final Enchantment enchantment; - private final int maxLevel; - - public ZorraRecipeData(String registry, Enchantment enchantment, int maxLevel) { - this.registry = registry; - this.enchantment = enchantment; - this.maxLevel = maxLevel; - } - - public String registry() {return registry;} - - public Enchantment enchantment() { - return enchantment; - } - - public int maxLevel() { - return maxLevel; - } - - @Override - public boolean equals(Object obj) { - if (obj == this) return true; - if (obj == null || obj.getClass() != this.getClass()) return false; - var that = (ZorraRecipeData) obj; - return Objects.equals(this.registry, that.registry) && - Objects.equals(this.enchantment, that.enchantment) && - this.maxLevel == that.maxLevel; - } - - @Override - public int hashCode() { - return Objects.hash(registry, enchantment, maxLevel); - } - - @Override - public String toString() { - return "ZorraRecipeData[" + - "registry=" + registry + ", " + - "enchantment=" + enchantment + ", " + - "maxLevel=" + maxLevel + ']'; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.prodigytech; + +import com.cleanroommc.groovyscript.api.GroovyBlacklist; +import com.cleanroommc.groovyscript.api.documentation.annotations.Example; +import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; +import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import lykrast.prodigytech.common.recipe.ZorraAltarManager; +import lykrast.prodigytech.common.util.Config; +import net.minecraft.enchantment.Enchantment; + +import java.util.Map; +import java.util.Objects; + + +@RegistryDescription +public class ZorraAltar extends VirtualizedRegistry { + + @GroovyBlacklist + private static final Map managers = new Object2ObjectOpenHashMap<>(); + + ZorraAltar() { + managers.put("sword", ZorraAltarManager.SWORD); + managers.put("bow", ZorraAltarManager.BOW); + } + + public ZorraAltarManager createRegistry(String key) { + ZorraAltarManager manager = new ZorraAltarManager(); + managers.put(key, manager); + return manager; + } + + public ZorraAltarManager getRegistry(String key) { + return managers.get(key); + } + + @GroovyBlacklist + public void onReload() { + removeScripted().forEach(this::removeEnchantment); + restoreFromBackup().forEach(this::addEnchantment); + } + + private void addEnchantment(ZorraRecipeData recipe) { + if (!managers.containsKey(recipe.registry)) return; + managers.get(recipe.registry).addEnchant(recipe.enchantment, recipe.maxLevel); + } + + private void removeEnchantment(ZorraRecipeData recipe) { + if (!managers.containsKey(recipe.registry)) return; + managers.get(recipe.registry).removeEnchant(recipe.enchantment); + } + + @MethodDescription(example = { + @Example("'sword', enchantment('minecraft:power'), 10"), + @Example("'stick', enchantment('minecraft:knockback'), 20") + }) + public void addEnchantment(String registry, Enchantment enchantment, int maxLevel) { + if (!managers.containsKey(registry)) return; + managers.get(registry).addEnchant(enchantment, maxLevel); + addScripted(new ZorraRecipeData(registry, enchantment, maxLevel)); + } + + @MethodDescription(example = @Example("'sword', enchantment('minecraft:sharpness')")) + public boolean removeEnchantment(String registry, Enchantment enchantment) { + if (!managers.containsKey(registry)) return false; + int maxLevel = enchantment.getMaxLevel(); + if (maxLevel > 1) + maxLevel += Config.altarBonusLvl; + addBackup(new ZorraRecipeData(registry, enchantment, maxLevel)); + return managers.get(registry).removeEnchant(enchantment); + } + + @SuppressWarnings("ClassCanBeRecord") + public static final class ZorraRecipeData { + + private final String registry; + private final Enchantment enchantment; + private final int maxLevel; + + public ZorraRecipeData(String registry, Enchantment enchantment, int maxLevel) { + this.registry = registry; + this.enchantment = enchantment; + this.maxLevel = maxLevel; + } + + public String registry() { + return registry; + } + + public Enchantment enchantment() { + return enchantment; + } + + public int maxLevel() { + return maxLevel; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + if (obj == null || obj.getClass() != this.getClass()) return false; + var that = (ZorraRecipeData) obj; + return Objects.equals(this.registry, that.registry) && Objects.equals(this.enchantment, that.enchantment) && this.maxLevel == that.maxLevel; + } + + @Override + public int hashCode() { + return Objects.hash(registry, enchantment, maxLevel); + } + + @Override + public String toString() { + return "ZorraRecipeData[" + "registry=" + registry + ", " + "enchantment=" + enchantment + ", " + "maxLevel=" + maxLevel + ']'; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/ProjectE.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/ProjectE.java index b4fdac473..fec3f5a5f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/ProjectE.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/ProjectE.java @@ -6,5 +6,4 @@ public class ProjectE extends GroovyPropertyContainer { public final EntityRandomizer entityRandomizer = new EntityRandomizer(); public final Transmutation transmutation = new Transmutation(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java index d490b66a9..3a0f5f006 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java @@ -79,7 +79,9 @@ public RecipeBuilder altOutput(IBlockState altOutput) { return this; } - @RecipeBuilderMethodDescription(field = {"output", "altOutput"}) + @RecipeBuilderMethodDescription(field = { + "output", "altOutput" + }) public RecipeBuilder output(IBlockState output, IBlockState altOutput) { this.output = output; this.altOutput = altOutput; @@ -104,7 +106,9 @@ public RecipeBuilder altOutput(Block altOutput) { return this; } - @RecipeBuilderMethodDescription(field = {"output", "altOutput"}) + @RecipeBuilderMethodDescription(field = { + "output", "altOutput" + }) public RecipeBuilder output(Block output, Block altOutput) { this.output = output.getDefaultState(); this.altOutput = altOutput.getDefaultState(); @@ -133,5 +137,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java index d44c6fa77..c495e06d0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java @@ -135,7 +135,7 @@ protected int getMaxItemInput() { // More than 1 item cannot be placed return 1; } - + @Override public void validate(GroovyLog.Msg msg) { validateItems(msg, 1, 1, 1, 1); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java index 810232082..24fa76931 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java @@ -19,8 +19,9 @@ public Barrel() { super(ModuleTechBasic.Registries.BARREL_RECIPE); } - @RecipeBuilderDescription(example = @Example( - ".input(item('minecraft:diamond'), item('minecraft:diamond'), item('minecraft:diamond'), item('minecraft:emerald')).fluidInput(fluid('water') * 1000).fluidOutput(fluid('amongium') * 1000).duration(1000).name('diamond_emerald_and_water_to_amongium')") + @RecipeBuilderDescription( + example = @Example( + ".input(item('minecraft:diamond'), item('minecraft:diamond'), item('minecraft:diamond'), item('minecraft:emerald')).fluidInput(fluid('water') * 1000).fluidOutput(fluid('amongium') * 1000).duration(1000).name('diamond_emerald_and_water_to_amongium')") ) public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/BrickOven.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/BrickOven.java index dfd124d72..6a105eb61 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/BrickOven.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/BrickOven.java @@ -6,18 +6,17 @@ import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; -import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; -import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.CampfireRecipe; import com.codetaylor.mc.pyrotech.modules.tech.machine.ModuleTechMachine; import com.codetaylor.mc.pyrotech.modules.tech.machine.recipe.BrickOvenRecipe; -import com.codetaylor.mc.pyrotech.modules.tech.machine.recipe.StoneOvenRecipe; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.Nullable; -@RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.pyrotech.oven.note0", - type = Admonition.Type.WARNING, - format = Admonition.Format.STANDARD, - hasTitle = true)) +@RegistryDescription( + admonition = @Admonition( + value = "groovyscript.wiki.pyrotech.oven.note0", + type = Admonition.Type.WARNING, + format = Admonition.Format.STANDARD, + hasTitle = true)) public class BrickOven extends ForgeRegistryWrapper { public BrickOven() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java index cb587dc36..48b256733 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java @@ -66,7 +66,9 @@ public static class RecipeBuilder extends AbstractRecipeBuilder { public StoneOven() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserHerb.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserHerb.java index d3153ea94..2471eb2de 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserHerb.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserHerb.java @@ -34,5 +34,4 @@ public void parse(InfoParserPackage info) { instance.add(info.getMessages(), herb, info.isPrettyNbt()); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserModifier.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserModifier.java index 6536d6d9d..44ba61ec4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserModifier.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserModifier.java @@ -40,5 +40,4 @@ public void parse(InfoParserPackage info) { instance.add(info.getMessages(), modifier, info.isPrettyNbt()); InfoParserTranslationKey.instance.add(info.getMessages(), modifier.getTranslationKey(), info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserSpell.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserSpell.java index c74eef8bf..c08b46f8a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserSpell.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/InfoParserSpell.java @@ -42,5 +42,4 @@ public void parse(InfoParserPackage info) { instance.add(info.getMessages(), spell, info.isPrettyNbt()); InfoParserTranslationKey.instance.add(info.getMessages(), spell.getTranslationKey(), info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java index fe22e79df..5f974529f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java @@ -39,5 +39,4 @@ public boolean remove(EntityLivingBase entity) { public boolean remove(EntityEntry entity) { return remove((Class) entity.getEntityClass()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java index 8fb57f9c7..7d9b443e8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java @@ -156,49 +156,63 @@ public RecipeBuilder blue2(float blue2) { return this; } - @RecipeBuilderMethodDescription(field = {"red1", "red2"}) + @RecipeBuilderMethodDescription(field = { + "red1", "red2" + }) public RecipeBuilder red(float red1, float red2) { this.red1 = red1; this.red2 = red2; return this; } - @RecipeBuilderMethodDescription(field = {"red1", "red2"}) + @RecipeBuilderMethodDescription(field = { + "red1", "red2" + }) public RecipeBuilder red(float red) { this.red1 = red; this.red2 = red; return this; } - @RecipeBuilderMethodDescription(field = {"green1", "green2"}) + @RecipeBuilderMethodDescription(field = { + "green1", "green2" + }) public RecipeBuilder green(float green1, float green2) { this.green1 = green1; this.green2 = green2; return this; } - @RecipeBuilderMethodDescription(field = {"green1", "green2"}) + @RecipeBuilderMethodDescription(field = { + "green1", "green2" + }) public RecipeBuilder green(float green) { this.green1 = green; this.green2 = green; return this; } - @RecipeBuilderMethodDescription(field = {"blue1", "blue2"}) + @RecipeBuilderMethodDescription(field = { + "blue1", "blue2" + }) public RecipeBuilder blue(float blue1, float blue2) { this.blue1 = blue1; this.blue2 = blue2; return this; } - @RecipeBuilderMethodDescription(field = {"blue1", "blue2"}) + @RecipeBuilderMethodDescription(field = { + "blue1", "blue2" + }) public RecipeBuilder blue(float blue) { this.blue1 = blue; this.blue2 = blue; return this; } - @RecipeBuilderMethodDescription(field = {"red1", "green1", "blue1", "red2", "green2", "blue2"}) + @RecipeBuilderMethodDescription(field = { + "red1", "green1", "blue1", "red2", "green2", "blue2" + }) public RecipeBuilder color(float red1, float green1, float blue1, float red2, float green2, float blue2) { this.red1 = red1; this.red2 = red2; @@ -209,7 +223,9 @@ public RecipeBuilder color(float red1, float green1, float blue1, float red2, fl return this; } - @RecipeBuilderMethodDescription(field = {"red1", "green1", "blue1", "red2", "green2", "blue2"}) + @RecipeBuilderMethodDescription(field = { + "red1", "green1", "blue1", "red2", "green2", "blue2" + }) public RecipeBuilder color(float red, float green, float blue) { this.red1 = red; this.red2 = red; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java index 9607c80a5..b4144c3ca 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java @@ -55,7 +55,6 @@ public static void reload() { MossConfigAccessor.getMossyStates().put(blockIn.getStateFromMeta(in.getMetadata()), blockOut.getStateFromMeta(out.getMetadata())); } } - } @MethodDescription(example = @Example("item('minecraft:stained_glass:3'), item('minecraft:stained_glass:4')"), type = MethodDescription.Type.ADDITION) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Predicates.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Predicates.java index ca78b3b80..7f7dda88c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Predicates.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Predicates.java @@ -129,8 +129,8 @@ public void validate(GroovyLog.Msg msg) { BlockStateContainer container = blockstate.getBlock().getBlockState(); BlockStatePredicate predicate = properties.isEmpty() - ? new StatePredicate(blockstate) - : new PropertyPredicate(blockstate, properties.stream().map(container::getProperty).collect(Collectors.toList())); + ? new StatePredicate(blockstate) + : new PropertyPredicate(blockstate, properties.stream().map(container::getProperty).collect(Collectors.toList())); if (above) return new BlockStateAbove(predicate); if (below) return new BlockStateBelow(predicate); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java index 1a979e63b..f0b1804bf 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java @@ -120,8 +120,7 @@ public static class RecipeBuilder extends AbstractRecipeBuilder { @com.cleanroommc.groovyscript.api.documentation.annotations.Property(comp = @Comp(not = "null")) private SpellBase spell; - public RecipeBuilder() { - } + public RecipeBuilder() {} public RecipeBuilder(SpellBase spell) { this.spell = spell; @@ -312,4 +312,4 @@ public void validate(GroovyLog.Msg msg) { return epicsquid.roots.modifiers.Cost.of(list.toArray(new IModifierCost[0])); } } -} \ No newline at end of file +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java index f98127a9e..86549993a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java @@ -96,10 +96,7 @@ public boolean removeByOutput(IBlockState output) { Collection> incoming = output.getPropertyKeys(); Collection> current = state.get().getPropertyKeys(); - if (state.get().getBlock() == output.getBlock() && - output.getPropertyKeys().stream().allMatch(prop -> incoming.contains(prop) && - current.contains(prop) && - state.get().getValue(prop).equals(output.getValue(prop))) + if (state.get().getBlock() == output.getBlock() && output.getPropertyKeys().stream().allMatch(prop -> incoming.contains(prop) && current.contains(prop) && state.get().getValue(prop).equals(output.getValue(prop))) ) { addBackup(x.getValue()); return true; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java index 386e44963..9680e3988 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java @@ -140,13 +140,17 @@ public void validate(GroovyLog.Msg msg) { public @Nullable ICondenserRecipe register() { if (!validate()) return null; - ICondenserRecipe recipe = new CondenserRecipe(output.get(0), input, modifier, bottle, - fluidInput.isEmpty() ? new FluidStack(FluidRegistry.WATER, 125) : fluidInput.getOrEmpty(0), - time, advanced); + ICondenserRecipe recipe = new CondenserRecipe( + output.get(0), + input, + modifier, + bottle, + fluidInput.isEmpty() ? new FluidStack(FluidRegistry.WATER, 125) : fluidInput.getOrEmpty(0), + time, + advanced); ModSupport.RUSTIC.get().alchemy.add(recipe); return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java index 74e76a782..40a88ef49 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java @@ -75,5 +75,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CondenserRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CondenserRecipe.java index a9ef17ff0..f9ff0de47 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CondenserRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CondenserRecipe.java @@ -48,8 +48,13 @@ public CondenserRecipe(@NotNull ItemStack output, List inputs, IIng } public CondenserRecipe( - @NotNull ItemStack output, List inputs, IIngredient modifier, IIngredient bottle, - @NotNull FluidStack fluid, int time, boolean advanced) { + @NotNull ItemStack output, + List inputs, + IIngredient modifier, + IIngredient bottle, + @NotNull FluidStack fluid, + int time, + boolean advanced) { this.output = output; this.fluid = fluid; this.bottle = bottle; @@ -61,10 +66,7 @@ public CondenserRecipe( @Override public boolean matches(Fluid fluid, ItemStack modifier, ItemStack bottle, ItemStack[] inputs) { - if (fluid == this.fluid.getFluid() && - (this.modifier == null || this.modifier.test(modifier)) && - (this.modifier != null || modifier.isEmpty()) && - (this.bottle == null || this.bottle.test(bottle))) { + if (fluid == this.fluid.getFluid() && (this.modifier == null || this.modifier.test(modifier)) && (this.modifier != null || modifier.isEmpty()) && (this.bottle == null || this.bottle.test(bottle))) { List tempInputs = new ArrayList<>(this.inputs); for (ItemStack stack : inputs) { if (stack != null && !stack.isEmpty()) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java index d18ee789d..04614e851 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java @@ -30,7 +30,9 @@ public Collection getRecipes() { return Recipes.crushingTubRecipes; } - @MethodDescription(example = {@Example("fluid('ironberryjuice')"), @Example("item('minecraft:sugar')")}) + @MethodDescription(example = { + @Example("fluid('ironberryjuice')"), @Example("item('minecraft:sugar')") + }) public boolean removeByOutput(IIngredient output) { return getRecipes().removeIf(entry -> { if (output.test(entry.getResult()) || output.test(entry.getByproduct())) { @@ -94,5 +96,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java index 4ceb2ab15..f1db2c422 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java @@ -95,5 +95,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/ExtendedEvaporatingBasinRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/ExtendedEvaporatingBasinRecipe.java index 458c4acdc..550f4f368 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/ExtendedEvaporatingBasinRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/ExtendedEvaporatingBasinRecipe.java @@ -17,5 +17,4 @@ public ExtendedEvaporatingBasinRecipe(ItemStack out, FluidStack in, int time) { public int getTime() { return time; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Rustic.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Rustic.java index 631095f31..c864ea098 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Rustic.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Rustic.java @@ -8,5 +8,4 @@ public class Rustic extends GroovyPropertyContainer { public final BrewingBarrel brewingBarrel = new BrewingBarrel(); public final CrushingTub crushingTub = new CrushingTub(); public final EvaporatingBasin evaporatingBasin = new EvaporatingBasin(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/TinkersComplement.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/TinkersComplement.java index 916939ff0..494cad6f7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/TinkersComplement.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/TinkersComplement.java @@ -6,5 +6,4 @@ public class TinkersComplement extends GroovyPropertyContainer { public final Melter melter = new Melter(); public final HighOven highOven = new HighOven(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractGeneratorRegistry.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractGeneratorRegistry.java index 991cecebb..3590c64d3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractGeneratorRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractGeneratorRegistry.java @@ -35,5 +35,4 @@ public void removeByInput(IIngredient input) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractGenericTechRebornRegistry.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractGenericTechRebornRegistry.java index a918f2228..176d13c91 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractGenericTechRebornRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractGenericTechRebornRegistry.java @@ -36,5 +36,4 @@ public void removeByOutput(IIngredient output) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractPraescriptumRegistry.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractPraescriptumRegistry.java index a005bce34..b553694b8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractPraescriptumRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AbstractPraescriptumRegistry.java @@ -47,5 +47,4 @@ public void removeByOutput(IIngredient output) { return false; }); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AlloySmelter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AlloySmelter.java index cd841ace3..0d87819dc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AlloySmelter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AlloySmelter.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AssemblingMachine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AssemblingMachine.java index 32e8b97ce..4fc485554 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AssemblingMachine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/AssemblingMachine.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/BlastFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/BlastFurnace.java index e5153457c..9d376a182 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/BlastFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/BlastFurnace.java @@ -88,5 +88,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Centrifuge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Centrifuge.java index 46b254273..4ac86c021 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Centrifuge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Centrifuge.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ChemicalReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ChemicalReactor.java index 4fc473686..1c6202912 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ChemicalReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ChemicalReactor.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Compressor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Compressor.java index 0a89e9856..f689b4bb4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Compressor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Compressor.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/DieselGenerator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/DieselGenerator.java index f4a2cba94..35bb8f3ea 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/DieselGenerator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/DieselGenerator.java @@ -79,5 +79,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/DistillationTower.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/DistillationTower.java index bd459a3b6..89a878114 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/DistillationTower.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/DistillationTower.java @@ -90,5 +90,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Extractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Extractor.java index 93c925ac0..7045aa674 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Extractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Extractor.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/FluidReplicator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/FluidReplicator.java index c8e5ca693..323d6b672 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/FluidReplicator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/FluidReplicator.java @@ -108,5 +108,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/FusionReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/FusionReactor.java index c8b848ec2..1bc808d12 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/FusionReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/FusionReactor.java @@ -135,5 +135,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/GasTurbine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/GasTurbine.java index c8596894f..1b4e0b805 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/GasTurbine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/GasTurbine.java @@ -79,5 +79,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Grinder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Grinder.java index ea1b5b60e..76454564f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Grinder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Grinder.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ImplosionCompressor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ImplosionCompressor.java index a066f50c2..52b4a03e0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ImplosionCompressor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ImplosionCompressor.java @@ -80,5 +80,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialElectrolyzer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialElectrolyzer.java index d31dc5200..cda0fbe9c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialElectrolyzer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialElectrolyzer.java @@ -90,5 +90,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialGrinder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialGrinder.java index 8aeb73d30..fbbf81970 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialGrinder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialGrinder.java @@ -104,5 +104,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialSawmill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialSawmill.java index 8fb2411bf..e0f687eca 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialSawmill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/IndustrialSawmill.java @@ -103,5 +103,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/PlasmaGenerator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/PlasmaGenerator.java index 9b25905c6..8a4e68e18 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/PlasmaGenerator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/PlasmaGenerator.java @@ -79,5 +79,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/PlateBendingMachine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/PlateBendingMachine.java index 9a31abfeb..88bb9eac6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/PlateBendingMachine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/PlateBendingMachine.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Scrapbox.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Scrapbox.java index 922889377..936ef5c16 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Scrapbox.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/Scrapbox.java @@ -71,5 +71,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/SemiFluidGenerator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/SemiFluidGenerator.java index 7982f22cd..befe342c5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/SemiFluidGenerator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/SemiFluidGenerator.java @@ -79,5 +79,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/SolidCanningMachine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/SolidCanningMachine.java index e78b92bc0..c8874c7b1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/SolidCanningMachine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/SolidCanningMachine.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/TechReborn.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/TechReborn.java index ece8eb8a2..37dfac84f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/TechReborn.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/TechReborn.java @@ -30,5 +30,4 @@ public class TechReborn extends GroovyPropertyContainer { public final ThermalGenerator thermalGenerator = new ThermalGenerator(); public final VacuumFreezer vacuumFreezer = new VacuumFreezer(); public final WireMill wireMill = new WireMill(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ThermalGenerator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ThermalGenerator.java index 5f87cd88a..371663e09 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ThermalGenerator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/ThermalGenerator.java @@ -79,5 +79,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/VacuumFreezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/VacuumFreezer.java index cd6790494..757662471 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/VacuumFreezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/VacuumFreezer.java @@ -78,5 +78,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/WireMill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/WireMill.java index 48ddc645e..5d3cfe9d7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/WireMill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/techreborn/WireMill.java @@ -89,5 +89,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java index e2a844294..fcb6dfb93 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java @@ -58,7 +58,6 @@ public CrucibleRecipe add(String researchKey, ItemStack result, IIngredient cata } public boolean remove(CrucibleRecipe recipe) { - Iterator recipeIterator = ThaumcraftApi.getCraftingRecipes().values().iterator(); Object r; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/DustTrigger.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/DustTrigger.java index 3941ef2b5..238712afe 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/DustTrigger.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/DustTrigger.java @@ -59,13 +59,11 @@ public boolean remove(IDustTrigger trigger) { boolean found = false; while (it.hasNext()) { final IDustTrigger registeredTrigger = it.next(); - if (trigger instanceof DustTriggerSimple && registeredTrigger instanceof DustTriggerSimple - && trigger.equals(registeredTrigger)) { + if (trigger instanceof DustTriggerSimple && registeredTrigger instanceof DustTriggerSimple && trigger.equals(registeredTrigger)) { it.remove(); addBackup(trigger); found = true; - } else if (trigger instanceof DustTriggerOre && registeredTrigger instanceof DustTriggerOre - && trigger.equals(registeredTrigger)) { + } else if (trigger instanceof DustTriggerOre && registeredTrigger instanceof DustTriggerOre && trigger.equals(registeredTrigger)) { it.remove(); addBackup(trigger); found = true; @@ -81,12 +79,10 @@ public void removeByOutput(ItemStack output) { while (it.hasNext()) { final IDustTrigger trigger = it.next(); try { - if (trigger instanceof DustTriggerSimple && simpleTriggerResult != null - && output.isItemEqual((ItemStack) simpleTriggerResult.get(trigger))) { + if (trigger instanceof DustTriggerSimple && simpleTriggerResult != null && output.isItemEqual((ItemStack) simpleTriggerResult.get(trigger))) { it.remove(); addBackup(trigger); - } else if (trigger instanceof DustTriggerOre && oreTriggerResult != null - && output.isItemEqual((ItemStack) oreTriggerResult.get(trigger))) { + } else if (trigger instanceof DustTriggerOre && oreTriggerResult != null && output.isItemEqual((ItemStack) oreTriggerResult.get(trigger))) { it.remove(); addBackup(trigger); } @@ -159,6 +155,5 @@ public void register() { ModSupport.THAUMCRAFT.get().dustTrigger.add(new DustTriggerSimple(research, target, output)); } } - } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfoParserAspect.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfoParserAspect.java index 93ae9f539..8a6b76810 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfoParserAspect.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfoParserAspect.java @@ -33,17 +33,17 @@ public String text(@NotNull AspectStack entry, boolean colored, boolean prettyNb public void parse(InfoParserPackage info) { if (info.getEntity() == null && info.getStack().isEmpty()) return; AspectList list = info.getStack().isEmpty() - ? AspectHelper.getEntityAspects(info.getEntity()) - : AspectHelper.getObjectAspects(info.getStack()); + ? AspectHelper.getEntityAspects(info.getEntity()) + : AspectHelper.getObjectAspects(info.getStack()); if (list == null) return; // convert it into groovyscript AspectStack, so we can easily represent quantity - List target = list.aspects.entrySet().stream() + List target = list.aspects.entrySet() + .stream() .map(x -> new AspectStack(x.getKey(), x.getValue())) .collect(Collectors.toList()); instance.add(info.getMessages(), target, info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/LootBag.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/LootBag.java index b5931557f..95400cddb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/LootBag.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/LootBag.java @@ -131,7 +131,5 @@ public int getWeight() { public int getRarity() { return rarity; } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Research.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Research.java index db63c5e99..a4ca5cd55 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Research.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Research.java @@ -234,8 +234,8 @@ public ResearchCategoryBuilder background2(String mod, String background2) { @RecipeBuilderRegistrationMethod public ResearchCategory register() { ResearchCategory category = background2 == null - ? new ResearchCategory(key, researchKey, formula, icon, background) - : new ResearchCategory(key, researchKey, formula, icon, background, background2); + ? new ResearchCategory(key, researchKey, formula, icon, background) + : new ResearchCategory(key, researchKey, formula, icon, background, background2); ModSupport.THAUMCRAFT.get().research.addCategory(category); return category; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneRecipeBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneRecipeBuilder.java index cdf34c899..13fa1472c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneRecipeBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneRecipeBuilder.java @@ -81,7 +81,8 @@ public String getRecipeNamePrefix() { @Override @RecipeBuilderRegistrationMethod public IRecipe register() { - GroovyLog.Msg msg = GroovyLog.msg("Error creating Thaumcraft Arcane Workbench recipe").error() + GroovyLog.Msg msg = GroovyLog.msg("Error creating Thaumcraft Arcane Workbench recipe") + .error() .add((keyBasedMatrix == null || keyBasedMatrix.length == 0) && (ingredientMatrix == null || ingredientMatrix.isEmpty()), () -> "No matrix was defined") .add(keyBasedMatrix != null && ingredientMatrix != null, () -> "A key based matrix AND a ingredient based matrix was defined. This is not allowed!"); if (msg.postIfNotEmpty()) return null; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java index fbdb781e1..34eb588ca 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java @@ -50,7 +50,8 @@ public ArcaneRecipeBuilder.Shapeless shapelessBuilder() { @MethodDescription(priority = 2000, example = @Example(commented = true)) public void removeAll() { - List recipes = ForgeRegistries.RECIPES.getValuesCollection().stream() + List recipes = ForgeRegistries.RECIPES.getValuesCollection() + .stream() .filter(recipe -> recipe instanceof IArcaneRecipe) .map(recipe -> (IArcaneRecipe) recipe) .collect(Collectors.toList()); @@ -60,4 +61,3 @@ public void removeAll() { } } } - diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ShapelessArcaneCR.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ShapelessArcaneCR.java index 433c1510b..f1b47a437 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ShapelessArcaneCR.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ShapelessArcaneCR.java @@ -30,7 +30,9 @@ public class ShapelessArcaneCR extends ShapelessArcaneRecipe implements ICraftin private final ShapelessCraftingRecipe craftingRecipe; public ShapelessArcaneCR(ItemStack output, List input, @Nullable Closure recipeFunction, @Nullable Closure recipeAction, String research, int vis, AspectList crystals) { - super(ArcaneWorkbench.DEFAULT, research, vis, crystals, output, new Object[]{Ingredient.EMPTY}); + super(ArcaneWorkbench.DEFAULT, research, vis, crystals, output, new Object[]{ + Ingredient.EMPTY + }); this.craftingRecipe = new ShapelessCraftingRecipe(output, input, recipeFunction, recipeAction); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/aspect/AspectHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/aspect/AspectHelper.java index b44a787f1..3d6ae4734 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/aspect/AspectHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/aspect/AspectHelper.java @@ -51,12 +51,10 @@ else if (aspectList.entity != null) public void addScripted(Object target, AspectStack aspect) { AtomicBoolean found = new AtomicBoolean(false); getScriptedRecipes().forEach(scriptedAspect -> { - if (target instanceof EntityEntry && scriptedAspect.entity != null - && ((EntityEntry) target).getName().equals(scriptedAspect.entity.getName())) { + if (target instanceof EntityEntry && scriptedAspect.entity != null && ((EntityEntry) target).getName().equals(scriptedAspect.entity.getName())) { found.set(true); scriptedAspect.addAspect(aspect); - } else if (target instanceof ItemStack && scriptedAspect.item != null - && ((ItemStack) target).isItemEqual(scriptedAspect.item)) { + } else if (target instanceof ItemStack && scriptedAspect.item != null && ((ItemStack) target).isItemEqual(scriptedAspect.item)) { found.set(true); scriptedAspect.addAspect(aspect); } @@ -76,12 +74,10 @@ else if (target instanceof EntityEntry) public void addBackup(Object target, AspectStack aspect) { AtomicBoolean found = new AtomicBoolean(false); getBackupRecipes().forEach(backupAspect -> { - if (target instanceof EntityEntry && backupAspect.entity != null - && ((EntityEntry) target).getName().equals(backupAspect.entity.getName())) { + if (target instanceof EntityEntry && backupAspect.entity != null && ((EntityEntry) target).getName().equals(backupAspect.entity.getName())) { found.set(true); backupAspect.addAspect(aspect); - } else if (target instanceof ItemStack && backupAspect.item != null - && ((ItemStack) target).isItemEqual(backupAspect.item)) { + } else if (target instanceof ItemStack && backupAspect.item != null && ((ItemStack) target).isItemEqual(backupAspect.item)) { found.set(true); backupAspect.addAspect(aspect); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/aspect/AspectListHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/aspect/AspectListHelper.java index 6d0404323..7602bf9bd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/aspect/AspectListHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/aspect/AspectListHelper.java @@ -64,5 +64,4 @@ public AspectList getAspectList() { return result; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/warp/Warp.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/warp/Warp.java index 99218714f..3a61108a5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/warp/Warp.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/warp/Warp.java @@ -61,5 +61,4 @@ public int getWarp() { return warp; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/warp/WarpItemStackExpansion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/warp/WarpItemStackExpansion.java index e644dcf6f..ea7a37243 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/warp/WarpItemStackExpansion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/warp/WarpItemStackExpansion.java @@ -12,5 +12,4 @@ public static void addWarp(ItemStack itemStack, int warp) { public static void clearWarp(ItemStack itemStack) { ModSupport.THAUMCRAFT.get().warp.removeWarp(itemStack); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java index 22ccb517c..d3532cc9c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java @@ -1,80 +1,80 @@ -package com.cleanroommc.groovyscript.compat.mods.theaurorian; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.StandardListRegistry; -import com.shiroroku.theaurorian.Recipes.MoonlightForgeRecipe; -import com.shiroroku.theaurorian.Recipes.MoonlightForgeRecipeHandler; -import net.minecraft.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; - -@RegistryDescription -public class MoonlightForge extends StandardListRegistry { - - @RecipeBuilderDescription(example = @Example(".input(item('minecraft:stone_sword'), item('minecraft:diamond')).output(item('minecraft:diamond_sword'))")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - public Collection getRecipes() { - return MoonlightForgeRecipeHandler.allRecipes; - } - - @MethodDescription(example = @Example("item('theaurorian:moonstonesword'), item('theaurorian:aurorianiteingot')")) - public boolean removeByInput(IIngredient input, IIngredient catalyst) { - return getRecipes().removeIf(r -> { - if (input.test(r.getInput1()) && catalyst.test(r.getInput2())) { - addBackup(r); - return true; - } - return false; - }); - } - - @MethodDescription(example = @Example("item('theaurorian:queenschipper')")) - public boolean removeByOutput(IIngredient output) { - return getRecipes().removeIf(r -> { - if (output.test(r.getOutput())) { - addBackup(r); - return true; - } - return false; - }); - } - - @Property(property = "input", comp = @Comp(eq = 2)) - @Property(property = "output", comp = @Comp(eq = 1)) - public static class RecipeBuilder extends AbstractRecipeBuilder { - - @Override - public String getErrorMsg() { - return "Error adding Moonlight Forge recipe"; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 2, 2, 1, 1); - validateFluids(msg); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable MoonlightForgeRecipe register() { - if (!validate()) return null; - MoonlightForgeRecipe recipe = null; - for (ItemStack input1 : input.get(0).getMatchingStacks()) { - for (ItemStack input2 : input.get(1).getMatchingStacks()) { - recipe = new MoonlightForgeRecipe(input1, input2, output.get(0)); - ModSupport.THE_AURORIAN.get().moonlightForge.add(recipe); - } - } - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.theaurorian; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.StandardListRegistry; +import com.shiroroku.theaurorian.Recipes.MoonlightForgeRecipe; +import com.shiroroku.theaurorian.Recipes.MoonlightForgeRecipeHandler; +import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; + +@RegistryDescription +public class MoonlightForge extends StandardListRegistry { + + @RecipeBuilderDescription(example = @Example(".input(item('minecraft:stone_sword'), item('minecraft:diamond')).output(item('minecraft:diamond_sword'))")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + public Collection getRecipes() { + return MoonlightForgeRecipeHandler.allRecipes; + } + + @MethodDescription(example = @Example("item('theaurorian:moonstonesword'), item('theaurorian:aurorianiteingot')")) + public boolean removeByInput(IIngredient input, IIngredient catalyst) { + return getRecipes().removeIf(r -> { + if (input.test(r.getInput1()) && catalyst.test(r.getInput2())) { + addBackup(r); + return true; + } + return false; + }); + } + + @MethodDescription(example = @Example("item('theaurorian:queenschipper')")) + public boolean removeByOutput(IIngredient output) { + return getRecipes().removeIf(r -> { + if (output.test(r.getOutput())) { + addBackup(r); + return true; + } + return false; + }); + } + + @Property(property = "input", comp = @Comp(eq = 2)) + @Property(property = "output", comp = @Comp(eq = 1)) + public static class RecipeBuilder extends AbstractRecipeBuilder { + + @Override + public String getErrorMsg() { + return "Error adding Moonlight Forge recipe"; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 2, 2, 1, 1); + validateFluids(msg); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable MoonlightForgeRecipe register() { + if (!validate()) return null; + MoonlightForgeRecipe recipe = null; + for (ItemStack input1 : input.get(0).getMatchingStacks()) { + for (ItemStack input2 : input.get(1).getMatchingStacks()) { + recipe = new MoonlightForgeRecipe(input1, input2, output.get(0)); + ModSupport.THE_AURORIAN.get().moonlightForge.add(recipe); + } + } + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java index 89277a601..cb054b482 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java @@ -1,78 +1,78 @@ -package com.cleanroommc.groovyscript.compat.mods.theaurorian; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.StandardListRegistry; -import com.shiroroku.theaurorian.Recipes.ScrapperRecipe; -import com.shiroroku.theaurorian.Recipes.ScrapperRecipeHandler; -import net.minecraft.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; - -@RegistryDescription -public class Scrapper extends StandardListRegistry { - - @RecipeBuilderDescription(example = @Example(".input(item('minecraft:stone_sword')).output(item('minecraft:cobblestone'))")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - public Collection getRecipes() { - return ScrapperRecipeHandler.allRecipes; - } - - @MethodDescription(example = @Example("item('minecraft:iron_sword')")) - public boolean removeByInput(IIngredient input) { - return getRecipes().removeIf(r -> { - if (input.test(r.getInput())) { - addBackup(r); - return true; - } - return false; - }); - } - - @MethodDescription(example = @Example("item('theaurorian:scrapaurorianite')")) - public boolean removeByOutput(IIngredient output) { - return getRecipes().removeIf(r -> { - if (output.test(r.getOutput())) { - addBackup(r); - return true; - } - return false; - }); - } - - @Property(property = "input", comp = @Comp(eq = 1)) - @Property(property = "output", comp = @Comp(eq = 1)) - public static class RecipeBuilder extends AbstractRecipeBuilder { - - @Override - public String getErrorMsg() { - return "Error adding Scrapper recipe"; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateItems(msg, 1, 1, 1, 1); - validateFluids(msg); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable ScrapperRecipe register() { - if (!validate()) return null; - ScrapperRecipe recipe = null; - for (ItemStack input1 : input.get(0).getMatchingStacks()) { - recipe = new ScrapperRecipe(input1, output.get(0)); - ModSupport.THE_AURORIAN.get().scrapper.add(recipe); - } - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.theaurorian; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.StandardListRegistry; +import com.shiroroku.theaurorian.Recipes.ScrapperRecipe; +import com.shiroroku.theaurorian.Recipes.ScrapperRecipeHandler; +import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; + +@RegistryDescription +public class Scrapper extends StandardListRegistry { + + @RecipeBuilderDescription(example = @Example(".input(item('minecraft:stone_sword')).output(item('minecraft:cobblestone'))")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + public Collection getRecipes() { + return ScrapperRecipeHandler.allRecipes; + } + + @MethodDescription(example = @Example("item('minecraft:iron_sword')")) + public boolean removeByInput(IIngredient input) { + return getRecipes().removeIf(r -> { + if (input.test(r.getInput())) { + addBackup(r); + return true; + } + return false; + }); + } + + @MethodDescription(example = @Example("item('theaurorian:scrapaurorianite')")) + public boolean removeByOutput(IIngredient output) { + return getRecipes().removeIf(r -> { + if (output.test(r.getOutput())) { + addBackup(r); + return true; + } + return false; + }); + } + + @Property(property = "input", comp = @Comp(eq = 1)) + @Property(property = "output", comp = @Comp(eq = 1)) + public static class RecipeBuilder extends AbstractRecipeBuilder { + + @Override + public String getErrorMsg() { + return "Error adding Scrapper recipe"; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateItems(msg, 1, 1, 1, 1); + validateFluids(msg); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable ScrapperRecipe register() { + if (!validate()) return null; + ScrapperRecipe recipe = null; + for (ItemStack input1 : input.get(0).getMatchingStacks()) { + recipe = new ScrapperRecipe(input1, output.get(0)); + ModSupport.THE_AURORIAN.get().scrapper.add(recipe); + } + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/TheAurorian.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/TheAurorian.java index 88c979838..703644e3c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/TheAurorian.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/TheAurorian.java @@ -1,10 +1,9 @@ -package com.cleanroommc.groovyscript.compat.mods.theaurorian; - -import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; - -public class TheAurorian extends GroovyPropertyContainer { - - public final Scrapper scrapper = new Scrapper(); - public final MoonlightForge moonlightForge = new MoonlightForge(); - -} +package com.cleanroommc.groovyscript.compat.mods.theaurorian; + +import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; + +public class TheAurorian extends GroovyPropertyContainer { + + public final Scrapper scrapper = new Scrapper(); + public final MoonlightForge moonlightForge = new MoonlightForge(); +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java index eec6f2438..1e90af3ef 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java @@ -15,8 +15,9 @@ import java.util.Objects; -@RegistryDescription(category = RegistryDescription.Category.ENTRIES, - admonition = @Admonition(value = "groovyscript.wiki.thermalexpansion.coolant.note0", type = Admonition.Type.WARNING)) +@RegistryDescription( + category = RegistryDescription.Category.ENTRIES, + admonition = @Admonition(value = "groovyscript.wiki.thermalexpansion.coolant.note0", type = Admonition.Type.WARNING)) public class Coolant extends VirtualizedRegistry { @Override @@ -80,7 +81,10 @@ public SimpleObjectStream streamRecipes() { @MethodDescription(priority = 2000, example = @Example(commented = true)) public void removeAll() { - CoolantManagerAccessor.getCoolantMap().keySet().stream().filter(CoolantManagerAccessor.getCoolantFactorMap()::containsKey) + CoolantManagerAccessor.getCoolantMap() + .keySet() + .stream() + .filter(CoolantManagerAccessor.getCoolantFactorMap()::containsKey) .forEach(x -> addBackup(new CoolantRecipe(x, CoolantManagerAccessor.getCoolantMap().getInt(x), CoolantManagerAccessor.getCoolantFactorMap().getInt(x)))); CoolantManagerAccessor.getCoolantMap().clear(); CoolantManagerAccessor.getCoolantFactorMap().clear(); @@ -116,9 +120,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (CoolantRecipe) obj; - return Objects.equals(this.fluid, that.fluid) && - this.rf == that.rf && - this.factor == that.factor; + return Objects.equals(this.fluid, that.fluid) && this.rf == that.rf && this.factor == that.factor; } @Override @@ -128,11 +130,7 @@ public int hashCode() { @Override public String toString() { - return "CoolantRecipe[" + - "fluid=" + fluid + ", " + - "rf=" + rf + ", " + - "factor=" + factor + ']'; + return "CoolantRecipe[" + "fluid=" + fluid + ", " + "rf=" + rf + ", " + "factor=" + factor + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Diffuser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Diffuser.java index 0996ef76b..cc7d5c48a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Diffuser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Diffuser.java @@ -70,7 +70,9 @@ public boolean remove(ItemStack input) { @MethodDescription(type = MethodDescription.Type.QUERY) public SimpleObjectStream streamRecipes() { - List list = DiffuserManagerAccessor.getReagentAmpMap().keySet().stream() + List list = DiffuserManagerAccessor.getReagentAmpMap() + .keySet() + .stream() .filter(DiffuserManagerAccessor.getReagentDurMap()::containsKey) .map(DiffuserRecipe::new) .collect(Collectors.toList()); @@ -79,7 +81,9 @@ public SimpleObjectStream streamRecipes() { @MethodDescription(priority = 2000, example = @Example(commented = true)) public void removeAll() { - DiffuserManagerAccessor.getReagentAmpMap().keySet().stream() + DiffuserManagerAccessor.getReagentAmpMap() + .keySet() + .stream() .filter(DiffuserManagerAccessor.getReagentDurMap()::containsKey) .map(DiffuserRecipe::new) .forEach(this::addBackup); @@ -121,9 +125,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (DiffuserRecipe) obj; - return Objects.equals(this.stack, that.stack) && - this.amplifier == that.amplifier && - this.duration == that.duration; + return Objects.equals(this.stack, that.stack) && this.amplifier == that.amplifier && this.duration == that.duration; } @Override @@ -133,11 +135,7 @@ public int hashCode() { @Override public String toString() { - return "DiffuserRecipe[" + - "stack=" + stack + ", " + - "amplifier=" + amplifier + ", " + - "duration=" + duration + ']'; + return "DiffuserRecipe[" + "stack=" + stack + ", " + "amplifier=" + amplifier + ", " + "duration=" + duration + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java index bf82f5a9c..a9d212de2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java @@ -202,5 +202,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Fisher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Fisher.java index bf31f9767..f6542f790 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Fisher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Fisher.java @@ -115,8 +115,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (FisherRecipe) obj; - return Objects.equals(this.fish, that.fish) && - this.weight == that.weight; + return Objects.equals(this.fish, that.fish) && this.weight == that.weight; } @Override @@ -126,10 +125,7 @@ public int hashCode() { @Override public String toString() { - return "FisherRecipe[" + - "fish=" + fish + ", " + - "weight=" + weight + ']'; + return "FisherRecipe[" + "fish=" + fish + ", " + "weight=" + weight + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/FisherBait.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/FisherBait.java index 044ab25f8..f0bd764cd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/FisherBait.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/FisherBait.java @@ -92,8 +92,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (FisherRecipe) obj; - return Objects.equals(this.bait, that.bait) && - this.multiplier == that.multiplier; + return Objects.equals(this.bait, that.bait) && this.multiplier == that.multiplier; } @Override @@ -103,10 +102,7 @@ public int hashCode() { @Override public String toString() { - return "FisherRecipe[" + - "bait=" + bait + ", " + - "multiplier=" + multiplier + ']'; + return "FisherRecipe[" + "bait=" + bait + ", " + "multiplier=" + multiplier + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java index 4c3d78ba0..791d2071b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java @@ -179,8 +179,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (TapperItemRecipe) obj; - return Objects.equals(this.itemWrapper, that.itemWrapper) && - Objects.equals(this.fluidStack, that.fluidStack); + return Objects.equals(this.itemWrapper, that.itemWrapper) && Objects.equals(this.fluidStack, that.fluidStack); } @Override @@ -190,9 +189,7 @@ public int hashCode() { @Override public String toString() { - return "TapperItemRecipe[" + - "itemWrapper=" + itemWrapper + ", " + - "fluidStack=" + fluidStack + ']'; + return "TapperItemRecipe[" + "itemWrapper=" + itemWrapper + ", " + "fluidStack=" + fluidStack + ']'; } } @@ -220,8 +217,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (TapperBlockRecipe) obj; - return Objects.equals(this.blockWrapper, that.blockWrapper) && - Objects.equals(this.fluidStack, that.fluidStack); + return Objects.equals(this.blockWrapper, that.blockWrapper) && Objects.equals(this.fluidStack, that.fluidStack); } @Override @@ -231,10 +227,7 @@ public int hashCode() { @Override public String toString() { - return "TapperBlockRecipe[" + - "blockWrapper=" + blockWrapper + ", " + - "fluidStack=" + fluidStack + ']'; + return "TapperBlockRecipe[" + "blockWrapper=" + blockWrapper + ", " + "fluidStack=" + fluidStack + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/TapperFertilizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/TapperFertilizer.java index dc95fb224..a4e6e03b7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/TapperFertilizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/TapperFertilizer.java @@ -92,8 +92,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (TapperRecipe) obj; - return Objects.equals(this.bait, that.bait) && - this.multiplier == that.multiplier; + return Objects.equals(this.bait, that.bait) && this.multiplier == that.multiplier; } @Override @@ -103,10 +102,7 @@ public int hashCode() { @Override public String toString() { - return "TapperRecipe[" + - "bait=" + bait + ", " + - "multiplier=" + multiplier + ']'; + return "TapperRecipe[" + "bait=" + bait + ", " + "multiplier=" + multiplier + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/TapperTree.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/TapperTree.java index ab3e18f31..5b647b8a9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/TapperTree.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/TapperTree.java @@ -117,8 +117,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (TapperTreeEntry) obj; - return Objects.equals(this.log, that.log) && - Objects.equals(this.leaf, that.leaf); + return Objects.equals(this.log, that.log) && Objects.equals(this.leaf, that.leaf); } @Override @@ -128,10 +127,7 @@ public int hashCode() { @Override public String toString() { - return "TapperTreeEntry[" + - "log=" + log + ", " + - "leaf=" + leaf + ']'; + return "TapperTreeEntry[" + "log=" + log + ", " + "leaf=" + leaf + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/XpCollector.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/XpCollector.java index 517639c47..15e39cb3a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/XpCollector.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/XpCollector.java @@ -43,9 +43,11 @@ public void add(ItemStack catalyst, int xp, int factor) { public boolean remove(ComparableItemStack comparableItemStack) { if (XpCollectorManagerAccessor.getCatalystMap().containsKey(comparableItemStack) && XpCollectorManagerAccessor.getCatalystFactorMap().containsKey(comparableItemStack)) { - addBackup(new XpCollectorRecipe(new ItemStack(comparableItemStack.item, comparableItemStack.metadata), - XpCollectorManagerAccessor.getCatalystMap().remove(comparableItemStack), - XpCollectorManagerAccessor.getCatalystFactorMap().remove(comparableItemStack))); + addBackup( + new XpCollectorRecipe( + new ItemStack(comparableItemStack.item, comparableItemStack.metadata), + XpCollectorManagerAccessor.getCatalystMap().remove(comparableItemStack), + XpCollectorManagerAccessor.getCatalystFactorMap().remove(comparableItemStack))); return true; } return false; @@ -77,7 +79,10 @@ public SimpleObjectStream streamRecipes() { @MethodDescription(priority = 2000, example = @Example(commented = true)) public void removeAll() { - XpCollectorManagerAccessor.getCatalystMap().keySet().stream().filter(XpCollectorManagerAccessor.getCatalystFactorMap()::containsKey) + XpCollectorManagerAccessor.getCatalystMap() + .keySet() + .stream() + .filter(XpCollectorManagerAccessor.getCatalystFactorMap()::containsKey) .forEach(x -> addBackup(new XpCollectorRecipe(new ItemStack(x.item, x.metadata), XpCollectorManagerAccessor.getCatalystMap().get(x), XpCollectorManagerAccessor.getCatalystFactorMap().get(x)))); XpCollectorManagerAccessor.getCatalystMap().clear(); XpCollectorManagerAccessor.getCatalystFactorMap().clear(); @@ -117,9 +122,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (XpCollectorRecipe) obj; - return Objects.equals(this.catalyst, that.catalyst) && - this.xp == that.xp && - this.factor == that.factor; + return Objects.equals(this.catalyst, that.catalyst) && this.xp == that.xp && this.factor == that.factor; } @Override @@ -129,11 +132,7 @@ public int hashCode() { @Override public String toString() { - return "XpCollectorRecipe[" + - "catalyst=" + catalyst + ", " + - "xp=" + xp + ", " + - "factor=" + factor + ']'; + return "XpCollectorRecipe[" + "catalyst=" + catalyst + ", " + "xp=" + xp + ", " + "factor=" + factor + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java index ac6ad0ffb..303b84f9d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java @@ -104,8 +104,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (CompressionRecipe) obj; - return Objects.equals(this.fluid, that.fluid) && - this.energy == that.energy; + return Objects.equals(this.fluid, that.fluid) && this.energy == that.energy; } @Override @@ -115,10 +114,7 @@ public int hashCode() { @Override public String toString() { - return "CompressionRecipe[" + - "fluid=" + fluid + ", " + - "energy=" + energy + ']'; + return "CompressionRecipe[" + "fluid=" + fluid + ", " + "energy=" + energy + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java index f87fd9628..5f16d6a1e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java @@ -101,8 +101,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (EnervationRecipe) obj; - return Objects.equals(this.comparableItemStack, that.comparableItemStack) && - this.energy == that.energy; + return Objects.equals(this.comparableItemStack, that.comparableItemStack) && this.energy == that.energy; } @Override @@ -112,10 +111,7 @@ public int hashCode() { @Override public String toString() { - return "EnervationRecipe[" + - "comparableItemStack=" + comparableItemStack + ", " + - "energy=" + energy + ']'; + return "EnervationRecipe[" + "comparableItemStack=" + comparableItemStack + ", " + "energy=" + energy + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java index 5fb2360a6..61817020d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java @@ -101,8 +101,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (LapidaryRecipe) obj; - return Objects.equals(this.comparableItemStack, that.comparableItemStack) && - this.energy == that.energy; + return Objects.equals(this.comparableItemStack, that.comparableItemStack) && this.energy == that.energy; } @Override @@ -112,10 +111,7 @@ public int hashCode() { @Override public String toString() { - return "LapidaryRecipe[" + - "comparableItemStack=" + comparableItemStack + ", " + - "energy=" + energy + ']'; + return "LapidaryRecipe[" + "comparableItemStack=" + comparableItemStack + ", " + "energy=" + energy + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java index d65802423..0b5d7932b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java @@ -104,8 +104,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (MagmaticRecipe) obj; - return Objects.equals(this.fluid, that.fluid) && - this.energy == that.energy; + return Objects.equals(this.fluid, that.fluid) && this.energy == that.energy; } @Override @@ -115,10 +114,7 @@ public int hashCode() { @Override public String toString() { - return "MagmaticRecipe[" + - "fluid=" + fluid + ", " + - "energy=" + energy + ']'; + return "MagmaticRecipe[" + "fluid=" + fluid + ", " + "energy=" + energy + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java index bfc4a90fe..57be9b66c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java @@ -101,8 +101,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (NumismaticRecipe) obj; - return Objects.equals(this.comparableItemStack, that.comparableItemStack) && - this.energy == that.energy; + return Objects.equals(this.comparableItemStack, that.comparableItemStack) && this.energy == that.energy; } @Override @@ -112,10 +111,7 @@ public int hashCode() { @Override public String toString() { - return "NumismaticRecipe[" + - "comparableItemStack=" + comparableItemStack + ", " + - "energy=" + energy + ']'; + return "NumismaticRecipe[" + "comparableItemStack=" + comparableItemStack + ", " + "energy=" + energy + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java index cb90b3d45..7fe8aa24a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java @@ -68,7 +68,9 @@ private List hash(ItemStack reactant, Fluid fluid) { return Arrays.asList((new ComparableItemStack(reactant)).hashCode(), fluid.getName().hashCode()); } - @MethodDescription(type = MethodDescription.Type.ADDITION, example = {@Example("item('minecraft:gunpowder')"), @Example("item('minecraft:clay')")}) + @MethodDescription(type = MethodDescription.Type.ADDITION, example = { + @Example("item('minecraft:gunpowder')"), @Example("item('minecraft:clay')") + }) public boolean addElementalReactant(ItemStack itemStack) { return ReactantManagerAccessor.getValidReactantsElemental().add(new ComparableItemStack(itemStack)) && elementalReactantStorage.addScripted(itemStack); } @@ -185,5 +187,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java index 2b770df8a..16176baf0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java @@ -101,8 +101,7 @@ public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (SteamRecipe) obj; - return Objects.equals(this.comparableItemStack, that.comparableItemStack) && - this.energy == that.energy; + return Objects.equals(this.comparableItemStack, that.comparableItemStack) && this.energy == that.energy; } @Override @@ -112,10 +111,7 @@ public int hashCode() { @Override public String toString() { - return "SteamRecipe[" + - "comparableItemStack=" + comparableItemStack + ", " + - "energy=" + energy + ']'; + return "SteamRecipe[" + "comparableItemStack=" + comparableItemStack + ", " + "energy=" + energy + ']'; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java index 637839cfe..928d51d38 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java @@ -51,13 +51,15 @@ public void onReload() { @GroovyBlacklist public void afterScriptLoad() { BrewerManagerAccessor.getValidationSet().clear(); - BrewerManagerAccessor.getValidationSet().addAll( - BrewerManagerAccessor.getRecipeMap().values().stream().map(BrewerRecipe::getInput).map(BrewerManager::convertInput).collect(Collectors.toList()) - ); + BrewerManagerAccessor.getValidationSet() + .addAll( + BrewerManagerAccessor.getRecipeMap().values().stream().map(BrewerRecipe::getInput).map(BrewerManager::convertInput).collect(Collectors.toList()) + ); BrewerManagerAccessor.getValidationFluids().clear(); - BrewerManagerAccessor.getValidationFluids().addAll( - BrewerManagerAccessor.getRecipeMap().values().stream().map(BrewerRecipe::getInputFluid).map(FluidStack::getFluid).map(Fluid::getName).collect(Collectors.toList()) - ); + BrewerManagerAccessor.getValidationFluids() + .addAll( + BrewerManagerAccessor.getRecipeMap().values().stream().map(BrewerRecipe::getInputFluid).map(FluidStack::getFluid).map(Fluid::getName).collect(Collectors.toList()) + ); } private List hash(BrewerRecipe recipe) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java index a4a772268..d094dafc9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java @@ -77,7 +77,9 @@ public boolean removeByInput(IIngredient input) { }); } - @MethodDescription(example = {@Example("fluid('redstone')"), @Example("item('minecraft:redstone')")}) + @MethodDescription(example = { + @Example("fluid('redstone')"), @Example("item('minecraft:redstone')") + }) public boolean removeByOutput(IIngredient output) { return CentrifugeManagerAccessor.getRecipeMap().values().removeIf(r -> { if (output.test(r.getFluid()) || r.getOutput().stream().anyMatch(output)) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java index ed70f7e4f..2e95bd31d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java @@ -45,11 +45,15 @@ public void onReload() { @ApiStatus.Internal public void afterScriptLoad() { CrucibleManagerAccessor.getLavaSet().clear(); - CrucibleManagerAccessor.getLavaSet().addAll(CrucibleManagerAccessor.getRecipeMap().values().stream() - .filter(x -> x.getOutput().getFluid() == FluidRegistry.LAVA) - .map(CrucibleRecipe::getInput) - .map(CrucibleManager::convertInput) - .collect(Collectors.toList())); + CrucibleManagerAccessor.getLavaSet() + .addAll( + CrucibleManagerAccessor.getRecipeMap() + .values() + .stream() + .filter(x -> x.getOutput().getFluid() == FluidRegistry.LAVA) + .map(CrucibleRecipe::getInput) + .map(CrucibleManager::convertInput) + .collect(Collectors.toList())); } public void add(CrucibleRecipe recipe) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java index d3348702c..a3e2320e8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java @@ -59,12 +59,14 @@ private List hash(ItemStack primaryInput, ItemS @ApiStatus.Internal public void afterScriptLoad() { EnchanterManagerAccessor.getValidationSet().clear(); - EnchanterManagerAccessor.getValidationSet().addAll( - EnchanterManagerAccessor.getRecipeMap().values().stream().map(EnchanterRecipe::getPrimaryInput).map(EnchanterManager::convertInput).collect(Collectors.toList()) - ); - EnchanterManagerAccessor.getValidationSet().addAll( - EnchanterManagerAccessor.getRecipeMap().values().stream().map(EnchanterRecipe::getSecondaryInput).map(EnchanterManager::convertInput).collect(Collectors.toList()) - ); + EnchanterManagerAccessor.getValidationSet() + .addAll( + EnchanterManagerAccessor.getRecipeMap().values().stream().map(EnchanterRecipe::getPrimaryInput).map(EnchanterManager::convertInput).collect(Collectors.toList()) + ); + EnchanterManagerAccessor.getValidationSet() + .addAll( + EnchanterManagerAccessor.getRecipeMap().values().stream().map(EnchanterRecipe::getSecondaryInput).map(EnchanterManager::convertInput).collect(Collectors.toList()) + ); } @MethodDescription(type = MethodDescription.Type.ADDITION, example = @Example("item('minecraft:clay')")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java index 511fb56ad..a8b4205ae 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java @@ -49,13 +49,15 @@ public void onReload() { @ApiStatus.Internal public void afterScriptLoad() { ExtruderManagerAccessor.getOutputListIgneous().clear(); - ExtruderManagerAccessor.getOutputListIgneous().addAll( - ExtruderManagerAccessor.getRecipeMapIgneous().values().stream().map(ExtruderRecipe::getOutput).collect(Collectors.toList()) - ); + ExtruderManagerAccessor.getOutputListIgneous() + .addAll( + ExtruderManagerAccessor.getRecipeMapIgneous().values().stream().map(ExtruderRecipe::getOutput).collect(Collectors.toList()) + ); ExtruderManagerAccessor.getOutputListSedimentary().clear(); - ExtruderManagerAccessor.getOutputListSedimentary().addAll( - ExtruderManagerAccessor.getRecipeMapSedimentary().values().stream().map(ExtruderRecipe::getOutput).collect(Collectors.toList()) - ); + ExtruderManagerAccessor.getOutputListSedimentary() + .addAll( + ExtruderManagerAccessor.getRecipeMapSedimentary().values().stream().map(ExtruderRecipe::getOutput).collect(Collectors.toList()) + ); } private Map map(boolean isSedimentary) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java index 402299454..1dd78377d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java @@ -58,12 +58,14 @@ private List hash(ItemStack primaryInput, ItemS @ApiStatus.Internal public void afterScriptLoad() { InsolatorManagerAccessor.getValidationSet().clear(); - InsolatorManagerAccessor.getValidationSet().addAll( - InsolatorManagerAccessor.getRecipeMap().values().stream().map(InsolatorRecipe::getPrimaryInput).map(InsolatorManager::convertInput).collect(Collectors.toList()) - ); - InsolatorManagerAccessor.getValidationSet().addAll( - InsolatorManagerAccessor.getRecipeMap().values().stream().map(InsolatorRecipe::getSecondaryInput).map(InsolatorManager::convertInput).collect(Collectors.toList()) - ); + InsolatorManagerAccessor.getValidationSet() + .addAll( + InsolatorManagerAccessor.getRecipeMap().values().stream().map(InsolatorRecipe::getPrimaryInput).map(InsolatorManager::convertInput).collect(Collectors.toList()) + ); + InsolatorManagerAccessor.getValidationSet() + .addAll( + InsolatorManagerAccessor.getRecipeMap().values().stream().map(InsolatorRecipe::getSecondaryInput).map(InsolatorManager::convertInput).collect(Collectors.toList()) + ); } @MethodDescription(type = MethodDescription.Type.ADDITION) @@ -215,7 +217,6 @@ public void validate(GroovyLog.Msg msg) { ModSupport.THERMAL_EXPANSION.get().insolator.add(recipe1); if (recipe == null) recipe = recipe1; } - } return recipe; } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java index 369de4952..9d15a3a95 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java @@ -45,9 +45,10 @@ public void onReload() { @ApiStatus.Internal public void afterScriptLoad() { PrecipitatorManagerAccessor.getOutputList().clear(); - PrecipitatorManagerAccessor.getOutputList().addAll( - PrecipitatorManagerAccessor.getRecipeMap().values().stream().map(PrecipitatorManager.PrecipitatorRecipe::getOutput).collect(Collectors.toList()) - ); + PrecipitatorManagerAccessor.getOutputList() + .addAll( + PrecipitatorManagerAccessor.getRecipeMap().values().stream().map(PrecipitatorManager.PrecipitatorRecipe::getOutput).collect(Collectors.toList()) + ); } public void add(PrecipitatorRecipe recipe) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java index b8ba9ea47..3daa589ac 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java @@ -43,13 +43,15 @@ public void onReload() { @GroovyBlacklist public void afterScriptLoad() { TransposerManagerAccessor.getValidationSet().clear(); - TransposerManagerAccessor.getValidationSet().addAll( - TransposerManagerAccessor.getRecipeMapExtract().values().stream().map(TransposerManager.TransposerRecipe::getInput).map(TransposerManager::convertInput).collect(Collectors.toList()) - ); + TransposerManagerAccessor.getValidationSet() + .addAll( + TransposerManagerAccessor.getRecipeMapExtract().values().stream().map(TransposerManager.TransposerRecipe::getInput).map(TransposerManager::convertInput).collect(Collectors.toList()) + ); TransposerManagerAccessor.getValidationSet().clear(); - TransposerManagerAccessor.getValidationSet().addAll( - TransposerManagerAccessor.getRecipeMapFill().values().stream().map(TransposerManager.TransposerRecipe::getInput).map(TransposerManager::convertInput).collect(Collectors.toList()) - ); + TransposerManagerAccessor.getValidationSet() + .addAll( + TransposerManagerAccessor.getRecipeMapFill().values().stream().map(TransposerManager.TransposerRecipe::getInput).map(TransposerManager::convertInput).collect(Collectors.toList()) + ); } public void add(TransposerRecipe recipe) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java index 26b404a39..3f00d065b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java @@ -46,13 +46,15 @@ public void onReload() { @GroovyBlacklist public void afterScriptLoad() { TransposerManagerAccessor.getValidationSet().clear(); - TransposerManagerAccessor.getValidationSet().addAll( - TransposerManagerAccessor.getRecipeMapExtract().values().stream().map(TransposerManager.TransposerRecipe::getInput).map(TransposerManager::convertInput).collect(Collectors.toList()) - ); + TransposerManagerAccessor.getValidationSet() + .addAll( + TransposerManagerAccessor.getRecipeMapExtract().values().stream().map(TransposerManager.TransposerRecipe::getInput).map(TransposerManager::convertInput).collect(Collectors.toList()) + ); TransposerManagerAccessor.getValidationSet().clear(); - TransposerManagerAccessor.getValidationSet().addAll( - TransposerManagerAccessor.getRecipeMapFill().values().stream().map(TransposerManager.TransposerRecipe::getInput).map(TransposerManager::convertInput).collect(Collectors.toList()) - ); + TransposerManagerAccessor.getValidationSet() + .addAll( + TransposerManagerAccessor.getRecipeMapFill().values().stream().map(TransposerManager.TransposerRecipe::getInput).map(TransposerManager::convertInput).collect(Collectors.toList()) + ); } private List hash(TransposerRecipe recipe) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingBasin.java index 8f5a7d3aa..ada10c19e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingBasin.java @@ -1,144 +1,151 @@ -package com.cleanroommc.groovyscript.compat.mods.tinkersconstruct; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; -import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; -import com.cleanroommc.groovyscript.helper.Alias; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.StandardListRegistry; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import org.jetbrains.annotations.Nullable; -import slimeknights.tconstruct.library.smeltery.CastingRecipe; -import slimeknights.tconstruct.library.smeltery.ICastingRecipe; - -import java.util.Collection; - -@RegistryDescription -public class CastingBasin extends StandardListRegistry { - - @RecipeBuilderDescription(example = @Example(".fluidInput(fluid('water')).output(item('minecraft:dirt')).cast(item('minecraft:cobblestone')).coolingTime(40)")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - public CastingBasin() { - super(Alias.generateOfClass(CastingBasin.class).andGenerate("Basin")); - } - - @Override - public Collection getRecipes() { - return TinkerRegistryAccessor.getBasinCastRegistry(); - } - - @MethodDescription(example = @Example("item('minecraft:iron_block')")) - public boolean removeByOutput(ItemStack output) { - if (getRecipes().removeIf(recipe -> { - boolean found = ItemStack.areItemStacksEqual(recipe.getResult(ItemStack.EMPTY, FluidRegistry.WATER), output); - if (found) addBackup(recipe); - return found; - })) return true; - - GroovyLog.msg("Error removing Tinkers Construct Casting Basin recipe") - .add("could not find recipe with output {}", output) - .error() - .post(); - return false; - } - - @MethodDescription(example = @Example("fluid('clay')")) - public boolean removeByInput(FluidStack input) { - if (getRecipes().removeIf(recipe -> { - boolean found = recipe.getFluid(ItemStack.EMPTY, input.getFluid()).isFluidEqual(input); - if (found) addBackup(recipe); - return found; - })) return true; - - GroovyLog.msg("Error removing Tinkers Construct Casting Basin recipe") - .add("could not find recipe with input {}", input) - .error() - .post(); - return false; - } - - @MethodDescription(example = @Example("item('minecraft:planks:0')")) - public boolean removeByCast(IIngredient cast) { - ItemStack castStack = cast.getMatchingStacks()[0]; - if (getRecipes().removeIf(recipe -> { - boolean found = recipe.matches(castStack, recipe.getFluid(castStack, FluidRegistry.WATER).getFluid()); - if (found) addBackup(recipe); - return found; - })) return true; - - GroovyLog.msg("Error removing Tinkers Construct Casting Basin recipe") - .add("could not find recipe with cast {}", cast) - .error() - .post(); - return false; - } - - @Property(property = "fluidInput", comp = @Comp(eq = 1)) - @Property(property = "output", comp = @Comp(eq = 1)) - public class RecipeBuilder extends AbstractRecipeBuilder { - - @Property - private IIngredient cast; - @Property(defaultValue = "200", comp = @Comp(gte = 1)) - private int time = 200; - @Property - private boolean consumesCast; - - @RecipeBuilderMethodDescription(field = "time") - public RecipeBuilder coolingTime(int time) { - this.time = Math.max(time, 1); - return this; - } - - @RecipeBuilderMethodDescription - public RecipeBuilder consumesCast(boolean consumesCast) { - this.consumesCast = consumesCast; - return this; - } - - @RecipeBuilderMethodDescription - public RecipeBuilder consumesCast() { - return consumesCast(!consumesCast); - } - - @RecipeBuilderMethodDescription - public RecipeBuilder cast(IIngredient ingredient) { - this.cast = ingredient; - return this; - } - - @Override - public String getErrorMsg() { - return "Error adding Tinkers Construct Casting Basin recipe"; - } - - @Override - protected int getMaxItemInput() { - // More than 1 item cannot be placed - return 1; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateFluids(msg, 1, 1, 0, 0); - validateItems(msg, 0, 0, 1, 1); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable ICastingRecipe register() { - if (!validate()) return null; - CastingRecipe recipe = new CastingRecipe(output.get(0), cast != null ? MeltingRecipeBuilder.recipeMatchFromIngredient(cast) - : null, fluidInput.get(0), time, consumesCast, false); - add(recipe); - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.tinkersconstruct; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; +import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; +import com.cleanroommc.groovyscript.helper.Alias; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.StandardListRegistry; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.Nullable; +import slimeknights.tconstruct.library.smeltery.CastingRecipe; +import slimeknights.tconstruct.library.smeltery.ICastingRecipe; + +import java.util.Collection; + +@RegistryDescription +public class CastingBasin extends StandardListRegistry { + + @RecipeBuilderDescription(example = @Example(".fluidInput(fluid('water')).output(item('minecraft:dirt')).cast(item('minecraft:cobblestone')).coolingTime(40)")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + public CastingBasin() { + super(Alias.generateOfClass(CastingBasin.class).andGenerate("Basin")); + } + + @Override + public Collection getRecipes() { + return TinkerRegistryAccessor.getBasinCastRegistry(); + } + + @MethodDescription(example = @Example("item('minecraft:iron_block')")) + public boolean removeByOutput(ItemStack output) { + if (getRecipes().removeIf(recipe -> { + boolean found = ItemStack.areItemStacksEqual(recipe.getResult(ItemStack.EMPTY, FluidRegistry.WATER), output); + if (found) addBackup(recipe); + return found; + })) return true; + + GroovyLog.msg("Error removing Tinkers Construct Casting Basin recipe") + .add("could not find recipe with output {}", output) + .error() + .post(); + return false; + } + + @MethodDescription(example = @Example("fluid('clay')")) + public boolean removeByInput(FluidStack input) { + if (getRecipes().removeIf(recipe -> { + boolean found = recipe.getFluid(ItemStack.EMPTY, input.getFluid()).isFluidEqual(input); + if (found) addBackup(recipe); + return found; + })) return true; + + GroovyLog.msg("Error removing Tinkers Construct Casting Basin recipe") + .add("could not find recipe with input {}", input) + .error() + .post(); + return false; + } + + @MethodDescription(example = @Example("item('minecraft:planks:0')")) + public boolean removeByCast(IIngredient cast) { + ItemStack castStack = cast.getMatchingStacks()[0]; + if (getRecipes().removeIf(recipe -> { + boolean found = recipe.matches(castStack, recipe.getFluid(castStack, FluidRegistry.WATER).getFluid()); + if (found) addBackup(recipe); + return found; + })) return true; + + GroovyLog.msg("Error removing Tinkers Construct Casting Basin recipe") + .add("could not find recipe with cast {}", cast) + .error() + .post(); + return false; + } + + @Property(property = "fluidInput", comp = @Comp(eq = 1)) + @Property(property = "output", comp = @Comp(eq = 1)) + public class RecipeBuilder extends AbstractRecipeBuilder { + + @Property + private IIngredient cast; + @Property(defaultValue = "200", comp = @Comp(gte = 1)) + private int time = 200; + @Property + private boolean consumesCast; + + @RecipeBuilderMethodDescription(field = "time") + public RecipeBuilder coolingTime(int time) { + this.time = Math.max(time, 1); + return this; + } + + @RecipeBuilderMethodDescription + public RecipeBuilder consumesCast(boolean consumesCast) { + this.consumesCast = consumesCast; + return this; + } + + @RecipeBuilderMethodDescription + public RecipeBuilder consumesCast() { + return consumesCast(!consumesCast); + } + + @RecipeBuilderMethodDescription + public RecipeBuilder cast(IIngredient ingredient) { + this.cast = ingredient; + return this; + } + + @Override + public String getErrorMsg() { + return "Error adding Tinkers Construct Casting Basin recipe"; + } + + @Override + protected int getMaxItemInput() { + // More than 1 item cannot be placed + return 1; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateFluids(msg, 1, 1, 0, 0); + validateItems(msg, 0, 0, 1, 1); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable ICastingRecipe register() { + if (!validate()) return null; + CastingRecipe recipe = new CastingRecipe( + output.get(0), + cast != null + ? MeltingRecipeBuilder.recipeMatchFromIngredient(cast) + : null, + fluidInput.get(0), + time, + consumesCast, + false); + add(recipe); + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java index 157d80a2e..36c4438a7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java @@ -1,143 +1,150 @@ -package com.cleanroommc.groovyscript.compat.mods.tinkersconstruct; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; -import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; -import com.cleanroommc.groovyscript.helper.Alias; -import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; -import com.cleanroommc.groovyscript.registry.StandardListRegistry; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import org.jetbrains.annotations.Nullable; -import slimeknights.tconstruct.library.smeltery.CastingRecipe; -import slimeknights.tconstruct.library.smeltery.ICastingRecipe; - -import java.util.Collection; - -@RegistryDescription -public class CastingTable extends StandardListRegistry { - - @RecipeBuilderDescription(example = @Example(".fluidInput(fluid('lava') * 50).output(item('minecraft:diamond')).coolingTime(750).consumesCast(true).cast(ore('gemEmerald'))")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - public CastingTable() { - super(Alias.generateOfClass(CastingTable.class).andGenerate("Table")); - } - - @Override - public Collection getRecipes() { - return TinkerRegistryAccessor.getTableCastRegistry(); - } - - @MethodDescription(example = @Example("item('minecraft:gold_ingot')")) - public boolean removeByOutput(ItemStack output) { - if (getRecipes().removeIf(recipe -> { - boolean found = recipe.getResult(ItemStack.EMPTY, FluidRegistry.WATER).isItemEqual(output); - if (found) addBackup(recipe); - return found; - })) return true; - - GroovyLog.msg("Error removing Tinkers Construct Casting Table recipe") - .add("could not find recipe with output {}", output) - .error() - .post(); - return false; - } - - @MethodDescription(example = @Example("fluid('iron')")) - public boolean removeByInput(FluidStack input) { - if (getRecipes().removeIf(recipe -> { - boolean found = recipe.getFluid(ItemStack.EMPTY, input.getFluid()).isFluidEqual(input); - if (found) addBackup(recipe); - return found; - })) return true; - - GroovyLog.msg("Error removing Tinkers Construct Casting Table recipe") - .add("could not find recipe with input {}", input) - .error() - .post(); - return false; - } - - @MethodDescription(example = @Example("item('minecraft:bucket')")) - public boolean removeByCast(IIngredient cast) { - if (getRecipes().removeIf(recipe -> { - boolean found = recipe.matches(cast.getMatchingStacks()[0], recipe.getFluid(cast.getMatchingStacks()[0], FluidRegistry.WATER).getFluid()); - if (found) addBackup(recipe); - return found; - })) return true; - - GroovyLog.msg("Error removing Tinkers Construct Casting Table recipe") - .add("could not find recipe with cast {}", cast) - .error() - .post(); - return false; - } - - @Property(property = "fluidInput", comp = @Comp(eq = 1)) - @Property(property = "output", comp = @Comp(eq = 1)) - public class RecipeBuilder extends AbstractRecipeBuilder { - - @Property - private IIngredient cast; - @Property(defaultValue = "200", comp = @Comp(gte = 1)) - private int time = 200; - @Property - private boolean consumesCast; - - @RecipeBuilderMethodDescription(field = "time") - public RecipeBuilder coolingTime(int time) { - this.time = Math.max(time, 1); - return this; - } - - @RecipeBuilderMethodDescription - public RecipeBuilder consumesCast(boolean consumesCast) { - this.consumesCast = consumesCast; - return this; - } - - @RecipeBuilderMethodDescription - public RecipeBuilder consumesCast() { - return consumesCast(!consumesCast); - } - - @RecipeBuilderMethodDescription - public RecipeBuilder cast(IIngredient ingredient) { - this.cast = ingredient; - return this; - } - - @Override - public String getErrorMsg() { - return "Error adding Tinkers Construct Casting Table recipe"; - } - - @Override - protected int getMaxItemInput() { - // More than 1 item cannot be placed - return 1; - } - - @Override - public void validate(GroovyLog.Msg msg) { - validateFluids(msg, 1, 1, 0, 0); - validateItems(msg, 0, 0, 1, 1); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable ICastingRecipe register() { - if (!validate()) return null; - CastingRecipe recipe = new CastingRecipe(output.get(0), cast != null ? MeltingRecipeBuilder.recipeMatchFromIngredient(cast) - : null, fluidInput.get(0), time, consumesCast, false); - add(recipe); - return recipe; - } - } -} \ No newline at end of file +package com.cleanroommc.groovyscript.compat.mods.tinkersconstruct; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; +import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; +import com.cleanroommc.groovyscript.helper.Alias; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.StandardListRegistry; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.Nullable; +import slimeknights.tconstruct.library.smeltery.CastingRecipe; +import slimeknights.tconstruct.library.smeltery.ICastingRecipe; + +import java.util.Collection; + +@RegistryDescription +public class CastingTable extends StandardListRegistry { + + @RecipeBuilderDescription(example = @Example(".fluidInput(fluid('lava') * 50).output(item('minecraft:diamond')).coolingTime(750).consumesCast(true).cast(ore('gemEmerald'))")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + public CastingTable() { + super(Alias.generateOfClass(CastingTable.class).andGenerate("Table")); + } + + @Override + public Collection getRecipes() { + return TinkerRegistryAccessor.getTableCastRegistry(); + } + + @MethodDescription(example = @Example("item('minecraft:gold_ingot')")) + public boolean removeByOutput(ItemStack output) { + if (getRecipes().removeIf(recipe -> { + boolean found = recipe.getResult(ItemStack.EMPTY, FluidRegistry.WATER).isItemEqual(output); + if (found) addBackup(recipe); + return found; + })) return true; + + GroovyLog.msg("Error removing Tinkers Construct Casting Table recipe") + .add("could not find recipe with output {}", output) + .error() + .post(); + return false; + } + + @MethodDescription(example = @Example("fluid('iron')")) + public boolean removeByInput(FluidStack input) { + if (getRecipes().removeIf(recipe -> { + boolean found = recipe.getFluid(ItemStack.EMPTY, input.getFluid()).isFluidEqual(input); + if (found) addBackup(recipe); + return found; + })) return true; + + GroovyLog.msg("Error removing Tinkers Construct Casting Table recipe") + .add("could not find recipe with input {}", input) + .error() + .post(); + return false; + } + + @MethodDescription(example = @Example("item('minecraft:bucket')")) + public boolean removeByCast(IIngredient cast) { + if (getRecipes().removeIf(recipe -> { + boolean found = recipe.matches(cast.getMatchingStacks()[0], recipe.getFluid(cast.getMatchingStacks()[0], FluidRegistry.WATER).getFluid()); + if (found) addBackup(recipe); + return found; + })) return true; + + GroovyLog.msg("Error removing Tinkers Construct Casting Table recipe") + .add("could not find recipe with cast {}", cast) + .error() + .post(); + return false; + } + + @Property(property = "fluidInput", comp = @Comp(eq = 1)) + @Property(property = "output", comp = @Comp(eq = 1)) + public class RecipeBuilder extends AbstractRecipeBuilder { + + @Property + private IIngredient cast; + @Property(defaultValue = "200", comp = @Comp(gte = 1)) + private int time = 200; + @Property + private boolean consumesCast; + + @RecipeBuilderMethodDescription(field = "time") + public RecipeBuilder coolingTime(int time) { + this.time = Math.max(time, 1); + return this; + } + + @RecipeBuilderMethodDescription + public RecipeBuilder consumesCast(boolean consumesCast) { + this.consumesCast = consumesCast; + return this; + } + + @RecipeBuilderMethodDescription + public RecipeBuilder consumesCast() { + return consumesCast(!consumesCast); + } + + @RecipeBuilderMethodDescription + public RecipeBuilder cast(IIngredient ingredient) { + this.cast = ingredient; + return this; + } + + @Override + public String getErrorMsg() { + return "Error adding Tinkers Construct Casting Table recipe"; + } + + @Override + protected int getMaxItemInput() { + // More than 1 item cannot be placed + return 1; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateFluids(msg, 1, 1, 0, 0); + validateItems(msg, 0, 0, 1, 1); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable ICastingRecipe register() { + if (!validate()) return null; + CastingRecipe recipe = new CastingRecipe( + output.get(0), + cast != null + ? MeltingRecipeBuilder.recipeMatchFromIngredient(cast) + : null, + fluidInput.get(0), + time, + consumesCast, + false); + add(recipe); + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/EntityMelting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/EntityMelting.java index 0231b0278..8d9b686e4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/EntityMelting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/EntityMelting.java @@ -1,160 +1,160 @@ -package com.cleanroommc.groovyscript.compat.mods.tinkersconstruct; - -import com.cleanroommc.groovyscript.api.GroovyBlacklist; -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.EntityMeltingRecipe; -import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; -import com.cleanroommc.groovyscript.helper.SimpleObjectStream; -import com.cleanroommc.groovyscript.helper.recipe.IRecipeBuilder; -import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import net.minecraft.entity.EntityList; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fml.common.registry.EntityEntry; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.stream.Collectors; - -@RegistryDescription -public class EntityMelting extends VirtualizedRegistry { - - @RecipeBuilderDescription(example = @Example(".fluidOutput(fluid('iron') * 500).input(resource('minecraft:pig'))")) - public RecipeBuilder recipeBuilder() { - return new RecipeBuilder(); - } - - @Override - @GroovyBlacklist - public void onReload() { - removeScripted().forEach(recipe -> TinkerRegistryAccessor.getEntityMeltingRegistry().remove(recipe.name, recipe.result)); - restoreFromBackup().forEach(recipe -> TinkerRegistryAccessor.getEntityMeltingRegistry().put(recipe.name, recipe.result)); - } - - @MethodDescription(type = MethodDescription.Type.QUERY) - protected List getAllRecipes() { - return TinkerRegistryAccessor.getEntityMeltingRegistry().entrySet().stream().map(EntityMeltingRecipe::fromMapEntry).collect(Collectors.toList()); - } - - public EntityMeltingRecipe add(EntityEntry entity, FluidStack output) { - EntityMeltingRecipe recipe = new EntityMeltingRecipe(entity, output); - add(recipe); - return recipe; - } - - public void add(EntityMeltingRecipe recipe) { - if (recipe == null || recipe.name == null) return; - addScripted(recipe); - TinkerRegistryAccessor.getEntityMeltingRegistry().put(recipe.name, recipe.result); - } - - public boolean remove(EntityMeltingRecipe recipe) { - if (recipe == null || recipe.name == null) return false; - addBackup(recipe); - TinkerRegistryAccessor.getEntityMeltingRegistry().remove(recipe.name, recipe.result); - return true; - } - - @MethodDescription - public boolean removeByInput(EntityEntry entity) { - ResourceLocation name = entity.getRegistryName(); - if (TinkerRegistryAccessor.getEntityMeltingRegistry().entrySet().removeIf(entry -> { - boolean found = entry.getKey().equals(name); - if (found) addBackup(new EntityMeltingRecipe(entry.getKey(), entry.getValue())); - return found; - })) return true; - - GroovyLog.msg("Error removing Tinkers Construct Entity Melting recipe") - .add("could not find recipe with input {}", name) - .error() - .post(); - return false; - } - - @MethodDescription - public boolean removeByOutput(FluidStack output) { - if (TinkerRegistryAccessor.getEntityMeltingRegistry().entrySet().removeIf(entry -> { - boolean found = entry.getValue().isFluidEqual(output); - if (found) addBackup(new EntityMeltingRecipe(entry.getKey(), entry.getValue())); - return found; - })) return true; - - GroovyLog.msg("Error removing Tinkers Construct Entity Melting recipe") - .add("could not find recipe with output {}", output) - .error() - .post(); - return false; - } - - @MethodDescription(priority = 2000, example = @Example(commented = true)) - public void removeAll() { - TinkerRegistryAccessor.getEntityMeltingRegistry().forEach((name, result) -> addBackup(new EntityMeltingRecipe(name, result))); - TinkerRegistryAccessor.getEntityMeltingRegistry().clear(); - } - - @MethodDescription(type = MethodDescription.Type.QUERY) - public SimpleObjectStream streamRecipes() { - return new SimpleObjectStream<>(getAllRecipes()).setRemover(this::remove); - } - - public class RecipeBuilder implements IRecipeBuilder { - - @Property(comp = @Comp(not = "null")) - private FluidStack output; - @Property(comp = @Comp(not = "null")) - private ResourceLocation input; - - @RecipeBuilderMethodDescription(field = "output") - public RecipeBuilder fluidOutput(FluidStack stack) { - this.output = stack; - return this; - } - - @RecipeBuilderMethodDescription - public RecipeBuilder input(ResourceLocation name) { - this.input = name; - return this; - } - - @RecipeBuilderMethodDescription - public RecipeBuilder input(String name) { - return input(new ResourceLocation(name)); - } - - @RecipeBuilderMethodDescription - public RecipeBuilder input(String modid, String name) { - return input(new ResourceLocation(modid, name)); - } - - @RecipeBuilderMethodDescription - public RecipeBuilder input(EntityEntry entity) { - return input(entity.getRegistryName()); - } - - private String getErrorMsg() { - return "Error adding Tinkers Construct Entity Melting recipe"; - } - - private void validate(GroovyLog.Msg msg) { - msg.add(input == null || EntityList.getClass(input) == null, "Expected valid entity name, got " + input); - msg.add(output == null || output.amount < 1, "Expected 1 output fluid but found none!"); - } - - @Override - public boolean validate() { - GroovyLog.Msg msg = GroovyLog.msg(this.getErrorMsg()).error(); - this.validate(msg); - return !msg.postIfNotEmpty(); - } - - @Override - @RecipeBuilderRegistrationMethod - public @Nullable EntityMeltingRecipe register() { - if (!validate()) return null; - EntityMeltingRecipe recipe = new EntityMeltingRecipe(input, output); - add(recipe); - return recipe; - } - } -} +package com.cleanroommc.groovyscript.compat.mods.tinkersconstruct; + +import com.cleanroommc.groovyscript.api.GroovyBlacklist; +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.EntityMeltingRecipe; +import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; +import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.recipe.IRecipeBuilder; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import net.minecraft.entity.EntityList; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fml.common.registry.EntityEntry; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.stream.Collectors; + +@RegistryDescription +public class EntityMelting extends VirtualizedRegistry { + + @RecipeBuilderDescription(example = @Example(".fluidOutput(fluid('iron') * 500).input(resource('minecraft:pig'))")) + public RecipeBuilder recipeBuilder() { + return new RecipeBuilder(); + } + + @Override + @GroovyBlacklist + public void onReload() { + removeScripted().forEach(recipe -> TinkerRegistryAccessor.getEntityMeltingRegistry().remove(recipe.name, recipe.result)); + restoreFromBackup().forEach(recipe -> TinkerRegistryAccessor.getEntityMeltingRegistry().put(recipe.name, recipe.result)); + } + + @MethodDescription(type = MethodDescription.Type.QUERY) + protected List getAllRecipes() { + return TinkerRegistryAccessor.getEntityMeltingRegistry().entrySet().stream().map(EntityMeltingRecipe::fromMapEntry).collect(Collectors.toList()); + } + + public EntityMeltingRecipe add(EntityEntry entity, FluidStack output) { + EntityMeltingRecipe recipe = new EntityMeltingRecipe(entity, output); + add(recipe); + return recipe; + } + + public void add(EntityMeltingRecipe recipe) { + if (recipe == null || recipe.name == null) return; + addScripted(recipe); + TinkerRegistryAccessor.getEntityMeltingRegistry().put(recipe.name, recipe.result); + } + + public boolean remove(EntityMeltingRecipe recipe) { + if (recipe == null || recipe.name == null) return false; + addBackup(recipe); + TinkerRegistryAccessor.getEntityMeltingRegistry().remove(recipe.name, recipe.result); + return true; + } + + @MethodDescription + public boolean removeByInput(EntityEntry entity) { + ResourceLocation name = entity.getRegistryName(); + if (TinkerRegistryAccessor.getEntityMeltingRegistry().entrySet().removeIf(entry -> { + boolean found = entry.getKey().equals(name); + if (found) addBackup(new EntityMeltingRecipe(entry.getKey(), entry.getValue())); + return found; + })) return true; + + GroovyLog.msg("Error removing Tinkers Construct Entity Melting recipe") + .add("could not find recipe with input {}", name) + .error() + .post(); + return false; + } + + @MethodDescription + public boolean removeByOutput(FluidStack output) { + if (TinkerRegistryAccessor.getEntityMeltingRegistry().entrySet().removeIf(entry -> { + boolean found = entry.getValue().isFluidEqual(output); + if (found) addBackup(new EntityMeltingRecipe(entry.getKey(), entry.getValue())); + return found; + })) return true; + + GroovyLog.msg("Error removing Tinkers Construct Entity Melting recipe") + .add("could not find recipe with output {}", output) + .error() + .post(); + return false; + } + + @MethodDescription(priority = 2000, example = @Example(commented = true)) + public void removeAll() { + TinkerRegistryAccessor.getEntityMeltingRegistry().forEach((name, result) -> addBackup(new EntityMeltingRecipe(name, result))); + TinkerRegistryAccessor.getEntityMeltingRegistry().clear(); + } + + @MethodDescription(type = MethodDescription.Type.QUERY) + public SimpleObjectStream streamRecipes() { + return new SimpleObjectStream<>(getAllRecipes()).setRemover(this::remove); + } + + public class RecipeBuilder implements IRecipeBuilder { + + @Property(comp = @Comp(not = "null")) + private FluidStack output; + @Property(comp = @Comp(not = "null")) + private ResourceLocation input; + + @RecipeBuilderMethodDescription(field = "output") + public RecipeBuilder fluidOutput(FluidStack stack) { + this.output = stack; + return this; + } + + @RecipeBuilderMethodDescription + public RecipeBuilder input(ResourceLocation name) { + this.input = name; + return this; + } + + @RecipeBuilderMethodDescription + public RecipeBuilder input(String name) { + return input(new ResourceLocation(name)); + } + + @RecipeBuilderMethodDescription + public RecipeBuilder input(String modid, String name) { + return input(new ResourceLocation(modid, name)); + } + + @RecipeBuilderMethodDescription + public RecipeBuilder input(EntityEntry entity) { + return input(entity.getRegistryName()); + } + + private String getErrorMsg() { + return "Error adding Tinkers Construct Entity Melting recipe"; + } + + private void validate(GroovyLog.Msg msg) { + msg.add(input == null || EntityList.getClass(input) == null, "Expected valid entity name, got " + input); + msg.add(output == null || output.amount < 1, "Expected 1 output fluid but found none!"); + } + + @Override + public boolean validate() { + GroovyLog.Msg msg = GroovyLog.msg(this.getErrorMsg()).error(); + this.validate(msg); + return !msg.postIfNotEmpty(); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable EntityMeltingRecipe register() { + if (!validate()) return null; + EntityMeltingRecipe recipe = new EntityMeltingRecipe(input, output); + add(recipe); + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/SmelteryFuel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/SmelteryFuel.java index 8e35dcea0..124d5b403 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/SmelteryFuel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/SmelteryFuel.java @@ -22,6 +22,7 @@ public class SmelteryFuel extends VirtualizedRegistry { @GroovyBlacklist protected AbstractReloadableStorage createRecipeStorage() { return new AbstractReloadableStorage<>() { + @Override @GroovyBlacklist protected boolean compareRecipe(SmelteryFuelRecipe recipe, SmelteryFuelRecipe recipe2) { @@ -86,5 +87,4 @@ public void removeAll() { public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(getAllRecipes()).setRemover(this::remove); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/TinkersConstruct.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/TinkersConstruct.java index 9a1ca846e..a7900f445 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/TinkersConstruct.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/TinkersConstruct.java @@ -37,8 +37,9 @@ public void initialize(GroovyContainer container) { .register(); container.objectMapperBuilder("armorTrait", ITrait.class) .parser(IObjectParser.wrapStringGetter(s -> TinkerRegistryAccessor.getTraits().get(s + "_armor"))) - .completerOfNamed(TinkerRegistryAccessor.getTraits()::keySet, - v -> v.endsWith("_armor") ? v.substring(0, v.length() - 6) : null) // only suggest armor traits + .completerOfNamed( + TinkerRegistryAccessor.getTraits()::keySet, + v -> v.endsWith("_armor") ? v.substring(0, v.length() - 6) : null) // only suggest armor traits .docOfType("armor trait") .register(); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/material/GroovyMaterialIntegration.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/material/GroovyMaterialIntegration.java index dfa952a2c..a303e0fbe 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/material/GroovyMaterialIntegration.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/material/GroovyMaterialIntegration.java @@ -11,8 +11,7 @@ public GroovyMaterialIntegration(Material material) { } @Override - public void preInit() { - } + public void preInit() {} @Override public void integrate() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/recipe/MeltingRecipeBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/recipe/MeltingRecipeBuilder.java index f146c978a..a9c82a9dd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/recipe/MeltingRecipeBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/recipe/MeltingRecipeBuilder.java @@ -23,8 +23,9 @@ public class MeltingRecipeBuilder extends AbstractRecipeBuilder { private final String recipeName; public static RecipeMatch recipeMatchFromIngredient(IIngredient ingredient, int amount) { - return (ingredient instanceof OreDictIngredient) ? RecipeMatch.of(((OreDictIngredient) ingredient).getOreDict(), amount) - : RecipeMatch.of(ingredient.getMatchingStacks()[0], amount); + return (ingredient instanceof OreDictIngredient) + ? RecipeMatch.of(((OreDictIngredient) ingredient).getOreDict(), amount) + : RecipeMatch.of(ingredient.getMatchingStacks()[0], amount); } public static RecipeMatch recipeMatchFromIngredient(IIngredient ingredient) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Drops.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Drops.java index d9df5a2a7..2b5603e5b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Drops.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Drops.java @@ -30,8 +30,9 @@ public RecipeBuilder recipeBuilder() { @Override public void onReload() { restoreFromBackup().forEach(drop -> ((CustomDropsRepositoryAccessor) Woot.customDropsRepository).getDrops().add(drop)); - removeScripted().forEach(drop -> ((CustomDropsRepositoryAccessor) Woot.customDropsRepository).getDrops() - .removeIf(d -> areCustomDropsEqual((CustomDropAccessor) d, (CustomDropAccessor) drop)) + removeScripted().forEach( + drop -> ((CustomDropsRepositoryAccessor) Woot.customDropsRepository).getDrops() + .removeIf(d -> areCustomDropsEqual((CustomDropAccessor) d, (CustomDropAccessor) drop)) ); } @@ -110,17 +111,11 @@ public SimpleObjectStream streamRecipes() { } private boolean areCustomDropsEqual(CustomDropAccessor target, CustomDropAccessor other) { - return target.getWootMobName().equals(other.getWootMobName()) && - ItemStack.areItemStacksEqual(target.getItemStack(), other.getItemStack()) && - target.getChanceMap().equals(other.getChanceMap()) && - target.getSizeMap().equals(other.getSizeMap()); + return target.getWootMobName().equals(other.getWootMobName()) && ItemStack.areItemStacksEqual(target.getItemStack(), other.getItemStack()) && target.getChanceMap().equals(other.getChanceMap()) && target.getSizeMap().equals(other.getSizeMap()); } private boolean areCustomDropsEqual(CustomDropAccessor target, WootMobName wootMobName, ItemStack itemStack, List chances, List sizes) { - return target.getWootMobName().equals(wootMobName) && - ItemStack.areItemStacksEqual(target.getItemStack(), itemStack) && - target.getChanceMap().values().containsAll(chances) && - target.getSizeMap().values().containsAll(sizes); + return target.getWootMobName().equals(wootMobName) && ItemStack.areItemStacksEqual(target.getItemStack(), itemStack) && target.getChanceMap().values().containsAll(chances) && target.getSizeMap().values().containsAll(sizes); } @Property(property = "output", comp = @Comp(eq = 1)) @@ -224,5 +219,4 @@ public void validate(GroovyLog.Msg msg) { return null; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/MobConfig.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/MobConfig.java index 8f336e0e5..cf0da3fe4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/MobConfig.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/MobConfig.java @@ -22,7 +22,7 @@ public void onReload() { restoreFromBackup().forEach(pair -> ((WootConfigurationManagerAccessor) Woot.wootConfiguration).getIntegerMobMap().put(pair.getKey(), pair.getValue())); removeScripted().forEach(pair -> { if (pair.getKey().contains(":")) ((WootConfigurationManagerAccessor) Woot.wootConfiguration).getIntegerMobMap().remove(pair.getKey()); - else ((WootConfigurationManagerAccessor) Woot.wootConfiguration).getIntegerMap().put(EnumConfigKey.get(pair.getKey()), pair.getValue()); + else((WootConfigurationManagerAccessor) Woot.wootConfiguration).getIntegerMap().put(EnumConfigKey.get(pair.getKey()), pair.getValue()); }); } @@ -84,7 +84,9 @@ public void remove(String name, String key) { @MethodDescription(description = "groovyscript.wiki.woot.mob_config.removeByEntity", example = @Example("'minecraft:wither'")) public void remove(WootMobName name) { - for (Map.Entry entry : ((WootConfigurationManagerAccessor) Woot.wootConfiguration).getIntegerMobMap().entrySet().stream() + for (Map.Entry entry : ((WootConfigurationManagerAccessor) Woot.wootConfiguration).getIntegerMobMap() + .entrySet() + .stream() .filter(x -> x.getKey().startsWith(name.toString())) .collect(Collectors.toList())) { addBackup(Pair.of(entry.getKey(), entry.getValue())); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Policy.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Policy.java index dcc09f728..ef2862585 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Policy.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Policy.java @@ -196,5 +196,4 @@ public enum PolicyType { ENTITY_WHITELIST,//getExternalEntityWhitelist GENERATE_ONLY_LIST//getExternalGenerateOnlyList } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Spawning.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Spawning.java index 6c7f9eccb..45be6f2be 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Spawning.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Spawning.java @@ -165,8 +165,8 @@ public void validate(GroovyLog.Msg msg) { if (!validate()) return null; SpawnRecipe recipe = defaultSpawnRecipe - ? ((SpawnRecipeRepositoryAccessor) Woot.spawnRecipeRepository).getDefaultSpawnRecipe() - : new SpawnRecipe(); + ? ((SpawnRecipeRepositoryAccessor) Woot.spawnRecipeRepository).getDefaultSpawnRecipe() + : new SpawnRecipe(); for (IIngredient item : input) { recipe.addIngredient(item.getMatchingStacks()[0]); } @@ -179,5 +179,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java index ca29b1646..fe8791611 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java @@ -136,5 +136,4 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Woot.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Woot.java index af8c76a9b..7b590cace 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Woot.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/Woot.java @@ -9,5 +9,4 @@ public class Woot extends GroovyPropertyContainer { public final Spawning spawning = new Spawning(); public final Policy policy = new Policy(); public final MobConfig mobConfig = new MobConfig(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/CraftingRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/CraftingRecipe.java index 7f54438ff..3508e9d1c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/CraftingRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/CraftingRecipe.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.vanilla; + import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.core.mixin.InventoryCraftingAccess; import com.cleanroommc.groovyscript.core.mixin.SlotCraftingAccess; @@ -21,8 +22,6 @@ import java.util.ArrayList; import java.util.List; -import static java.util.stream.Collectors.toCollection; - public abstract class CraftingRecipe extends IForgeRegistryEntry.Impl implements IRecipe, ICraftingRecipe { protected final ItemStack output; @@ -123,6 +122,7 @@ public boolean matches(@NotNull InventoryCrafting inv, @NotNull World worldIn) { public static class MatchList extends ArrayList { public static final MatchList EMPTY = new MatchList() { + @Override public boolean add(SlotMatchResult slotMatchResult) { throw new UnsupportedOperationException(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/CraftingRecipeBuilder.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/CraftingRecipeBuilder.java index b97fbe3fb..2f2b40cda 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/CraftingRecipeBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/CraftingRecipeBuilder.java @@ -27,7 +27,8 @@ public String getRecipeNamePrefix() { @RecipeBuilderRegistrationMethod public IRecipe register() { validateName(); - GroovyLog.Msg msg = GroovyLog.msg("Error adding Minecraft Shaped Crafting recipe '{}'", this.name).error() + GroovyLog.Msg msg = GroovyLog.msg("Error adding Minecraft Shaped Crafting recipe '{}'", this.name) + .error() .add((keyBasedMatrix == null || keyBasedMatrix.length == 0) && (ingredientMatrix == null || ingredientMatrix.isEmpty()), () -> "No matrix was defined") .add(keyBasedMatrix != null && ingredientMatrix != null, () -> "A key based matrix AND a ingredient based matrix was defined. This is not allowed!") .add(IngredientHelper.isEmpty(this.output), () -> "Output must not be empty"); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/FurnaceRecipeManager.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/FurnaceRecipeManager.java index 9d97b7365..31c1f7a8a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/FurnaceRecipeManager.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/FurnaceRecipeManager.java @@ -12,6 +12,7 @@ public class FurnaceRecipeManager { public static final ObjectOpenCustomHashSet inputMap = new ObjectOpenCustomHashSet<>(new Hash.Strategy<>() { + @Override public int hashCode(ItemStack o) { return Objects.hash(o.getItem(), o.getMetadata()); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/ItemStackMixinExpansion.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/ItemStackMixinExpansion.java index b6f2d8736..93df6018b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/ItemStackMixinExpansion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/ItemStackMixinExpansion.java @@ -67,8 +67,7 @@ default ItemStackMixinExpansion exactCopy() { @Override default boolean test(ItemStack stack) { - if (!OreDictionary.itemMatches(grs$getItemStack(), stack, false) && - (grs$getMatcher() == null || !grs$getMatcher().test(stack))) { + if (!OreDictionary.itemMatches(grs$getItemStack(), stack, false) && (grs$getMatcher() == null || !grs$getMatcher().test(stack))) { return false; } if (grs$getNbtMatcher() != null) { @@ -143,7 +142,9 @@ default Ingredient toMcIngredient() { @Override default ItemStack[] getMatchingStacks() { - return new ItemStack[]{IngredientHelper.toItemStack(exactCopy())}; + return new ItemStack[]{ + IngredientHelper.toItemStack(exactCopy()) + }; } @Override diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Player.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Player.java index e2e01faf4..4b7d89f60 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Player.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Player.java @@ -49,14 +49,16 @@ public void addStartingItem(ItemStack item) { public void addStartingItem(ItemStack item, int slot) { if (slot > 41) { GroovyLog.msg("Warning: assigning items to a player's inventory slot greater than 41 may cause some items to not be received by the player.") - .warn().post(); + .warn() + .post(); } if (slot <= -1) { givenItemsAnySlot.add(item == null ? ItemStack.EMPTY : item); } else { if (givenItemsSlots.get(slot) != null) { GroovyLog.msg("Warning: slot {} has already been occupied by another item.", slot) - .error().post(); + .error() + .post(); return; } givenItemsSlots.put(slot, item == null ? ItemStack.EMPTY : item); @@ -66,7 +68,8 @@ public void addStartingItem(ItemStack item, int slot) { public void setStartingItems(boolean isSlotSpecific, ItemStack... items) { if (items.length > 41) { GroovyLog.msg("Warning: assigning items to a player's inventory slot greater than 41 may cause some items to not be received by the player.") - .warn().post(); + .warn() + .post(); } if (isSlotSpecific) { givenItemsSlots.clear(); @@ -82,7 +85,8 @@ public void setStartingItems(boolean isSlotSpecific, ItemStack... items) { public void setStartingItems(boolean isSlotSpecific, List items) { if (items.size() > 41) { GroovyLog.msg("Warning: assigning items to a player's inventory slot greater than 41 may cause some items to not be received by the player.") - .warn().post(); + .warn() + .post(); } if (isSlotSpecific) { givenItemsSlots.clear(); @@ -104,7 +108,5 @@ public void onReload() { @Override @GroovyBlacklist - public void afterScriptLoad() { - } - + public void afterScriptLoad() {} } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Rarity.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Rarity.java index b05181932..1b02ce734 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Rarity.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Rarity.java @@ -96,5 +96,4 @@ public String getName() { return name; } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/GenericInfoParser.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/GenericInfoParser.java index fc4a74eb7..73d050566 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/GenericInfoParser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/GenericInfoParser.java @@ -212,5 +212,4 @@ public void parse(InfoParserPackage info, boolean enabled) { if (blocked(info.getArgs())) return; if (enabled || allowed(info.getArgs())) parse(info); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBiome.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBiome.java index 00236c284..8f42297e1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBiome.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBiome.java @@ -29,5 +29,4 @@ public void parse(InfoParserPackage info) { if (info.getPos() == null || info.getEntity() == null) return; instance.add(info.getMessages(), info.getEntity().getEntityWorld().getBiome(info.getPos()), info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlock.java index e937a3c86..4882a3063 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlock.java @@ -30,5 +30,4 @@ public void parse(InfoParserPackage info) { instance.add(info.getMessages(), info.getBlock(), info.isPrettyNbt()); InfoParserTranslationKey.instance.add(info.getMessages(), info.getBlock().getTranslationKey(), info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlockState.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlockState.java index ccc5709cb..0949b09fc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlockState.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserBlockState.java @@ -29,5 +29,4 @@ public void parse(InfoParserPackage info) { if (info.getBlockState() == null) return; instance.add(info.getMessages(), info.getBlockState(), info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserCreativeTab.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserCreativeTab.java index d81fbd2c9..74adaf963 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserCreativeTab.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserCreativeTab.java @@ -31,7 +31,5 @@ public void parse(InfoParserPackage info) { if (tab != null) { instance.add(info.getMessages(), tab, info.isPrettyNbt()); } - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserDimension.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserDimension.java index d78a9c89e..95f9692e2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserDimension.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserDimension.java @@ -29,5 +29,4 @@ public void parse(InfoParserPackage info) { if (info.getEntity() == null) return; instance.add(info.getMessages(), info.getEntity().world.provider.getDimensionType(), info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserEnchantment.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserEnchantment.java index ae33fafb7..447f500d7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserEnchantment.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserEnchantment.java @@ -34,5 +34,4 @@ public void parse(InfoParserPackage info) { List list = new ArrayList<>(EnchantmentHelper.getEnchantments(info.getStack()).keySet()); instance.add(info.getMessages(), list, info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserEntity.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserEntity.java index 2941c6389..8b999a365 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserEntity.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserEntity.java @@ -42,5 +42,4 @@ public void parse(InfoParserPackage info) { InfoParserTranslationKey.instance.add(info.getMessages(), rl.toString(), info.isPrettyNbt()); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserFluid.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserFluid.java index 49992328c..384b84387 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserFluid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserFluid.java @@ -63,5 +63,4 @@ public void parse(InfoParserPackage info) { } } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserItem.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserItem.java index 7e31aba8a..f712c6af0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserItem.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserItem.java @@ -52,5 +52,4 @@ public void parse(InfoParserPackage info) { instance.add(info.getMessages(), info.getStack(), info.isPrettyNbt()); InfoParserTranslationKey.instance.add(info.getMessages(), info.getStack().getTranslationKey(), info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserNBT.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserNBT.java index b742d7b7c..84076f9a2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserNBT.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserNBT.java @@ -81,5 +81,4 @@ public void parse(InfoParserPackage info) { instance.add(info.getMessages(), info.getStack().serializeNBT(), info.isPrettyNbt()); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserPotionEffect.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserPotionEffect.java index 6e96258db..33170f276 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserPotionEffect.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserPotionEffect.java @@ -41,5 +41,4 @@ public void parse(InfoParserPackage info) { if (list.isEmpty()) return; instance.add(info.getMessages(), list, info.isPrettyNbt()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserTranslationKey.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserTranslationKey.java index a611bb5e5..1a7298e34 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserTranslationKey.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserTranslationKey.java @@ -27,5 +27,4 @@ public String text(@NotNull String entry, boolean colored, boolean prettyNbt) { public void parse(InfoParserPackage info) { // translation isn't used via the registry (what parse does) but is instead directly called by individual InfoParsers } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserVillagerCareer.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserVillagerCareer.java index 943cad9a4..d609ed590 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserVillagerCareer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserVillagerCareer.java @@ -39,5 +39,4 @@ public void parse(InfoParserPackage info) { InfoParserTranslationKey.instance.add(info.getMessages(), "entity.Villager." + career.getName(), info.isPrettyNbt()); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserVillagerProfession.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserVillagerProfession.java index fbb396821..325bc1d9e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserVillagerProfession.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/InfoParserVillagerProfession.java @@ -37,5 +37,4 @@ public void parse(InfoParserPackage info) { instance.add(info.getMessages(), villager.getProfessionForge(), info.isPrettyNbt()); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java index f6920d943..f10f34f64 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/command/infoparser/StandardInfoParserRegistry.java @@ -20,5 +20,4 @@ public static void init() { InfoParserRegistry.addInfoParser(InfoParserEnchantment.instance); InfoParserRegistry.addInfoParser(InfoParserPotionEffect.instance); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/GroovyScriptTransformer.java b/src/main/java/com/cleanroommc/groovyscript/core/GroovyScriptTransformer.java index a601a6d93..a47c3bd61 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/GroovyScriptTransformer.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/GroovyScriptTransformer.java @@ -102,9 +102,12 @@ private byte[] transformSideOnly(String className, byte[] bytes) { private static class LambdaGatherer extends MethodVisitor { - private static final Handle META_FACTORY = new Handle(Opcodes.H_INVOKESTATIC, "java/lang/invoke/LambdaMetafactory", "metafactory", - "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;", - false); + private static final Handle META_FACTORY = new Handle( + Opcodes.H_INVOKESTATIC, + "java/lang/invoke/LambdaMetafactory", + "metafactory", + "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;", + false); private final List dynamicLambdaHandles = new ArrayList(); public LambdaGatherer() { diff --git a/src/main/java/com/cleanroommc/groovyscript/core/SideOnlyConfig.java b/src/main/java/com/cleanroommc/groovyscript/core/SideOnlyConfig.java index 91604826f..94335efda 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/SideOnlyConfig.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/SideOnlyConfig.java @@ -22,7 +22,9 @@ public class SideOnlyConfig { private static final MethodSet CLASS_MARKER = new MethodSet(true); private static final Function DEFAULT_METHOD_SET = s -> new MethodSet(false); - private static final String[] commonKeys = {"common", "both", "all"}; + private static final String[] commonKeys = { + "common", "both", "all" + }; private static final Map clientRemovals = new Object2ObjectOpenHashMap<>(); private static final Map serverRemovals = new Object2ObjectOpenHashMap<>(); diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/EntityItemMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/EntityItemMixin.java index 8ca59881f..69c94222b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/EntityItemMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/EntityItemMixin.java @@ -28,10 +28,7 @@ public void onUpdate(CallbackInfo ci) { BlockPos pos = new BlockPos(thisEntity); IBlockState blockState = thisEntity.world.getBlockState(pos); Fluid fluid = FluidRecipe.getFluid(blockState); - if (fluid != null && - FluidRecipe.isSourceBlock(blockState) && - FluidRecipe.findAndRunRecipe(fluid, thisEntity.world, pos, blockState) && - thisEntity.isDead) { + if (fluid != null && FluidRecipe.isSourceBlock(blockState) && FluidRecipe.findAndRunRecipe(fluid, thisEntity.world, pos, blockState) && thisEntity.isDead) { ci.cancel(); return; } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/EventBusMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/EventBusMixin.java index 8c3eff0fa..9b724fc21 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/EventBusMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/EventBusMixin.java @@ -35,5 +35,4 @@ public void register(Class eventClass, EventPriority priority, IEventListener e.printStackTrace(); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/ForgeRegistryMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/ForgeRegistryMixin.java index 72ee91e22..3db4997d9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/ForgeRegistryMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/ForgeRegistryMixin.java @@ -64,15 +64,20 @@ public abstract class ForgeRegistryMixin> imple @Shadow @Final private RegistryManager stage; - @Unique private Set> groovyScript$backups; - @Unique private Set groovyScript$scripted; - @Unique private Supplier groovyScript$dummySupplier; + @Unique + private Set> groovyScript$backups; + @Unique + private Set groovyScript$scripted; + @Unique + private Supplier groovyScript$dummySupplier; @Unique @Final private final Set groovyScript$dummies = new ObjectOpenHashSet<>(); - @Unique private IReloadableForgeRegistry groovyScript$vanilla; - @Unique private IReloadableForgeRegistry groovyScript$frozen; + @Unique + private IReloadableForgeRegistry groovyScript$vanilla; + @Unique + private IReloadableForgeRegistry groovyScript$frozen; @Override public V groovyScript$registerEntry(V registryEntry) { @@ -152,8 +157,15 @@ public abstract class ForgeRegistryMixin> imple @Unique public V groovyScript$putDummy(V entry, ResourceLocation rl, Integer id, Object owner, DummyContext context) { if (entry == null || rl == null || id == null) { - GroovyLog.get().errorMC("Error putting dummy in forge registry for {} during {} at stage {}. Are null: entry-{}, name-{}, id-{}", - superType.getSimpleName(), context.name().toLowerCase(Locale.ROOT), stage.getName(), entry == null, rl == null, id == null); + GroovyLog.get() + .errorMC( + "Error putting dummy in forge registry for {} during {} at stage {}. Are null: entry-{}, name-{}, id-{}", + superType.getSimpleName(), + context.name().toLowerCase(Locale.ROOT), + stage.getName(), + entry == null, + rl == null, + id == null); return null; } V dummy = groovyScript$getDummy(rl); @@ -180,8 +192,12 @@ public abstract class ForgeRegistryMixin> imple if (dummy != null) { Integer id = this.ids.inverse().remove(dummy); if (id == null) { - GroovyLog.get().errorMC("No id found while removing a dummy with name '{}' from {} registry at stage {}.", - rl, superType.getSimpleName(), stage.getName()); + GroovyLog.get() + .errorMC( + "No id found while removing a dummy with name '{}' from {} registry at stage {}.", + rl, + superType.getSimpleName(), + stage.getName()); } else { this.availabilityMap.clear(id); id0 = id; @@ -227,4 +243,3 @@ public abstract class ForgeRegistryMixin> imple } } } - diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/ItemMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/ItemMixin.java index b6af180a1..b6b296483 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/ItemMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/ItemMixin.java @@ -17,5 +17,4 @@ public class ItemMixin { private void prioritzeGSRarities(ItemStack stack, CallbackInfoReturnable cir) { cir.setReturnValue(VanillaModule.rarity.check(stack)); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/OreIngredientMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/OreIngredientMixin.java index b1723d3dc..b9b5e9095 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/OreIngredientMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/OreIngredientMixin.java @@ -22,5 +22,4 @@ private void init(String ore, CallbackInfo ci) { public String getOreDict() { return groovyScript$oreDict; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/TileEntityPistonMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/TileEntityPistonMixin.java index a616a4c60..600ef44d5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/TileEntityPistonMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/TileEntityPistonMixin.java @@ -32,17 +32,16 @@ public abstract class TileEntityPistonMixin { private boolean shouldHeadBeRendered; @Inject(method = "moveCollidedEntities", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;isStickyBlock(Lnet/minecraft/block/state/IBlockState;)Z", shift = At.Shift.AFTER), remap = false) - private void moveCollidedEntitiesPre(float f, CallbackInfo ci, @Local(ordinal = 0) EnumFacing facing, + private void moveCollidedEntitiesPre(float f, + CallbackInfo ci, + @Local(ordinal = 0) EnumFacing facing, @Local(ordinal = 1) List list1, @Share("tryRecipesUntil") LocalIntRef tryRecipesUntil, @Share("pushingAgainst") LocalRef pushingAgainst, @Share("checkRecipes") LocalBooleanRef checkRecipes) { TileEntityPiston piston = (TileEntityPiston) (Object) this; tryRecipesUntil.set(list1.size()); - boolean b = !piston.getWorld().isRemote && - this.extending && - this.shouldHeadBeRendered && - f >= 1.0f; + boolean b = !piston.getWorld().isRemote && this.extending && this.shouldHeadBeRendered && f >= 1.0f; if (b) { pushingAgainst.set(piston.getWorld().getBlockState(piston.getPos().offset(facing))); checkRecipes.set(!(pushingAgainst.get() instanceof BlockPistonMoving) && pushingAgainst.get().getMaterial() != Material.AIR); @@ -52,8 +51,12 @@ private void moveCollidedEntitiesPre(float f, CallbackInfo ci, @Local(ordinal = } @Inject(method = "moveCollidedEntities", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getPushReaction()Lnet/minecraft/block/material/EnumPushReaction;", shift = At.Shift.AFTER)) - private void moveCollidedEntitiesPost(float p_184322_1_, CallbackInfo ci, @Local int index, @Local(ordinal = 1) List list1, - @Share("tryRecipesUntil") LocalIntRef tryRecipesUntil, @Share("pushingAgainst") LocalRef pushingAgainst, + private void moveCollidedEntitiesPost(float p_184322_1_, + CallbackInfo ci, + @Local int index, + @Local(ordinal = 1) List list1, + @Share("tryRecipesUntil") LocalIntRef tryRecipesUntil, + @Share("pushingAgainst") LocalRef pushingAgainst, @Share("checkRecipes") LocalBooleanRef checkRecipes) { Entity entity = list1.get(index); if (entity.getPushReaction() == EnumPushReaction.IGNORE) return; diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/VillagerProfessionAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/VillagerProfessionAccessor.java index c19ce7bf4..d9a28e13c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/VillagerProfessionAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/VillagerProfessionAccessor.java @@ -11,5 +11,4 @@ public interface VillagerProfessionAccessor { @Accessor List getCareers(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/advancedmortars/RegistryRecipeMortarAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/advancedmortars/RegistryRecipeMortarAccessor.java index 5d0718e4e..cc1bef5f9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/advancedmortars/RegistryRecipeMortarAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/advancedmortars/RegistryRecipeMortarAccessor.java @@ -14,5 +14,4 @@ public interface RegistryRecipeMortarAccessor { @Accessor EnumMap> getRecipeMap(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/MatterCannonAmmoRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/MatterCannonAmmoRegistryAccessor.java index 6a8ebb6fb..1fca54377 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/MatterCannonAmmoRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/MatterCannonAmmoRegistryAccessor.java @@ -12,5 +12,4 @@ public interface MatterCannonAmmoRegistryAccessor { @Accessor("DamageModifiers") HashMap getDamageModifiers(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/MovableTileRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/MovableTileRegistryAccessor.java index 6d0637d26..135828b2d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/MovableTileRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/MovableTileRegistryAccessor.java @@ -17,5 +17,4 @@ public interface MovableTileRegistryAccessor { @Accessor("Valid") HashMap, IMovableHandler> getValid(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/P2PTunnelRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/P2PTunnelRegistryAccessor.java index e9c739644..05a8addd3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/P2PTunnelRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/appliedenergistics2/P2PTunnelRegistryAccessor.java @@ -20,5 +20,4 @@ public interface P2PTunnelRegistryAccessor { @Accessor Map, TunnelType> getCapTunnels(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationBaseAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationBaseAccessor.java index c7b19cf12..3ccf2c7d2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationBaseAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationBaseAccessor.java @@ -12,5 +12,4 @@ public interface ConstellationBaseAccessor { @Accessor List getSignatureItems(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationMapEffectRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationMapEffectRegistryAccessor.java index d5f2f7c48..f3336ba67 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationMapEffectRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationMapEffectRegistryAccessor.java @@ -14,5 +14,4 @@ public interface ConstellationMapEffectRegistryAccessor { static Map getEffectRegistry() { return null; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationRegistryAccessor.java index 063b7c07c..525413ab0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ConstellationRegistryAccessor.java @@ -28,5 +28,4 @@ static List getWeakConstellations() { static List getMinorConstellations() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/FluidRarityRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/FluidRarityRegistryAccessor.java index 6005e03b8..484d60eec 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/FluidRarityRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/FluidRarityRegistryAccessor.java @@ -11,5 +11,4 @@ public interface FluidRarityRegistryAccessor { @Accessor List getRarityList(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/LightOreTransmutationsAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/LightOreTransmutationsAccessor.java index 2c34795c3..0b184109c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/LightOreTransmutationsAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/LightOreTransmutationsAccessor.java @@ -13,5 +13,4 @@ public interface LightOreTransmutationsAccessor { static Collection getRegisteredTransmutations() { return null; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/LiquidInteractionAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/LiquidInteractionAccessor.java index 04a694511..2bd7827cd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/LiquidInteractionAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/LiquidInteractionAccessor.java @@ -16,5 +16,4 @@ static List getRegisteredInteractions() { @Accessor("action") LiquidInteraction.FluidInteractionAction getFluidInteractionAction(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/OreTypesAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/OreTypesAccessor.java index 9727573af..43e8fcf23 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/OreTypesAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/OreTypesAccessor.java @@ -22,5 +22,4 @@ public interface OreTypesAccessor { @Invoker("appendOreEntry") void add(OreEntry entry); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkLevelManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkLevelManagerAccessor.java index 248989895..912e165d3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkLevelManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkLevelManagerAccessor.java @@ -11,13 +11,11 @@ public interface PerkLevelManagerAccessor { @Accessor("LEVEL_CAP") - static void setLevelCap(int cap) { - } + static void setLevelCap(int cap) {} @Accessor("totalExpLevelRequired") Map getLevelMap(); @Invoker("ensureLevels") void generateLevelMap(); - -} \ No newline at end of file +} diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkLevelManagerMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkLevelManagerMixin.java index 307ad01be..6fe4aa2dc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkLevelManagerMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkLevelManagerMixin.java @@ -34,5 +34,4 @@ public void ensureLevels(CallbackInfo ci) { } ci.cancel(); } - -} \ No newline at end of file +} diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkTreeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkTreeAccessor.java index df2bd4400..f4da97544 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkTreeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/PerkTreeAccessor.java @@ -24,5 +24,4 @@ public interface PerkTreeAccessor { @Accessor List> getConnections(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ResearchNodeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ResearchNodeAccessor.java index af029138d..f039f4a15 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ResearchNodeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/ResearchNodeAccessor.java @@ -12,5 +12,4 @@ public interface ResearchNodeAccessor { @Accessor("renderPosZ") void setZ(int z); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/TileCelestialCrystalsMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/TileCelestialCrystalsMixin.java index 661cf535f..e472f09e9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/TileCelestialCrystalsMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/TileCelestialCrystalsMixin.java @@ -18,5 +18,4 @@ public IBlockState replaceIronOreDowngrade(Block instance, Operation getTraitStackMap(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/WellLiquefactionAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/WellLiquefactionAccessor.java index 214e6ff6f..903b23841 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/WellLiquefactionAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/astralsorcery/WellLiquefactionAccessor.java @@ -14,5 +14,4 @@ public interface WellLiquefactionAccessor { static Map getRegisteredLiquefactions() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/betterwithmods/BWMHeatRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/betterwithmods/BWMHeatRegistryAccessor.java index 5db2ceede..4f2c8528e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/betterwithmods/BWMHeatRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/betterwithmods/BWMHeatRegistryAccessor.java @@ -13,5 +13,4 @@ public interface BWMHeatRegistryAccessor { static List getHEAT_SOURCES() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/betterwithmods/HopperFiltersAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/betterwithmods/HopperFiltersAccessor.java index 977686b8b..0c621bdfc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/betterwithmods/HopperFiltersAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/betterwithmods/HopperFiltersAccessor.java @@ -12,5 +12,4 @@ public interface HopperFiltersAccessor { @Accessor Map getFILTERS(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/bloodmagic/BloodMagicRecipeRegistrarAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/bloodmagic/BloodMagicRecipeRegistrarAccessor.java index 4176e39ca..6af9310de 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/bloodmagic/BloodMagicRecipeRegistrarAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/bloodmagic/BloodMagicRecipeRegistrarAccessor.java @@ -24,5 +24,4 @@ public interface BloodMagicRecipeRegistrarAccessor { @Accessor Set getSacrificeCraftRecipes(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/botania/PageCraftingRecipeMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/botania/PageCraftingRecipeMixin.java index 541ef7e61..c8a6e9c52 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/botania/PageCraftingRecipeMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/botania/PageCraftingRecipeMixin.java @@ -68,12 +68,13 @@ public void renderCraftingRecipe(IGuiLexiconEntry gui, IRecipe recipe) { } else { this.oreDictRecipe = recipe instanceof ShapedOreRecipe; int width = oreDictRecipe - ? ReflectionHelper.getPrivateValue(ShapedOreRecipe.class, (ShapedOreRecipe) recipe, "width") - : recipe instanceof ShapedCraftingRecipe ? ((ShapedCraftingRecipe) recipe).getRecipeWidth() : ((ShapedRecipes) recipe).getWidth(); + ? ReflectionHelper.getPrivateValue(ShapedOreRecipe.class, (ShapedOreRecipe) recipe, "width") + : recipe instanceof ShapedCraftingRecipe ? ((ShapedCraftingRecipe) recipe).getRecipeWidth() + : ((ShapedRecipes) recipe).getWidth(); int height = oreDictRecipe - ? ReflectionHelper.getPrivateValue(ShapedOreRecipe.class, (ShapedOreRecipe) recipe, "height") - : recipe instanceof ShapedCraftingRecipe ? ((ShapedCraftingRecipe) recipe).getRecipeHeight() - : ((ShapedRecipes) recipe).getHeight(); + ? ReflectionHelper.getPrivateValue(ShapedOreRecipe.class, (ShapedOreRecipe) recipe, "height") + : recipe instanceof ShapedCraftingRecipe ? ((ShapedCraftingRecipe) recipe).getRecipeHeight() + : ((ShapedRecipes) recipe).getHeight(); for (index = 0; index < height; ++index) { for (x = 0; x < width; ++x) { diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/calculator/DefinedRecipeHelperMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/calculator/DefinedRecipeHelperMixin.java index 48cc320d9..19a6f92b5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/calculator/DefinedRecipeHelperMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/calculator/DefinedRecipeHelperMixin.java @@ -16,5 +16,4 @@ public abstract class DefinedRecipeHelperMixin extends RecipeHelperV2Mixin { public void buildRecipe(List recipeInputs, List recipeOutputs, List additionals, boolean shapeless, CallbackInfoReturnable cir) { cir.setReturnValue(new CalculatorRecipe(recipeInputs, recipeOutputs, ResearchRecipeType.NONE, shapeless)); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/calculator/RecipeHelperV2Mixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/calculator/RecipeHelperV2Mixin.java index 494d5afd1..7709e0cac 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/calculator/RecipeHelperV2Mixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/calculator/RecipeHelperV2Mixin.java @@ -14,7 +14,5 @@ public class RecipeHelperV2Mixin { @Inject(method = "buildRecipe", at = @At("RETURN"), cancellable = true) - public void buildRecipe(List recipeInputs, List recipeOutputs, List additionals, boolean shapeless, CallbackInfoReturnable cir) { - } - + public void buildRecipe(List recipeInputs, List recipeOutputs, List additionals, boolean shapeless, CallbackInfoReturnable cir) {} } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/draconicevolution/InvisECoreBlockMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/draconicevolution/InvisECoreBlockMixin.java index 17dc1bc1a..a4e8fe924 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/draconicevolution/InvisECoreBlockMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/draconicevolution/InvisECoreBlockMixin.java @@ -18,8 +18,11 @@ @Mixin(value = InvisECoreBlock.class, remap = false) public class InvisECoreBlockMixin { - @Inject(method = "onBlockHarvested(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;)V", - at = @At("HEAD"), cancellable = true, remap = true) + @Inject( + method = "onBlockHarvested(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;)V", + at = @At("HEAD"), + cancellable = true, + remap = true) public void onBlockHarvested(World world, BlockPos pos, IBlockState state, EntityPlayer player, CallbackInfo ci) { if (GroovyScriptConfig.compat.draconicEvolutionEnergyCore) { InvisECoreBlockLogic.onBlockHarvested(world, pos, player); diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/draconicevolution/TileEnergyStorageCoreMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/draconicevolution/TileEnergyStorageCoreMixin.java index 5ec33f542..cffbef41d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/draconicevolution/TileEnergyStorageCoreMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/draconicevolution/TileEnergyStorageCoreMixin.java @@ -37,9 +37,7 @@ public void validateStructure(CallbackInfoReturnable cir) { var helper = ((BlockStateEnergyCoreStructure) tile.coreStructure).getHelper(); if (!(tile.coreValid.value = tile.coreStructure.checkTier(tile.tier.value))) { BlockPos pos = helper.invalidBlock; - tile.invalidMessage.value = "Error At: x:" + pos.getX() + ", y:" + pos.getY() + ", z:" + pos.getZ() + - " Expected: " + helper.expectedBlockState.getBlock().getRegistryName() + ":" + - helper.expectedBlockState.getBlock().getMetaFromState(helper.expectedBlockState); + tile.invalidMessage.value = "Error At: x:" + pos.getX() + ", y:" + pos.getY() + ", z:" + pos.getZ() + " Expected: " + helper.expectedBlockState.getBlock().getRegistryName() + ":" + helper.expectedBlockState.getBlock().getMetaFromState(helper.expectedBlockState); valid = false; } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/AlloyRecipeManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/AlloyRecipeManagerAccessor.java index fc189111f..404564006 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/AlloyRecipeManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/AlloyRecipeManagerAccessor.java @@ -21,5 +21,4 @@ static void invokeAddRecipeToLookup(@NotNull TriItemLookup loo @Invoker void invokeAddJEIIntegration(@NotNull IManyToOneRecipe recipe); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/AlloyRecipeManagerMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/AlloyRecipeManagerMixin.java index 56d51cbb0..89be1af12 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/AlloyRecipeManagerMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/AlloyRecipeManagerMixin.java @@ -18,5 +18,4 @@ private void afterAddRecipe(IManyToOneRecipe recipe, CallbackInfo ci) { ModSupport.ENDER_IO.get().alloySmelter.addScripted(recipe); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/FluidFuelRegisterAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/FluidFuelRegisterAccessor.java index 71f9ec662..f91faa32f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/FluidFuelRegisterAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/FluidFuelRegisterAccessor.java @@ -16,5 +16,4 @@ public interface FluidFuelRegisterAccessor { @Accessor Map getFuels(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/ItemRecipeLeafNodeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/ItemRecipeLeafNodeAccessor.java index 82f2b6270..93d6f6165 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/ItemRecipeLeafNodeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/ItemRecipeLeafNodeAccessor.java @@ -13,5 +13,4 @@ public interface ItemRecipeLeafNodeAccessor extends IRecipeNode> getMap(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/ItemRecipeNodeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/ItemRecipeNodeAccessor.java index 05415a6d1..8fc88c13e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/ItemRecipeNodeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/ItemRecipeNodeAccessor.java @@ -13,5 +13,4 @@ public interface ItemRecipeNodeAccessor> { @Accessor Int2ObjectOpenHashMap, CHL>> getMap(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/TriItemLookupAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/TriItemLookupAccessor.java index 8252fbb97..53b0f6306 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/TriItemLookupAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/enderio/TriItemLookupAccessor.java @@ -11,5 +11,4 @@ public interface TriItemLookupAccessor { @Accessor ItemRecipeNode>> getRoot(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/OreSmeltingRecipeMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/OreSmeltingRecipeMixin.java index fa96ef1f0..8df042263 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/OreSmeltingRecipeMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/OreSmeltingRecipeMixin.java @@ -1,29 +1,28 @@ -package com.cleanroommc.groovyscript.core.mixin.essentialcraft; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import essentialcraft.api.OreSmeltingRecipe; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(value = OreSmeltingRecipe.class, remap = false) -public abstract class OreSmeltingRecipeMixin { - - /** - * @reason This mixin fixes a client crash when reloading recipes for Magmatic Smeltery, - * which happens when a deleted Magmatic Ore item is being rendered and the mod cannot determine the Alloy's overlay color. - */ - - @WrapOperation(method = "getColorFromItemStack", at = @At(value = "FIELD", target = "Lessentialcraft/api/OreSmeltingRecipe;color:I")) - private static int getColorFromItemStack(OreSmeltingRecipe recipe, Operation original) { - if (recipe == null) return 16777215; - return original.call(recipe); - } - - @WrapOperation(method = "getLocalizedOreName", at = @At(value = "FIELD", target = "Lessentialcraft/api/OreSmeltingRecipe;oreName:Ljava/lang/String;")) - private static String getLocalizedOreName(OreSmeltingRecipe recipe, Operation original) { - if (recipe == null) return ""; - return original.call(recipe); - } - -} +package com.cleanroommc.groovyscript.core.mixin.essentialcraft; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import essentialcraft.api.OreSmeltingRecipe; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(value = OreSmeltingRecipe.class, remap = false) +public abstract class OreSmeltingRecipeMixin { + + /** + * @reason This mixin fixes a client crash when reloading recipes for Magmatic Smeltery, + * which happens when a deleted Magmatic Ore item is being rendered and the mod cannot determine the Alloy's overlay color. + */ + + @WrapOperation(method = "getColorFromItemStack", at = @At(value = "FIELD", target = "Lessentialcraft/api/OreSmeltingRecipe;color:I")) + private static int getColorFromItemStack(OreSmeltingRecipe recipe, Operation original) { + if (recipe == null) return 16777215; + return original.call(recipe); + } + + @WrapOperation(method = "getLocalizedOreName", at = @At(value = "FIELD", target = "Lessentialcraft/api/OreSmeltingRecipe;oreName:Ljava/lang/String;")) + private static String getLocalizedOreName(OreSmeltingRecipe recipe, Operation original) { + if (recipe == null) return ""; + return original.call(recipe); + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/TileFurnaceMagicMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/TileFurnaceMagicMixin.java index 0d5f2986f..3dbd3cd8a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/TileFurnaceMagicMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/TileFurnaceMagicMixin.java @@ -1,33 +1,33 @@ -package com.cleanroommc.groovyscript.core.mixin.essentialcraft; - -import essentialcraft.api.OreSmeltingRecipe; -import essentialcraft.common.item.ItemsCore; -import essentialcraft.common.tile.TileFurnaceMagic; -import essentialcraft.common.tile.TileMRUGeneric; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(value = TileFurnaceMagic.class, remap = false) -public abstract class TileFurnaceMagicMixin extends TileMRUGeneric { - - @Shadow - public int smeltingLevel; - - /** - * @reason This mixin fixes a server crash when an invalid Magmatic Ore is put into the Magmatic Furnace's input slot. - * Normally this causes an ArrayOutOfBoundsException when the recipe with index -1 (invalid input) is being read from the registry. - * The indices of its slots are as follows: Bound Gem (0), Ore/Magmatic Alloy input (1), Magmatic Alloy/Resource output (2). - */ - @Inject(method = "update", at = @At("HEAD"), cancellable = true) - public void onUpdate(CallbackInfo ci) { - ItemStack alloy = this.getStackInSlot(1); - if (alloy.getItem() == ItemsCore.magicalAlloy && OreSmeltingRecipe.getIndex(alloy) == -1) { - this.smeltingLevel = 0; - ci.cancel(); - } - } -} +package com.cleanroommc.groovyscript.core.mixin.essentialcraft; + +import essentialcraft.api.OreSmeltingRecipe; +import essentialcraft.common.item.ItemsCore; +import essentialcraft.common.tile.TileFurnaceMagic; +import essentialcraft.common.tile.TileMRUGeneric; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(value = TileFurnaceMagic.class, remap = false) +public abstract class TileFurnaceMagicMixin extends TileMRUGeneric { + + @Shadow + public int smeltingLevel; + + /** + * @reason This mixin fixes a server crash when an invalid Magmatic Ore is put into the Magmatic Furnace's input slot. + * Normally this causes an ArrayOutOfBoundsException when the recipe with index -1 (invalid input) is being read from the registry. + * The indices of its slots are as follows: Bound Gem (0), Ore/Magmatic Alloy input (1), Magmatic Alloy/Resource output (2). + */ + @Inject(method = "update", at = @At("HEAD"), cancellable = true) + public void onUpdate(CallbackInfo ci) { + ItemStack alloy = this.getStackInSlot(1); + if (alloy.getItem() == ItemsCore.magicalAlloy && OreSmeltingRecipe.getIndex(alloy) == -1) { + this.smeltingLevel = 0; + ci.cancel(); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/TileMagmaticSmelterMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/TileMagmaticSmelterMixin.java index 05cc519b2..f1bff45d6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/TileMagmaticSmelterMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/essentialcraft/TileMagmaticSmelterMixin.java @@ -1,35 +1,35 @@ -package com.cleanroommc.groovyscript.core.mixin.essentialcraft; - -import essentialcraft.api.OreSmeltingRecipe; -import essentialcraft.common.item.ItemsCore; -import essentialcraft.common.tile.TileMRUGeneric; -import essentialcraft.common.tile.TileMagmaticSmelter; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(value = TileMagmaticSmelter.class, remap = false) -public abstract class TileMagmaticSmelterMixin extends TileMRUGeneric { - - @Shadow - public int smeltingLevel; - - /** - * @reason This mixin fixes a server crash when an invalid Magmatic Ore is put into the Magmatic Smeltery's input slot. - * Normally this causes an ArrayOutOfBoundsException when the recipe with index -1 (invalid input) is being read from the registry. - * The indices of its slots are as follows: Bound Gem (0), Lava Bucket (1), Empty Bucket output (2), - * Ore input (3), Magmatic Alloy output (4), Magmatic Alloy input (5), Resource output (6), Magical Slag (7). - */ - @Inject(method = "update", at = @At("HEAD"), cancellable = true) - public void onUpdate(CallbackInfo ci) { - ItemStack ore = this.getStackInSlot(3); - ItemStack alloy = this.getStackInSlot(5); - if (ore.isEmpty() && alloy.getItem() == ItemsCore.magicalAlloy && OreSmeltingRecipe.getIndex(alloy) == -1) { - this.smeltingLevel = 0; - ci.cancel(); - } - } -} +package com.cleanroommc.groovyscript.core.mixin.essentialcraft; + +import essentialcraft.api.OreSmeltingRecipe; +import essentialcraft.common.item.ItemsCore; +import essentialcraft.common.tile.TileMRUGeneric; +import essentialcraft.common.tile.TileMagmaticSmelter; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(value = TileMagmaticSmelter.class, remap = false) +public abstract class TileMagmaticSmelterMixin extends TileMRUGeneric { + + @Shadow + public int smeltingLevel; + + /** + * @reason This mixin fixes a server crash when an invalid Magmatic Ore is put into the Magmatic Smeltery's input slot. + * Normally this causes an ArrayOutOfBoundsException when the recipe with index -1 (invalid input) is being read from the registry. + * The indices of its slots are as follows: Bound Gem (0), Lava Bucket (1), Empty Bucket output (2), + * Ore input (3), Magmatic Alloy output (4), Magmatic Alloy input (5), Resource output (6), Magical Slag (7). + */ + @Inject(method = "update", at = @At("HEAD"), cancellable = true) + public void onUpdate(CallbackInfo ci) { + ItemStack ore = this.getStackInSlot(3); + ItemStack alloy = this.getStackInSlot(5); + if (ore.isEmpty() && alloy.getItem() == ItemsCore.magicalAlloy && OreSmeltingRecipe.getIndex(alloy) == -1) { + this.smeltingLevel = 0; + ci.cancel(); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/GeneratorTypeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/GeneratorTypeAccessor.java index 83f95d03f..28aa96f1a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/GeneratorTypeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/GeneratorTypeAccessor.java @@ -26,5 +26,4 @@ public interface GeneratorTypeAccessor { @Mutable @Accessor void setCaps(TreeMap> caps); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/GeneratorTypeMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/GeneratorTypeMixin.java index 95bfec445..0c11d039b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/GeneratorTypeMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/GeneratorTypeMixin.java @@ -24,5 +24,4 @@ public void basePowerGen(CallbackInfoReturnable cir) { cir.setReturnValue(value); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/PassiveBlockGeneratorMillMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/PassiveBlockGeneratorMillMixin.java index 184219998..32360da42 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/PassiveBlockGeneratorMillMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/extrautils2/PassiveBlockGeneratorMillMixin.java @@ -38,5 +38,4 @@ public void getPowerLevel(TilePassiveGenerator generator, World world, CallbackI cir.setReturnValue(ClosureHelper.call(0.0f, value, generator, world)); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/CompUnitClassGenMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/CompUnitClassGenMixin.java index 783ead055..fd807c413 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/CompUnitClassGenMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/CompUnitClassGenMixin.java @@ -16,10 +16,12 @@ @Mixin(targets = "org/codehaus/groovy/control/CompilationUnit$3", remap = false) public class CompUnitClassGenMixin { - @Inject(method = "call", - at = @At(value = "INVOKE", - target = "Lorg/codehaus/groovy/ast/GroovyClassVisitor;visitClass(Lorg/codehaus/groovy/ast/ClassNode;)V", - ordinal = 4), + @Inject( + method = "call", + at = @At( + value = "INVOKE", + target = "Lorg/codehaus/groovy/ast/GroovyClassVisitor;visitClass(Lorg/codehaus/groovy/ast/ClassNode;)V", + ordinal = 4), locals = LocalCapture.CAPTURE_FAILEXCEPTION) public void call(SourceUnit source, GeneratorContext context, ClassNode classNode, CallbackInfo ci, GroovyClassVisitor visitor) { GroovyCodeFactory.remapOverrides(classNode); diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/Java8Mixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/Java8Mixin.java index 15f631f84..3c0dc76ad 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/Java8Mixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/Java8Mixin.java @@ -2,8 +2,8 @@ import com.cleanroommc.groovyscript.sandbox.mapper.GroovyDeobfMapper; import net.minecraftforge.fml.relauncher.FMLLaunchHandler; -import org.codehaus.groovy.ast.Parameter; import org.codehaus.groovy.ast.*; +import org.codehaus.groovy.ast.Parameter; import org.codehaus.groovy.ast.expr.ConstantExpression; import org.codehaus.groovy.ast.stmt.ReturnStatement; import org.codehaus.groovy.vmplugin.v8.Java8; diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/MetaClassImplMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/MetaClassImplMixin.java index 452028609..13cfe07bd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/MetaClassImplMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/MetaClassImplMixin.java @@ -5,8 +5,8 @@ import com.cleanroommc.groovyscript.sandbox.security.GroovySecurityManager; import groovy.lang.*; import org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl; -import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -19,11 +19,18 @@ public abstract class MetaClassImplMixin { @Shadow - protected abstract Object doInvokeMethod(Class sender, Object object, String methodName, Object[] originalArguments, - boolean isCallToSuper, boolean fromInsideClass); + protected abstract Object doInvokeMethod(Class sender, + Object object, + String methodName, + Object[] originalArguments, + boolean isCallToSuper, + boolean fromInsideClass); @Shadow - protected abstract Object invokeMissingMethod(Object instance, String methodName, Object[] arguments, RuntimeException original, + protected abstract Object invokeMissingMethod(Object instance, + String methodName, + Object[] arguments, + RuntimeException original, boolean isCallToSuper); @Shadow @@ -70,11 +77,17 @@ public void removeBlacklistedAdditional(Class theClass, MetaMethod[] add, Cal } } - @Inject(method = "invokeMethod(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;ZZ)Ljava/lang/Object;", + @Inject( + method = "invokeMethod(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;ZZ)Ljava/lang/Object;", at = @At("HEAD"), cancellable = true) - public void invokeMethod(Class sender, Object object, String methodName, Object[] arguments, boolean isCallToSuper, - boolean fromInsideClass, CallbackInfoReturnable cir) { + public void invokeMethod(Class sender, + Object object, + String methodName, + Object[] arguments, + boolean isCallToSuper, + boolean fromInsideClass, + CallbackInfoReturnable cir) { try { cir.setReturnValue(doInvokeMethod(sender, object, methodName, arguments, isCallToSuper, fromInsideClass)); } catch (MissingMethodException mme) { @@ -94,7 +107,10 @@ public void invokeStaticMissingMethod(Class sender, String methodName, Object * @reason class scripts being unable to use bindings and this method calling closures improperly */ @Overwrite - private Object invokePropertyOrMissing(Object object, String methodName, Object[] originalArguments, boolean fromInsideClass, + private Object invokePropertyOrMissing(Object object, + String methodName, + Object[] originalArguments, + boolean fromInsideClass, boolean isCallToSuper) { MetaProperty metaProperty = getMetaProperty(methodName, false); @@ -109,7 +125,7 @@ private Object invokePropertyOrMissing(Object object, String methodName, Object[ value = GroovyScript.getSandbox().getBindings().get(methodName); } - if (value instanceof Closure closure) { + if (value instanceof Closureclosure) { return closure.call(originalArguments); } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/ModuleNodeMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/ModuleNodeMixin.java index f053d5485..3bd445c91 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/ModuleNodeMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/groovy/ModuleNodeMixin.java @@ -13,14 +13,15 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.io.File; @Mixin(value = ModuleNode.class, remap = false) public abstract class ModuleNodeMixin { - @Shadow private PackageNode packageNode; + @Shadow + private PackageNode packageNode; - @Shadow private transient SourceUnit context; + @Shadow + private transient SourceUnit context; @Inject(method = "(Lorg/codehaus/groovy/control/SourceUnit;)V", at = @At("TAIL")) public void init(SourceUnit context, CallbackInfo ci) { diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/inspirations/InspirationsRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/inspirations/InspirationsRegistryAccessor.java index eec974500..74182cb2a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/inspirations/InspirationsRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/inspirations/InspirationsRegistryAccessor.java @@ -34,6 +34,4 @@ static Set getAnvilBreaking() { static List getCauldronRecipes() { throw new UnsupportedOperationException(); } - } - diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/IngredientInfoRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/IngredientInfoRecipeAccessor.java index 0a7a3cb7b..28c44611d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/IngredientInfoRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/IngredientInfoRecipeAccessor.java @@ -15,5 +15,4 @@ public interface IngredientInfoRecipeAccessor { @Accessor IIngredientType getIngredientType(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/JeiStarterMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/JeiStarterMixin.java index d3033dff8..4e1a92084 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/JeiStarterMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/JeiStarterMixin.java @@ -27,5 +27,4 @@ public abstract class JeiStarterMixin { private static void grs$onSendRuntime(CallbackInfo ci) { JeiPlugin.afterRuntimeAvailable(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/ModRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/ModRegistryAccessor.java index dcf560a5a..8634c2327 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/ModRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/ModRegistryAccessor.java @@ -10,5 +10,4 @@ public interface ModRegistryAccessor { @Accessor ListMultiMap getRecipeCatalysts(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LoadTableEventMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LoadTableEventMixin.java index 4cbc8270f..3608e3506 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LoadTableEventMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LoadTableEventMixin.java @@ -26,5 +26,4 @@ private void injection(CallbackInfo ci) { VanillaModule.loot.tables.putAll(this.registeredLootTables.asMap()); MinecraftForge.EVENT_BUS.post(new LootTablesLoadedEvent()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LootPoolAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LootPoolAccessor.java index ef91493a3..dd3c3af50 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LootPoolAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LootPoolAccessor.java @@ -12,5 +12,4 @@ public interface LootPoolAccessor { @Accessor List getLootEntries(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LootTableAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LootTableAccessor.java index b25ec5f7b..709d6d8df 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LootTableAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/loot/LootTableAccessor.java @@ -12,5 +12,4 @@ public interface LootTableAccessor { @Accessor("pools") List getPools(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/CrushingTableRecipeManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/CrushingTableRecipeManagerAccessor.java index b7de82979..10a428c9a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/CrushingTableRecipeManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/CrushingTableRecipeManagerAccessor.java @@ -14,5 +14,4 @@ public interface CrushingTableRecipeManagerAccessor { static List getRecipes() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/GasificationUnitRecipeManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/GasificationUnitRecipeManagerAccessor.java index 719a890ff..4cf19342f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/GasificationUnitRecipeManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/GasificationUnitRecipeManagerAccessor.java @@ -14,5 +14,4 @@ public interface GasificationUnitRecipeManagerAccessor { static List getRecipes() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/HydraulicPressRecipeManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/HydraulicPressRecipeManagerAccessor.java index d73479b51..fd213c51a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/HydraulicPressRecipeManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/HydraulicPressRecipeManagerAccessor.java @@ -14,5 +14,4 @@ public interface HydraulicPressRecipeManagerAccessor { static List getRecipes() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/ThermopileRecipeManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/ThermopileRecipeManagerAccessor.java index eedbc2253..ff1d8d7fd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/ThermopileRecipeManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/magneticraft/ThermopileRecipeManagerAccessor.java @@ -14,5 +14,4 @@ public interface ThermopileRecipeManagerAccessor { static List getRecipeList() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/pneumaticcraft/PlasticMixerRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/pneumaticcraft/PlasticMixerRecipeAccessor.java index f109549c7..20f9616bd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/pneumaticcraft/PlasticMixerRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/pneumaticcraft/PlasticMixerRecipeAccessor.java @@ -13,5 +13,4 @@ public interface PlasticMixerRecipeAccessor { static PlasticMixerRegistry.PlasticMixerRecipe createPlasticMixerRecipe(FluidStack fluidStack, ItemStack itemStack, int temperature, boolean allowMelting, boolean allowSolidifying, boolean useDye, int meta) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/pneumaticcraft/PlasticMixerRegistryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/pneumaticcraft/PlasticMixerRegistryAccessor.java index c7f8fec14..a6f41aaaf 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/pneumaticcraft/PlasticMixerRegistryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/pneumaticcraft/PlasticMixerRegistryAccessor.java @@ -20,5 +20,4 @@ public interface PlasticMixerRegistryAccessor { @Accessor List getRecipes(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/ClayKilnRecipesAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/ClayKilnRecipesAccessor.java index c0c8cbfab..5646eebbf 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/ClayKilnRecipesAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/ClayKilnRecipesAccessor.java @@ -20,5 +20,4 @@ static List getRecipes() { static ClayKilnRecipes createClayKilnRecipes(ItemStack output, ItemStack input, int itemCookTime) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/StoneAnvilRecipesAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/StoneAnvilRecipesAccessor.java index eeffd1667..6b0b38534 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/StoneAnvilRecipesAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/StoneAnvilRecipesAccessor.java @@ -20,5 +20,4 @@ static List getRecipes() { static StoneAnvilRecipes createStoneAnvilRecipes(ItemStack output, ItemStack input) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/WaterSawRecipesAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/WaterSawRecipesAccessor.java index bec3d005f..49c0d673a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/WaterSawRecipesAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/WaterSawRecipesAccessor.java @@ -20,5 +20,4 @@ static List getRecipes() { static WaterSawRecipes createWaterSawRecipes(ItemStack output, ItemStack input, int choppingTime) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/WoodenBasinRecipesAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/WoodenBasinRecipesAccessor.java index 1b7069b87..4c0701a23 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/WoodenBasinRecipesAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/primal_tech/WoodenBasinRecipesAccessor.java @@ -21,5 +21,4 @@ static List getRecipes() { static WoodenBasinRecipes createWoodenBasinRecipes(ItemStack output, FluidStack fluidIn, Object... input) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/WorldHelperAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/WorldHelperAccessor.java index 7a24460b6..858918aab 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/WorldHelperAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/projecte/WorldHelperAccessor.java @@ -19,5 +19,4 @@ static List> getPeacefuls() { static List> getMobs() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/techreborn/RollingMachineRecipeWrapperMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/techreborn/RollingMachineRecipeWrapperMixin.java index d182aa1ca..b2d18bc79 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/techreborn/RollingMachineRecipeWrapperMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/techreborn/RollingMachineRecipeWrapperMixin.java @@ -20,5 +20,4 @@ private static void useCustomGroovyScriptRecipe(IJeiHelpers jeiHelpers, IRecipe if (baseRecipe instanceof ShapelessCraftingRecipe r) cir.setReturnValue(new RollingMachineRecipeWrapper(new ShapelessRecipeWrapper<>(jeiHelpers, r))); if (baseRecipe instanceof ShapedCraftingRecipe r) cir.setReturnValue(new RollingMachineRecipeWrapper(new ShapedRecipeWrapper(jeiHelpers, r))); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/BrewerManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/BrewerManagerAccessor.java index 38254bb70..fd1cd25da 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/BrewerManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/BrewerManagerAccessor.java @@ -26,5 +26,4 @@ static Set getValidationSet() { static Set getValidationFluids() { throw new AssertionError(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/BrewerRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/BrewerRecipeAccessor.java index 6ead0c54a..da4c253ec 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/BrewerRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/BrewerRecipeAccessor.java @@ -13,5 +13,4 @@ public interface BrewerRecipeAccessor { static BrewerManager.BrewerRecipe createBrewerRecipe(ItemStack input, FluidStack inputFluid, FluidStack outputFluid, int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CentrifugeManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CentrifugeManagerAccessor.java index 346c8bc43..ebdec4a7a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CentrifugeManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CentrifugeManagerAccessor.java @@ -19,5 +19,4 @@ static Map static Map getRecipeMapMobs() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CentrifugeRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CentrifugeRecipeAccessor.java index 9b6390876..4e896553f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CentrifugeRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CentrifugeRecipeAccessor.java @@ -15,8 +15,9 @@ public interface CentrifugeRecipeAccessor { @Invoker("") static CentrifugeManager.CentrifugeRecipe createCentrifugeRecipe(ItemStack input, @Nullable List output, - @Nullable List chance, @Nullable FluidStack fluid, int energy) { + @Nullable List chance, + @Nullable FluidStack fluid, + int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ChargerManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ChargerManagerAccessor.java index 52d5c1e77..29dc8e2b8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ChargerManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ChargerManagerAccessor.java @@ -14,5 +14,4 @@ public interface ChargerManagerAccessor { static Map getRecipeMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompactorManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompactorManagerAccessor.java index a7fc024bf..8645caf88 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompactorManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompactorManagerAccessor.java @@ -29,5 +29,4 @@ static Map ge static Map getRecipeMapGear() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompactorRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompactorRecipeAccessor.java index b234bffef..177f7120b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompactorRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompactorRecipeAccessor.java @@ -12,5 +12,4 @@ public interface CompactorRecipeAccessor { static CompactorManager.CompactorRecipe createCompactorRecipe(ItemStack input, ItemStack output, int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompressionManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompressionManagerAccessor.java index 43e344bbd..076f737c9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompressionManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CompressionManagerAccessor.java @@ -12,5 +12,4 @@ public interface CompressionManagerAccessor { static Object2IntOpenHashMap getFuelMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CoolantManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CoolantManagerAccessor.java index d6b2162f5..73b6e2bb2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CoolantManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CoolantManagerAccessor.java @@ -17,5 +17,4 @@ static Object2IntOpenHashMap getCoolantMap() { static Object2IntOpenHashMap getCoolantFactorMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CrucibleManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CrucibleManagerAccessor.java index 6aa4826d0..cc536c32c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CrucibleManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CrucibleManagerAccessor.java @@ -20,5 +20,4 @@ static Map getR static Set getLavaSet() { throw new AssertionError(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CrucibleRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CrucibleRecipeAccessor.java index c38a29622..52111888a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CrucibleRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/CrucibleRecipeAccessor.java @@ -13,5 +13,4 @@ public interface CrucibleRecipeAccessor { static CrucibleManager.CrucibleRecipe createCrucibleRecipe(ItemStack input, FluidStack output, int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/DiffuserManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/DiffuserManagerAccessor.java index dc7739f83..1ec0336ff 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/DiffuserManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/DiffuserManagerAccessor.java @@ -18,5 +18,4 @@ static TObjectIntHashMap getReagentAmpMap() { static TObjectIntHashMap getReagentDurMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnchanterManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnchanterManagerAccessor.java index 7dc6227ed..cda61c70d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnchanterManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnchanterManagerAccessor.java @@ -26,5 +26,4 @@ static Set getValidationSet() { static Set getLockSet() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnchanterRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnchanterRecipeAccessor.java index af70bf54c..de099af81 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnchanterRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnchanterRecipeAccessor.java @@ -12,5 +12,4 @@ public interface EnchanterRecipeAccessor { static EnchanterManager.EnchanterRecipe createEnchanterRecipe(ItemStack primaryInput, ItemStack secondaryInput, ItemStack output, int experience, int energy, EnchanterManager.Type type) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnervationManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnervationManagerAccessor.java index 090207415..577fd2cc0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnervationManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/EnervationManagerAccessor.java @@ -13,5 +13,4 @@ public interface EnervationManagerAccessor { static TObjectIntHashMap getFuelMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ExtruderManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ExtruderManagerAccessor.java index cafb68e30..cfc8df4a3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ExtruderManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ExtruderManagerAccessor.java @@ -31,5 +31,4 @@ static List getOutputListIgneous() { static List getOutputListSedimentary() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ExtruderRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ExtruderRecipeAccessor.java index cb36d1d0f..ee17f47de 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ExtruderRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ExtruderRecipeAccessor.java @@ -13,5 +13,4 @@ public interface ExtruderRecipeAccessor { static ExtruderManager.ExtruderRecipe createExtruderRecipe(ItemStack output, FluidStack inputHot, FluidStack inputCold, int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FactorizerManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FactorizerManagerAccessor.java index 133d640a1..e9c8bbcd2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FactorizerManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FactorizerManagerAccessor.java @@ -19,5 +19,4 @@ static Map get static Map getRecipeMapReverse() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FactorizerRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FactorizerRecipeAccessor.java index 5c36f1844..cd5a4a1cc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FactorizerRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FactorizerRecipeAccessor.java @@ -12,5 +12,4 @@ public interface FactorizerRecipeAccessor { static FactorizerManager.FactorizerRecipe createFactorizerRecipe(ItemStack input, ItemStack output) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FisherManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FisherManagerAccessor.java index 1ff2631bf..7aea5a89f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FisherManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FisherManagerAccessor.java @@ -36,5 +36,4 @@ static void setTotalWeight(int totalWeight) { static TObjectIntHashMap getBaitMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FurnaceManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FurnaceManagerAccessor.java index 884cda3a0..a9adb060f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FurnaceManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FurnaceManagerAccessor.java @@ -25,5 +25,4 @@ static Map getRecipe static Set getFoodSet() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FurnaceRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FurnaceRecipeAccessor.java index 63d2f04f5..2da83126d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FurnaceRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/FurnaceRecipeAccessor.java @@ -17,5 +17,4 @@ static FurnaceManager.FurnaceRecipe createFurnaceRecipe(ItemStack input, ItemSta static FurnaceManager.FurnaceRecipe createFurnaceRecipe(ItemStack input, ItemStack output, int energy, int creosote) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/InsolatorManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/InsolatorManagerAccessor.java index 1d4e0f2b3..a991810c8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/InsolatorManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/InsolatorManagerAccessor.java @@ -26,5 +26,4 @@ static Set getValidationSet() { static Set getLockSet() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/InsolatorRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/InsolatorRecipeAccessor.java index d47f52c98..ebbf7c524 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/InsolatorRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/InsolatorRecipeAccessor.java @@ -12,5 +12,4 @@ public interface InsolatorRecipeAccessor { static InsolatorManager.InsolatorRecipe createInsolatorRecipe(ItemStack secondaryInput, ItemStack primaryInput, ItemStack primaryOutput, ItemStack secondaryOutput, int secondaryChance, int energy, int water, InsolatorManager.Type type) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/MagmaticManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/MagmaticManagerAccessor.java index 4b3031691..8e46367d9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/MagmaticManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/MagmaticManagerAccessor.java @@ -12,5 +12,4 @@ public interface MagmaticManagerAccessor { static Object2IntOpenHashMap getFuelMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/NumismaticManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/NumismaticManagerAccessor.java index cb498e77f..accfe9e86 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/NumismaticManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/NumismaticManagerAccessor.java @@ -18,5 +18,4 @@ static TObjectIntHashMap getFuelMap() { static TObjectIntHashMap getGemFuelMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PrecipitatorManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PrecipitatorManagerAccessor.java index eef0fd9c9..1e61bf3eb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PrecipitatorManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PrecipitatorManagerAccessor.java @@ -21,5 +21,4 @@ static Map getRecipeMap() { static List getOutputList() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PrecipitatorRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PrecipitatorRecipeAccessor.java index 37b9202b3..d2465f214 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PrecipitatorRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PrecipitatorRecipeAccessor.java @@ -13,5 +13,4 @@ public interface PrecipitatorRecipeAccessor { static PrecipitatorManager.PrecipitatorRecipe createPrecipitatorRecipe(ItemStack output, FluidStack input, int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PulverizerManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PulverizerManagerAccessor.java index 1c6ab1c81..4e986871a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PulverizerManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PulverizerManagerAccessor.java @@ -14,5 +14,4 @@ public interface PulverizerManagerAccessor { static Map getRecipeMap() { throw new AssertionError(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PulverizerRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PulverizerRecipeAccessor.java index f5f3addf0..ecb21492f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PulverizerRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/PulverizerRecipeAccessor.java @@ -12,5 +12,4 @@ public interface PulverizerRecipeAccessor { static PulverizerManager.PulverizerRecipe createPulverizerRecipe(ItemStack input, ItemStack primaryOutput, ItemStack secondaryOutput, int secondaryChance, int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ReactantManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ReactantManagerAccessor.java index ce32119ee..c4cb347d8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ReactantManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ReactantManagerAccessor.java @@ -36,5 +36,4 @@ static Set getValidReactantsElemental() { static Set getValidFluidsElemental() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ReactionAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ReactionAccessor.java index f7527a697..3841532a9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ReactionAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/ReactionAccessor.java @@ -13,5 +13,4 @@ public interface ReactionAccessor { static ReactantManager.Reaction createReaction(ItemStack reactant, Fluid fluid, int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/RefineryManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/RefineryManagerAccessor.java index 440550a38..aa26342b1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/RefineryManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/RefineryManagerAccessor.java @@ -29,5 +29,4 @@ static Set getBioFluids() { static Set getFossilFluids() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/RefineryRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/RefineryRecipeAccessor.java index d03317215..396d47b73 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/RefineryRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/RefineryRecipeAccessor.java @@ -13,5 +13,4 @@ public interface RefineryRecipeAccessor { static RefineryManager.RefineryRecipe createRefineryRecipe(FluidStack input, FluidStack outputFluid, ItemStack outputItem, int energy, int chance) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SawmillManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SawmillManagerAccessor.java index 68d590b36..4b66d5872 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SawmillManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SawmillManagerAccessor.java @@ -14,5 +14,4 @@ public interface SawmillManagerAccessor { static Map getRecipeMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SawmillRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SawmillRecipeAccessor.java index b65abc2b3..77f97ac9e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SawmillRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SawmillRecipeAccessor.java @@ -12,5 +12,4 @@ public interface SawmillRecipeAccessor { static SawmillManager.SawmillRecipe createSawmillRecipe(ItemStack input, ItemStack primaryOutput, ItemStack secondaryOutput, int secondaryChance, int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SmelterManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SmelterManagerAccessor.java index e98891792..f331c781e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SmelterManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SmelterManagerAccessor.java @@ -26,5 +26,4 @@ static Set getValidationSet() { static Set getLockSet() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SmelterRecipeAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SmelterRecipeAccessor.java index 4507f8301..1569bcafe 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SmelterRecipeAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SmelterRecipeAccessor.java @@ -12,5 +12,4 @@ public interface SmelterRecipeAccessor { static SmelterManager.SmelterRecipe createSmelterRecipe(ItemStack secondaryInput, ItemStack primaryInput, ItemStack primaryOutput, ItemStack secondaryOutput, int secondaryChance, int energy) { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SteamManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SteamManagerAccessor.java index 8fdf62a64..afd67aba0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SteamManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/SteamManagerAccessor.java @@ -13,5 +13,4 @@ public interface SteamManagerAccessor { static TObjectIntHashMap getFuelMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/TapperManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/TapperManagerAccessor.java index e38b2beee..b167ad795 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/TapperManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/TapperManagerAccessor.java @@ -34,5 +34,4 @@ static SetMultimap getLeafMap() { static TObjectIntHashMap getFertilizerMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/TransposerManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/TransposerManagerAccessor.java index 553512833..1de51cfcb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/TransposerManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/TransposerManagerAccessor.java @@ -32,5 +32,4 @@ static Map getContainerOverrid static Set getValidationSet() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/XpCollectorManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/XpCollectorManagerAccessor.java index 9501aaaf6..35f39873e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/XpCollectorManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/thermalexpansion/XpCollectorManagerAccessor.java @@ -18,5 +18,4 @@ static TObjectIntHashMap getCatalystMap() { static TObjectIntHashMap getCatalystFactorMap() { throw new UnsupportedOperationException(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/CustomDropAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/CustomDropAccessor.java index 2327914be..ef10c9956 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/CustomDropAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/CustomDropAccessor.java @@ -22,5 +22,4 @@ public interface CustomDropAccessor { @Accessor HashMap getSizeMap(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/CustomDropsRepositoryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/CustomDropsRepositoryAccessor.java index 13ab7fb7d..d8f2d8880 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/CustomDropsRepositoryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/CustomDropsRepositoryAccessor.java @@ -11,5 +11,4 @@ public interface CustomDropsRepositoryAccessor { @Accessor List getDrops(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/PolicyRepositoryAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/PolicyRepositoryAccessor.java index 612074309..b66e6025b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/PolicyRepositoryAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/PolicyRepositoryAccessor.java @@ -40,5 +40,4 @@ public interface PolicyRepositoryAccessor { @Accessor List getExternalGenerateOnlyList(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/WootConfigurationManagerAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/WootConfigurationManagerAccessor.java index 4670ac45e..24b2b7fe5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/WootConfigurationManagerAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/woot/WootConfigurationManagerAccessor.java @@ -26,5 +26,4 @@ public interface WootConfigurationManagerAccessor { @Invoker String callMakeKey(WootMobName wootMobName, EnumConfigKey configKey); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/visitors/StaticVerifierVisitor.java b/src/main/java/com/cleanroommc/groovyscript/core/visitors/StaticVerifierVisitor.java index 75e965fec..44d2a1c73 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/visitors/StaticVerifierVisitor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/visitors/StaticVerifierVisitor.java @@ -90,7 +90,9 @@ public void visitCode() { Label label8 = new Label(); mv.visitJumpInsn(IFNE, label8); mv.visitLabel(label7); - mv.visitFrame(Opcodes.F_APPEND, 1, new Object[]{"org/codehaus/groovy/ast/FieldNode"}, 0, null); + mv.visitFrame(Opcodes.F_APPEND, 1, new Object[]{ + "org/codehaus/groovy/ast/FieldNode" + }, 0, null); mv.visitMethodInsn(INVOKESTATIC, "com/cleanroommc/groovyscript/GroovyScript", "getSandbox", "()Lcom/cleanroommc/groovyscript/sandbox/GroovyScriptSandbox;", false); mv.visitMethodInsn(INVOKEVIRTUAL, "com/cleanroommc/groovyscript/sandbox/GroovyScriptSandbox", "getBindings", "()Ljava/util/Map;", false); mv.visitVarInsn(ALOAD, 1); diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/AdmonitionBuilder.java b/src/main/java/com/cleanroommc/groovyscript/documentation/AdmonitionBuilder.java index 75446f9e3..6d4601019 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/AdmonitionBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/AdmonitionBuilder.java @@ -81,5 +81,4 @@ public String generate(IFormat format) { return out.toString(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/Builder.java b/src/main/java/com/cleanroommc/groovyscript/documentation/Builder.java index 293165340..8a2e8986c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/Builder.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/Builder.java @@ -21,11 +21,14 @@ public class Builder { - private static final Char2CharMap commaSeparatedParts = new Char2CharArrayMap() {{ - put(']', '['); - put('\'', '\''); - defaultReturnValue(Character.MIN_VALUE); - }}; + private static final Char2CharMap commaSeparatedParts = new Char2CharArrayMap() { + + { + put(']', '['); + put('\'', '\''); + defaultReturnValue(Character.MIN_VALUE); + } + }; private final String reference; private final Method builderMethod; @@ -57,16 +60,16 @@ private static Map gatherFields(Class builderClas List allFields = getAllFields(builderClass); for (Field field : allFields) { List annotations = Stream.of( - // Attached to the builder method's requirements field, an uncommon location for specific overrides - Arrays.stream(annotation.requirement()).filter(r -> r.property().equals(field.getName())), - // Attached to the class or any parent classes, to create/override requirements set in the parent - getPropertyAnnotationsFromClassRecursive(builderClass).stream().filter(r -> r.property().equals(field.getName())), - // Attached to the field, the typical place for property information to be created - Arrays.stream(field.getAnnotationsByType(Property.class)).filter(r -> { - if (r.property().isEmpty() || r.property().equals(field.getName())) return true; - GroovyLog.get().warn("Property Annotation had element property '{}' set to a value that wasn't empty or equal to field '{}' in class '{}'.", r.property(), field, builderClass); - return false; - })) + // Attached to the builder method's requirements field, an uncommon location for specific overrides + Arrays.stream(annotation.requirement()).filter(r -> r.property().equals(field.getName())), + // Attached to the class or any parent classes, to create/override requirements set in the parent + getPropertyAnnotationsFromClassRecursive(builderClass).stream().filter(r -> r.property().equals(field.getName())), + // Attached to the field, the typical place for property information to be created + Arrays.stream(field.getAnnotationsByType(Property.class)).filter(r -> { + if (r.property().isEmpty() || r.property().equals(field.getName())) return true; + GroovyLog.get().warn("Property Annotation had element property '{}' set to a value that wasn't empty or equal to field '{}' in class '{}'.", r.property(), field, builderClass); + return false; + })) .flatMap(x -> x) .sorted((left, right) -> ComparisonChain.start().compare(left.hierarchy(), right.hierarchy()).result()) .collect(Collectors.toList()); @@ -92,11 +95,13 @@ private static Map> gatherMethods(Class bui } } - fieldToModifyingMethods.forEach((key, value) -> value.sort((left, right) -> ComparisonChain.start() - .compare(left.getAnnotation().priority(), right.getAnnotation().priority()) - .compare(left.getMethod().getName().length(), right.getMethod().getName().length()) - .compare(left.getMethod().getName(), right.getMethod().getName(), String::compareToIgnoreCase) - .result())); + fieldToModifyingMethods.forEach( + (key, value) -> value.sort( + (left, right) -> ComparisonChain.start() + .compare(left.getAnnotation().priority(), right.getAnnotation().priority()) + .compare(left.getMethod().getName().length(), right.getMethod().getName().length()) + .compare(left.getMethod().getName(), right.getMethod().getName(), String::compareToIgnoreCase) + .result())); return fieldToModifyingMethods; } @@ -104,18 +109,20 @@ private static Map> gatherMethods(Class bui private static List gatherRegistrationMethods(Class builderClass) { return Arrays.stream(builderClass.getMethods()) .filter(x -> x.isAnnotationPresent(RecipeBuilderRegistrationMethod.class)) - .sorted((left, right) -> ComparisonChain.start() - .compare(left.getAnnotation(RecipeBuilderRegistrationMethod.class).hierarchy(), right.getAnnotation(RecipeBuilderRegistrationMethod.class).hierarchy()) - // Specifically de-prioritize Object classes - .compareFalseFirst(left.getReturnType() == Object.class, right.getReturnType() == Object.class) - .result()) + .sorted( + (left, right) -> ComparisonChain.start() + .compare(left.getAnnotation(RecipeBuilderRegistrationMethod.class).hierarchy(), right.getAnnotation(RecipeBuilderRegistrationMethod.class).hierarchy()) + // Specifically de-prioritize Object classes + .compareFalseFirst(left.getReturnType() == Object.class, right.getReturnType() == Object.class) + .result()) // Ensure only the first method with a given name is used .filter(distinctByKey(Method::getName)) - .sorted((left, right) -> ComparisonChain.start() - .compare(left.getAnnotation(RecipeBuilderRegistrationMethod.class).priority(), right.getAnnotation(RecipeBuilderRegistrationMethod.class).priority()) - .compare(left.getName().length(), right.getName().length()) - .compare(left.getName(), right.getName(), String::compareToIgnoreCase) - .result()) + .sorted( + (left, right) -> ComparisonChain.start() + .compare(left.getAnnotation(RecipeBuilderRegistrationMethod.class).priority(), right.getAnnotation(RecipeBuilderRegistrationMethod.class).priority()) + .compare(left.getName().length(), right.getName().length()) + .compare(left.getName(), right.getName(), String::compareToIgnoreCase) + .result()) .collect(Collectors.toList()); } @@ -275,7 +282,8 @@ public String documentMethods() { public StringBuilder documentFields() { StringBuilder out = new StringBuilder(); - fields.values().stream() + fields.values() + .stream() .sorted() .filter(FieldDocumentation::isUsed) .forEach(fieldDocumentation -> { @@ -304,14 +312,16 @@ public StringBuilder documentFields() { if (recipeBuilderMethods == null || recipeBuilderMethods.isEmpty()) { GroovyLog.get().warn("Couldn't find any methods targeting field '{}' in recipe builder '{}'", fieldDocumentation.getField().getName(), reference); } else { - out.append(new CodeBlockBuilder() - .line(recipeBuilderMethods.stream() - .sorted() - .map(RecipeBuilderMethod::shortMethodSignature) - .distinct() - .collect(Collectors.toList())) - .indentation(1) - .toString()); + out.append( + new CodeBlockBuilder() + .line( + recipeBuilderMethods.stream() + .sorted() + .map(RecipeBuilderMethod::shortMethodSignature) + .distinct() + .collect(Collectors.toList())) + .indentation(1) + .toString()); } }); return out; @@ -413,7 +423,9 @@ public boolean hasComparison() { return true; //annotations.stream().anyMatch(x -> x.comp().types().length != 0 || x.valid().length != 0); } - @SuppressWarnings({"deprecation", "SimplifyOptionalCallChains"}) + @SuppressWarnings({ + "deprecation", "SimplifyOptionalCallChains" + }) public String getComparison() { Optional comparison = annotations.stream().map(Property::valid).filter(valid -> valid.length != 0).findFirst(); if (!comparison.isPresent()) { @@ -469,7 +481,6 @@ public int compareTo(@NotNull FieldDocumentation comp) { .compare(this.getField().getName(), comp.getField().getName(), String::compareToIgnoreCase) .result(); } - } @@ -514,5 +525,4 @@ public int compareTo(@NotNull RecipeBuilderMethod comp) { .result(); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/CodeBlockBuilder.java b/src/main/java/com/cleanroommc/groovyscript/documentation/CodeBlockBuilder.java index 1c2dc6caa..fcbd41729 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/CodeBlockBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/CodeBlockBuilder.java @@ -118,5 +118,4 @@ public List generate(IFormat format) { public String toString() { return String.join("\n", generate()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/Documentation.java b/src/main/java/com/cleanroommc/groovyscript/documentation/Documentation.java index 0f1c7a891..b5762d50c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/Documentation.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/Documentation.java @@ -121,6 +121,4 @@ public static String ensurePeriod(String string) { if (string.isEmpty()) return ""; return PUNCTUATION_CHARACTERS.contains(string.charAt(string.length() - 1)) ? string : string + "."; } - } - diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/Exporter.java b/src/main/java/com/cleanroommc/groovyscript/documentation/Exporter.java index d880f51c6..3418e305a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/Exporter.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/Exporter.java @@ -62,13 +62,16 @@ private static String convertVarArgs(String name) { public static void generateWiki(File folder, GroovyContainer mod) { List fileLinks = new ArrayList<>(); - List registries = mod.get().getRegistries().stream() + List registries = mod.get() + .getRegistries() + .stream() .filter(x -> x.getClass().isAnnotationPresent(RegistryDescription.class)) .distinct() - .sorted((left, right) -> ComparisonChain.start() - .compare(left.getClass().getAnnotation(RegistryDescription.class).priority(), right.getClass().getAnnotation(RegistryDescription.class).priority()) - .compare(left.getName(), right.getName()) - .result()) + .sorted( + (left, right) -> ComparisonChain.start() + .compare(left.getClass().getAnnotation(RegistryDescription.class).priority(), right.getClass().getAnnotation(RegistryDescription.class).priority()) + .compare(left.getName(), right.getName()) + .result()) .collect(Collectors.toList()); if (registries.isEmpty()) return; @@ -90,18 +93,30 @@ public static void generateWiki(File folder, GroovyContainer { @@ -133,18 +148,25 @@ public static void generateExamples(String target, GroovyContainer imports = new ArrayList<>(); // Preprocessor to only run script if the mod is loaded - header.append("\n").append("// Auto generated groovyscript example file").append("\n") - .append("// MODS_LOADED: ").append(mod.getModId()).append("\n"); + header.append("\n") + .append("// Auto generated groovyscript example file") + .append("\n") + .append("// MODS_LOADED: ") + .append(mod.getModId()) + .append("\n"); // Iterate through every registry of the mod once, in alphabetical order. - List registries = mod.get().getRegistries().stream() + List registries = mod.get() + .getRegistries() + .stream() .distinct() .filter(x -> x.getClass().isAnnotationPresent(RegistryDescription.class)) .filter(x -> x.getClass().getAnnotation(RegistryDescription.class).location().equals(target)) - .sorted((left, right) -> ComparisonChain.start() - .compare(left.getClass().getAnnotation(RegistryDescription.class).priority(), right.getClass().getAnnotation(RegistryDescription.class).priority()) - .compare(left.getName(), right.getName()) - .result()) + .sorted( + (left, right) -> ComparisonChain.start() + .compare(left.getClass().getAnnotation(RegistryDescription.class).priority(), right.getClass().getAnnotation(RegistryDescription.class).priority()) + .compare(left.getName(), right.getName()) + .result()) .collect(Collectors.toList()); if (registries.isEmpty()) return; @@ -160,7 +182,9 @@ public static void generateExamples(String target, GroovyContainer header.append("import ").append(i).append("\n")); // Print that the script was loaded at the end of the header, after any imports have been added. - header.append("\n").append(String.format(PRINT_MOD_DETECTED, mod.getModId())).append("\n\n") + header.append("\n") + .append(String.format(PRINT_MOD_DETECTED, mod.getModId())) + .append("\n\n") .append(body); try { diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/Registry.java b/src/main/java/com/cleanroommc/groovyscript/documentation/Registry.java index ef9b644a6..62ffecd78 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/Registry.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/Registry.java @@ -72,7 +72,7 @@ public Registry(GroovyContainer mod, INamed r private static Map generateTypes(Class registryClass) { var types = new HashMap(); if (registryClass.getGenericSuperclass() instanceof ParameterizedType parameterizedType) { - if (parameterizedType.getRawType() instanceof Class typeClass) { + if (parameterizedType.getRawType() instanceof ClasstypeClass) { var parameters = typeClass.getTypeParameters(); var args = parameterizedType.getActualTypeArguments(); for (int i = 0; i < parameters.length && i < args.length; i++) { @@ -84,38 +84,41 @@ private static Map generateTypes(Class registryClass) { } private static List sortGrSRecipeBuilderDescriptionMethods(List methods) { - methods.sort((left, right) -> ComparisonChain.start() - .compareFalseFirst(left.isAnnotationPresent(RecipeBuilderDescription.class), right.isAnnotationPresent(RecipeBuilderDescription.class)) - .compare(left.getAnnotation(RecipeBuilderDescription.class).priority(), right.getAnnotation(RecipeBuilderDescription.class).priority()) - .compare(left.getName(), right.getName(), String::compareToIgnoreCase) - .compare(Exporter.simpleSignature(left), Exporter.simpleSignature(right), String::compareToIgnoreCase) - .result()); + methods.sort( + (left, right) -> ComparisonChain.start() + .compareFalseFirst(left.isAnnotationPresent(RecipeBuilderDescription.class), right.isAnnotationPresent(RecipeBuilderDescription.class)) + .compare(left.getAnnotation(RecipeBuilderDescription.class).priority(), right.getAnnotation(RecipeBuilderDescription.class).priority()) + .compare(left.getName(), right.getName(), String::compareToIgnoreCase) + .compare(Exporter.simpleSignature(left), Exporter.simpleSignature(right), String::compareToIgnoreCase) + .result()); return methods; } private static List sortGrSMethodDescriptionMethods(List methods) { - methods.sort((left, right) -> ComparisonChain.start() - .compareFalseFirst(left.isAnnotationPresent(MethodDescription.class), right.isAnnotationPresent(MethodDescription.class)) - .compare(left.getAnnotation(MethodDescription.class).priority(), right.getAnnotation(MethodDescription.class).priority()) - .compare(left.getName(), right.getName(), String::compareToIgnoreCase) - .compare(Exporter.simpleSignature(left), Exporter.simpleSignature(right), String::compareToIgnoreCase) - .result()); + methods.sort( + (left, right) -> ComparisonChain.start() + .compareFalseFirst(left.isAnnotationPresent(MethodDescription.class), right.isAnnotationPresent(MethodDescription.class)) + .compare(left.getAnnotation(MethodDescription.class).priority(), right.getAnnotation(MethodDescription.class).priority()) + .compare(left.getName(), right.getName(), String::compareToIgnoreCase) + .compare(Exporter.simpleSignature(left), Exporter.simpleSignature(right), String::compareToIgnoreCase) + .result()); return methods; } private static List getExamples(Method method) { return method.isAnnotationPresent(MethodDescription.class) - ? new ArrayList<>(Arrays.asList(method.getAnnotation(MethodDescription.class).example())) - : new ArrayList<>(); + ? new ArrayList<>(Arrays.asList(method.getAnnotation(MethodDescription.class).example())) + : new ArrayList<>(); } private static List sortExamples(List examples) { - examples.sort((left, right) -> ComparisonChain.start() - .compare(left.priority(), right.priority()) - .compareFalseFirst(left.commented(), right.commented()) - .compare(left.value().length(), right.value().length()) - .compare(left.value(), right.value()) - .result()); + examples.sort( + (left, right) -> ComparisonChain.start() + .compare(left.priority(), right.priority()) + .compareFalseFirst(left.commented(), right.commented()) + .compare(left.value().length(), right.value().length()) + .compare(left.value(), right.value()) + .result()); return examples; } @@ -132,8 +135,9 @@ public String getTitle() { } public String getDescription() { - return Documentation.ensurePeriod(Documentation.translate(description.description().isEmpty() ? String.format("%s.description", baseTranslationKey) : description.description()) - .replace("\"", "\\\"")); + return Documentation.ensurePeriod( + Documentation.translate(description.description().isEmpty() ? String.format("%s.description", baseTranslationKey) : description.description()) + .replace("\"", "\\\"")); } public String exampleBlock() { @@ -181,22 +185,24 @@ private String generateDescription() { out.append(getDescription()).append("\n\n"); if (!description.isFullyDocumented()) { - out.append(new AdmonitionBuilder() - .type(Admonition.Type.WARNING) - .note(I18n.format("groovyscript.wiki.not_fully_documented")) - .generate()); + out.append( + new AdmonitionBuilder() + .type(Admonition.Type.WARNING) + .note(I18n.format("groovyscript.wiki.not_fully_documented")) + .generate()); out.append("\n\n"); } Admonition[] admonition = description.admonition(); for (Admonition note : admonition) { - out.append(new AdmonitionBuilder() - .type(note.type()) - .title(note.title()) - .hasTitle(note.hasTitle()) - .format(note.format()) - .note(Documentation.ensurePeriod(Documentation.translate(note.value()))) - .generate()); + out.append( + new AdmonitionBuilder() + .type(note.type()) + .title(note.title()) + .hasTitle(note.hasTitle()) + .format(note.format()) + .note(Documentation.ensurePeriod(Documentation.translate(note.value()))) + .generate()); out.append("\n\n"); } return out.toString(); @@ -206,41 +212,48 @@ private String generateIdentifier() { StringBuilder out = new StringBuilder(); out.append("## ").append(I18n.format("groovyscript.wiki.identifier")).append("\n\n").append(I18n.format("groovyscript.wiki.import_instructions")).append("\n\n"); - List packages = mod.getAliases().stream() + List packages = mod.getAliases() + .stream() .flatMap(modID -> registry.getAliases().stream().map(alias -> String.format("mods.%s.%s", modID, alias))) .collect(Collectors.toList()); int target = packages.indexOf(reference); packages.set(target, reference + "/*()!*/"); - out.append(new CodeBlockBuilder() - .line(packages) - .annotation(I18n.format("groovyscript.wiki.defaultPackage")) - // Highlighting and focusing are based on the line count, and is 1-indexed - .highlight(String.valueOf(1 + target)) - .focus(1 + target) - .toString()); + out.append( + new CodeBlockBuilder() + .line(packages) + .annotation(I18n.format("groovyscript.wiki.defaultPackage")) + // Highlighting and focusing are based on the line count, and is 1-indexed + .highlight(String.valueOf(1 + target)) + .focus(1 + target) + .toString()); return out.toString(); } private String recipeBuilder() { StringBuilder out = new StringBuilder(); - out.append("### ").append(I18n.format("groovyscript.wiki.recipe_builder")).append("\n\n") - .append(I18n.format("groovyscript.wiki.uses_recipe_builder", getTitle())).append("\n\n") - .append(I18n.format("groovyscript.wiki.recipe_builder_note", Documentation.DEFAULT_FORMAT.linkToBuilder())).append("\n\n"); + out.append("### ") + .append(I18n.format("groovyscript.wiki.recipe_builder")) + .append("\n\n") + .append(I18n.format("groovyscript.wiki.uses_recipe_builder", getTitle())) + .append("\n\n") + .append(I18n.format("groovyscript.wiki.recipe_builder_note", Documentation.DEFAULT_FORMAT.linkToBuilder())) + .append("\n\n"); for (int i = 0; i < recipeBuilderMethods.size(); i++) { Builder builder = new Builder(recipeBuilderMethods.get(i), reference, baseTranslationKey); - out.append(new AdmonitionBuilder() - .type(Admonition.Type.ABSTRACT) - .hasTitle(true) - .title(methodExample(recipeBuilderMethods.get(i))) - .note(builder.documentMethods().split("\n")) - .note("\n") - .note(builder.builderAdmonition().split("\n")) - .note("\n") - .generate()); + out.append( + new AdmonitionBuilder() + .type(Admonition.Type.ABSTRACT) + .hasTitle(true) + .title(methodExample(recipeBuilderMethods.get(i))) + .note(builder.documentMethods().split("\n")) + .note("\n") + .note(builder.builderAdmonition().split("\n")) + .note("\n") + .generate()); if (i < recipeBuilderMethods.size() - 1) out.append("\n\n"); } return out.toString(); @@ -297,13 +310,15 @@ public String documentMethods(List methods, boolean preventExamples) { } if (!exampleLines.isEmpty() && !preventExamples) { - out.append(new AdmonitionBuilder() - .type(Admonition.Type.EXAMPLE) - .note(new CodeBlockBuilder() - .line(exampleLines) - .annotation(annotations) - .generate()) - .generate()); + out.append( + new AdmonitionBuilder() + .type(Admonition.Type.EXAMPLE) + .note( + new CodeBlockBuilder() + .line(exampleLines) + .annotation(annotations) + .generate()) + .generate()); out.append("\n"); } @@ -317,15 +332,16 @@ private String methodDescription(Method method) { // If `desc` isn't defined, check the `registryDefault` key. If it exists, use it. // Then, check the `globalDefault` key. If it exists use it. Otherwise, we want to still use the `registryDefault` for logging a missing key. String lang = desc.isEmpty() - ? I18n.hasKey(registryDefault) || !I18n.hasKey(globalDefault) ? registryDefault : globalDefault - : desc; - - return String.format("- %s:\n\n%s", - Documentation.translate(lang), - new CodeBlockBuilder() - .line(methodExample(method, Exporter.simpleSignature(method, types))) - .indentation(1) - .toString()); + ? I18n.hasKey(registryDefault) || !I18n.hasKey(globalDefault) ? registryDefault : globalDefault + : desc; + + return String.format( + "- %s:\n\n%s", + Documentation.translate(lang), + new CodeBlockBuilder() + .line(methodExample(method, Exporter.simpleSignature(method, types))) + .indentation(1) + .toString()); } private String methodExample(Method method, String example) { @@ -349,5 +365,4 @@ private String examples(Method method) { } return out.toString(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/format/IFormat.java b/src/main/java/com/cleanroommc/groovyscript/documentation/format/IFormat.java index 1ed8efc3f..be39cf5b3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/format/IFormat.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/format/IFormat.java @@ -63,5 +63,4 @@ public interface IFormat { * @return if the format uses focus in codeblocks. Focus being true also means that annotations are disabled */ boolean usesFocusInCodeBlocks(); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/format/MKDocsMaterial.java b/src/main/java/com/cleanroommc/groovyscript/documentation/format/MKDocsMaterial.java index 35b18d8b6..6dd4e8716 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/format/MKDocsMaterial.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/format/MKDocsMaterial.java @@ -58,5 +58,4 @@ public boolean requiresNavFile() { public boolean usesFocusInCodeBlocks() { return false; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/format/OutputFormat.java b/src/main/java/com/cleanroommc/groovyscript/documentation/format/OutputFormat.java index 6338088c3..9f39fb5d7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/format/OutputFormat.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/format/OutputFormat.java @@ -6,7 +6,5 @@ public class OutputFormat { public static final MKDocsMaterial MKDOCS_MATERIAL = new MKDocsMaterial(); public static final VitePress VITEPRESS = new VitePress(); - private OutputFormat() { - } - + private OutputFormat() {} } diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/format/VitePress.java b/src/main/java/com/cleanroommc/groovyscript/documentation/format/VitePress.java index ac8c6ef18..357256f13 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/format/VitePress.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/format/VitePress.java @@ -64,5 +64,4 @@ public boolean requiresNavFile() { public boolean usesFocusInCodeBlocks() { return true; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/linkgenerator/BasicLinkGenerator.java b/src/main/java/com/cleanroommc/groovyscript/documentation/linkgenerator/BasicLinkGenerator.java index 526af2f07..4e0aebd7a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/linkgenerator/BasicLinkGenerator.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/linkgenerator/BasicLinkGenerator.java @@ -48,5 +48,4 @@ protected String trimmedLocation(String location) { public String convert(String location) { return domain() + path() + trimmedLocation(location) + extension(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/documentation/linkgenerator/LinkGeneratorHooks.java b/src/main/java/com/cleanroommc/groovyscript/documentation/linkgenerator/LinkGeneratorHooks.java index 5dc13870e..669f519c1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/documentation/linkgenerator/LinkGeneratorHooks.java +++ b/src/main/java/com/cleanroommc/groovyscript/documentation/linkgenerator/LinkGeneratorHooks.java @@ -25,5 +25,4 @@ public static void registerLinkGenerator(ILinkGenerator linkGenerator) { public static String convert(String mode, Class clazz) { return REGISTRY.getOrDefault(mode, DEFAULT).convert(clazz.getProtectionDomain().getCodeSource().getLocation().getPath()); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/event/EventBusExtended.java b/src/main/java/com/cleanroommc/groovyscript/event/EventBusExtended.java index c1e818bd1..f0746e89a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/event/EventBusExtended.java +++ b/src/main/java/com/cleanroommc/groovyscript/event/EventBusExtended.java @@ -6,5 +6,4 @@ public interface EventBusExtended { void register(Class eventClass, EventPriority priority, IEventListener listener); - } diff --git a/src/main/java/com/cleanroommc/groovyscript/event/EventHandler.java b/src/main/java/com/cleanroommc/groovyscript/event/EventHandler.java index f768bfcaa..39130c913 100644 --- a/src/main/java/com/cleanroommc/groovyscript/event/EventHandler.java +++ b/src/main/java/com/cleanroommc/groovyscript/event/EventHandler.java @@ -114,8 +114,7 @@ public static void playerLogin(PlayerEvent.PlayerLoggedInEvent event) { @SubscribeEvent @SideOnly(Side.CLIENT) public static void onClientChatEvent(ClientChatEvent event) { - if (event.getOriginalMessage().startsWith(CustomClickAction.PREFIX) && - CustomClickAction.runActionHook(event.getOriginalMessage().substring(CustomClickAction.PREFIX.length()))) { + if (event.getOriginalMessage().startsWith(CustomClickAction.PREFIX) && CustomClickAction.runActionHook(event.getOriginalMessage().substring(CustomClickAction.PREFIX.length()))) { event.setCanceled(true); } } @@ -172,24 +171,19 @@ public static void onGuiOpen(GuiOpenEvent event) { List warnings = new ArrayList<>(); if (!FMLLaunchHandler.isDeobfuscatedEnvironment()) { if (!Loader.isModLoaded("universaltweaks")) { - warnings.add("UniversalTweaks is not loaded! It fixes a recipe book bug by removing it.\n" + - "Consider adding UniversalTweaks to your mods and make sure to enable recipe book removal in the config"); + warnings.add("UniversalTweaks is not loaded! It fixes a recipe book bug by removing it.\n" + "Consider adding UniversalTweaks to your mods and make sure to enable recipe book removal in the config"); } else if (isUTRecipeBookEnabled()) { - warnings.add("UniversalTweaks is loaded, but the recipe book is still enabled. This will cause issue with Groovyscript!\n" + - "Please set 'Remove Recipe Book' to true in the misc category!"); + warnings.add("UniversalTweaks is loaded, but the recipe book is still enabled. This will cause issue with Groovyscript!\n" + "Please set 'Remove Recipe Book' to true in the misc category!"); } if (Loader.isModLoaded("inworldcrafting")) { - warnings.add("InWorldCrafting mod was detected. InWorldCrafting is obsolete since GroovyScript implements its functionality on its own.\n" + - "Consider using GroovyScript and removing InWorldCrafting."); + warnings.add("InWorldCrafting mod was detected. InWorldCrafting is obsolete since GroovyScript implements its functionality on its own.\n" + "Consider using GroovyScript and removing InWorldCrafting."); } } if ((GroovyScript.getRunConfig().getPackmodeConfigState() & 1) != 0) { - warnings.add("Integration with the packmode mod is enabled, but the packmode mod is not installed.\n" + - "Please disable integration or install the mod."); + warnings.add("Integration with the packmode mod is enabled, but the packmode mod is not installed.\n" + "Please disable integration or install the mod."); } if ((GroovyScript.getRunConfig().getPackmodeConfigState() & 2) != 0) { - warnings.add("Integration with the packmode mod is enabled, but packmodes are also configured in GroovyScript.\n" + - "You should use the packmode mod to configure packmodes if integration is enabled."); + warnings.add("Integration with the packmode mod is enabled, but packmodes are also configured in GroovyScript.\n" + "You should use the packmode mod to configure packmodes if integration is enabled."); } if (!warnings.isEmpty()) { event.setGui(new WarningScreen(warnings)); diff --git a/src/main/java/com/cleanroommc/groovyscript/event/GroovyEventManager.java b/src/main/java/com/cleanroommc/groovyscript/event/GroovyEventManager.java index a299dcb77..13fe3ed30 100644 --- a/src/main/java/com/cleanroommc/groovyscript/event/GroovyEventManager.java +++ b/src/main/java/com/cleanroommc/groovyscript/event/GroovyEventManager.java @@ -73,8 +73,11 @@ public void listen(EventBusType eventBusType, Class eventClass, } public void listen(EventPriority priority, EventBusType eventBusType, Class eventClass, Closure eventListener) { - listen(priority, eventBusType, eventClass, - event -> ClosureHelper.call(ClosureHelper.withEnvironment(eventListener, event, true))); + listen( + priority, + eventBusType, + eventClass, + event -> ClosureHelper.call(ClosureHelper.withEnvironment(eventListener, event, true))); } @GroovyBlacklist diff --git a/src/main/java/com/cleanroommc/groovyscript/event/LootTablesLoadedEvent.java b/src/main/java/com/cleanroommc/groovyscript/event/LootTablesLoadedEvent.java index 7531c4cb7..e2a01d770 100644 --- a/src/main/java/com/cleanroommc/groovyscript/event/LootTablesLoadedEvent.java +++ b/src/main/java/com/cleanroommc/groovyscript/event/LootTablesLoadedEvent.java @@ -146,5 +146,4 @@ public GroovyLootCondition condition(Closure condition) { return new GroovyLootCondition(condition); } } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/GroovyFile.java b/src/main/java/com/cleanroommc/groovyscript/helper/GroovyFile.java index 411da0f54..33db0d9e3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/GroovyFile.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/GroovyFile.java @@ -719,11 +719,12 @@ public void append(Reader reader, String charset) throws IOException { * @throws FileNotFoundException if the given directory does not exist * @throws IllegalArgumentException if the provided File object does not represent a directory */ - public void eachFile(final FileType fileType, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) - throws FileNotFoundException, IllegalArgumentException { + public void eachFile(final FileType fileType, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.eachFile(this.internal, fileType, wrapped); } @@ -737,11 +738,12 @@ public void eachFile(final FileType fileType, @ClosureParams(value = SimpleType. * @see java.io.File#listFiles() * @see ResourceGroovyMethods#eachFile(java.io.File, groovy.io.FileType, groovy.lang.Closure) */ - public void eachFile(@ClosureParams(value = SimpleType.class, options = "java.io.File") - final Closure closure) throws FileNotFoundException, IllegalArgumentException { + public void eachFile(@ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.eachFile(this.internal, wrapped); } @@ -756,10 +758,12 @@ public void eachFile(@ClosureParams(value = SimpleType.class, options = "java.io * @see ResourceGroovyMethods#eachFile(java.io.File, groovy.io.FileType, groovy.lang.Closure) */ public void eachDir( - @ClosureParams(value = SimpleType.class, options = "java.io.File") Closure closure) throws FileNotFoundException, IllegalArgumentException { + @ClosureParams(value = SimpleType.class, options = "java.io.File") Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.eachDir(this.internal, wrapped); } @@ -775,11 +779,12 @@ public void eachDir( * @throws FileNotFoundException if the given directory does not exist * @throws IllegalArgumentException if the provided File object does not represent a directory */ - public void eachFileRecurse(final FileType fileType, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) - throws FileNotFoundException, IllegalArgumentException { + public void eachFileRecurse(final FileType fileType, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.eachFileRecurse(this.internal, fileType, wrapped); } @@ -840,23 +845,13 @@ public void eachFileRecurse(final FileType fileType, @ClosureParams(value = Simp * @see groovy.io.FileVisitResult * @see groovy.io.FileType */ - public void traverse(@NamedParam(value = "type", type = FileType.class) - @NamedParam(value = "preDir", type = Closure.class) - @NamedParam(value = "preRoot", type = Boolean.class) - @NamedParam(value = "postDir", type = Closure.class) - @NamedParam(value = "postRoot", type = Boolean.class) - @NamedParam(value = "visitRoot", type = Boolean.class) - @NamedParam(value = "maxDepth", type = Integer.class) - @NamedParam(value = "filter") - @NamedParam(value = "nameFilter") - @NamedParam(value = "excludeFilter") - @NamedParam(value = "excludeNameFilter") - @NamedParam(value = "sort", type = Closure.class) final Map options, - @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) - throws FileNotFoundException, IllegalArgumentException { + public void traverse(@NamedParam(value = "type", type = FileType.class) @NamedParam(value = "preDir", type = Closure.class) @NamedParam(value = "preRoot", type = Boolean.class) @NamedParam(value = "postDir", type = Closure.class) @NamedParam(value = "postRoot", type = Boolean.class) @NamedParam(value = "visitRoot", type = Boolean.class) @NamedParam(value = "maxDepth", type = Integer.class) @NamedParam(value = "filter") @NamedParam(value = "nameFilter") @NamedParam(value = "excludeFilter") @NamedParam(value = "excludeNameFilter") @NamedParam(value = "sort", type = Closure.class) final Map options, + @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.traverse(this.internal, options, wrapped); } @@ -871,11 +866,12 @@ public void traverse(@NamedParam(value = "type", type = FileType.class) * @throws IllegalArgumentException if the provided File object does not represent a directory * @see ResourceGroovyMethods#traverse(java.io.File, java.util.Map, groovy.lang.Closure) */ - public void traverse(@ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) - throws FileNotFoundException, IllegalArgumentException { + public void traverse(@ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.traverse(this.internal, wrapped); } @@ -890,19 +886,7 @@ public void traverse(@ClosureParams(value = SimpleType.class, options = "java.io * @throws IllegalArgumentException if the provided File object does not represent a directory or illegal filter combinations are supplied * @see ResourceGroovyMethods#traverse(java.io.File, java.util.Map, groovy.lang.Closure) */ - public void traverse(@NamedParam(value = "type", type = FileType.class) - @NamedParam(value = "preDir", type = Closure.class) - @NamedParam(value = "preRoot", type = Boolean.class) - @NamedParam(value = "postDir", type = Closure.class) - @NamedParam(value = "postRoot", type = Boolean.class) - @NamedParam(value = "visitRoot", type = Boolean.class) - @NamedParam(value = "maxDepth", type = Integer.class) - @NamedParam(value = "filter") - @NamedParam(value = "nameFilter") - @NamedParam(value = "excludeFilter") - @NamedParam(value = "excludeNameFilter") - @NamedParam(value = "sort", type = Closure.class) final Map options) - throws FileNotFoundException, IllegalArgumentException { + public void traverse(@NamedParam(value = "type", type = FileType.class) @NamedParam(value = "preDir", type = Closure.class) @NamedParam(value = "preRoot", type = Boolean.class) @NamedParam(value = "postDir", type = Closure.class) @NamedParam(value = "postRoot", type = Boolean.class) @NamedParam(value = "visitRoot", type = Boolean.class) @NamedParam(value = "maxDepth", type = Integer.class) @NamedParam(value = "filter") @NamedParam(value = "nameFilter") @NamedParam(value = "excludeFilter") @NamedParam(value = "excludeNameFilter") @NamedParam(value = "sort", type = Closure.class) final Map options) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); ResourceGroovyMethods.traverse(this.internal, options); } @@ -919,10 +903,12 @@ public void traverse(@NamedParam(value = "type", type = FileType.class) * @see ResourceGroovyMethods#eachFileRecurse(java.io.File, groovy.io.FileType, groovy.lang.Closure) */ public void eachFileRecurse( - @ClosureParams(value = SimpleType.class, options = "java.io.File") Closure closure) throws FileNotFoundException, IllegalArgumentException { + @ClosureParams(value = SimpleType.class, options = "java.io.File") Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.eachFileRecurse(this.internal, wrapped); } @@ -938,11 +924,12 @@ public void eachFileRecurse( * @see ResourceGroovyMethods#eachFileRecurse(java.io.File, groovy.io.FileType, groovy.lang.Closure) */ public void eachDirRecurse( - @ClosureParams(value = SimpleType.class, options = "java.io.File") - final Closure closure) throws FileNotFoundException, IllegalArgumentException { + @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.eachDirRecurse(this.internal, wrapped); } @@ -972,12 +959,14 @@ public void eachDirRecurse( * @throws FileNotFoundException if the given directory does not exist * @throws IllegalArgumentException if the provided File object does not represent a directory */ - public void eachFileMatch(final FileType fileType, final Object nameFilter, - @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) - throws FileNotFoundException, IllegalArgumentException { + public void eachFileMatch(final FileType fileType, + final Object nameFilter, + @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.eachFileMatch(this.internal, fileType, nameFilter, wrapped); } @@ -993,11 +982,12 @@ public void eachFileMatch(final FileType fileType, final Object nameFilter, * @throws IllegalArgumentException if the provided File object does not represent a directory * @see ResourceGroovyMethods#eachFileMatch(java.io.File, groovy.io.FileType, java.lang.Object, groovy.lang.Closure) */ - public void eachFileMatch(final Object nameFilter, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) - throws FileNotFoundException, IllegalArgumentException { + public void eachFileMatch(final Object nameFilter, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.eachFileMatch(this.internal, nameFilter, wrapped); } @@ -1013,11 +1003,12 @@ public void eachFileMatch(final Object nameFilter, @ClosureParams(value = Simple * @throws IllegalArgumentException if the provided File object does not represent a directory * @see ResourceGroovyMethods#eachFileMatch(java.io.File, groovy.io.FileType, java.lang.Object, groovy.lang.Closure) */ - public void eachDirMatch(final Object nameFilter, @ClosureParams(value = SimpleType.class, options = "java.io.File") - final Closure closure) throws FileNotFoundException, IllegalArgumentException { + public void eachDirMatch(final Object nameFilter, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException { checkAccessible(); - Closure wrapped = new LambdaClosure<>(closure.getOwner(), closure.getThisObject(), - args -> closure.call(new GroovyFile((File) args[0]))); + Closure wrapped = new LambdaClosure<>( + closure.getOwner(), + closure.getThisObject(), + args -> closure.call(new GroovyFile((File) args[0]))); ResourceGroovyMethods.eachDirMatch(this.internal, nameFilter, wrapped); } diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/GroovyHelper.java b/src/main/java/com/cleanroommc/groovyscript/helper/GroovyHelper.java index 82cfc5362..2c7533c76 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/GroovyHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/GroovyHelper.java @@ -13,8 +13,7 @@ public class GroovyHelper { @GroovyBlacklist - private GroovyHelper() { - } + private GroovyHelper() {} public static boolean isLoaded(String mod) { return Loader.isModLoaded(mod); diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/FluidStackList.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/FluidStackList.java index bb452de03..47a9d34f6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/FluidStackList.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/FluidStackList.java @@ -7,8 +7,7 @@ public class FluidStackList extends ArrayList { - public FluidStackList() { - } + public FluidStackList() {} public FluidStackList(Collection collection) { super(collection); diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java index cc8fdafa4..a6dd9079d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java @@ -172,9 +172,10 @@ public static String asGroovyCode(Potion potion, boolean colored) { public static String asGroovyCode(PotionEffect potionEffect, boolean colored) { StringBuilder builder = new StringBuilder(); - List list = Lists.newArrayList(asGroovyCode(potionEffect.getPotion(), colored), - formatNumber(potionEffect.getDuration(), colored), - formatNumber(potionEffect.getAmplifier(), colored)); + List list = Lists.newArrayList( + asGroovyCode(potionEffect.getPotion(), colored), + formatNumber(potionEffect.getDuration(), colored), + formatNumber(potionEffect.getAmplifier(), colored)); builder.append(formatInstantiation("PotionEffect", list, colored)); return builder.toString(); } diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/IngredientHelper.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/IngredientHelper.java index fa36a9988..8a7631a21 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/IngredientHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/IngredientHelper.java @@ -281,5 +281,4 @@ public static String asGroovyCode(String oreDict, boolean colored) { public static String asGroovyCode(IBlockState state, boolean colored) { return GroovyScriptCodeConverter.asGroovyCode(state, colored); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/ItemStackList.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/ItemStackList.java index e948c440f..bb711a101 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/ItemStackList.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/ItemStackList.java @@ -10,8 +10,7 @@ */ public class ItemStackList extends ArrayList { - public ItemStackList() { - } + public ItemStackList() {} public ItemStackList(Collection collection) { super(collection); diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/OreDictIngredient.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/OreDictIngredient.java index c06ca55ff..0ceb3b1ea 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/OreDictIngredient.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/OreDictIngredient.java @@ -2,12 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; - +import com.google.common.collect.Iterators; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraftforge.oredict.OreDictionary; - -import com.google.common.collect.Iterators; import org.jetbrains.annotations.NotNull; import java.util.Iterator; diff --git a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMapper.java b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMapper.java index 782d195d1..a958652b1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMapper.java +++ b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMapper.java @@ -142,13 +142,18 @@ public List getMethodNodes() { if (methodNodes == null) { this.methodNodes = new ArrayList<>(); for (Class[] paramType : this.paramTypes) { - Parameter[] params = ArrayUtils.map(paramType, c -> new Parameter(ClassHelper.makeCached(c), ""), - new Parameter[paramType.length]); - MethodNode node = new MethodNode(this.name, Modifier.PUBLIC | Modifier.FINAL, - ClassHelper.makeCached(this.returnType), params, null, null); - node.setDeclaringClass(this.mod != null ? - ClassHelper.makeCached(this.mod.get().getClass()) : - ClassHelper.makeCached(ObjectMapperManager.class)); + Parameter[] params = ArrayUtils.map( + paramType, + c -> new Parameter(ClassHelper.makeCached(c), ""), + new Parameter[paramType.length]); + MethodNode node = new MethodNode( + this.name, + Modifier.PUBLIC | Modifier.FINAL, + ClassHelper.makeCached(this.returnType), + params, + null, + null); + node.setDeclaringClass(this.mod != null ? ClassHelper.makeCached(this.mod.get().getClass()) : ClassHelper.makeCached(ObjectMapperManager.class)); node.setNodeMetaData(GroovydocHolder.DOC_COMMENT, new Groovydoc(this.documentation, node)); this.methodNodes.add(node); } @@ -356,11 +361,21 @@ public void register() { throw new IllegalArgumentException("Tried to register ObjectMapper for mod " + this.mod + ", but it's not loaded"); Objects.requireNonNull(this.handler, () -> "The ObjectMapper function must no be null"); Objects.requireNonNull(this.returnType, () -> "The ObjectMapper return type must not be null"); - if (this.paramTypes.isEmpty()) this.paramTypes.add(new Class[]{String.class}); + if (this.paramTypes.isEmpty()) this.paramTypes.add(new Class[]{ + String.class + }); if (this.defaultValue == null) this.defaultValue = () -> null; this.documentation = IDocumented.toJavaDoc(this.documentation); - ObjectMapper goh = new ObjectMapper<>(this.name, this.mod, this.handler, this.defaultValue, - this.returnType, this.paramTypes, this.completer, this.documentation, this.textureBinder); + ObjectMapper goh = new ObjectMapper<>( + this.name, + this.mod, + this.handler, + this.defaultValue, + this.returnType, + this.paramTypes, + this.completer, + this.documentation, + this.textureBinder); ObjectMapperManager.registerObjectMapper(this.mod, goh); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMappers.java b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMappers.java index 6ce1e9ee1..2b277726f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMappers.java +++ b/src/main/java/com/cleanroommc/groovyscript/mapper/ObjectMappers.java @@ -29,7 +29,6 @@ import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.*; -import java.util.stream.Collectors; import static com.cleanroommc.groovyscript.mapper.ObjectMapperManager.SPLITTER; import static com.cleanroommc.groovyscript.mapper.ObjectMapperManager.WILDCARD; @@ -150,7 +149,7 @@ public static Result parseBlockState(String arg) { @SuppressWarnings("all") private static Result parseBlockStates(IBlockState defaultState, Iterator iterable) { - for (Iterator it = iterable; it.hasNext(); ) { + for (Iterator it = iterable; it.hasNext();) { String state = it.next(); String[] prop = state.split(EQUALS, 2); IProperty property = defaultState.getBlock().getBlockState().getProperty(prop[0]); diff --git a/src/main/java/com/cleanroommc/groovyscript/mapper/TextureTooltip.java b/src/main/java/com/cleanroommc/groovyscript/mapper/TextureTooltip.java index 20a4e2abe..ca839488f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/mapper/TextureTooltip.java +++ b/src/main/java/com/cleanroommc/groovyscript/mapper/TextureTooltip.java @@ -7,6 +7,7 @@ import java.util.regex.Pattern; public class TextureTooltip { + private static final Pattern embeddingPattern = Pattern.compile("(?>\\$\\{(?\\w+)\\(['\\\"](?[\\w\\s:-]+)['\\\"]\\)})"); private final String content; @@ -54,6 +55,7 @@ public List getEmbeddings() { } public class Embedding { + private final int start; private final int end; private final T context; diff --git a/src/main/java/com/cleanroommc/groovyscript/network/CReload.java b/src/main/java/com/cleanroommc/groovyscript/network/CReload.java index b933490f2..b0ffde051 100644 --- a/src/main/java/com/cleanroommc/groovyscript/network/CReload.java +++ b/src/main/java/com/cleanroommc/groovyscript/network/CReload.java @@ -7,12 +7,10 @@ public class CReload implements IPacket { @Override - public void encode(PacketBuffer buf) { - } + public void encode(PacketBuffer buf) {} @Override - public void decode(PacketBuffer buf) { - } + public void decode(PacketBuffer buf) {} @Override public IPacket executeServer(NetHandlerPlayServer handler) { diff --git a/src/main/java/com/cleanroommc/groovyscript/network/SCopy.java b/src/main/java/com/cleanroommc/groovyscript/network/SCopy.java index 87a7556c6..a552ba5c8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/network/SCopy.java +++ b/src/main/java/com/cleanroommc/groovyscript/network/SCopy.java @@ -13,8 +13,7 @@ public SCopy(String[] text) { this.text = text; } - public SCopy() { - } + public SCopy() {} @Override public void encode(PacketBuffer buf) { diff --git a/src/main/java/com/cleanroommc/groovyscript/network/SReloadScripts.java b/src/main/java/com/cleanroommc/groovyscript/network/SReloadScripts.java index 864d000a8..0a3a7bd19 100644 --- a/src/main/java/com/cleanroommc/groovyscript/network/SReloadScripts.java +++ b/src/main/java/com/cleanroommc/groovyscript/network/SReloadScripts.java @@ -17,8 +17,7 @@ public class SReloadScripts implements IPacket { private boolean changePackmode; private boolean reloadJei; - public SReloadScripts() { - } + public SReloadScripts() {} public SReloadScripts(String packmode, boolean changePackmode, boolean reloadJei) { this.packmode = packmode; diff --git a/src/main/java/com/cleanroommc/groovyscript/registry/AbstractCraftingRecipeBuilder.java b/src/main/java/com/cleanroommc/groovyscript/registry/AbstractCraftingRecipeBuilder.java index 863133d74..4cf0f20ce 100644 --- a/src/main/java/com/cleanroommc/groovyscript/registry/AbstractCraftingRecipeBuilder.java +++ b/src/main/java/com/cleanroommc/groovyscript/registry/AbstractCraftingRecipeBuilder.java @@ -31,20 +31,23 @@ public abstract class AbstractCraftingRecipeBuilder { - @Property(value = "groovyscript.wiki.craftingrecipe.output.value", - comp = @Comp(not = "null"), - priority = 700, - hierarchy = 20) + @Property( + value = "groovyscript.wiki.craftingrecipe.output.value", + comp = @Comp(not = "null"), + priority = 700, + hierarchy = 20) protected ItemStack output; @Property(value = "groovyscript.wiki.name.value", priority = 100, hierarchy = 20) protected ResourceLocation name; - @Property(value = "groovyscript.wiki.craftingrecipe.recipeFunction.value", - priority = 1500, - hierarchy = 20) + @Property( + value = "groovyscript.wiki.craftingrecipe.recipeFunction.value", + priority = 1500, + hierarchy = 20) protected Closure recipeFunction; - @Property(value = "groovyscript.wiki.craftingrecipe.recipeAction.value", - priority = 1550, - hierarchy = 20) + @Property( + value = "groovyscript.wiki.craftingrecipe.recipeAction.value", + priority = 1550, + hierarchy = 20) protected Closure recipeAction; @Property(value = "groovyscript.wiki.craftingrecipe.replace.value", needsOverride = true, hierarchy = 20) protected byte replace; @@ -120,7 +123,9 @@ protected void handleReplace() { } else if (replace == 2) { if (name == null) { GroovyLog.msg("Error replacing Minecraft Crafting recipe") - .add("Name must not be null when replacing by name").error().post(); + .add("Name must not be null when replacing by name") + .error() + .post(); return; } ReloadableRegistryManager.removeRegistryEntry(ForgeRegistries.RECIPES, name); @@ -141,8 +146,11 @@ public void validateName() { @GroovyBlacklist @Nullable - protected T validateShape(GroovyLog.Msg msg, List errors, String[] keyBasedMatrix, - Char2ObjectOpenHashMap keyMap, IRecipeCreator recipeCreator) { + protected T validateShape(GroovyLog.Msg msg, + List errors, + String[] keyBasedMatrix, + Char2ObjectOpenHashMap keyMap, + IRecipeCreator recipeCreator) { List ingredients = new ArrayList<>(); if (keyBasedMatrix.length > height) { msg.add("Defined matrix has %d rows, but should only have %d rows", keyBasedMatrix.length, height); @@ -234,22 +242,26 @@ public interface IRecipeCreator { public abstract static class AbstractShaped extends AbstractCraftingRecipeBuilder { - @Property(value = "groovyscript.wiki.craftingrecipe.keyMap.value", - defaultValue = "' ' = IIngredient.EMPTY", - priority = 210, - hierarchy = 20) + @Property( + value = "groovyscript.wiki.craftingrecipe.keyMap.value", + defaultValue = "' ' = IIngredient.EMPTY", + priority = 210, + hierarchy = 20) protected final Char2ObjectOpenHashMap keyMap = new Char2ObjectOpenHashMap<>(); protected final List errors = new ArrayList<>(); - @Property(value = "groovyscript.wiki.craftingrecipe.mirrored.value", hierarchy = 20) protected boolean mirrored; - @Property(value = "groovyscript.wiki.craftingrecipe.keyBasedMatrix.value", - comp = @Comp(unique = "groovyscript.wiki.craftingrecipe.matrix.required"), - priority = 200, - hierarchy = 20) + @Property(value = "groovyscript.wiki.craftingrecipe.mirrored.value", hierarchy = 20) + protected boolean mirrored; + @Property( + value = "groovyscript.wiki.craftingrecipe.keyBasedMatrix.value", + comp = @Comp(unique = "groovyscript.wiki.craftingrecipe.matrix.required"), + priority = 200, + hierarchy = 20) protected String[] keyBasedMatrix; - @Property(value = "groovyscript.wiki.craftingrecipe.ingredientMatrix.value", - comp = @Comp(gte = 1, lte = 9, unique = "groovyscript.wiki.craftingrecipe.matrix.required"), - priority = 200, - hierarchy = 20) + @Property( + value = "groovyscript.wiki.craftingrecipe.ingredientMatrix.value", + comp = @Comp(gte = 1, lte = 9, unique = "groovyscript.wiki.craftingrecipe.matrix.required"), + priority = 200, + hierarchy = 20) protected List> ingredientMatrix; public AbstractShaped(int width, int height) { @@ -283,7 +295,9 @@ public AbstractShaped shape(String... matrix) { @RecipeBuilderMethodDescription(field = "keyBasedMatrix") public AbstractShaped row(String row) { if (this.keyBasedMatrix == null) { - this.keyBasedMatrix = new String[]{row}; + this.keyBasedMatrix = new String[]{ + row + }; } else { this.keyBasedMatrix = ArrayUtils.add(this.keyBasedMatrix, row); } @@ -330,10 +344,11 @@ public AbstractShaped shape(List> matrix) { public abstract static class AbstractShapeless extends AbstractCraftingRecipeBuilder { - @Property(value = "groovyscript.wiki.craftingrecipe.ingredients.value", - comp = @Comp(gte = 1, lte = 9), - priority = 250, - hierarchy = 20) + @Property( + value = "groovyscript.wiki.craftingrecipe.ingredients.value", + comp = @Comp(gte = 1, lte = 9), + priority = 250, + hierarchy = 20) protected final List ingredients = new ArrayList<>(); public AbstractShapeless(int width, int height) { diff --git a/src/main/java/com/cleanroommc/groovyscript/registry/AbstractReloadableStorage.java b/src/main/java/com/cleanroommc/groovyscript/registry/AbstractReloadableStorage.java index c0e35d62d..9f2060f53 100644 --- a/src/main/java/com/cleanroommc/groovyscript/registry/AbstractReloadableStorage.java +++ b/src/main/java/com/cleanroommc/groovyscript/registry/AbstractReloadableStorage.java @@ -108,5 +108,4 @@ public Collection removeScripted() { protected boolean compareRecipe(R recipe, R recipe2) { return recipe == recipe2; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/registry/NamedRegistry.java b/src/main/java/com/cleanroommc/groovyscript/registry/NamedRegistry.java index d4a8ea460..4c38d3248 100644 --- a/src/main/java/com/cleanroommc/groovyscript/registry/NamedRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/registry/NamedRegistry.java @@ -50,5 +50,4 @@ public String getName() { public List getAliases() { return aliases; } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/registry/ReloadableRegistryManager.java b/src/main/java/com/cleanroommc/groovyscript/registry/ReloadableRegistryManager.java index 32889425f..2a69227eb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/registry/ReloadableRegistryManager.java +++ b/src/main/java/com/cleanroommc/groovyscript/registry/ReloadableRegistryManager.java @@ -77,7 +77,8 @@ public static void init() { public static void onReload() { GroovyScript.reloadRunConfig(false); VanillaModule.INSTANCE.onReload(); - ModSupport.getAllContainers().stream() + ModSupport.getAllContainers() + .stream() .filter(GroovyContainer::isLoaded) .map(GroovyContainer::get) .map(GroovyPropertyContainer::getRegistries) @@ -91,7 +92,8 @@ public static void onReload() { @ApiStatus.Internal public static void afterScriptRun() { - ModSupport.getAllContainers().stream() + ModSupport.getAllContainers() + .stream() .filter(GroovyContainer::isLoaded) .map(GroovyContainer::get) .map(GroovyPropertyContainer::getRegistries) @@ -169,7 +171,8 @@ public static void reloadJei(boolean msgPlayer) { try { //noinspection JavaReflectionMemberAccess IngredientFilter.class.getDeclaredMethod("block").invoke(filter); - } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException ignored) {} + } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException ignored) { + } } } @@ -182,5 +185,4 @@ protected static void reloadForgeRegistries(IForgeRegistry... registries) { private static void unfreezeForgeRegistries() { ((ForgeRegistry) ForgeRegistries.RECIPES).unfreeze(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/registry/StandardListRegistry.java b/src/main/java/com/cleanroommc/groovyscript/registry/StandardListRegistry.java index ab8410183..5bf0ea6a9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/registry/StandardListRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/registry/StandardListRegistry.java @@ -59,5 +59,4 @@ public void removeAll() { public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(getRecipes()).setRemover(this::remove); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/registry/VirtualizedRegistry.java b/src/main/java/com/cleanroommc/groovyscript/registry/VirtualizedRegistry.java index cc4086c73..ff5d176d9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/registry/VirtualizedRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/registry/VirtualizedRegistry.java @@ -55,8 +55,7 @@ public VirtualizedRegistry(@Nullable Collection aliases) { @Override @GroovyBlacklist @ApiStatus.OverrideOnly - public void afterScriptLoad() { - } + public void afterScriptLoad() {} @GroovyBlacklist protected AbstractReloadableStorage createRecipeStorage() { @@ -104,5 +103,4 @@ protected Collection restoreFromBackup() { protected Collection removeScripted() { return recipeStorage.removeScripted(); } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/CompiledScript.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/CompiledScript.java index fb6229012..627db1bd8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/CompiledScript.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/CompiledScript.java @@ -79,8 +79,10 @@ public JsonObject toJson() { } public static CompiledScript fromJson(JsonObject json, String scriptRoot, String cacheRoot) { - CompiledScript cs = new CompiledScript(json.get("path").getAsString(), JsonHelper.getString(json, null, "name"), - json.get("lm").getAsLong()); + CompiledScript cs = new CompiledScript( + json.get("path").getAsString(), + JsonHelper.getString(json, null, "name"), + json.get("lm").getAsLong()); if (new File(scriptRoot, cs.path).exists()) { if (json.has("inner")) { for (JsonElement element : json.getAsJsonArray("inner")) { @@ -110,15 +112,16 @@ public void deleteCache(String cachePath) { public boolean checkPreprocessors(File basePath) { return this.preprocessors == null || this.preprocessors.isEmpty() || Preprocessor.validatePreprocessor( - new File(basePath, this.path), this.preprocessors); + new File(basePath, this.path), + this.preprocessors); } @Override public String toString() { return new ToStringBuilder(this).append("name", name) - .append("path", path) - .append("innerClasses", innerClasses) - .append("lastEdited", lastEdited) - .toString(); + .append("path", path) + .append("innerClasses", innerClasses) + .append("lastEdited", lastEdited) + .toString(); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovyLogImpl.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovyLogImpl.java index bec2710e0..8fbb15e6e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovyLogImpl.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovyLogImpl.java @@ -292,14 +292,7 @@ private List prepareStackTrace(StackTraceElement[] stackTrace) { } private String formatLine(String level, String msg) { - return timeFormat.format(new Date()) + - (FMLCommonHandler.instance().getEffectiveSide().isClient() ? " [CLIENT/" : " [SERVER/") + - level + - "]" + - " [" + - getSource() + - "]: " + - msg; + return timeFormat.format(new Date()) + (FMLCommonHandler.instance().getEffectiveSide().isClient() ? " [CLIENT/" : " [SERVER/") + level + "]" + " [" + getSource() + "]: " + msg; } private String getSource() { @@ -336,7 +329,8 @@ public static class MsgImpl implements GroovyLog.Msg { private final List messages = new ArrayList<>(); private Level level = Level.INFO; private boolean logToMcLog; - @Nullable private Throwable throwable; + @Nullable + private Throwable throwable; private MsgImpl(String msg, Object... data) { this.mainMsg = GroovyLog.format(msg, data); @@ -358,7 +352,7 @@ public Msg add(boolean condition, String msg, Object... args) { if (condition) { if (args != null && args.length > 0) { for (int i = 0; i < args.length; i++) { - if (args[i] instanceof Supplier s) { + if (args[i] instanceof Suppliers) { args[i] = s.get(); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovySandbox.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovySandbox.java index 2b7365e96..afe459ab3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovySandbox.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovySandbox.java @@ -175,16 +175,13 @@ public T runClosure(Closure closure, Object... args) { } @ApiStatus.OverrideOnly - protected void postInitBindings(Binding binding) { - } + protected void postInitBindings(Binding binding) {} @ApiStatus.OverrideOnly - protected void initEngine(GroovyScriptEngine engine, CompilerConfiguration config) { - } + protected void initEngine(GroovyScriptEngine engine, CompilerConfiguration config) {} @ApiStatus.OverrideOnly - protected void preRun() { - } + protected void preRun() {} @ApiStatus.OverrideOnly protected boolean shouldRunFile(File file) { @@ -192,8 +189,7 @@ protected boolean shouldRunFile(File file) { } @ApiStatus.OverrideOnly - protected void postRun() { - } + protected void postRun() {} public abstract Collection getClassFiles(); diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovyScriptSandbox.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovyScriptSandbox.java index b5a0882c5..91b976d1e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovyScriptSandbox.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/GroovyScriptSandbox.java @@ -27,7 +27,6 @@ import org.apache.groovy.internal.util.UncheckedThrow; import org.codehaus.groovy.control.CompilerConfiguration; import org.codehaus.groovy.control.SourceUnit; -import org.codehaus.groovy.control.customizers.ImportCustomizer; import org.codehaus.groovy.runtime.InvokerInvocationException; import org.codehaus.groovy.vmplugin.VMPlugin; import org.jetbrains.annotations.ApiStatus; @@ -35,7 +34,6 @@ import java.io.File; import java.io.IOException; -import java.net.MalformedURLException; import java.net.URL; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -75,36 +73,37 @@ public GroovyScriptSandbox() { registerBinding("EventManager", GroovyEventManager.INSTANCE); getImportCustomizer().addStaticStars(GroovyHelper.class.getName(), MathHelper.class.getName()); - getImportCustomizer().addImports("net.minecraft.world.World", - "net.minecraft.block.state.IBlockState", - "net.minecraft.block.Block", - "net.minecraft.block.SoundType", - "net.minecraft.enchantment.Enchantment", - "net.minecraft.entity.Entity", - "net.minecraft.entity.player.EntityPlayer", - "net.minecraft.init.Biomes", - "net.minecraft.init.Blocks", - "net.minecraft.init.Enchantments", - "net.minecraft.init.Items", - "net.minecraft.init.MobEffects", - "net.minecraft.init.PotionTypes", - "net.minecraft.init.SoundEvents", - "net.minecraft.item.EnumRarity", - "net.minecraft.item.Item", - "net.minecraft.item.ItemStack", - "net.minecraft.nbt.NBTTagCompound", - "net.minecraft.nbt.NBTTagList", - "net.minecraft.tileentity.TileEntity", - "net.minecraft.util.math.BlockPos", - "net.minecraft.util.DamageSource", - "net.minecraft.util.EnumHand", - "net.minecraft.util.EnumHandSide", - "net.minecraft.util.EnumFacing", - "net.minecraft.util.ResourceLocation", - "net.minecraftforge.fml.common.eventhandler.EventPriority", - "com.cleanroommc.groovyscript.event.EventBusType", - "net.minecraftforge.fml.relauncher.Side", - "net.minecraftforge.fml.relauncher.SideOnly"); + getImportCustomizer().addImports( + "net.minecraft.world.World", + "net.minecraft.block.state.IBlockState", + "net.minecraft.block.Block", + "net.minecraft.block.SoundType", + "net.minecraft.enchantment.Enchantment", + "net.minecraft.entity.Entity", + "net.minecraft.entity.player.EntityPlayer", + "net.minecraft.init.Biomes", + "net.minecraft.init.Blocks", + "net.minecraft.init.Enchantments", + "net.minecraft.init.Items", + "net.minecraft.init.MobEffects", + "net.minecraft.init.PotionTypes", + "net.minecraft.init.SoundEvents", + "net.minecraft.item.EnumRarity", + "net.minecraft.item.Item", + "net.minecraft.item.ItemStack", + "net.minecraft.nbt.NBTTagCompound", + "net.minecraft.nbt.NBTTagList", + "net.minecraft.tileentity.TileEntity", + "net.minecraft.util.math.BlockPos", + "net.minecraft.util.DamageSource", + "net.minecraft.util.EnumHand", + "net.minecraft.util.EnumHandSide", + "net.minecraft.util.EnumFacing", + "net.minecraft.util.ResourceLocation", + "net.minecraftforge.fml.common.eventhandler.EventPriority", + "com.cleanroommc.groovyscript.event.EventBusType", + "net.minecraftforge.fml.relauncher.Side", + "net.minecraftforge.fml.relauncher.SideOnly"); this.storedExceptions = new Object2ObjectOpenHashMap<>(); readIndex(); } @@ -238,9 +237,7 @@ public void onCompileClass(SourceUnit su, String path, Class clazz, byte[] co // we need to find the source unit of the compiled class SourceUnit trueSource = su.getAST().getUnit().getScriptSourceLocation(mainClassName(clazz.getName())); String truePath = trueSource == null ? shortPath : FileUtil.relativize(this.scriptRoot.getPath(), trueSource.getName()); - if (shortPath.equals(truePath) && - su.getAST().getMainClassName() != null && - !su.getAST().getMainClassName().equals(clazz.getName())) { + if (shortPath.equals(truePath) && su.getAST().getMainClassName() != null && !su.getAST().getMainClassName().equals(clazz.getName())) { inner = true; } diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/Preprocessor.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/Preprocessor.java index 780570e9e..04bcc1f34 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/Preprocessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/Preprocessor.java @@ -150,8 +150,9 @@ private static boolean checkSide(File file, String[] sides) { private static boolean checkPackmode(File file, String[] modes) { for (String mode : modes) { if (!Packmode.isValidPackmode(mode)) { - List valid = GroovyScript.getRunConfig().isIntegratePackmodeMod() ? PackModeAPI.getInstance().getPackModes() - : GroovyScript.getRunConfig().getPackmodeList(); + List valid = GroovyScript.getRunConfig().isIntegratePackmodeMod() + ? PackModeAPI.getInstance().getPackModes() + : GroovyScript.getRunConfig().getPackmodeList(); GroovyLog.get().error("The packmode '{}' specified in file '{}' does not exist. Valid values are {}", mode, file.getName(), valid); } else if (Packmode.getPackmode().equals(Alias.autoConvertTo(mode, CaseFormat.LOWER_UNDERSCORE))) { return true; diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/RunConfig.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/RunConfig.java index 99bde5ff7..bc3d5173b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/RunConfig.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/RunConfig.java @@ -10,7 +10,6 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import net.minecraft.util.ResourceLocation; @@ -20,14 +19,9 @@ import org.jetbrains.annotations.ApiStatus; import java.io.File; -import java.io.IOException; -import java.nio.file.FileVisitOption; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; -import java.util.stream.Stream; public class RunConfig { @@ -52,8 +46,9 @@ public static JsonObject createDefaultJson() { JsonObject packmode = new JsonObject(); packmode.add("values", new JsonArray()); packmode.addProperty("default", ""); - packmode.addProperty("_comment", - "By default the packmode is not synced with the packmode mod. You can enable integration, but you can no longer change packmode on the fly."); + packmode.addProperty( + "_comment", + "By default the packmode is not synced with the packmode mod. You can enable integration, but you can no longer change packmode on the fly."); packmode.addProperty("integratePackmodeMod", false); json.add("packmode", packmode); return json; @@ -153,9 +148,9 @@ public void reload(JsonObject json, boolean init) { List> pathsList = new ArrayList<>(); GroovyLog.Msg errorMsg = GroovyLog.msg("Fatal while parsing runConfig.json") - .add("Files should NOT be ran in multiple loaders!") - .logToMc() - .fatal(); + .add("Files should NOT be ran in multiple loaders!") + .logToMc() + .fatal(); for (Map.Entry entry : jsonLoaders.entrySet()) { JsonArray loader = (JsonArray) entry.getValue(); @@ -219,11 +214,11 @@ public String getPackName() { public String getPackId() { if (this.invalidPackId && !this.warnedAboutInvalidPackId) { GroovyLog.msg("Fatal error while trying to use the pack id") - .add("specified pack id is invalid or empty ('{}')", this.packId) - .add("pack id must only contain lower case letters and underscores") - .add("see https://cleanroommc.com/groovy-script/getting_started/run_config for more info") - .fatal() - .post(); + .add("specified pack id is invalid or empty ('{}')", this.packId) + .add("pack id must only contain lower case letters and underscores") + .add("see https://cleanroommc.com/groovy-script/getting_started/run_config for more info") + .fatal() + .post(); this.warnedAboutInvalidPackId = true; } return packId; diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/SandboxData.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/SandboxData.java index ad72a9c94..2710a9670 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/SandboxData.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/SandboxData.java @@ -23,7 +23,9 @@ */ public class SandboxData { - public static final String[] GROOVY_SUFFIXES = {".groovy", ".gvy", ".gy", ".gsh"}; + public static final String[] GROOVY_SUFFIXES = { + ".groovy", ".gvy", ".gy", ".gsh" + }; private static File minecraftHome; private static File scriptPath; private static File runConfigFile; @@ -62,7 +64,9 @@ public static void initialize(File minecraftHome, Logger log) { resourcesFile = new File(scriptPath, "assets"); try { rootUrl = scriptPath.toURI().toURL(); - rootUrls = new URL[]{rootUrl}; + rootUrls = new URL[]{ + rootUrl + }; } catch (MalformedURLException e) { throw new IllegalStateException("Failed to create URL from script path " + scriptPath); } @@ -145,17 +149,19 @@ static Collection getSortedFilesOf(File root, Collection paths) { } int pathSize = path.split(separator).length; try (Stream stream = Files.walk(rootFile.toPath())) { - stream.filter(path1 -> isGroovyFile(path1.toString())).map(Path::toFile) - //.filter(Preprocessor::validatePreprocessors) - .sorted(Comparator.comparing(File::getPath)).forEach(file -> { - if (files.containsKey(file)) { - if (pathSize > files.getInt(file)) { - files.put(file, pathSize); - } - } else { - files.put(file, pathSize); - } - }); + stream.filter(path1 -> isGroovyFile(path1.toString())) + .map(Path::toFile) + //.filter(Preprocessor::validatePreprocessors) + .sorted(Comparator.comparing(File::getPath)) + .forEach(file -> { + if (files.containsKey(file)) { + if (pathSize > files.getInt(file)) { + files.put(file, pathSize); + } + } else { + files.put(file, pathSize); + } + }); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/expand/ExpansionHelper.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/expand/ExpansionHelper.java index 3f318840d..abdf4ca59 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/expand/ExpansionHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/expand/ExpansionHelper.java @@ -150,6 +150,7 @@ private static void mixinMethod(ExpandoMetaClass self, CachedMethod method, Mixi metaMethod = new NewInstanceMetaMethod(method); else metaMethod = new NewInstanceMetaMethod(method) { + @Override public CachedClass getDeclaringClass() { return ReflectionCache.getCachedClass(self.getTheClass()); @@ -173,13 +174,21 @@ public static void mixinConstProperty(Class self, String name, T obj, mixinProperty(self, name, type, s -> obj, null, hidden); } - public static void mixinProperty(Class self, String name, Class type, - @Nullable Supplier getter, @Nullable Consumer setter, boolean hidden) { + public static void mixinProperty(Class self, + String name, + Class type, + @Nullable Supplier getter, + @Nullable Consumer setter, + boolean hidden) { mixinProperty(self, name, type, getter != null ? s -> getter.get() : null, setter != null ? (s, t) -> setter.accept(t) : null, hidden); } - public static void mixinProperty(Class self, String name, Class type, - @Nullable Function getter, @Nullable BiConsumer setter, boolean hidden) { + public static void mixinProperty(Class self, + String name, + Class type, + @Nullable Function getter, + @Nullable BiConsumer setter, + boolean hidden) { if (getter == null && setter == null) return; if (name == null || name.isEmpty()) { throw new IllegalArgumentException("Name for property must not be empty!"); @@ -187,10 +196,10 @@ public static void mixinProperty(Class self, String name, Class typ String upperName = name; if (!Character.isDigit(name.charAt(0))) upperName = BeanUtils.capitalize(name); if (getter == null) { - getter = so -> {throw new GroovyRuntimeException("Property '" + name + "' in " + self.getName() + " is writable, but not readable!");}; + getter = so -> { throw new GroovyRuntimeException("Property '" + name + "' in " + self.getName() + " is writable, but not readable!"); }; } if (setter == null) { - setter = (so, t) -> {throw new GroovyRuntimeException("Property '" + name + "' in " + self.getName() + " is readable, but not writable!");}; + setter = (so, t) -> { throw new GroovyRuntimeException("Property '" + name + "' in " + self.getName() + " is readable, but not writable!"); }; } MetaMethod g = new Getter<>("get" + upperName, type, self, getter); @@ -202,18 +211,14 @@ public static void mixinProperty(Class self, String name, Class typ private static boolean isValid(CachedMethod method) { final int mod = method.getModifiers(); - return Modifier.isPublic(mod) && !Modifier.isAbstract(mod) && !method.isSynthetic() && - method.getAnnotation(Internal.class) == null && - method.getAnnotation(GroovyBlacklist.class) == null; + return Modifier.isPublic(mod) && !Modifier.isAbstract(mod) && !method.isSynthetic() && method.getAnnotation(Internal.class) == null && method.getAnnotation(GroovyBlacklist.class) == null; } private static boolean isValid(CachedField cachedField) { if (cachedField == null) return true; final int mod = cachedField.getModifiers(); Field field = cachedField.getCachedField(); - return Modifier.isPublic(mod) && !field.isSynthetic() && - !field.isAnnotationPresent(Internal.class) && - !field.isAnnotationPresent(GroovyBlacklist.class); + return Modifier.isPublic(mod) && !field.isSynthetic() && !field.isAnnotationPresent(Internal.class) && !field.isAnnotationPresent(GroovyBlacklist.class); } /** diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/BlackListedMetaClass.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/BlackListedMetaClass.java index e1534ce5d..a2e3aae63 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/BlackListedMetaClass.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/BlackListedMetaClass.java @@ -1,7 +1,6 @@ package com.cleanroommc.groovyscript.sandbox.meta; import com.cleanroommc.groovyscript.sandbox.RunConfig; - import com.cleanroommc.groovyscript.sandbox.security.SandboxSecurityException; import groovy.lang.*; import org.codehaus.groovy.ast.ClassNode; @@ -64,8 +63,7 @@ public void setAttribute(Class sender, Object receiver, String messageName, Obje } @Override - public void initialize() { - } + public void initialize() {} @Override public List getProperties() { @@ -198,7 +196,6 @@ public ClassNode getClassNode() { throw new GroovyRuntimeException("Exception thrown parsing: " + groovyFile + ". Reason: " + e, e); } } - } return classNode; } diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/GrSMetaClassCreationHandle.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/GrSMetaClassCreationHandle.java index 955ef64a0..e609eb939 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/GrSMetaClassCreationHandle.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/GrSMetaClassCreationHandle.java @@ -13,8 +13,7 @@ public class GrSMetaClassCreationHandle extends MetaClassRegistry.MetaClassCreat public static final GrSMetaClassCreationHandle INSTANCE = new GrSMetaClassCreationHandle(); - private GrSMetaClassCreationHandle() { - } + private GrSMetaClassCreationHandle() {} @Override protected MetaClass createNormalMetaClass(Class theClass, MetaClassRegistry registry) { diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/Setter.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/Setter.java index 81fbe92a3..e2c9f2a73 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/Setter.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/meta/Setter.java @@ -15,11 +15,15 @@ public class Setter extends MetaMethod implements Hidden { private final BiConsumer setter; public Setter(String name, Class paramType, Class owner, BiConsumer setter) { - super(new Class[]{paramType}); + super(new Class[]{ + paramType + }); this.name = name; this.owner = owner; this.setter = setter; - setParametersTypes(new CachedClass[]{ReflectionCache.getCachedClass(paramType)}); + setParametersTypes(new CachedClass[]{ + ReflectionCache.getCachedClass(paramType) + }); } @Override diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/security/GroovySecurityManager.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/security/GroovySecurityManager.java index 9e401f9b9..9c5bb722c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/security/GroovySecurityManager.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/security/GroovySecurityManager.java @@ -130,10 +130,7 @@ public boolean isValid(Field field) { } public boolean isValid(ClassNode classNode) { - return this.whiteListedClasses.contains(classNode.name) || - (!bannedClasses.contains(classNode.name) && - !hasBlacklistAnnotation(classNode.visibleAnnotations) && - isValidPackage(classNode.name)); + return this.whiteListedClasses.contains(classNode.name) || (!bannedClasses.contains(classNode.name) && !hasBlacklistAnnotation(classNode.visibleAnnotations) && isValidPackage(classNode.name)); } public boolean isValid(Class clazz) { diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/security/SandboxSecurityException.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/security/SandboxSecurityException.java index d8db4981d..5b3481635 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/security/SandboxSecurityException.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/security/SandboxSecurityException.java @@ -11,4 +11,4 @@ public SandboxSecurityException(String msg) { public static SandboxSecurityException format(String msg) { return new SandboxSecurityException(msg); } -} \ No newline at end of file +} diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyCodeFactory.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyCodeFactory.java index a57d132f5..995dff1d5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyCodeFactory.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyCodeFactory.java @@ -25,8 +25,7 @@ public class GroovyCodeFactory { public static final String MC_CLASS = "net.minecraft."; public static final boolean spongeForgeLoaded = Loader.isModLoaded("spongeforge"); - private GroovyCodeFactory() { - } + private GroovyCodeFactory() {} public static boolean shouldRemap(CachedClass cachedClass) { return !spongeForgeLoaded && !FMLLaunchHandler.isDeobfuscatedEnvironment() && cachedClass.getName().startsWith(MC_CLASS); @@ -36,10 +35,10 @@ public static PrivilegedAction makeFieldsHook(CachedClass cachedC return () -> { final boolean remap = shouldRemap(cachedClass); return Arrays.stream(cachedClass.getTheClass().getDeclaredFields()) - .filter(f -> ReflectionUtils.checkCanSetAccessible(f, CachedClass.class)) - .filter(GroovySecurityManager.INSTANCE::isValid) - .map(f -> makeField(cachedClass, f, remap)) - .toArray(CachedField[]::new); + .filter(f -> ReflectionUtils.checkCanSetAccessible(f, CachedClass.class)) + .filter(GroovySecurityManager.INSTANCE::isValid) + .map(f -> makeField(cachedClass, f, remap)) + .toArray(CachedField[]::new); }; } @@ -55,11 +54,11 @@ private static CachedField makeField(CachedClass cachedClass, Field field, boole public static PrivilegedAction makeConstructorsHook(CachedClass cachedClass) { return () -> Arrays.stream(cachedClass.getTheClass().getDeclaredConstructors()) - .filter(c -> !c.isSynthetic()) // GROOVY-9245: exclude inner class ctors - .filter(c -> ReflectionUtils.checkCanSetAccessible(c, CachedClass.class)) - .filter(c -> !c.isAnnotationPresent(GroovyBlacklist.class)) - .map(c -> new CachedConstructor(cachedClass, c)) - .toArray(CachedConstructor[]::new); + .filter(c -> !c.isSynthetic()) // GROOVY-9245: exclude inner class ctors + .filter(c -> ReflectionUtils.checkCanSetAccessible(c, CachedClass.class)) + .filter(c -> !c.isAnnotationPresent(GroovyBlacklist.class)) + .map(c -> new CachedConstructor(cachedClass, c)) + .toArray(CachedConstructor[]::new); } public static PrivilegedAction makeMethodsHook(CachedClass cachedClass) { @@ -67,12 +66,12 @@ public static PrivilegedAction makeMethodsHook(CachedClass cache try { final boolean remap = shouldRemap(cachedClass); return Arrays.stream(cachedClass.getTheClass().getDeclaredMethods()) - .filter(m -> m.getName().indexOf('+') < 0) // no synthetic JDK 5+ methods - .filter(m -> ReflectionUtils.checkCanSetAccessible(m, CachedClass.class)) - .filter(GroovySecurityManager.INSTANCE::isValid) - .map(m -> makeMethod(cachedClass, m, remap)) - .distinct() - .toArray(CachedMethod[]::new); + .filter(m -> m.getName().indexOf('+') < 0) // no synthetic JDK 5+ methods + .filter(m -> ReflectionUtils.checkCanSetAccessible(m, CachedClass.class)) + .filter(GroovySecurityManager.INSTANCE::isValid) + .map(m -> makeMethod(cachedClass, m, remap)) + .distinct() + .toArray(CachedMethod[]::new); } catch (LinkageError e) { return CachedMethod.EMPTY_ARRAY; } @@ -110,8 +109,13 @@ public static void remapOverrides(ClassNode classNode) { * Copies a method node with a new name */ private static MethodNode copyRemappedMethodNode(String name, MethodNode original) { - MethodNode copy = new MethodNode(name, original.getModifiers(), original.getReturnType(), original.getParameters(), - original.getExceptions(), original.getCode()); + MethodNode copy = new MethodNode( + name, + original.getModifiers(), + original.getReturnType(), + original.getParameters(), + original.getExceptions(), + original.getCode()); copy.setAnnotationDefault(original.hasDefaultValue()); copy.setColumnNumber(original.getColumnNumber()); copy.setDeclaringClass(original.getDeclaringClass()); diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptCompiler.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptCompiler.java index cc7e0e201..a5b9dc234 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptCompiler.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptCompiler.java @@ -44,8 +44,7 @@ private static boolean isBannedFromSide(AnnotatedNode node) { if (annotatedNode.getClassNode().getName().equals(SIDE_ONLY_CLASS)) { Expression expr = annotatedNode.getMember("value"); if (expr instanceof PropertyExpression prop) { - if (prop.getObjectExpression() instanceof ClassExpression && - prop.getObjectExpression().getType().getName().equals(SIDE_CLASS)) { + if (prop.getObjectExpression() instanceof ClassExpression && prop.getObjectExpression().getType().getName().equals(SIDE_CLASS)) { String elementSide = prop.getPropertyAsString(); return elementSide != null && !elementSide.equals(AsmDecompileHelper.SIDE); } diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptEarlyCompiler.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptEarlyCompiler.java index 040d31c6f..8c6c797d3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptEarlyCompiler.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptEarlyCompiler.java @@ -47,9 +47,10 @@ public void call(SourceUnit source, GeneratorContext context, ClassNode classNod if (parts.length > 2) { prop = new PropertyExpression(prop, parts[2]); } - Expression expr = new DeclarationExpression(new VariableExpression(imp.getAlias()), - Token.newSymbol(Types.ASSIGN, imp.getLineNumber(), 5 + parts[1].length()), - prop); + Expression expr = new DeclarationExpression( + new VariableExpression(imp.getAlias()), + Token.newSymbol(Types.ASSIGN, imp.getLineNumber(), 5 + parts[1].length()), + prop); scriptStatement.getStatements().add(0, new ExpressionStatement(expr)); return true; } diff --git a/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptTransformer.java b/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptTransformer.java index cafbd923a..7dad2460b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptTransformer.java +++ b/src/main/java/com/cleanroommc/groovyscript/sandbox/transformer/GroovyScriptTransformer.java @@ -106,8 +106,7 @@ private Expression transformMethodCall(MethodCallExpression mce) { List suggestions = conflicts.stream() .map(goh -> goh.getMod() == null ? goh.getName() : "mods." + goh.getMod().getModId() + "." + goh.getName()) .collect(Collectors.toList()); - String msg = GroovyLog.format("Can't infer ObjectMapper from name {}, since one is added by {} mods. " + - "Please choose one of the following: {}", mce.getMethodAsString(), conflicts.size(), suggestions); + String msg = GroovyLog.format("Can't infer ObjectMapper from name {}, since one is added by {} mods. " + "Please choose one of the following: {}", mce.getMethodAsString(), conflicts.size(), suggestions); source.addError(new SyntaxException(msg, mce)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/server/GroovyScriptCompilationUnitFactory.java b/src/main/java/com/cleanroommc/groovyscript/server/GroovyScriptCompilationUnitFactory.java index f453ae3c7..c21fd7232 100644 --- a/src/main/java/com/cleanroommc/groovyscript/server/GroovyScriptCompilationUnitFactory.java +++ b/src/main/java/com/cleanroommc/groovyscript/server/GroovyScriptCompilationUnitFactory.java @@ -61,7 +61,9 @@ public GroovyLSCompilationUnit create(Path workspaceRoot, @Nullable URI context) removeSources(unit, changedUris); // add open classes - languageServerContext.getFileContentsTracker().getOpenURIs().stream() + languageServerContext.getFileContentsTracker() + .getOpenURIs() + .stream() .filter(uri -> { Path openPath = Paths.get(uri); return openPath.normalize().startsWith(workspaceRoot.normalize()); @@ -95,7 +97,9 @@ protected boolean isInClassesContext(URI uri) { } protected Stream getAllClasses() { - return LoadStage.getLoadStages().stream().map(LoadStage::getName) + return LoadStage.getLoadStages() + .stream() + .map(LoadStage::getName) .flatMap(loader -> GroovyScript.getRunConfig().getClassFiles(this.root, loader).stream()) .map(File::toPath) .map(path -> GroovyScript.getScriptFile().toPath().resolve(path)); diff --git a/src/main/java/com/cleanroommc/groovyscript/server/GroovyScriptDocumentationProvider.java b/src/main/java/com/cleanroommc/groovyscript/server/GroovyScriptDocumentationProvider.java index 1e448516d..f555ce26f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/server/GroovyScriptDocumentationProvider.java +++ b/src/main/java/com/cleanroommc/groovyscript/server/GroovyScriptDocumentationProvider.java @@ -23,11 +23,13 @@ public class GroovyScriptDocumentationProvider implements IDocumentationProvider public @Nullable String getDocumentation(AnnotatedNode node, ASTContext context) { var builder = new StringBuilder(); - if (node instanceof MethodNode methodNode && - methodNode.getDeclaringClass().implementsInterface(ClassHelper.makeCached(IScriptReloadable.class))) { + if (node instanceof MethodNode methodNode && methodNode.getDeclaringClass().implementsInterface(ClassHelper.makeCached(IScriptReloadable.class))) { ModSupport.getAllContainers().stream().filter(IGroovyContainer::isLoaded).map(groovyContainer -> { - var methodRegistry = groovyContainer.get().getRegistries().stream().filter( - registry -> registry.getClass().equals(methodNode.getDeclaringClass().getTypeClass())).findFirst(); + var methodRegistry = groovyContainer.get() + .getRegistries() + .stream() + .filter(registry -> registry.getClass().equals(methodNode.getDeclaringClass().getTypeClass())) + .findFirst(); if (methodRegistry.isPresent()) { var method = GroovyReflectionUtils.resolveMethodFromMethodNode(methodNode, context); @@ -46,9 +48,6 @@ public class GroovyScriptDocumentationProvider implements IDocumentationProvider @Override public @Nullable String getSortText(AnnotatedNode node, ASTContext context) { - return node instanceof MethodNode methodNode && - !methodNode.getDeclaringClass().getAnnotations(ClassHelper.makeCached(RegistryDescription.class)).isEmpty() && - !methodNode.getAnnotations(ClassHelper.makeCached(MethodDescription.class)).isEmpty() ? - "!!!" + methodNode.getName() : null; + return node instanceof MethodNode methodNode && !methodNode.getDeclaringClass().getAnnotations(ClassHelper.makeCached(RegistryDescription.class)).isEmpty() && !methodNode.getAnnotations(ClassHelper.makeCached(MethodDescription.class)).isEmpty() ? "!!!" + methodNode.getName() : null; } } diff --git a/src/main/java/com/cleanroommc/groovyscript/server/features/textureDecoration/TextureDecorationProvider.java b/src/main/java/com/cleanroommc/groovyscript/server/features/textureDecoration/TextureDecorationProvider.java index 0a509cc6f..b4130fda7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/server/features/textureDecoration/TextureDecorationProvider.java +++ b/src/main/java/com/cleanroommc/groovyscript/server/features/textureDecoration/TextureDecorationProvider.java @@ -69,9 +69,7 @@ public CompletableFuture> provideTextureDecor call = method; } } else continue; - if (mappers.contains(call) || - !(call.getArguments() instanceof ArgumentListExpression args) || - args.getExpressions().isEmpty()) continue; + if (mappers.contains(call) || !(call.getArguments() instanceof ArgumentListExpression args) || args.getExpressions().isEmpty()) continue; ObjectMapper mapper; try { mapper = GroovyASTUtils.getMapperOfNode(call, astContext); @@ -144,7 +142,8 @@ private String computeTextureName(String name, List expressions) { return DigestUtils.sha1Hex(sb.toString()); } - private void render(List queueDeco, List queueRange, + private void render(List queueDeco, + List queueRange, List decorationInformations) { var framebuffer = GL30.glGenFramebuffers(); GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, framebuffer); diff --git a/src/main/java/net/prominic/groovyls/GroovyLanguageServer.java b/src/main/java/net/prominic/groovyls/GroovyLanguageServer.java index fb6db21d5..666c25b25 100644 --- a/src/main/java/net/prominic/groovyls/GroovyLanguageServer.java +++ b/src/main/java/net/prominic/groovyls/GroovyLanguageServer.java @@ -80,8 +80,7 @@ public CompletableFuture shutdown() { } @Override - public void exit() { - } + public void exit() {} @Override public TextDocumentService getTextDocumentService() { @@ -94,9 +93,7 @@ public WorkspaceService getWorkspaceService() { } @Override - public void setTrace(SetTraceParams params) { - - } + public void setTrace(SetTraceParams params) {} @Override public void connect(LanguageClient client) { diff --git a/src/main/java/net/prominic/groovyls/GroovyServices.java b/src/main/java/net/prominic/groovyls/GroovyServices.java index 99e6b7231..22662013f 100644 --- a/src/main/java/net/prominic/groovyls/GroovyServices.java +++ b/src/main/java/net/prominic/groovyls/GroovyServices.java @@ -124,8 +124,11 @@ public void didSave(DidSaveTextDocumentParams params) { @Override public void didChangeWatchedFiles(DidChangeWatchedFilesParams params) { - Set urisWithChanges = params.getChanges().stream().map(fileEvent -> FileUtil.fixUri(fileEvent.getUri())).collect( - Collectors.toSet()); + Set urisWithChanges = params.getChanges() + .stream() + .map(fileEvent -> FileUtil.fixUri(fileEvent.getUri())) + .collect( + Collectors.toSet()); for (URI uri : urisWithChanges) { var unit = compilationUnitFactory.create(workspaceRoot, uri); @@ -201,8 +204,9 @@ public CompletableFuture, CompletionList>> completio } else { changeEvent = new TextDocumentContentChangeEvent(new Range(position, position), "a"); } - DidChangeTextDocumentParams didChangeParams = new DidChangeTextDocumentParams(versionedTextDocument, - Collections.singletonList(changeEvent)); + DidChangeTextDocumentParams didChangeParams = new DidChangeTextDocumentParams( + versionedTextDocument, + Collections.singletonList(changeEvent)); // if the offset node is null, there is probably a syntax error. // a completion request is usually triggered by the . character, and // if there is no property name after the dot, it will cause a syntax @@ -222,8 +226,9 @@ public CompletableFuture, CompletionList>> completio if (originalSource != null) { VersionedTextDocumentIdentifier versionedTextDocument = new VersionedTextDocumentIdentifier(textDocument.getUri(), 1); TextDocumentContentChangeEvent changeEvent = new TextDocumentContentChangeEvent(null, originalSource); - DidChangeTextDocumentParams didChangeParams = new DidChangeTextDocumentParams(versionedTextDocument, - Collections.singletonList(changeEvent)); + DidChangeTextDocumentParams didChangeParams = new DidChangeTextDocumentParams( + versionedTextDocument, + Collections.singletonList(changeEvent)); didChange(didChangeParams); } } @@ -257,8 +262,9 @@ public CompletableFuture signatureHelp(SignatureHelpParams params originalSource = languageServerContext.getFileContentsTracker().getContents(uri); VersionedTextDocumentIdentifier versionedTextDocument = new VersionedTextDocumentIdentifier(textDocument.getUri(), 1); TextDocumentContentChangeEvent changeEvent = new TextDocumentContentChangeEvent(new Range(position, position), ")"); - DidChangeTextDocumentParams didChangeParams = new DidChangeTextDocumentParams(versionedTextDocument, - Collections.singletonList(changeEvent)); + DidChangeTextDocumentParams didChangeParams = new DidChangeTextDocumentParams( + versionedTextDocument, + Collections.singletonList(changeEvent)); // if the offset node is null, there is probably a syntax error. // a signature help request is usually triggered by the ( character, // and if there is no matching ), it will cause a syntax error. @@ -277,8 +283,9 @@ public CompletableFuture signatureHelp(SignatureHelpParams params if (originalSource != null) { VersionedTextDocumentIdentifier versionedTextDocument = new VersionedTextDocumentIdentifier(textDocument.getUri(), 1); TextDocumentContentChangeEvent changeEvent = new TextDocumentContentChangeEvent(null, originalSource); - DidChangeTextDocumentParams didChangeParams = new DidChangeTextDocumentParams(versionedTextDocument, - Collections.singletonList(changeEvent)); + DidChangeTextDocumentParams didChangeParams = new DidChangeTextDocumentParams( + versionedTextDocument, + Collections.singletonList(changeEvent)); didChange(didChangeParams); } } @@ -319,7 +326,7 @@ public CompletableFuture>> docume @Override public CompletableFuture, List>> symbol( - WorkspaceSymbolParams params) { + WorkspaceSymbolParams params) { var unit = compilationUnitFactory.create(workspaceRoot, null); var visitor = compileAndVisitAST(unit, null); @@ -335,8 +342,10 @@ public CompletableFuture rename(RenameParams params) { var visitor = compileAndVisitAST(unit, uri); - RenameProvider provider = new RenameProvider(uri, new ASTContext(visitor, languageServerContext), - languageServerContext.getFileContentsTracker()); + RenameProvider provider = new RenameProvider( + uri, + new ASTContext(visitor, languageServerContext), + languageServerContext.getFileContentsTracker()); return provider.provideRename(params); } @@ -373,9 +382,14 @@ private Iterable handleErrorCollector(ErrorCollector c diagnostic.setMessage(cause.getOriginalMessage()); diagnostic.setSeverity(DiagnosticSeverity.Error); // TODO source location URI uri = Paths.get(cause.getSourceLocator()).toUri(); - diagnosticsByFile.computeIfAbsent(uri, (key) -> new PublishDiagnosticsParams(key.toString(), - new ArrayList<>())).getDiagnostics().add( - diagnostic); + diagnosticsByFile.computeIfAbsent( + uri, + (key) -> new PublishDiagnosticsParams( + key.toString(), + new ArrayList<>())) + .getDiagnostics() + .add( + diagnostic); } } } diff --git a/src/main/java/net/prominic/groovyls/compiler/control/GroovyLSCompilationUnit.java b/src/main/java/net/prominic/groovyls/compiler/control/GroovyLSCompilationUnit.java index bf1d2f58b..0b70bb946 100644 --- a/src/main/java/net/prominic/groovyls/compiler/control/GroovyLSCompilationUnit.java +++ b/src/main/java/net/prominic/groovyls/compiler/control/GroovyLSCompilationUnit.java @@ -39,12 +39,17 @@ public class GroovyLSCompilationUnit extends CompilationUnit { private final ILanguageServerContext languageServerContext; - @Nullable private ASTNodeVisitor visitor; + @Nullable + private ASTNodeVisitor visitor; - @Nullable private URI previousContext; + @Nullable + private URI previousContext; - public GroovyLSCompilationUnit(CompilerConfiguration config, CodeSource security, GroovyClassLoader loader, - ILanguageServerContext languageServerContext) { + public GroovyLSCompilationUnit( + CompilerConfiguration config, + CodeSource security, + GroovyClassLoader loader, + ILanguageServerContext languageServerContext) { super(config, security, loader); this.languageServerContext = languageServerContext; this.errorCollector = new LanguageServerErrorCollector(config); @@ -57,8 +62,12 @@ public void setErrorCollector(LanguageServerErrorCollector errorCollector) { public void removeSources(Collection sourceUnitsToRemove) { for (SourceUnit sourceUnit : sourceUnitsToRemove) { if (sourceUnit.getAST() != null) { - List sourceUnitClassNames = sourceUnit.getAST().getClasses().stream().map(classNode -> classNode.getName()).collect( - Collectors.toList()); + List sourceUnitClassNames = sourceUnit.getAST() + .getClasses() + .stream() + .map(classNode -> classNode.getName()) + .collect( + Collectors.toList()); final List generatedClasses = getClasses(); generatedClasses.removeIf(groovyClass -> sourceUnitClassNames.contains(groovyClass.getName())); } diff --git a/src/main/java/net/prominic/groovyls/compiler/documentation/DocumentationFactory.java b/src/main/java/net/prominic/groovyls/compiler/documentation/DocumentationFactory.java index 8f6a06ba8..882af3e7a 100644 --- a/src/main/java/net/prominic/groovyls/compiler/documentation/DocumentationFactory.java +++ b/src/main/java/net/prominic/groovyls/compiler/documentation/DocumentationFactory.java @@ -45,8 +45,7 @@ public DocumentationFactory(IDocumentationProvider... providers) { } } if (node instanceof MethodNode mn) { - if (node.getDeclaringClass().isDerivedFrom(ClassHelper.makeCached(GroovyPropertyContainer.class)) || - node.getDeclaringClass().isDerivedFrom(ClassHelper.makeCached(ModSupport.class))) { + if (node.getDeclaringClass().isDerivedFrom(ClassHelper.makeCached(GroovyPropertyContainer.class)) || node.getDeclaringClass().isDerivedFrom(ClassHelper.makeCached(ModSupport.class))) { return "z" + mn.getName(); } if (this.lastSortedMethods.contains(mn.getName())) return "zz" + mn.getName(); diff --git a/src/main/java/net/prominic/groovyls/compiler/documentation/IDocumentationProvider.java b/src/main/java/net/prominic/groovyls/compiler/documentation/IDocumentationProvider.java index ca8aaef0d..fd3e643a0 100644 --- a/src/main/java/net/prominic/groovyls/compiler/documentation/IDocumentationProvider.java +++ b/src/main/java/net/prominic/groovyls/compiler/documentation/IDocumentationProvider.java @@ -6,7 +6,9 @@ public interface IDocumentationProvider { - @Nullable String getDocumentation(AnnotatedNode node, ASTContext context); + @Nullable + String getDocumentation(AnnotatedNode node, ASTContext context); - @Nullable String getSortText(AnnotatedNode node, ASTContext context); + @Nullable + String getSortText(AnnotatedNode node, ASTContext context); } diff --git a/src/main/java/net/prominic/groovyls/compiler/util/GroovyASTUtils.java b/src/main/java/net/prominic/groovyls/compiler/util/GroovyASTUtils.java index 410e54c52..73181ed01 100644 --- a/src/main/java/net/prominic/groovyls/compiler/util/GroovyASTUtils.java +++ b/src/main/java/net/prominic/groovyls/compiler/util/GroovyASTUtils.java @@ -203,21 +203,28 @@ public static FieldNode getFieldFromExpression(PropertyExpression node, ASTConte public static List getFieldsForLeftSideOfPropertyExpression(ClassNode classNode, Expression expr, ASTContext context) { boolean statics = expr instanceof ClassExpression; - return collectFields(classNode, new ArrayList<>(), - node -> statics == node.isStatic() && (node.getModifiers() & HIDDEN_MARKER) == 0); + return collectFields( + classNode, + new ArrayList<>(), + node -> statics == node.isStatic() && (node.getModifiers() & HIDDEN_MARKER) == 0); } - public static List getPropertiesForLeftSideOfPropertyExpression(ClassNode classNode, Expression expr, + public static List getPropertiesForLeftSideOfPropertyExpression(ClassNode classNode, + Expression expr, ASTContext context) { boolean statics = expr instanceof ClassExpression; - return collectProperties(classNode, new ArrayList<>(), - node -> statics == node.isStatic() && (node.getModifiers() & HIDDEN_MARKER) == 0); + return collectProperties( + classNode, + new ArrayList<>(), + node -> statics == node.isStatic() && (node.getModifiers() & HIDDEN_MARKER) == 0); } public static List getMethodsForLeftSideOfPropertyExpression(ClassNode classNode, Expression expr, ASTContext context) { boolean statics = expr instanceof ClassExpression; - return collectMethods(classNode, new ArrayList<>(), - node -> statics == node.isStatic() && (node.getModifiers() & HIDDEN_MARKER) == 0); + return collectMethods( + classNode, + new ArrayList<>(), + node -> statics == node.isStatic() && (node.getModifiers() & HIDDEN_MARKER) == 0); } public static List collectFields(ClassNode classNode, List nodes, Predicate test) { @@ -329,9 +336,9 @@ public static List getMethodOverloadsFromCallExpression(MethodCall n List mn = new ArrayList<>(); if (methodCallExpr.isImplicitThis()) { Object o = context.getLanguageServerContext().getSandbox().getBindings().get(node.getMethodAsString()); - if (o instanceof ObjectMapper goh) { + if (o instanceof ObjectMappergoh) { mn.addAll(goh.getMethodNodes()); - } else if (o instanceof Closure closure) { + } else if (o instanceof Closureclosure) { mn.add(methodNodeOfClosure(node.getMethodAsString(), closure)); } } @@ -345,8 +352,11 @@ public static List getMethodOverloadsFromCallExpression(MethodCall n ClassNode constructorType = constructorCallExpr.getType(); if (constructorType != null) { fillClassNode(constructorType); - return constructorType.getDeclaredConstructors().stream().map(constructor -> (MethodNode) constructor).collect( - Collectors.toList()); + return constructorType.getDeclaredConstructors() + .stream() + .map(constructor -> (MethodNode) constructor) + .collect( + Collectors.toList()); } } else if (node instanceof StaticMethodCallExpression staticMethodCallExpression) { var ownerType = staticMethodCallExpression.getOwnerType(); @@ -453,11 +463,17 @@ public static Range findAddImportRange(URI uri, ASTNode offsetNode, ASTContext c } public static MethodNode methodNodeOfClosure(String name, Closure closure) { - Class declarer = closure.getThisObject() == null ? (closure.getOwner() == null ? Object.class : closure.getOwner().getClass()) : - closure.getThisObject().getClass(); - MethodNode method = new MethodNode(name, Modifier.PUBLIC, ClassHelper.OBJECT_TYPE, - ArrayUtils.map(closure.getParameterTypes(), c -> new Parameter(ClassHelper.makeCached(c), ""), - new Parameter[closure.getParameterTypes().length]), null, null); + Class declarer = closure.getThisObject() == null ? (closure.getOwner() == null ? Object.class : closure.getOwner().getClass()) : closure.getThisObject().getClass(); + MethodNode method = new MethodNode( + name, + Modifier.PUBLIC, + ClassHelper.OBJECT_TYPE, + ArrayUtils.map( + closure.getParameterTypes(), + c -> new Parameter(ClassHelper.makeCached(c), ""), + new Parameter[closure.getParameterTypes().length]), + null, + null); method.setDeclaringClass(ClassHelper.makeCached(declarer)); return method; } @@ -487,8 +503,10 @@ public static void fillClassNode(ClassNode classNode) { if (mm.isPrivate()) continue; int m = mm.getModifiers(); if (mm instanceof Hidden hidden && hidden.isHidden()) m |= HIDDEN_MARKER; - Parameter[] params = ArrayUtils.map(mm.getNativeParameterTypes(), c -> new Parameter(ClassHelper.makeCached(c), ""), - new Parameter[mm.getNativeParameterTypes().length]); + Parameter[] params = ArrayUtils.map( + mm.getNativeParameterTypes(), + c -> new Parameter(ClassHelper.makeCached(c), ""), + new Parameter[mm.getNativeParameterTypes().length]); MethodNode node = new MethodNode(mm.getName(), m, ClassHelper.makeCached(mm.getReturnType()), params, null, null); node.setDeclaringClass(classNode); if (mm instanceof IDocumented documented && documented.getDocumentation() != null) { diff --git a/src/main/java/net/prominic/groovyls/compiler/util/GroovyReflectionUtils.java b/src/main/java/net/prominic/groovyls/compiler/util/GroovyReflectionUtils.java index 0c7b5649a..1c06bd7ad 100644 --- a/src/main/java/net/prominic/groovyls/compiler/util/GroovyReflectionUtils.java +++ b/src/main/java/net/prominic/groovyls/compiler/util/GroovyReflectionUtils.java @@ -1,15 +1,12 @@ package net.prominic.groovyls.compiler.util; import com.cleanroommc.groovyscript.sandbox.security.GroovySecurityManager; -import com.google.common.collect.Iterators; import io.github.classgraph.MethodInfo; import net.prominic.groovyls.compiler.ast.ASTContext; import org.codehaus.groovy.ast.MethodNode; import org.jetbrains.annotations.Nullable; import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.Optional; import java.util.function.Function; public class GroovyReflectionUtils { @@ -17,9 +14,7 @@ public class GroovyReflectionUtils { @Nullable public static Method resolveMethodFromMethodNode(MethodNode methodNode, ASTContext context) { for (Method m : methodNode.getDeclaringClass().getTypeClass().getMethods()) { - if (!GroovySecurityManager.INSTANCE.isValid(m) || - !methodNode.getName().equals(m.getName()) || - methodNode.getParameters().length != m.getParameterCount()) { + if (!GroovySecurityManager.INSTANCE.isValid(m) || !methodNode.getName().equals(m.getName()) || methodNode.getParameters().length != m.getParameterCount()) { continue; } if (matchesParams(m.getParameterTypes(), methodNode.getParameters(), p -> p.getType().getTypeClass())) { @@ -32,14 +27,17 @@ public static Method resolveMethodFromMethodNode(MethodNode methodNode, ASTConte @Nullable public static Method resolveMethodFromMethodInfo(MethodInfo methodInfo, ASTContext context) { for (Method m : methodInfo.getClassInfo().loadClass().getMethods()) { - if (!GroovySecurityManager.INSTANCE.isValid(m) || - !methodInfo.getName().equals(m.getName()) || - methodInfo.getParameterInfo().length != m.getParameterCount()) { + if (!GroovySecurityManager.INSTANCE.isValid(m) || !methodInfo.getName().equals(m.getName()) || methodInfo.getParameterInfo().length != m.getParameterCount()) { continue; } - if (matchesParams(m.getParameterTypes(), methodInfo.getParameterInfo(), - p -> context.getLanguageServerContext().getScanResult().loadClass( - p.getTypeSignatureOrTypeDescriptor().toString(), true))) { + if (matchesParams( + m.getParameterTypes(), + methodInfo.getParameterInfo(), + p -> context.getLanguageServerContext() + .getScanResult() + .loadClass( + p.getTypeSignatureOrTypeDescriptor().toString(), + true))) { return m; } } diff --git a/src/main/java/net/prominic/groovyls/config/CompilationUnitFactory.java b/src/main/java/net/prominic/groovyls/config/CompilationUnitFactory.java index 6ac9d5b39..01227cf47 100644 --- a/src/main/java/net/prominic/groovyls/config/CompilationUnitFactory.java +++ b/src/main/java/net/prominic/groovyls/config/CompilationUnitFactory.java @@ -105,8 +105,10 @@ public GroovyLSCompilationUnit create(Path workspaceRoot, @Nullable URI context) return compilationUnit; } - protected void addDirectoryToCompilationUnit(Path dirPath, GroovyLSCompilationUnit compilationUnit, - FileContentsTracker fileContentsTracker, Set changedUris) { + protected void addDirectoryToCompilationUnit(Path dirPath, + GroovyLSCompilationUnit compilationUnit, + FileContentsTracker fileContentsTracker, + Set changedUris) { try { if (Files.exists(dirPath)) { Files.walk(dirPath).forEach((filePath) -> { diff --git a/src/main/java/net/prominic/groovyls/config/CompilationUnitFactoryBase.java b/src/main/java/net/prominic/groovyls/config/CompilationUnitFactoryBase.java index 342933bef..3c3405f9f 100644 --- a/src/main/java/net/prominic/groovyls/config/CompilationUnitFactoryBase.java +++ b/src/main/java/net/prominic/groovyls/config/CompilationUnitFactoryBase.java @@ -86,10 +86,12 @@ protected void getClasspathList(List result) { protected void addOpenFileToCompilationUnit(URI uri, String contents, GroovyLSCompilationUnit compilationUnit) { Path filePath = Paths.get(uri); - SourceUnit sourceUnit = new SourceUnit(filePath.toString(), - new StringReaderSourceWithURI(contents, uri, compilationUnit.getConfiguration()), - compilationUnit.getConfiguration(), compilationUnit.getClassLoader(), - compilationUnit.getErrorCollector()); + SourceUnit sourceUnit = new SourceUnit( + filePath.toString(), + new StringReaderSourceWithURI(contents, uri, compilationUnit.getConfiguration()), + compilationUnit.getConfiguration(), + compilationUnit.getClassLoader(), + compilationUnit.getErrorCollector()); compilationUnit.addSource(sourceUnit); } } diff --git a/src/main/java/net/prominic/groovyls/providers/CompletionProvider.java b/src/main/java/net/prominic/groovyls/providers/CompletionProvider.java index 2bb6abc1c..5aa102114 100644 --- a/src/main/java/net/prominic/groovyls/providers/CompletionProvider.java +++ b/src/main/java/net/prominic/groovyls/providers/CompletionProvider.java @@ -47,12 +47,68 @@ public class CompletionProvider extends DocProvider { - private static final String[] keywords = {"assert", "case", "break", "continue", "transient", "extends ", "implements ", "enum", "try ", "catch", - "finally", "instanceof ", "super", "private", "public", "protected", "abstract", "const", "default", "goto", - "interface", "native", "non-sealed", "package ", "permits", "record", "sealed", "static", "strictfp", - "synchronized", "threadsafe", "throws", "trait", "var", "yields"}; - private static final String[] popularKeywords = {"def ", "else ", "return", "import ", "class", "this", "null", "true", "false", "void", "byte", - "short", "int", "long", "float", "double", "boolean", "char", "throw ", "new", "in ", "as ", "final "}; + private static final String[] keywords = { + "assert", + "case", + "break", + "continue", + "transient", + "extends ", + "implements ", + "enum", + "try ", + "catch", + "finally", + "instanceof ", + "super", + "private", + "public", + "protected", + "abstract", + "const", + "default", + "goto", + "interface", + "native", + "non-sealed", + "package ", + "permits", + "record", + "sealed", + "static", + "strictfp", + "synchronized", + "threadsafe", + "throws", + "trait", + "var", + "yields" + }; + private static final String[] popularKeywords = { + "def ", + "else ", + "return", + "import ", + "class", + "this", + "null", + "true", + "false", + "void", + "byte", + "short", + "int", + "long", + "float", + "double", + "boolean", + "char", + "throw ", + "new", + "in ", + "as ", + "final " + }; public CompletionProvider(URI doc, ASTContext astContext) { super(doc, astContext); @@ -120,9 +176,7 @@ private boolean populateItemsFromNode(Position position, ASTNode offsetNode, Com private boolean populateItemsFromConstantExpression(ConstantExpression node, ASTNode parent, Completions items) { if (node.getType().getTypeClass() == String.class) { ASTNode parentParent = astContext.getVisitor().getParent(parent); - if (parentParent instanceof MethodCallExpression expr && - expr.getArguments() instanceof ArgumentListExpression args && - !args.getExpressions().isEmpty()) { + if (parentParent instanceof MethodCallExpression expr && expr.getArguments() instanceof ArgumentListExpression args && !args.getExpressions().isEmpty()) { // TODO completions in file() ObjectMapper goh = GroovyASTUtils.getMapperOfNode(expr, astContext); if (goh != null && goh.getCompleter() != null) { @@ -141,7 +195,8 @@ private boolean populateItemsFromConstantExpression(ConstantExpression node, AST return true; } - private void populateItemsFromStaticMethodCallExpression(StaticMethodCallExpression methodCallExpr, Position position, + private void populateItemsFromStaticMethodCallExpression(StaticMethodCallExpression methodCallExpr, + Position position, Completions items) { Set existingNames = new ObjectOpenHashSet<>(); populateItemsFromGlobalScope(methodCallExpr.getMethod(), existingNames, items); @@ -163,8 +218,10 @@ private void populateItemsFromImportNode(ImportNode importNode, Position positio Range importRange = GroovyLSUtils.astNodeToRange(importNode); if (importRange == null) return; // skip the "import " at the beginning - importRange.setStart(new Position(importRange.getEnd().getLine(), - importRange.getEnd().getCharacter() - importNode.getType().getName().length())); + importRange.setStart( + new Position( + importRange.getEnd().getLine(), + importRange.getEnd().getCharacter() - importNode.getType().getName().length())); String importText = getMemberName(importNode.getType().getName(), importRange, position); ModuleNode enclosingModule = getModule(); @@ -177,8 +234,7 @@ private void populateItemsFromImportNode(ImportNode importNode, Position positio } String className = classNode.getName(); String classNameWithoutPackage = classNode.getNameWithoutPackage(); - if ((!className.startsWith(importText) && !classNameWithoutPackage.startsWith(importText)) || - GroovyLSUtils.hasImport(enclosingModule, className)) { + if ((!className.startsWith(importText) && !classNameWithoutPackage.startsWith(importText)) || GroovyLSUtils.hasImport(enclosingModule, className)) { return null; } CompletionItem item = CompletionItemFactory.createCompletion(classNode, classNode.getName(), astContext); @@ -231,7 +287,8 @@ private void populateItemsFromClassNode(ClassNode classNode, Position position, } } - private void populateItemsFromConstructorCallExpression(ConstructorCallExpression constructorCallExpr, Position position, + private void populateItemsFromConstructorCallExpression(ConstructorCallExpression constructorCallExpr, + Position position, Completions items) { Range typeRange = GroovyLSUtils.astNodeToRange(constructorCallExpr.getType()); if (typeRange == null) return; @@ -246,8 +303,10 @@ private void populateItemsFromVariableExpression(VariableExpression varExpr, Pos populateItemsFromScope(varExpr, memberName, items); } - private void populateItemsFromPropertiesAndFields(List properties, List fields, - Set existingNames, Completions items) { + private void populateItemsFromPropertiesAndFields(List properties, + List fields, + Set existingNames, + Completions items) { items.addAll(properties, p -> { String name = p.getName(); if (!p.isPublic() || existingNames.contains(name)) return null; @@ -279,9 +338,7 @@ private void populateItemsFromMethods(List methods, Set exis String name = getDescriptor(method, true, false, false); if (!method.isPublic() || existingNames.contains(name)) return null; existingNames.add(name); - if (method.getDeclaringClass().isResolved() && - (method.getModifiers() & GroovyASTUtils.EXPANSION_MARKER) == 0 && - GroovyReflectionUtils.resolveMethodFromMethodNode(method, astContext) == null) { + if (method.getDeclaringClass().isResolved() && (method.getModifiers() & GroovyASTUtils.EXPANSION_MARKER) == 0 && GroovyReflectionUtils.resolveMethodFromMethodNode(method, astContext) == null) { return null; } @@ -375,9 +432,7 @@ public static String getDescriptor(MethodInfo node, boolean includeName, boolean } builder.append(")"); if (!includeReturn) return builder.toString(); - var ret = display ? - node.getTypeSignatureOrTypeDescriptor().getResultType().toStringWithSimpleNames() : - node.getTypeDescriptor().getResultType().toString(); + var ret = display ? node.getTypeSignatureOrTypeDescriptor().getResultType().toStringWithSimpleNames() : node.getTypeDescriptor().getResultType().toString(); if (!ret.equals("void")) { if (display) builder.append(" -> "); builder.append(ret); @@ -386,9 +441,7 @@ public static String getDescriptor(MethodInfo node, boolean includeName, boolean } public static StringBuilder appendParameter(MethodParameterInfo param, StringBuilder builder, boolean display, boolean maybeVarargs) { - builder.append(display ? - param.getTypeSignatureOrTypeDescriptor().toStringWithSimpleNames() : - param.getTypeDescriptor().toString()); // don't use generic types + builder.append(display ? param.getTypeSignatureOrTypeDescriptor().toStringWithSimpleNames() : param.getTypeDescriptor().toString()); // don't use generic types if (maybeVarargs && builder.charAt(builder.length() - 1) == ']' && builder.charAt(builder.length() - 2) == '[') { builder.delete(builder.length() - 2, builder.length()).append("..."); } @@ -428,7 +481,7 @@ private void populateItemsFromGlobalScope(String memberNamePrefix, Set e String name = entry.getKey(); if (!name.toLowerCase(Locale.ENGLISH).contains(memberNamePrefix) || existingNames.contains(name)) return null; existingNames.add(name); - if (entry.getValue() instanceof ObjectMapper goh) { + if (entry.getValue() instanceof ObjectMappergoh) { for (MethodNode method : goh.getMethodNodes()) { var item = CompletionItemFactory.createCompletion(method, goh.getName(), astContext); item.setLabelDetails(getMethodNodeDetails(method)); @@ -436,7 +489,7 @@ private void populateItemsFromGlobalScope(String memberNamePrefix, Set e items.add(item); } return null; - } else if (entry.getValue() instanceof Closure closure) { + } else if (entry.getValue() instanceof Closureclosure) { MethodNode method = GroovyASTUtils.methodNodeOfClosure(name, closure); var item = CompletionItemFactory.createCompletion(method, name, astContext); item.setLabelDetails(getMethodNodeDetails(method)); @@ -475,7 +528,9 @@ private void populateItemsFromGlobalScope(String memberNamePrefix, Set e }); } - private void populateItemsFromVariableScope(VariableScope variableScope, String memberNamePrefix, Set existingNames, + private void populateItemsFromVariableScope(VariableScope variableScope, + String memberNamePrefix, + Set existingNames, Completions items) { populateItemsFromGlobalScope(memberNamePrefix, existingNames, items); items.addAll(variableScope.getDeclaredVariables().values(), variable -> { @@ -531,8 +586,11 @@ private void populateItemsFromScope(ASTNode node, String namePrefix, Completions } } if (classNode != null) { - populateItemsFromPropertiesAndFields(classNode.getProperties(), classNode.getFields(), - existingNames, items); + populateItemsFromPropertiesAndFields( + classNode.getProperties(), + classNode.getFields(), + existingNames, + items); populateItemsFromMethods(classNode.getMethods(), existingNames, items); } } @@ -552,8 +610,13 @@ private void populateTypes(ASTNode offsetNode, String namePrefix, Set ex populateTypes(offsetNode, namePrefix, existingNames, true, true, true, items); } - private void populateTypes(ASTNode offsetNode, String namePrefix, Set existingNames, boolean includeClasses, - boolean includeInterfaces, boolean includeEnums, Completions items) { + private void populateTypes(ASTNode offsetNode, + String namePrefix, + Set existingNames, + boolean includeClasses, + boolean includeInterfaces, + boolean includeEnums, + Completions items) { Range addImportRange = GroovyASTUtils.findAddImportRange(doc, offsetNode, astContext); ModuleNode enclosingModule = getModule(); @@ -587,8 +650,9 @@ private void populateTypes(ASTNode offsetNode, String namePrefix, Set ex if (!classNameWithoutPackage.startsWith(namePrefix) || existingNames.contains(className)) return null; existingNames.add(className); String packageName = classInfo.getPackageName(); - CompletionItem item = CompletionItemFactory.createCompletion(classInfoToCompletionItemKind(classInfo), - classInfo.getSimpleName()); + CompletionItem item = CompletionItemFactory.createCompletion( + classInfoToCompletionItemKind(classInfo), + classInfo.getSimpleName()); item.setDetail(packageName); boolean hasImport = GroovyLSUtils.hasImport(enclosingModule, className); // sort imported classes higher diff --git a/src/main/java/net/prominic/groovyls/providers/DefinitionProvider.java b/src/main/java/net/prominic/groovyls/providers/DefinitionProvider.java index aa8e70eba..4864951ed 100644 --- a/src/main/java/net/prominic/groovyls/providers/DefinitionProvider.java +++ b/src/main/java/net/prominic/groovyls/providers/DefinitionProvider.java @@ -41,7 +41,8 @@ public DefinitionProvider(URI doc, ASTContext astContext) { } public CompletableFuture, List>> provideDefinition( - TextDocumentIdentifier textDocument, Position position) { + TextDocumentIdentifier textDocument, + Position position) { ASTNode offsetNode = astContext.getVisitor().getNodeAtLineAndColumn(doc, position.getLine(), position.getCharacter()); if (offsetNode == null) { return CompletableFuture.completedFuture(Either.forLeft(Collections.emptyList())); diff --git a/src/main/java/net/prominic/groovyls/providers/DocumentSymbolProvider.java b/src/main/java/net/prominic/groovyls/providers/DocumentSymbolProvider.java index 2571b4d58..640eafa09 100644 --- a/src/main/java/net/prominic/groovyls/providers/DocumentSymbolProvider.java +++ b/src/main/java/net/prominic/groovyls/providers/DocumentSymbolProvider.java @@ -40,7 +40,7 @@ public DocumentSymbolProvider(URI doc, ASTContext astContext) { } public CompletableFuture>> provideDocumentSymbolsFuture( - TextDocumentIdentifier textDocument) { + TextDocumentIdentifier textDocument) { return future(provideDocumentSymbols(textDocument)); } diff --git a/src/main/java/net/prominic/groovyls/providers/TypeDefinitionProvider.java b/src/main/java/net/prominic/groovyls/providers/TypeDefinitionProvider.java index 9c6702a95..f3b537e94 100644 --- a/src/main/java/net/prominic/groovyls/providers/TypeDefinitionProvider.java +++ b/src/main/java/net/prominic/groovyls/providers/TypeDefinitionProvider.java @@ -41,7 +41,8 @@ public TypeDefinitionProvider(URI doc, ASTContext astContext) { } public CompletableFuture, List>> provideTypeDefinition( - TextDocumentIdentifier textDocument, Position position) { + TextDocumentIdentifier textDocument, + Position position) { ASTNode offsetNode = astContext.getVisitor().getNodeAtLineAndColumn(doc, position.getLine(), position.getCharacter()); if (offsetNode == null) { return CompletableFuture.completedFuture(Either.forLeft(Collections.emptyList())); diff --git a/src/main/java/net/prominic/groovyls/util/GroovyNodeToStringUtils.java b/src/main/java/net/prominic/groovyls/util/GroovyNodeToStringUtils.java index 67fb62e13..64eb57659 100644 --- a/src/main/java/net/prominic/groovyls/util/GroovyNodeToStringUtils.java +++ b/src/main/java/net/prominic/groovyls/util/GroovyNodeToStringUtils.java @@ -64,10 +64,7 @@ public static String classToString(ClassNode classNode, ASTContext astContext) { } public static String constructorToString(ConstructorNode constructorNode, ASTContext astContext) { - String builder = constructorNode.getDeclaringClass().getName() + - "(" + - parametersToString(constructorNode.getParameters(), astContext) + - ")"; + String builder = constructorNode.getDeclaringClass().getName() + "(" + parametersToString(constructorNode.getParameters(), astContext) + ")"; return builder; }