mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-07-12 18:04:01 +00:00
Purity Ratchet
This commit is contained in:
@@ -303,3 +303,42 @@ sourceSets {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('bukkitPurityRatchet') {
|
||||
group = 'verification'
|
||||
description = 'Fails if files outside core/purity-allowlist.txt import org.bukkit (the allowlist only shrinks).'
|
||||
File allowlistFile = project.file('purity-allowlist.txt')
|
||||
File sourceRoot = project.file('src/main/java')
|
||||
inputs.file(allowlistFile)
|
||||
inputs.dir(sourceRoot)
|
||||
doLast {
|
||||
Set<String> allowed = allowlistFile.readLines().findAll { String line -> !line.isBlank() }.toSet()
|
||||
List<String> offenders = new ArrayList<>()
|
||||
List<String> coupled = new ArrayList<>()
|
||||
sourceRoot.eachFileRecurse { File f ->
|
||||
if (!f.name.endsWith('.java')) {
|
||||
return
|
||||
}
|
||||
if (f.text.contains('org.bukkit')) {
|
||||
String rel = sourceRoot.toPath().relativize(f.toPath()).toString()
|
||||
coupled.add(rel)
|
||||
if (!allowed.contains(rel)) {
|
||||
offenders.add(rel)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!offenders.isEmpty()) {
|
||||
throw new GradleException("Bukkit purity ratchet violated - new org.bukkit coupling in:\n " + offenders.join('\n ') + "\nDecouple these files or (only with strong justification) add them to core/purity-allowlist.txt")
|
||||
}
|
||||
int shrunk = allowed.size() - coupled.size()
|
||||
if (shrunk > 0) {
|
||||
println("Purity ratchet: " + coupled.size() + " coupled files (" + shrunk + " fewer than allowlist - consider tightening core/purity-allowlist.txt)")
|
||||
} else {
|
||||
println("Purity ratchet: " + coupled.size() + " coupled files (at allowlist ceiling)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.named('check').configure {
|
||||
dependsOn('bukkitPurityRatchet')
|
||||
}
|
||||
|
||||
@@ -0,0 +1,259 @@
|
||||
art/arcane/iris/core/commands/CommandDeveloper.java
|
||||
art/arcane/iris/core/commands/CommandFind.java
|
||||
art/arcane/iris/core/commands/CommandIris.java
|
||||
art/arcane/iris/core/commands/CommandObject.java
|
||||
art/arcane/iris/core/commands/CommandPregen.java
|
||||
art/arcane/iris/core/commands/CommandStructure.java
|
||||
art/arcane/iris/core/commands/CommandStudio.java
|
||||
art/arcane/iris/core/commands/CommandWhat.java
|
||||
art/arcane/iris/core/datapack/DatapackIngestService.java
|
||||
art/arcane/iris/core/edit/BlockEditor.java
|
||||
art/arcane/iris/core/edit/BlockSignal.java
|
||||
art/arcane/iris/core/edit/BukkitBlockEditor.java
|
||||
art/arcane/iris/core/edit/DustRevealer.java
|
||||
art/arcane/iris/core/events/IrisEngineEvent.java
|
||||
art/arcane/iris/core/events/IrisEngineHotloadEvent.java
|
||||
art/arcane/iris/core/events/IrisLootEvent.java
|
||||
art/arcane/iris/core/gui/NoiseExplorerGUI.java
|
||||
art/arcane/iris/core/gui/PregeneratorJob.java
|
||||
art/arcane/iris/core/gui/VisionGUI.java
|
||||
art/arcane/iris/core/IrisRuntimeSchedulerMode.java
|
||||
art/arcane/iris/core/IrisWorlds.java
|
||||
art/arcane/iris/core/lifecycle/BukkitPublicBackend.java
|
||||
art/arcane/iris/core/lifecycle/CapabilitySnapshot.java
|
||||
art/arcane/iris/core/lifecycle/PaperLibBootstrap.java
|
||||
art/arcane/iris/core/lifecycle/PaperLikeRuntimeBackend.java
|
||||
art/arcane/iris/core/lifecycle/WorldLifecycleBackend.java
|
||||
art/arcane/iris/core/lifecycle/WorldLifecycleRequest.java
|
||||
art/arcane/iris/core/lifecycle/WorldLifecycleService.java
|
||||
art/arcane/iris/core/lifecycle/WorldLifecycleStaging.java
|
||||
art/arcane/iris/core/lifecycle/WorldLifecycleSupport.java
|
||||
art/arcane/iris/core/lifecycle/WorldsProviderBackend.java
|
||||
art/arcane/iris/core/link/CustomItemsDataProvider.java
|
||||
art/arcane/iris/core/link/data/CraftEngineDataProvider.java
|
||||
art/arcane/iris/core/link/data/EcoItemsDataProvider.java
|
||||
art/arcane/iris/core/link/data/ExecutableItemsDataProvider.java
|
||||
art/arcane/iris/core/link/data/HMCLeavesDataProvider.java
|
||||
art/arcane/iris/core/link/data/ItemAdderDataProvider.java
|
||||
art/arcane/iris/core/link/data/KGeneratorsDataProvider.java
|
||||
art/arcane/iris/core/link/data/MMOItemsDataProvider.java
|
||||
art/arcane/iris/core/link/data/MythicCrucibleDataProvider.java
|
||||
art/arcane/iris/core/link/data/MythicMobsDataProvider.java
|
||||
art/arcane/iris/core/link/data/NexoDataProvider.java
|
||||
art/arcane/iris/core/link/ExternalDataProvider.java
|
||||
art/arcane/iris/core/link/Identifier.java
|
||||
art/arcane/iris/core/link/IrisPapiExpansion.java
|
||||
art/arcane/iris/core/link/MultiverseCoreLink.java
|
||||
art/arcane/iris/core/link/WorldEditLink.java
|
||||
art/arcane/iris/core/nms/datapack/v1206/DataFixerV1206.java
|
||||
art/arcane/iris/core/nms/INMS.java
|
||||
art/arcane/iris/core/nms/INMSBinding.java
|
||||
art/arcane/iris/core/nms/MinecraftVersion.java
|
||||
art/arcane/iris/core/nms/v1X/NMSBinding1X.java
|
||||
art/arcane/iris/core/pack/IrisPack.java
|
||||
art/arcane/iris/core/pregenerator/DeepSearchPregenerator.java
|
||||
art/arcane/iris/core/pregenerator/methods/AsyncOrMedievalPregenMethod.java
|
||||
art/arcane/iris/core/pregenerator/methods/AsyncPregenMethod.java
|
||||
art/arcane/iris/core/pregenerator/methods/HybridPregenMethod.java
|
||||
art/arcane/iris/core/pregenerator/methods/MedievalPregenMethod.java
|
||||
art/arcane/iris/core/project/IrisProject.java
|
||||
art/arcane/iris/core/project/SchemaBuilder.java
|
||||
art/arcane/iris/core/runtime/BukkitPublicRuntimeControlBackend.java
|
||||
art/arcane/iris/core/runtime/ChunkClearer.java
|
||||
art/arcane/iris/core/runtime/ChunkJobReporter.java
|
||||
art/arcane/iris/core/runtime/GoldenHashScanner.java
|
||||
art/arcane/iris/core/runtime/InPlaceChunkRegenerator.java
|
||||
art/arcane/iris/core/runtime/ObjectStudioLayout.java
|
||||
art/arcane/iris/core/runtime/PaperLikeRuntimeControlBackend.java
|
||||
art/arcane/iris/core/runtime/StudioOpenCoordinator.java
|
||||
art/arcane/iris/core/runtime/WorldRuntimeControlBackend.java
|
||||
art/arcane/iris/core/runtime/WorldRuntimeControlService.java
|
||||
art/arcane/iris/core/safeguard/Mode.java
|
||||
art/arcane/iris/core/safeguard/task/Tasks.java
|
||||
art/arcane/iris/core/ServerConfigurator.java
|
||||
art/arcane/iris/core/service/BoardSVC.java
|
||||
art/arcane/iris/core/service/CommandSVC.java
|
||||
art/arcane/iris/core/service/EditSVC.java
|
||||
art/arcane/iris/core/service/ExternalDataSVC.java
|
||||
art/arcane/iris/core/service/GlobalCacheSVC.java
|
||||
art/arcane/iris/core/service/IrisEngineSVC.java
|
||||
art/arcane/iris/core/service/IrisIntegrationService.java
|
||||
art/arcane/iris/core/service/ObjectStudioSaveService.java
|
||||
art/arcane/iris/core/service/ObjectSVC.java
|
||||
art/arcane/iris/core/service/StudioSVC.java
|
||||
art/arcane/iris/core/service/TreeSVC.java
|
||||
art/arcane/iris/core/service/WandSVC.java
|
||||
art/arcane/iris/core/structure/BulkStructureImporter.java
|
||||
art/arcane/iris/core/structure/FeatureImporter.java
|
||||
art/arcane/iris/core/structure/StructureCaptureImporter.java
|
||||
art/arcane/iris/core/structure/StructureImporter.java
|
||||
art/arcane/iris/core/structure/VillageImporter.java
|
||||
art/arcane/iris/core/tools/IrisConverter.java
|
||||
art/arcane/iris/core/tools/IrisCreator.java
|
||||
art/arcane/iris/core/tools/IrisPackBenchmarking.java
|
||||
art/arcane/iris/core/tools/IrisReflectiveAPI.java
|
||||
art/arcane/iris/core/tools/IrisToolbelt.java
|
||||
art/arcane/iris/core/tools/IrisWorldCreator.java
|
||||
art/arcane/iris/core/tools/TreePlausibilizer.java
|
||||
art/arcane/iris/core/wand/WandSelection.java
|
||||
art/arcane/iris/engine/actuator/IrisBiomeActuator.java
|
||||
art/arcane/iris/engine/actuator/IrisDecorantActuator.java
|
||||
art/arcane/iris/engine/actuator/IrisTerrainNormalActuator.java
|
||||
art/arcane/iris/engine/data/cache/Cache.java
|
||||
art/arcane/iris/engine/data/chunk/LinkedTerrainChunk.java
|
||||
art/arcane/iris/engine/data/chunk/TerrainChunk.java
|
||||
art/arcane/iris/engine/decorator/DecoratorCore.java
|
||||
art/arcane/iris/engine/decorator/IrisCeilingDecorator.java
|
||||
art/arcane/iris/engine/framework/BlockUpdater.java
|
||||
art/arcane/iris/engine/framework/Engine.java
|
||||
art/arcane/iris/engine/framework/EngineAssignedWorldManager.java
|
||||
art/arcane/iris/engine/framework/EngineComponent.java
|
||||
art/arcane/iris/engine/framework/EngineDecorator.java
|
||||
art/arcane/iris/engine/framework/EngineMode.java
|
||||
art/arcane/iris/engine/framework/EnginePlayer.java
|
||||
art/arcane/iris/engine/framework/EngineWorldManager.java
|
||||
art/arcane/iris/engine/framework/Locator.java
|
||||
art/arcane/iris/engine/framework/LootProvider.java
|
||||
art/arcane/iris/engine/framework/placer/WorldObjectPlacer.java
|
||||
art/arcane/iris/engine/framework/PregeneratedData.java
|
||||
art/arcane/iris/engine/framework/StructureAssembler.java
|
||||
art/arcane/iris/engine/IrisComplex.java
|
||||
art/arcane/iris/engine/IrisEngine.java
|
||||
art/arcane/iris/engine/IrisEngineEffects.java
|
||||
art/arcane/iris/engine/IrisEngineMantle.java
|
||||
art/arcane/iris/engine/IrisWorldManager.java
|
||||
art/arcane/iris/engine/mantle/components/MantleFloatingObjectComponent.java
|
||||
art/arcane/iris/engine/mantle/components/MantleObjectComponent.java
|
||||
art/arcane/iris/engine/mantle/EngineMantle.java
|
||||
art/arcane/iris/engine/mantle/MantleWriter.java
|
||||
art/arcane/iris/engine/mode/ModeOverworld.java
|
||||
art/arcane/iris/engine/modifier/IrisCarveModifier.java
|
||||
art/arcane/iris/engine/modifier/IrisDepositModifier.java
|
||||
art/arcane/iris/engine/modifier/IrisFloatingChildBiomeModifier.java
|
||||
art/arcane/iris/engine/modifier/IrisPerfectionModifier.java
|
||||
art/arcane/iris/engine/modifier/IrisPostModifier.java
|
||||
art/arcane/iris/engine/object/annotations/functions/LootTableKeyFunction.java
|
||||
art/arcane/iris/engine/object/BlockDataMergeSupport.java
|
||||
art/arcane/iris/engine/object/coral/CoralGenerator.java
|
||||
art/arcane/iris/engine/object/crystal/CrystalGenerator.java
|
||||
art/arcane/iris/engine/object/FloatingObjectFootprint.java
|
||||
art/arcane/iris/engine/object/formation/FormationBlockResolver.java
|
||||
art/arcane/iris/engine/object/formation/FormationGenerator.java
|
||||
art/arcane/iris/engine/object/fungi/FungusGenerator.java
|
||||
art/arcane/iris/engine/object/fungi/FungusStemBuilder.java
|
||||
art/arcane/iris/engine/object/IPostBlockAccess.java
|
||||
art/arcane/iris/engine/object/IrisAttributeModifier.java
|
||||
art/arcane/iris/engine/object/IrisBiome.java
|
||||
art/arcane/iris/engine/object/IrisBiomeCustom.java
|
||||
art/arcane/iris/engine/object/IrisBiomeCustomParticle.java
|
||||
art/arcane/iris/engine/object/IrisBiomeCustomSpawn.java
|
||||
art/arcane/iris/engine/object/IrisBlockData.java
|
||||
art/arcane/iris/engine/object/IrisBlockDrops.java
|
||||
art/arcane/iris/engine/object/IrisCaveShape.java
|
||||
art/arcane/iris/engine/object/IrisColor.java
|
||||
art/arcane/iris/engine/object/IrisCommandRegistry.java
|
||||
art/arcane/iris/engine/object/IrisCompat.java
|
||||
art/arcane/iris/engine/object/IrisCompatabilityBlockFilter.java
|
||||
art/arcane/iris/engine/object/IrisCompatabilityItemFilter.java
|
||||
art/arcane/iris/engine/object/IrisDepositVariant.java
|
||||
art/arcane/iris/engine/object/IrisDimension.java
|
||||
art/arcane/iris/engine/object/IrisDirection.java
|
||||
art/arcane/iris/engine/object/IrisEffect.java
|
||||
art/arcane/iris/engine/object/IrisEnchantment.java
|
||||
art/arcane/iris/engine/object/IrisEntity.java
|
||||
art/arcane/iris/engine/object/IrisEntitySpawn.java
|
||||
art/arcane/iris/engine/object/IrisLoot.java
|
||||
art/arcane/iris/engine/object/IrisLootTable.java
|
||||
art/arcane/iris/engine/object/IrisObject.java
|
||||
art/arcane/iris/engine/object/IrisObjectLoot.java
|
||||
art/arcane/iris/engine/object/IrisObjectPlacement.java
|
||||
art/arcane/iris/engine/object/IrisObjectRotation.java
|
||||
art/arcane/iris/engine/object/IrisObjectTranslate.java
|
||||
art/arcane/iris/engine/object/IrisPosition.java
|
||||
art/arcane/iris/engine/object/IrisPotionEffect.java
|
||||
art/arcane/iris/engine/object/IrisProceduralBlocks.java
|
||||
art/arcane/iris/engine/object/IrisSpawner.java
|
||||
art/arcane/iris/engine/object/IrisSurface.java
|
||||
art/arcane/iris/engine/object/IrisTree.java
|
||||
art/arcane/iris/engine/object/IrisVanillaLootTable.java
|
||||
art/arcane/iris/engine/object/IrisVillagerOverride.java
|
||||
art/arcane/iris/engine/object/IrisVillagerTrade.java
|
||||
art/arcane/iris/engine/object/IrisWorld.java
|
||||
art/arcane/iris/engine/object/LegacyTileData.java
|
||||
art/arcane/iris/engine/object/PotionEffectTypes.java
|
||||
art/arcane/iris/engine/object/ruin/RuinBlockCanvas.java
|
||||
art/arcane/iris/engine/object/ruin/RuinDecoratorApplier.java
|
||||
art/arcane/iris/engine/object/ruin/RuinGenerator.java
|
||||
art/arcane/iris/engine/object/TileData.java
|
||||
art/arcane/iris/engine/object/tree/ProceduralTreeGenerator.java
|
||||
art/arcane/iris/engine/object/tree/TreeBlockResolver.java
|
||||
art/arcane/iris/engine/object/tree/TreePlausibility.java
|
||||
art/arcane/iris/engine/platform/BukkitChunkGenerator.java
|
||||
art/arcane/iris/engine/platform/DummyBiomeProvider.java
|
||||
art/arcane/iris/engine/platform/DummyChunkGenerator.java
|
||||
art/arcane/iris/engine/platform/PlatformChunkGenerator.java
|
||||
art/arcane/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java
|
||||
art/arcane/iris/engine/platform/studio/generators/ObjectStudioGenerator.java
|
||||
art/arcane/iris/Iris.java
|
||||
art/arcane/iris/platform/bukkit/BukkitBiome.java
|
||||
art/arcane/iris/platform/bukkit/BukkitBlockState.java
|
||||
art/arcane/iris/platform/bukkit/BukkitEntityType.java
|
||||
art/arcane/iris/platform/bukkit/BukkitItem.java
|
||||
art/arcane/iris/platform/bukkit/BukkitPlatform.java
|
||||
art/arcane/iris/platform/bukkit/BukkitRegistries.java
|
||||
art/arcane/iris/platform/bukkit/BukkitScheduler.java
|
||||
art/arcane/iris/platform/bukkit/BukkitWorld.java
|
||||
art/arcane/iris/util/common/data/B.java
|
||||
art/arcane/iris/util/common/data/IrisCustomData.java
|
||||
art/arcane/iris/util/common/data/registry/Attributes.java
|
||||
art/arcane/iris/util/common/data/registry/KeyedRegistry.java
|
||||
art/arcane/iris/util/common/data/registry/Materials.java
|
||||
art/arcane/iris/util/common/data/registry/Particles.java
|
||||
art/arcane/iris/util/common/data/registry/RegistryTypeAdapter.java
|
||||
art/arcane/iris/util/common/data/registry/RegistryUtil.java
|
||||
art/arcane/iris/util/common/data/VectorMap.java
|
||||
art/arcane/iris/util/common/director/context/VectorContextHandler.java
|
||||
art/arcane/iris/util/common/director/context/WorldContextHandler.java
|
||||
art/arcane/iris/util/common/director/DirectorExecutor.java
|
||||
art/arcane/iris/util/common/director/handlers/BlockVectorHandler.java
|
||||
art/arcane/iris/util/common/director/handlers/PlayerHandler.java
|
||||
art/arcane/iris/util/common/director/handlers/VectorHandler.java
|
||||
art/arcane/iris/util/common/director/handlers/WorldHandler.java
|
||||
art/arcane/iris/util/common/director/specialhandlers/NullablePlayerHandler.java
|
||||
art/arcane/iris/util/common/format/C.java
|
||||
art/arcane/iris/util/common/inventorygui/UIStaticDecorator.java
|
||||
art/arcane/iris/util/common/inventorygui/Window.java
|
||||
art/arcane/iris/util/common/inventorygui/WindowResolution.java
|
||||
art/arcane/iris/util/common/math/AxisAlignedBB.java
|
||||
art/arcane/iris/util/common/math/Direction.java
|
||||
art/arcane/iris/util/common/math/Vector3i.java
|
||||
art/arcane/iris/util/common/math/VectorMath.java
|
||||
art/arcane/iris/util/common/misc/Bindings.java
|
||||
art/arcane/iris/util/common/nbt/mca/Chunk.java
|
||||
art/arcane/iris/util/common/nbt/mca/NBTWorld.java
|
||||
art/arcane/iris/util/common/plugin/chunk/ChunkTickets.java
|
||||
art/arcane/iris/util/common/plugin/chunk/TicketHolder.java
|
||||
art/arcane/iris/util/common/plugin/Chunks.java
|
||||
art/arcane/iris/util/common/plugin/CommandDummy.java
|
||||
art/arcane/iris/util/common/plugin/IController.java
|
||||
art/arcane/iris/util/common/plugin/IrisService.java
|
||||
art/arcane/iris/util/common/plugin/MortarCommand.java
|
||||
art/arcane/iris/util/common/plugin/MortarPermission.java
|
||||
art/arcane/iris/util/common/plugin/RouterCommand.java
|
||||
art/arcane/iris/util/common/plugin/VirtualCommand.java
|
||||
art/arcane/iris/util/common/plugin/VolmitPlugin.java
|
||||
art/arcane/iris/util/common/plugin/VolmitSender.java
|
||||
art/arcane/iris/util/common/reflect/KeyedType.java
|
||||
art/arcane/iris/util/common/reflect/OldEnum.java
|
||||
art/arcane/iris/util/common/scheduling/J.java
|
||||
art/arcane/iris/util/project/hunk/Hunk.java
|
||||
art/arcane/iris/util/project/hunk/view/ChunkBiomeHunkView.java
|
||||
art/arcane/iris/util/project/hunk/view/ChunkDataHunkHolder.java
|
||||
art/arcane/iris/util/project/hunk/view/ChunkDataHunkView.java
|
||||
art/arcane/iris/util/project/hunk/view/ChunkHunkView.java
|
||||
art/arcane/iris/util/project/matter/IrisMatterSupport.java
|
||||
art/arcane/iris/util/project/matter/slices/EntityMatter.java
|
||||
art/arcane/iris/util/project/matter/slices/TileMatter.java
|
||||
art/arcane/iris/util/project/matter/WorldMatter.java
|
||||
art/arcane/iris/util/project/sentry/Attachments.java
|
||||
art/arcane/iris/util/project/sentry/ServerID.java
|
||||
Reference in New Issue
Block a user