From 8bacc8128b1914e984da6c47f78a7ce914eae4ce Mon Sep 17 00:00:00 2001 From: CrazyDev22 Date: Mon, 23 Oct 2023 08:54:30 +0200 Subject: [PATCH] move base project to 'core' add build script for nms add build script for core add build script for project move existing nms references to nms/v1_20_R1 add 1.19 and 1.20.2 compatibility --- .gitignore | 2 +- build.gradle | 436 ++++---- core/build.gradle | 84 ++ .../src}/main/java/com/volmit/iris/Iris.java | 6 +- .../com/volmit/iris/core/IrisSettings.java | 0 .../volmit/iris/core/ServerConfigurator.java | 0 .../iris/core/commands/CommandEdit.java | 0 .../iris/core/commands/CommandFind.java | 0 .../iris/core/commands/CommandIris.java | 0 .../iris/core/commands/CommandJigsaw.java | 0 .../iris/core/commands/CommandObject.java | 0 .../iris/core/commands/CommandPregen.java | 0 .../iris/core/commands/CommandSettings.java | 0 .../iris/core/commands/CommandStudio.java | 0 .../iris/core/commands/CommandWhat.java | 0 .../core/commands/CommandWorldManager.java | 0 .../volmit/iris/core/edit/BlockEditor.java | 0 .../volmit/iris/core/edit/BlockSignal.java | 0 .../iris/core/edit/BukkitBlockEditor.java | 0 .../volmit/iris/core/edit/DustRevealer.java | 0 .../volmit/iris/core/edit/JigsawEditor.java | 0 .../iris/core/events/IrisEngineEvent.java | 0 .../core/events/IrisEngineHotloadEvent.java | 0 .../iris/core/gui/NoiseExplorerGUI.java | 0 .../volmit/iris/core/gui/PregeneratorJob.java | 0 .../com/volmit/iris/core/gui/VisionGUI.java | 0 .../core/gui/components/IrisRenderer.java | 0 .../iris/core/gui/components/RenderType.java | 0 .../iris/core/gui/components/Renderer.java | 0 .../iris/core/gui/components/TileRender.java | 0 .../core/link/CustomItemsDataProvider.java | 0 .../iris/core/link/ExternalDataProvider.java | 0 .../com/volmit/iris/core/link/Identifier.java | 0 .../iris/core/link/IrisPapiExpansion.java | 0 .../iris/core/link/ItemAdderDataProvider.java | 0 .../iris/core/link/MultiverseCoreLink.java | 0 .../volmit/iris/core/link/MythicMobsLink.java | 0 .../iris/core/link/OraxenDataProvider.java | 0 .../volmit/iris/core/link/WorldEditLink.java | 0 .../iris/core/loader/ImageResourceLoader.java | 0 .../com/volmit/iris/core/loader/IrisData.java | 0 .../iris/core/loader/IrisRegistrant.java | 0 .../loader/MatterObjectResourceLoader.java | 0 .../core/loader/ObjectResourceLoader.java | 0 .../iris/core/loader/ResourceLoader.java | 0 .../core/loader/ScriptResourceLoader.java | 0 .../iris/core/nms/BiomeBaseInjector.java | 0 .../java/com/volmit/iris/core/nms/INMS.java | 151 ++- .../com/volmit/iris/core/nms/INMSBinding.java | 10 + .../iris/core/nms/container/BlockPos.java | 14 + .../volmit/iris/core/nms/container/Pair.java | 13 + .../iris/core/nms/v1X/NMSBinding1X.java | 20 + .../com/volmit/iris/core/pack/IrisPack.java | 0 .../iris/core/pack/IrisPackRepository.java | 0 .../core/pregenerator/IrisPregenerator.java | 0 .../core/pregenerator/LazyPregenerator.java | 0 .../core/pregenerator/PregenListener.java | 0 .../iris/core/pregenerator/PregenTask.java | 0 .../core/pregenerator/PregeneratorMethod.java | 0 .../methods/AsyncOrMedievalPregenMethod.java | 0 .../methods/AsyncPregenMethod.java | 0 .../methods/DummyPregenMethod.java | 0 .../methods/HybridPregenMethod.java | 0 .../methods/MedievalPregenMethod.java | 0 .../volmit/iris/core/project/IrisProject.java | 0 .../iris/core/project/SchemaBuilder.java | 0 .../com/volmit/iris/core/report/Report.java | 0 .../volmit/iris/core/report/ReportType.java | 0 .../volmit/iris/core/service/BoardSVC.java | 0 .../volmit/iris/core/service/CommandSVC.java | 0 .../iris/core/service/ConversionSVC.java | 0 .../volmit/iris/core/service/DolphinSVC.java | 8 +- .../com/volmit/iris/core/service/EditSVC.java | 0 .../iris/core/service/ExternalDataSVC.java | 0 .../iris/core/service/LogFilterSVC.java | 0 .../volmit/iris/core/service/ObjectSVC.java | 0 .../iris/core/service/PreservationSVC.java | 0 .../volmit/iris/core/service/StudioSVC.java | 0 .../com/volmit/iris/core/service/TreeSVC.java | 0 .../volmit/iris/core/service/VillageSVC.java | 0 .../com/volmit/iris/core/service/WandSVC.java | 0 .../iris/core/tools/IrisBenchmarking.java | 0 .../volmit/iris/core/tools/IrisCreator.java | 0 .../iris/core/tools/IrisReflectiveAPI.java | 0 .../volmit/iris/core/tools/IrisToolbelt.java | 0 .../iris/core/tools/IrisWorldCreator.java | 0 .../volmit/iris/core/wand/WandSelection.java | 0 .../com/volmit/iris/engine/EnginePanic.java | 0 .../com/volmit/iris/engine/IrisComplex.java | 0 .../com/volmit/iris/engine/IrisEngine.java | 4 +- .../volmit/iris/engine/IrisEngineEffects.java | 0 .../volmit/iris/engine/IrisEngineMantle.java | 0 .../iris/engine/IrisExecutionEnvironment.java | 0 .../volmit/iris/engine/IrisWorldManager.java | 0 .../engine/actuator/IrisBiomeActuator.java | 0 .../engine/actuator/IrisDecorantActuator.java | 0 .../actuator/IrisTerrainNormalActuator.java | 0 .../iris/engine/data/cache/AtomicCache.java | 0 .../volmit/iris/engine/data/cache/Cache.java | 0 .../iris/engine/data/cache/Multicache.java | 0 .../engine/data/chunk/LinkedTerrainChunk.java | 0 .../engine/data/chunk/MCATerrainChunk.java | 0 .../iris/engine/data/chunk/TerrainChunk.java | 0 .../iris/engine/data/io/Deserializer.java | 0 .../engine/data/io/ExceptionBiFunction.java | 0 .../engine/data/io/ExceptionTriConsumer.java | 0 .../iris/engine/data/io/MaxDepthIO.java | 0 .../data/io/MaxDepthReachedException.java | 0 .../iris/engine/data/io/Serializer.java | 0 .../engine/data/io/StringDeserializer.java | 0 .../iris/engine/data/io/StringSerializer.java | 0 .../decorator/IrisCeilingDecorator.java | 0 .../engine/decorator/IrisEngineDecorator.java | 0 .../decorator/IrisSeaFloorDecorator.java | 0 .../decorator/IrisSeaSurfaceDecorator.java | 0 .../decorator/IrisShoreLineDecorator.java | 0 .../decorator/IrisSurfaceDecorator.java | 0 .../iris/engine/framework/BlockUpdater.java | 0 .../volmit/iris/engine/framework/Engine.java | 4 +- .../iris/engine/framework/EngineActuator.java | 0 .../framework/EngineAssignedActuator.java | 0 .../framework/EngineAssignedBiModifier.java | 0 .../framework/EngineAssignedComponent.java | 0 .../framework/EngineAssignedModifier.java | 0 .../framework/EngineAssignedWorldManager.java | 0 .../engine/framework/EngineBiModifier.java | 0 .../engine/framework/EngineComponent.java | 0 .../iris/engine/framework/EngineData.java | 0 .../engine/framework/EngineDecorator.java | 0 .../iris/engine/framework/EngineEffects.java | 0 .../iris/engine/framework/EngineMetrics.java | 0 .../iris/engine/framework/EngineMode.java | 0 .../iris/engine/framework/EngineModifier.java | 0 .../iris/engine/framework/EnginePlayer.java | 0 .../iris/engine/framework/EngineStage.java | 0 .../iris/engine/framework/EngineTarget.java | 0 .../engine/framework/EngineWorldManager.java | 0 .../iris/engine/framework/Fallible.java | 0 .../iris/engine/framework/Hotloadable.java | 0 .../iris/engine/framework/IrisEngineMode.java | 0 .../iris/engine/framework/IrisLootEvent.java | 0 .../volmit/iris/engine/framework/Locator.java | 4 +- .../engine/framework/LocatorCanceller.java | 0 .../iris/engine/framework/LootProvider.java | 0 .../iris/engine/framework/MeteredCache.java | 0 .../iris/engine/framework/PlacedObject.java | 0 .../engine/framework/PregeneratedData.java | 0 .../iris/engine/framework/SeedManager.java | 0 .../volmit/iris/engine/framework/Staged.java | 0 .../framework/WrongEngineBroException.java | 0 .../placer/HeightmapObjectPlacer.java | 0 .../iris/engine/jigsaw/PlannedPiece.java | 0 .../iris/engine/jigsaw/PlannedStructure.java | 0 .../iris/engine/mantle/EngineMantle.java | 0 .../engine/mantle/IrisMantleComponent.java | 0 .../iris/engine/mantle/MantleComponent.java | 0 .../iris/engine/mantle/MantleSized.java | 0 .../iris/engine/mantle/MantleWriter.java | 0 .../components/MantleCarvingComponent.java | 0 .../components/MantleFluidBodyComponent.java | 0 .../components/MantleJigsawComponent.java | 0 .../components/MantleObjectComponent.java | 0 .../iris/engine/mode/ModeEnclosure.java | 0 .../volmit/iris/engine/mode/ModeIslands.java | 0 .../iris/engine/mode/ModeOverworld.java | 0 .../iris/engine/mode/ModeSuperFlat.java | 0 .../engine/modifier/IrisCarveModifier.java | 0 .../engine/modifier/IrisDepositModifier.java | 0 .../modifier/IrisPerfectionModifier.java | 0 .../engine/modifier/IrisPostModifier.java | 0 .../iris/engine/object/CarveResult.java | 0 .../iris/engine/object/CarvingMode.java | 0 .../volmit/iris/engine/object/CaveResult.java | 0 .../iris/engine/object/IObjectPlacer.java | 0 .../iris/engine/object/IPostBlockAccess.java | 0 .../com/volmit/iris/engine/object/IRare.java | 0 .../iris/engine/object/InferredType.java | 0 .../iris/engine/object/InventorySlotType.java | 0 .../engine/object/IrisAttributeModifier.java | 0 .../engine/object/IrisAxisRotationClamp.java | 0 .../volmit/iris/engine/object/IrisBiome.java | 0 .../iris/engine/object/IrisBiomeCustom.java | 0 .../object/IrisBiomeCustomCategory.java | 0 .../object/IrisBiomeCustomParticle.java | 0 .../object/IrisBiomeCustomPrecipType.java | 0 .../engine/object/IrisBiomeCustomSpawn.java | 0 .../object/IrisBiomeCustomSpawnType.java | 0 .../engine/object/IrisBiomeGeneratorLink.java | 0 .../engine/object/IrisBiomePaletteLayer.java | 0 .../iris/engine/object/IrisBlockData.java | 0 .../iris/engine/object/IrisBlockDrops.java | 0 .../iris/engine/object/IrisCarving.java | 0 .../volmit/iris/engine/object/IrisCave.java | 0 .../iris/engine/object/IrisCavePlacer.java | 0 .../volmit/iris/engine/object/IrisColor.java | 0 .../iris/engine/object/IrisCommand.java | 0 .../engine/object/IrisCommandRegistry.java | 0 .../volmit/iris/engine/object/IrisCompat.java | 0 .../object/IrisCompatabilityBlockFilter.java | 0 .../object/IrisCompatabilityItemFilter.java | 0 .../engine/object/IrisDecorationPart.java | 0 .../iris/engine/object/IrisDecorator.java | 0 .../engine/object/IrisDepositGenerator.java | 0 .../iris/engine/object/IrisDimension.java | 0 .../iris/engine/object/IrisDimensionMode.java | 0 .../engine/object/IrisDimensionModeType.java | 0 .../iris/engine/object/IrisDirection.java | 0 .../iris/engine/object/IrisDuration.java | 0 .../volmit/iris/engine/object/IrisEffect.java | 0 .../iris/engine/object/IrisElipsoid.java | 0 .../iris/engine/object/IrisEnchantment.java | 0 .../engine/object/IrisEngineChunkData.java | 0 .../iris/engine/object/IrisEngineData.java | 0 .../object/IrisEngineSpawnerCooldown.java | 0 .../engine/object/IrisEngineStatistics.java | 0 .../engine/object/IrisEngineStreamType.java | 0 .../engine/object/IrisEngineValueType.java | 0 .../volmit/iris/engine/object/IrisEntity.java | 0 .../iris/engine/object/IrisEntitySpawn.java | 0 .../iris/engine/object/IrisExpression.java | 0 .../engine/object/IrisExpressionLoad.java | 0 .../iris/engine/object/IrisFluidBodies.java | 0 .../iris/engine/object/IrisFontStyle.java | 0 .../iris/engine/object/IrisGenerator.java | 0 .../engine/object/IrisGeneratorStyle.java | 0 .../volmit/iris/engine/object/IrisImage.java | 0 .../iris/engine/object/IrisImageChannel.java | 0 .../iris/engine/object/IrisImageMap.java | 0 .../iris/engine/object/IrisInterpolator.java | 0 .../engine/object/IrisInterpolator3D.java | 0 .../iris/engine/object/IrisJigsawPiece.java | 0 .../object/IrisJigsawPieceConnector.java | 0 .../engine/object/IrisJigsawPlacement.java | 0 .../iris/engine/object/IrisJigsawPool.java | 0 .../engine/object/IrisJigsawStructure.java | 0 .../object/IrisJigsawStructurePlacement.java | 0 .../volmit/iris/engine/object/IrisLake.java | 0 .../volmit/iris/engine/object/IrisLoot.java | 20 +- .../iris/engine/object/IrisLootMode.java | 0 .../iris/engine/object/IrisLootReference.java | 0 .../iris/engine/object/IrisLootTable.java | 0 .../volmit/iris/engine/object/IrisMarker.java | 0 .../engine/object/IrisMaterialPalette.java | 0 .../volmit/iris/engine/object/IrisMod.java | 0 .../engine/object/IrisModBiomeInjector.java | 0 .../engine/object/IrisModBiomeReplacer.java | 0 .../object/IrisModNoiseStyleReplacer.java | 0 .../IrisModObjectPlacementBiomeInjector.java | 0 .../IrisModObjectPlacementRegionInjector.java | 0 .../engine/object/IrisModObjectReplacer.java | 0 .../engine/object/IrisModRegionReplacer.java | 0 .../engine/object/IrisNoiseGenerator.java | 0 .../volmit/iris/engine/object/IrisObject.java | 0 .../iris/engine/object/IrisObjectLimit.java | 0 .../iris/engine/object/IrisObjectLoot.java | 0 .../iris/engine/object/IrisObjectMarker.java | 0 .../engine/object/IrisObjectPlacement.java | 0 .../IrisObjectPlacementScaleInterpolator.java | 0 .../iris/engine/object/IrisObjectReplace.java | 0 .../engine/object/IrisObjectRotation.java | 0 .../iris/engine/object/IrisObjectScale.java | 0 .../engine/object/IrisObjectTranslate.java | 0 .../iris/engine/object/IrisOreGenerator.java | 0 .../iris/engine/object/IrisPosition.java | 0 .../iris/engine/object/IrisPosition2D.java | 0 .../iris/engine/object/IrisPotionEffect.java | 0 .../iris/engine/object/IrisPyramid.java | 0 .../volmit/iris/engine/object/IrisRange.java | 0 .../iris/engine/object/IrisRareObject.java | 0 .../volmit/iris/engine/object/IrisRate.java | 0 .../volmit/iris/engine/object/IrisRavine.java | 0 .../iris/engine/object/IrisRavinePlacer.java | 0 .../volmit/iris/engine/object/IrisRegion.java | 0 .../volmit/iris/engine/object/IrisRiver.java | 0 .../volmit/iris/engine/object/IrisScript.java | 0 .../volmit/iris/engine/object/IrisSeed.java | 0 .../object/IrisShapedGeneratorStyle.java | 0 .../iris/engine/object/IrisSlopeClip.java | 0 .../iris/engine/object/IrisSpawnGroup.java | 0 .../iris/engine/object/IrisSpawner.java | 0 .../volmit/iris/engine/object/IrisSphere.java | 0 .../iris/engine/object/IrisStiltSettings.java | 0 .../iris/engine/object/IrisStyledRange.java | 0 .../iris/engine/object/IrisSurface.java | 0 .../iris/engine/object/IrisTimeBlock.java | 0 .../volmit/iris/engine/object/IrisTree.java | 0 .../iris/engine/object/IrisTreeModes.java | 0 .../iris/engine/object/IrisTreeSettings.java | 0 .../iris/engine/object/IrisTreeSize.java | 0 .../engine/object/IrisVillagerOverride.java | 0 .../iris/engine/object/IrisVillagerTrade.java | 0 .../iris/engine/object/IrisWeather.java | 0 .../volmit/iris/engine/object/IrisWorld.java | 0 .../volmit/iris/engine/object/IrisWorm.java | 0 .../volmit/iris/engine/object/NoiseStyle.java | 0 .../iris/engine/object/ObjectPlaceMode.java | 0 .../volmit/iris/engine/object/StudioMode.java | 0 .../volmit/iris/engine/object/TileBanner.java | 0 .../volmit/iris/engine/object/TileData.java | 0 .../volmit/iris/engine/object/TileSign.java | 0 .../iris/engine/object/TileSpawner.java | 0 .../engine/object/annotations/ArrayType.java | 0 .../engine/object/annotations/DependsOn.java | 0 .../iris/engine/object/annotations/Desc.java | 0 .../engine/object/annotations/MaxNumber.java | 0 .../engine/object/annotations/MinNumber.java | 0 .../RegistryListBiomeDownfallType.java | 0 .../annotations/RegistryListBlockType.java | 0 .../annotations/RegistryListEnchantment.java | 0 .../object/annotations/RegistryListFont.java | 0 .../annotations/RegistryListItemType.java | 0 .../annotations/RegistryListResource.java | 0 .../RegistryListSpecialEntity.java | 0 .../engine/object/annotations/Required.java | 0 .../engine/object/annotations/Snippet.java | 0 .../object/matter/IrisMatterObject.java | 0 .../object/matter/IrisMatterPlacement.java | 0 .../matter/IrisMatterPlacementLocation.java | 0 .../object/matter/IrisMatterTranslate.java | 0 .../engine/platform/BukkitChunkGenerator.java | 17 +- .../iris/engine/platform/DummyBiomeGrid.java | 0 .../engine/platform/DummyBiomeProvider.java | 0 .../engine/platform/DummyChunkGenerator.java | 0 .../platform/PlatformChunkGenerator.java | 0 .../studio/EnginedStudioGenerator.java | 0 .../platform/studio/StudioGenerator.java | 0 .../generators/BiomeBuffetGenerator.java | 0 .../iris/engine/safeguard/IrisSafeguard.java | 0 .../iris/engine/safeguard/SafeguardUtils.java | 0 .../iris/engine/safeguard/ServerBoot.java | 5 +- .../scripting/EngineExecutionEnvironment.java | 0 .../engine/scripting/IrisScriptingAPI.java | 0 .../volmit/iris/util/api/APIAwareBlock.java | 0 .../volmit/iris/util/api/APIWorldBlock.java | 0 .../iris/util/atomics/AtomicAverage.java | 0 .../util/atomics/AtomicRollingSequence.java | 0 .../com/volmit/iris/util/board/Board.java | 0 .../volmit/iris/util/board/BoardEntry.java | 0 .../volmit/iris/util/board/BoardManager.java | 0 .../volmit/iris/util/board/BoardProvider.java | 0 .../volmit/iris/util/board/BoardSettings.java | 0 .../iris/util/board/BoardUpdateTask.java | 0 .../iris/util/board/ScoreDirection.java | 0 .../volmit/iris/util/cache/ArrayCache.java | 0 .../volmit/iris/util/cache/ByteBitCache.java | 0 .../com/volmit/iris/util/cache/ByteCache.java | 0 .../volmit/iris/util/cache/ChunkCache2D.java | 0 .../volmit/iris/util/cache/DataBitCache.java | 0 .../volmit/iris/util/cache/FloatBitCache.java | 0 .../volmit/iris/util/cache/FloatCache.java | 0 .../volmit/iris/util/cache/IntBitCache.java | 0 .../com/volmit/iris/util/cache/IntCache.java | 0 .../volmit/iris/util/cache/ShortBitCache.java | 0 .../volmit/iris/util/cache/ShortCache.java | 0 .../volmit/iris/util/cache/UByteBitCache.java | 0 .../volmit/iris/util/cache/UByteCache.java | 0 .../volmit/iris/util/cache/WorldCache2D.java | 0 .../volmit/iris/util/collection/GBiset.java | 0 .../iris/util/collection/GListAdapter.java | 0 .../volmit/iris/util/collection/KList.java | 0 .../com/volmit/iris/util/collection/KMap.java | 0 .../com/volmit/iris/util/collection/KSet.java | 0 .../volmit/iris/util/collection/KeyPair.java | 0 .../iris/util/collection/StateList.java | 0 .../iris/util/context/ChunkContext.java | 0 .../iris/util/context/ChunkedDataCache.java | 0 .../volmit/iris/util/context/IrisContext.java | 0 .../java/com/volmit/iris/util/data/B.java | 0 .../com/volmit/iris/util/data/BiomeMap.java | 0 .../com/volmit/iris/util/data/ChunkCache.java | 0 .../volmit/iris/util/data/ComplexCache.java | 0 .../com/volmit/iris/util/data/Cuboid.java | 0 .../iris/util/data/CuboidException.java | 0 .../java/com/volmit/iris/util/data/DUTF.java | 0 .../volmit/iris/util/data/DataPalette.java | 0 .../volmit/iris/util/data/DataProvider.java | 0 .../com/volmit/iris/util/data/Dimension.java | 0 .../volmit/iris/util/data/DimensionFace.java | 0 .../iris/util/data/DoubleArrayUtils.java | 0 .../com/volmit/iris/util/data/Heafty.java | 0 .../com/volmit/iris/util/data/HeightMap.java | 0 .../com/volmit/iris/util/data/IOAdapter.java | 0 .../iris/util/data/InvertedBiomeGrid.java | 0 .../iris/util/data/IrisBiomeStorage.java | 0 .../com/volmit/iris/util/data/KCache.java | 0 .../volmit/iris/util/data/MaterialBlock.java | 0 .../volmit/iris/util/data/NibbleArray.java | 0 .../iris/util/data/NibbleDataPalette.java | 0 .../com/volmit/iris/util/data/Recycler.java | 0 .../com/volmit/iris/util/data/Shrinkwrap.java | 0 .../iris/util/data/VanillaBiomeMap.java | 0 .../com/volmit/iris/util/data/Varint.java | 0 .../com/volmit/iris/util/data/WeightMap.java | 0 .../volmit/iris/util/data/WeightedRandom.java | 0 .../com/volmit/iris/util/data/Writable.java | 0 .../iris/util/data/palette/BitStorage.java | 0 .../iris/util/data/palette/CountConsumer.java | 0 .../CrudeIncrementalIntIdentityHashBiMap.java | 0 .../iris/util/data/palette/GlobalPalette.java | 0 .../util/data/palette/HashMapPalette.java | 0 .../volmit/iris/util/data/palette/IdMap.java | 0 .../iris/util/data/palette/IdMapper.java | 0 .../iris/util/data/palette/LinearPalette.java | 0 .../volmit/iris/util/data/palette/Mth.java | 0 .../iris/util/data/palette/Palette.java | 0 .../iris/util/data/palette/PaletteAccess.java | 0 .../iris/util/data/palette/PaletteResize.java | 0 .../iris/util/data/palette/PaletteType.java | 0 .../util/data/palette/PalettedContainer.java | 0 .../iris/util/data/palette/QuartPos.java | 0 .../iris/util/decree/DecreeContext.java | 0 .../util/decree/DecreeContextHandler.java | 0 .../iris/util/decree/DecreeExecutor.java | 0 .../volmit/iris/util/decree/DecreeNode.java | 0 .../volmit/iris/util/decree/DecreeOrigin.java | 0 .../iris/util/decree/DecreeParameter.java | 0 .../util/decree/DecreeParameterHandler.java | 0 .../volmit/iris/util/decree/DecreeSystem.java | 0 .../iris/util/decree/annotations/Decree.java | 0 .../iris/util/decree/annotations/Param.java | 0 .../decree/context/BiomeContextHandler.java | 0 .../context/DimensionContextHandler.java | 0 .../context/GeneratorContextHandler.java | 0 .../decree/context/RegionContextHandler.java | 0 .../decree/context/VectorContextHandler.java | 0 .../decree/context/WorldContextHandler.java | 0 .../exceptions/DecreeParsingException.java | 0 .../util/decree/handlers/BiomeHandler.java | 0 .../decree/handlers/BlockVectorHandler.java | 0 .../util/decree/handlers/BooleanHandler.java | 0 .../util/decree/handlers/ByteHandler.java | 0 .../util/decree/handlers/CaveHandler.java | 0 .../decree/handlers/DimensionHandler.java | 0 .../util/decree/handlers/DoubleHandler.java | 0 .../util/decree/handlers/EntityHandler.java | 0 .../util/decree/handlers/FloatHandler.java | 0 .../decree/handlers/GeneratorHandler.java | 0 .../util/decree/handlers/IntegerHandler.java | 0 .../decree/handlers/JigsawPieceHandler.java | 0 .../decree/handlers/JigsawPoolHandler.java | 0 .../handlers/JigsawStructureHandler.java | 0 .../util/decree/handlers/LongHandler.java | 0 .../util/decree/handlers/PlayerHandler.java | 0 .../util/decree/handlers/RegionHandler.java | 0 .../util/decree/handlers/ScriptHandler.java | 0 .../util/decree/handlers/ShortHandler.java | 0 .../util/decree/handlers/StringHandler.java | 0 .../util/decree/handlers/VectorHandler.java | 0 .../util/decree/handlers/WorldHandler.java | 0 .../decree/specialhandlers/DummyHandler.java | 0 .../NullablePlayerHandler.java | 0 .../decree/specialhandlers/ObjectHandler.java | 0 .../decree/virtual/VirtualDecreeCommand.java | 0 .../util/documentation/BlockCoordinates.java | 0 .../util/documentation/ChunkCoordinates.java | 0 .../ChunkRelativeBlockCoordinates.java | 0 .../util/documentation/RegionCoordinates.java | 0 .../iris/util/exceptions/IrisException.java | 0 .../exceptions/MissingDimensionException.java | 0 .../java/com/volmit/iris/util/format/C.java | 0 .../com/volmit/iris/util/format/Form.java | 0 .../iris/util/format/MemoryMonitor.java | 0 .../volmit/iris/util/function/Consumer2.java | 0 .../iris/util/function/Consumer2IO.java | 0 .../volmit/iris/util/function/Consumer3.java | 0 .../volmit/iris/util/function/Consumer4.java | 0 .../iris/util/function/Consumer4IO.java | 0 .../volmit/iris/util/function/Consumer5.java | 0 .../volmit/iris/util/function/Consumer6.java | 0 .../volmit/iris/util/function/Consumer8.java | 0 .../volmit/iris/util/function/Function2.java | 0 .../volmit/iris/util/function/Function3.java | 0 .../volmit/iris/util/function/Function4.java | 0 .../iris/util/function/NastyFunction.java | 0 .../iris/util/function/NastyFuture.java | 0 .../iris/util/function/NastyRunnable.java | 0 .../iris/util/function/NastySupplier.java | 0 .../iris/util/function/NoiseInjector.java | 0 .../iris/util/function/NoiseProvider.java | 0 .../iris/util/function/NoiseProvider3.java | 0 .../volmit/iris/util/function/Supplier2.java | 0 .../volmit/iris/util/function/Supplier3.java | 0 .../volmit/iris/util/function/Supplier3R.java | 0 .../java/com/volmit/iris/util/hunk/Hunk.java | 0 .../com/volmit/iris/util/hunk/HunkFace.java | 0 .../volmit/iris/util/hunk/HunkFactory.java | 0 .../volmit/iris/util/hunk/bits/DataBits.java | 0 .../iris/util/hunk/bits/DataContainer.java | 0 .../iris/util/hunk/bits/HashPalette.java | 0 .../iris/util/hunk/bits/LinearPalette.java | 0 .../volmit/iris/util/hunk/bits/Palette.java | 0 .../volmit/iris/util/hunk/bits/Writable.java | 0 .../iris/util/hunk/storage/ArrayHunk.java | 0 .../util/hunk/storage/AtomicDoubleHunk.java | 0 .../iris/util/hunk/storage/AtomicHunk.java | 0 .../util/hunk/storage/AtomicIntegerHunk.java | 0 .../util/hunk/storage/AtomicLongHunk.java | 0 .../iris/util/hunk/storage/MappedHunk.java | 0 .../util/hunk/storage/MappedSyncHunk.java | 0 .../iris/util/hunk/storage/PaletteHunk.java | 0 .../iris/util/hunk/storage/PaletteOrHunk.java | 0 .../iris/util/hunk/storage/StorageHunk.java | 0 .../hunk/storage/SynchronizedArrayHunk.java | 0 .../util/hunk/view/BiomeGridHunkHolder.java | 0 .../util/hunk/view/BiomeGridHunkView.java | 0 .../util/hunk/view/ChunkBiomeHunkView.java | 0 .../util/hunk/view/ChunkDataHunkHolder.java | 0 .../util/hunk/view/ChunkDataHunkView.java | 0 .../iris/util/hunk/view/ChunkHunkView.java | 0 .../iris/util/hunk/view/DriftHunkView.java | 0 .../iris/util/hunk/view/FringedHunkView.java | 0 .../util/hunk/view/FunctionalHunkView.java | 0 .../volmit/iris/util/hunk/view/HunkView.java | 0 .../iris/util/hunk/view/InvertedHunkView.java | 0 .../iris/util/hunk/view/ListeningHunk.java | 0 .../iris/util/hunk/view/ReadOnlyHunk.java | 0 .../iris/util/hunk/view/RotatedXHunkView.java | 0 .../iris/util/hunk/view/RotatedYHunkView.java | 0 .../iris/util/hunk/view/RotatedZHunkView.java | 0 .../util/hunk/view/SynchronizedHunkView.java | 0 .../iris/util/hunk/view/WriteTrackHunk.java | 0 .../util/interpolation/CompiledStarcast.java | 0 .../interpolation/InterpolationMethod.java | 0 .../interpolation/InterpolationMethod3D.java | 0 .../util/interpolation/InterpolationType.java | 0 .../util/interpolation/IrisInterpolation.java | 0 .../iris/util/interpolation/Starcast.java | 0 .../iris/util/inventorygui/Element.java | 0 .../iris/util/inventorygui/ElementEvent.java | 0 .../iris/util/inventorygui/RandomColor.java | 0 .../iris/util/inventorygui/UIElement.java | 0 .../util/inventorygui/UIStaticDecorator.java | 0 .../util/inventorygui/UIVoidDecorator.java | 0 .../iris/util/inventorygui/UIWindow.java | 0 .../volmit/iris/util/inventorygui/Window.java | 0 .../util/inventorygui/WindowDecorator.java | 0 .../util/inventorygui/WindowResolution.java | 0 .../com/volmit/iris/util/io/Converter.java | 0 .../iris/util/io/CustomOutputStream.java | 0 .../com/volmit/iris/util/io/FileWatcher.java | 0 .../volmit/iris/util/io/FolderWatcher.java | 0 .../main/java/com/volmit/iris/util/io/IO.java | 0 .../com/volmit/iris/util/io/IORunnable.java | 0 .../volmit/iris/util/io/InstanceState.java | 0 .../com/volmit/iris/util/io/JarScanner.java | 0 .../volmit/iris/util/io/ReactiveFolder.java | 0 .../volmit/iris/util/io/VoidOutputStream.java | 0 .../java/com/volmit/iris/util/json/HTTP.java | 0 .../volmit/iris/util/json/HTTPTokener.java | 0 .../com/volmit/iris/util/json/JSONArray.java | 0 .../volmit/iris/util/json/JSONException.java | 0 .../com/volmit/iris/util/json/JSONML.java | 0 .../com/volmit/iris/util/json/JSONObject.java | 0 .../com/volmit/iris/util/json/JSONString.java | 0 .../volmit/iris/util/json/JSONStringer.java | 0 .../volmit/iris/util/json/JSONTokener.java | 0 .../com/volmit/iris/util/json/JSONWriter.java | 0 .../java/com/volmit/iris/util/json/XML.java | 0 .../com/volmit/iris/util/json/XMLTokener.java | 0 .../com/volmit/iris/util/mantle/Mantle.java | 0 .../volmit/iris/util/mantle/MantleChunk.java | 0 .../volmit/iris/util/mantle/MantleFlag.java | 0 .../iris/util/mantle/TectonicPlate.java | 0 .../volmit/iris/util/math/AlignedPoint.java | 0 .../com/volmit/iris/util/math/Average.java | 0 .../volmit/iris/util/math/AxisAlignedBB.java | 0 .../volmit/iris/util/math/BlockPosition.java | 0 .../java/com/volmit/iris/util/math/CDou.java | 0 .../java/com/volmit/iris/util/math/DOP.java | 0 .../com/volmit/iris/util/math/Direction.java | 0 .../volmit/iris/util/math/FinalInteger.java | 0 .../java/com/volmit/iris/util/math/INode.java | 0 .../volmit/iris/util/math/IrisMathHelper.java | 0 .../math/KochanekBartelsInterpolation.java | 0 .../java/com/volmit/iris/util/math/M.java | 0 .../com/volmit/iris/util/math/MathHelper.java | 0 .../iris/util/math/PathInterpolation.java | 0 .../com/volmit/iris/util/math/Point3d.java | 0 .../com/volmit/iris/util/math/Point3f.java | 0 .../com/volmit/iris/util/math/Point4d.java | 0 .../com/volmit/iris/util/math/Point4f.java | 0 .../com/volmit/iris/util/math/Position2.java | 0 .../java/com/volmit/iris/util/math/RNG.java | 0 .../iris/util/math/RollingSequence.java | 0 .../com/volmit/iris/util/math/Spiral.java | 0 .../com/volmit/iris/util/math/Spiraled.java | 0 .../com/volmit/iris/util/math/Spiraler.java | 0 .../com/volmit/iris/util/math/Tuple2d.java | 0 .../com/volmit/iris/util/math/Tuple2f.java | 0 .../com/volmit/iris/util/math/Tuple3d.java | 0 .../com/volmit/iris/util/math/Tuple3f.java | 0 .../com/volmit/iris/util/math/Tuple4d.java | 0 .../com/volmit/iris/util/math/Tuple4f.java | 0 .../volmit/iris/util/math/VecMathUtil.java | 0 .../com/volmit/iris/util/math/Vector2d.java | 0 .../com/volmit/iris/util/math/Vector2f.java | 0 .../com/volmit/iris/util/math/Vector3d.java | 0 .../com/volmit/iris/util/math/Vector3f.java | 0 .../com/volmit/iris/util/math/VectorMath.java | 0 .../volmit/iris/util/matter/IrisMatter.java | 0 .../com/volmit/iris/util/matter/Matter.java | 0 .../iris/util/matter/MatterBiomeInject.java | 0 .../volmit/iris/util/matter/MatterCavern.java | 0 .../volmit/iris/util/matter/MatterEntity.java | 0 .../iris/util/matter/MatterEntityGroup.java | 0 .../volmit/iris/util/matter/MatterFilter.java | 0 .../iris/util/matter/MatterFluidBody.java | 0 .../volmit/iris/util/matter/MatterHeader.java | 0 .../volmit/iris/util/matter/MatterMarker.java | 0 .../iris/util/matter/MatterPalette.java | 0 .../volmit/iris/util/matter/MatterPlacer.java | 0 .../volmit/iris/util/matter/MatterReader.java | 0 .../volmit/iris/util/matter/MatterSlice.java | 0 .../iris/util/matter/MatterStructurePOI.java | 0 .../volmit/iris/util/matter/MatterUpdate.java | 0 .../volmit/iris/util/matter/MatterWriter.java | 0 .../com/volmit/iris/util/matter/Sliced.java | 0 .../volmit/iris/util/matter/TileWrapper.java | 0 .../volmit/iris/util/matter/WorldMatter.java | 0 .../util/matter/slices/BiomeInjectMatter.java | 0 .../iris/util/matter/slices/BlockMatter.java | 0 .../util/matter/slices/BooleanMatter.java | 0 .../iris/util/matter/slices/CavernMatter.java | 0 .../util/matter/slices/CompoundMatter.java | 0 .../iris/util/matter/slices/EntityMatter.java | 0 .../iris/util/matter/slices/IntMatter.java | 0 .../util/matter/slices/JigsawPieceMatter.java | 0 .../iris/util/matter/slices/LongMatter.java | 0 .../iris/util/matter/slices/MarkerMatter.java | 0 .../iris/util/matter/slices/NBTMatter.java | 0 .../iris/util/matter/slices/RawMatter.java | 0 .../util/matter/slices/RegistryMatter.java | 0 .../util/matter/slices/SpawnerMatter.java | 0 .../iris/util/matter/slices/StringMatter.java | 0 .../matter/slices/StructurePOIMatter.java | 0 .../iris/util/matter/slices/TileMatter.java | 0 .../iris/util/matter/slices/UpdateMatter.java | 0 .../container/JigsawPieceContainer.java | 0 .../slices/container/RegistrantContainer.java | 0 .../iris/util/nbt/io/NBTDeserializer.java | 0 .../iris/util/nbt/io/NBTInputStream.java | 0 .../iris/util/nbt/io/NBTOutputStream.java | 0 .../iris/util/nbt/io/NBTSerializer.java | 0 .../com/volmit/iris/util/nbt/io/NBTUtil.java | 0 .../com/volmit/iris/util/nbt/io/NamedTag.java | 0 .../iris/util/nbt/io/ParseException.java | 0 .../iris/util/nbt/io/SNBTDeserializer.java | 0 .../volmit/iris/util/nbt/io/SNBTParser.java | 0 .../iris/util/nbt/io/SNBTSerializer.java | 0 .../com/volmit/iris/util/nbt/io/SNBTUtil.java | 0 .../volmit/iris/util/nbt/io/SNBTWriter.java | 0 .../iris/util/nbt/io/StringPointer.java | 0 .../com/volmit/iris/util/nbt/mca/Chunk.java | 0 .../iris/util/nbt/mca/CompressionType.java | 0 .../iris/util/nbt/mca/ExceptionFunction.java | 0 .../volmit/iris/util/nbt/mca/LoadFlags.java | 0 .../com/volmit/iris/util/nbt/mca/MCAFile.java | 0 .../com/volmit/iris/util/nbt/mca/MCAUtil.java | 0 .../volmit/iris/util/nbt/mca/NBTWorld.java | 0 .../com/volmit/iris/util/nbt/mca/Section.java | 0 .../nbt/mca/palette/MCABiomeContainer.java | 0 .../util/nbt/mca/palette/MCABitStorage.java | 0 .../mca/palette/MCAChunkBiomeContainer.java | 0 .../nbt/mca/palette/MCACountConsumer.java | 0 ...ACrudeIncrementalIntIdentityHashBiMap.java | 0 .../nbt/mca/palette/MCAGlobalPalette.java | 0 .../nbt/mca/palette/MCAHashMapPalette.java | 0 .../iris/util/nbt/mca/palette/MCAIdMap.java | 0 .../util/nbt/mca/palette/MCAIdMapper.java | 0 .../nbt/mca/palette/MCALinearPalette.java | 0 .../iris/util/nbt/mca/palette/MCAMth.java | 0 .../iris/util/nbt/mca/palette/MCAPalette.java | 0 .../nbt/mca/palette/MCAPaletteAccess.java | 0 .../nbt/mca/palette/MCAPaletteResize.java | 0 .../nbt/mca/palette/MCAPalettedContainer.java | 0 .../util/nbt/mca/palette/MCAQuartPos.java | 0 .../palette/MCAWrappedPalettedContainer.java | 0 .../volmit/iris/util/nbt/tag/ArrayTag.java | 0 .../iris/util/nbt/tag/ByteArrayTag.java | 0 .../com/volmit/iris/util/nbt/tag/ByteTag.java | 0 .../volmit/iris/util/nbt/tag/CompoundTag.java | 0 .../volmit/iris/util/nbt/tag/DoubleTag.java | 0 .../com/volmit/iris/util/nbt/tag/EndTag.java | 0 .../volmit/iris/util/nbt/tag/FloatTag.java | 0 .../volmit/iris/util/nbt/tag/IntArrayTag.java | 0 .../com/volmit/iris/util/nbt/tag/IntTag.java | 0 .../com/volmit/iris/util/nbt/tag/ListTag.java | 0 .../iris/util/nbt/tag/LongArrayTag.java | 0 .../com/volmit/iris/util/nbt/tag/LongTag.java | 0 .../iris/util/nbt/tag/NonNullEntrySet.java | 0 .../volmit/iris/util/nbt/tag/NumberTag.java | 0 .../volmit/iris/util/nbt/tag/ShortTag.java | 0 .../volmit/iris/util/nbt/tag/StringTag.java | 0 .../com/volmit/iris/util/nbt/tag/Tag.java | 0 .../java/com/volmit/iris/util/network/DL.java | 0 .../iris/util/network/DownloadException.java | 0 .../iris/util/network/DownloadMonitor.java | 0 .../iris/util/network/MeteredInputStream.java | 0 .../util/network/MeteredOutputStream.java | 0 .../java/com/volmit/iris/util/noise/CNG.java | 0 .../volmit/iris/util/noise/CNGFactory.java | 0 .../volmit/iris/util/noise/CachedNoise.java | 0 .../iris/util/noise/CachedNoiseMap.java | 0 .../volmit/iris/util/noise/CellGenerator.java | 0 .../iris/util/noise/CellHeightNoise.java | 0 .../volmit/iris/util/noise/CellularNoise.java | 0 .../volmit/iris/util/noise/CloverNoise.java | 0 .../volmit/iris/util/noise/CubicNoise.java | 0 .../iris/util/noise/ExpressionNoise.java | 0 .../com/volmit/iris/util/noise/FastNoise.java | 0 .../iris/util/noise/FastNoiseDouble.java | 0 .../com/volmit/iris/util/noise/FlatNoise.java | 0 .../util/noise/FractalBillowPerlinNoise.java | 0 .../util/noise/FractalBillowSimplexNoise.java | 0 .../iris/util/noise/FractalCubicNoise.java | 0 .../util/noise/FractalFBMSimplexNoise.java | 0 .../noise/FractalRigidMultiSimplexNoise.java | 0 .../com/volmit/iris/util/noise/GlobNoise.java | 0 .../volmit/iris/util/noise/ImageNoise.java | 0 .../iris/util/noise/InterpolatedNoise.java | 0 .../volmit/iris/util/noise/NoiseFactory.java | 0 .../iris/util/noise/NoiseGenerator.java | 0 .../com/volmit/iris/util/noise/NoiseType.java | 0 .../volmit/iris/util/noise/OctaveNoise.java | 0 .../volmit/iris/util/noise/PerlinNoise.java | 0 .../iris/util/noise/RarityCellGenerator.java | 0 .../volmit/iris/util/noise/SimplexNoise.java | 0 .../volmit/iris/util/noise/VascularNoise.java | 0 .../volmit/iris/util/noise/WhiteNoise.java | 0 .../iris/util/parallel/BurstExecutor.java | 0 .../iris/util/parallel/BurstedHunk.java | 0 .../volmit/iris/util/parallel/GridLock.java | 0 .../volmit/iris/util/parallel/HyperLock.java | 0 .../volmit/iris/util/parallel/MultiBurst.java | 0 .../iris/util/parallel/NOOPGridLock.java | 0 .../iris/util/particle/FastParticle.java | 0 .../iris/util/particle/FastReflection.java | 0 .../iris/util/particle/ParticleSender.java | 0 .../util/particle/ParticleSenderLegacy.java | 0 .../iris/util/particle/ParticleType.java | 0 .../iris/util/plugin/CancellableTask.java | 0 .../com/volmit/iris/util/plugin/Chunks.java | 0 .../com/volmit/iris/util/plugin/Command.java | 0 .../volmit/iris/util/plugin/CommandDummy.java | 0 .../com/volmit/iris/util/plugin/Control.java | 0 .../volmit/iris/util/plugin/Controller.java | 0 .../com/volmit/iris/util/plugin/ICommand.java | 0 .../volmit/iris/util/plugin/IController.java | 0 .../com/volmit/iris/util/plugin/Instance.java | 0 .../volmit/iris/util/plugin/IrisService.java | 0 .../com/volmit/iris/util/plugin/Metrics.java | 0 .../volmit/iris/util/plugin/MetricsLite.java | 0 .../iris/util/plugin/MortarCommand.java | 0 .../iris/util/plugin/MortarPermission.java | 0 .../volmit/iris/util/plugin/Permission.java | 0 .../iris/util/plugin/PluginRegistry.java | 0 .../iris/util/plugin/PluginRegistryGroup.java | 0 .../iris/util/plugin/RouterCommand.java | 0 .../iris/util/plugin/VirtualCommand.java | 0 .../volmit/iris/util/plugin/VolmitPlugin.java | 0 .../volmit/iris/util/plugin/VolmitSender.java | 0 .../volmit/iris/util/reflect/ShadeFix.java | 0 .../java/com/volmit/iris/util/reflect/V.java | 0 .../volmit/iris/util/reflect/Violator.java | 0 .../iris/util/reflect/WrappedField.java | 0 .../util/reflect/WrappedReturningMethod.java | 0 .../com/volmit/iris/util/scheduling/AR.java | 0 .../volmit/iris/util/scheduling/Callback.java | 0 .../iris/util/scheduling/ChronoLatch.java | 0 .../iris/util/scheduling/Contained.java | 0 .../iris/util/scheduling/GroupedExecutor.java | 0 .../volmit/iris/util/scheduling/IrisLock.java | 0 .../com/volmit/iris/util/scheduling/J.java | 0 .../volmit/iris/util/scheduling/Looper.java | 0 .../com/volmit/iris/util/scheduling/O.java | 0 .../iris/util/scheduling/Observable.java | 0 .../volmit/iris/util/scheduling/Observer.java | 0 .../util/scheduling/PrecisionStopwatch.java | 0 .../volmit/iris/util/scheduling/Queue.java | 0 .../iris/util/scheduling/QueueExecutor.java | 0 .../com/volmit/iris/util/scheduling/S.java | 0 .../com/volmit/iris/util/scheduling/SR.java | 0 .../iris/util/scheduling/ShurikenQueue.java | 0 .../volmit/iris/util/scheduling/Switch.java | 0 .../iris/util/scheduling/TaskExecutor.java | 0 .../iris/util/scheduling/ThreadMonitor.java | 0 .../volmit/iris/util/scheduling/Wrapper.java | 0 .../util/scheduling/jobs/DownloadJob.java | 0 .../volmit/iris/util/scheduling/jobs/Job.java | 0 .../util/scheduling/jobs/JobCollection.java | 0 .../scheduling/jobs/ParallelQueueJob.java | 0 .../iris/util/scheduling/jobs/QueueJob.java | 0 .../iris/util/scheduling/jobs/SingleJob.java | 0 .../iris/util/stream/ArraySignificance.java | 0 .../volmit/iris/util/stream/BasicLayer.java | 0 .../volmit/iris/util/stream/BasicStream.java | 0 .../iris/util/stream/ProceduralLayer.java | 0 .../iris/util/stream/ProceduralStream.java | 0 .../volmit/iris/util/stream/Significance.java | 0 .../util/stream/arithmetic/AddingStream.java | 0 .../util/stream/arithmetic/ClampedStream.java | 0 .../CoordinateBitShiftLeftStream.java | 0 .../CoordinateBitShiftRightStream.java | 0 .../stream/arithmetic/DividingStream.java | 0 .../util/stream/arithmetic/FittedStream.java | 0 .../util/stream/arithmetic/MaxingStream.java | 0 .../util/stream/arithmetic/MinningStream.java | 0 .../util/stream/arithmetic/ModuloStream.java | 0 .../stream/arithmetic/MultiplyingStream.java | 0 .../util/stream/arithmetic/OffsetStream.java | 0 .../util/stream/arithmetic/RadialStream.java | 0 .../arithmetic/RoundingDoubleStream.java | 0 .../util/stream/arithmetic/SlopeStream.java | 0 .../stream/arithmetic/SubtractingStream.java | 0 .../util/stream/arithmetic/ZoomStream.java | 0 .../convert/AwareConversionStream2D.java | 0 .../convert/AwareConversionStream3D.java | 0 .../convert/CachedConversionStream.java | 0 .../util/stream/convert/ConversionStream.java | 0 .../stream/convert/ForceDoubleStream.java | 0 .../util/stream/convert/RoundingStream.java | 0 .../util/stream/convert/SelectionStream.java | 0 .../stream/convert/SignificanceStream.java | 0 .../iris/util/stream/convert/To3DStream.java | 0 .../stream/interpolation/BiHermiteStream.java | 0 .../interpolation/BiStarcastStream.java | 0 .../stream/interpolation/BicubicStream.java | 0 .../stream/interpolation/BilinearStream.java | 0 .../stream/interpolation/Interpolated.java | 0 .../interpolation/InterpolatingStream.java | 0 .../stream/interpolation/Interpolator.java | 0 .../interpolation/InterpolatorFactory.java | 0 .../interpolation/TriHermiteStream.java | 0 .../interpolation/TriStarcastStream.java | 0 .../stream/interpolation/TricubicStream.java | 0 .../stream/interpolation/TrilinearStream.java | 0 .../iris/util/stream/sources/CNGStream.java | 0 .../util/stream/sources/FunctionStream.java | 0 .../util/stream/utility/CachedStream2D.java | 0 .../util/stream/utility/CachedStream3D.java | 0 .../utility/ContextInjectingStream.java | 0 .../util/stream/utility/NullSafeStream.java | 0 .../util/stream/utility/ProfiledStream.java | 0 .../util/stream/utility/SemaphoreStream.java | 0 .../stream/utility/SynchronizedStream.java | 0 .../util/stream/utility/WasteDetector.java | 0 .../java/com/volmit/iris/util/uniques/U.java | 0 .../iris/util/uniques/UBufferedImage.java | 0 .../volmit/iris/util/uniques/UFeature.java | 0 .../iris/util/uniques/UFeatureMeta.java | 0 .../com/volmit/iris/util/uniques/UImage.java | 0 .../com/volmit/iris/util/uniques/UMeta.java | 0 .../iris/util/uniques/UniqueRenderer.java | 0 .../util/uniques/features/UFInterpolator.java | 0 .../iris/util/uniques/features/UFNOOP.java | 0 .../uniques/features/UFWarpedBackground.java | 0 .../util/uniques/features/UFWarpedCircle.java | 0 .../util/uniques/features/UFWarpedDisc.java | 0 .../util/uniques/features/UFWarpedDots.java | 0 .../util/uniques/features/UFWarpedLines.java | 0 {src => core/src}/main/resources/plugin.yml | 0 .../core/nms/v1_19_R1/CustomBiomeSource.java | 150 +++ .../iris/core/nms/v1_19_R1/NMSBinding.java | 496 +++++++++ .../core/nms/v1_19_R2/CustomBiomeSource.java | 152 +++ .../iris/core/nms/v1_19_R2/NMSBinding.java | 496 +++++++++ .../core/nms/v1_19_R3/CustomBiomeSource.java | 169 ++++ .../iris/core/nms/v1_19_R3/NMSBinding.java | 498 +++++++++ .../core/nms/v1_20_R1}/CustomBiomeSource.java | 336 +++--- .../iris/core/nms/v1_20_R1/NMSBinding.java | 954 +++++++++--------- .../core/nms/v1_20_R2/CustomBiomeSource.java | 168 +++ .../iris/core/nms/v1_20_R2/NMSBinding.java | 503 +++++++++ settings.gradle | 11 +- 872 files changed, 3773 insertions(+), 958 deletions(-) create mode 100644 core/build.gradle rename {src => core/src}/main/java/com/volmit/iris/Iris.java (96%) rename {src => core/src}/main/java/com/volmit/iris/core/IrisSettings.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/ServerConfigurator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandEdit.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandFind.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandIris.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandJigsaw.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandObject.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandPregen.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandSettings.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandStudio.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandWhat.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/commands/CommandWorldManager.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/edit/BlockEditor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/edit/BlockSignal.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/edit/BukkitBlockEditor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/edit/DustRevealer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/edit/JigsawEditor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/events/IrisEngineEvent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/events/IrisEngineHotloadEvent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/gui/NoiseExplorerGUI.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/gui/PregeneratorJob.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/gui/VisionGUI.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/gui/components/IrisRenderer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/gui/components/RenderType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/gui/components/Renderer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/gui/components/TileRender.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/link/CustomItemsDataProvider.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/link/ExternalDataProvider.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/link/Identifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/link/IrisPapiExpansion.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/link/ItemAdderDataProvider.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/link/MythicMobsLink.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/link/OraxenDataProvider.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/link/WorldEditLink.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/loader/ImageResourceLoader.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/loader/IrisData.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/loader/IrisRegistrant.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/loader/MatterObjectResourceLoader.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/loader/ObjectResourceLoader.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/loader/ResourceLoader.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/loader/ScriptResourceLoader.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/nms/BiomeBaseInjector.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/nms/INMS.java (77%) rename {src => core/src}/main/java/com/volmit/iris/core/nms/INMSBinding.java (84%) create mode 100644 core/src/main/java/com/volmit/iris/core/nms/container/BlockPos.java create mode 100644 core/src/main/java/com/volmit/iris/core/nms/container/Pair.java rename {src => core/src}/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java (88%) rename {src => core/src}/main/java/com/volmit/iris/core/pack/IrisPack.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pack/IrisPackRepository.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/IrisPregenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/LazyPregenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/PregenListener.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/PregenTask.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/PregeneratorMethod.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/methods/AsyncOrMedievalPregenMethod.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/methods/AsyncPregenMethod.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/methods/DummyPregenMethod.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/methods/HybridPregenMethod.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/pregenerator/methods/MedievalPregenMethod.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/project/IrisProject.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/project/SchemaBuilder.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/report/Report.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/report/ReportType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/BoardSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/CommandSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/ConversionSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/DolphinSVC.java (91%) rename {src => core/src}/main/java/com/volmit/iris/core/service/EditSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/ExternalDataSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/LogFilterSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/ObjectSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/PreservationSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/StudioSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/TreeSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/VillageSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/service/WandSVC.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/tools/IrisBenchmarking.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/tools/IrisCreator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/tools/IrisReflectiveAPI.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/tools/IrisToolbelt.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/tools/IrisWorldCreator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/core/wand/WandSelection.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/EnginePanic.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/IrisComplex.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/IrisEngine.java (96%) rename {src => core/src}/main/java/com/volmit/iris/engine/IrisEngineEffects.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/IrisEngineMantle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/IrisExecutionEnvironment.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/IrisWorldManager.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/actuator/IrisBiomeActuator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/actuator/IrisTerrainNormalActuator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/cache/AtomicCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/cache/Cache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/cache/Multicache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/chunk/LinkedTerrainChunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/chunk/MCATerrainChunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/chunk/TerrainChunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/io/Deserializer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/io/ExceptionBiFunction.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/io/ExceptionTriConsumer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/io/MaxDepthIO.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/io/MaxDepthReachedException.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/io/Serializer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/io/StringDeserializer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/data/io/StringSerializer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/decorator/IrisCeilingDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/decorator/IrisEngineDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/decorator/IrisSeaFloorDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/decorator/IrisSeaSurfaceDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/decorator/IrisShoreLineDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/decorator/IrisSurfaceDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/BlockUpdater.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/Engine.java (99%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineActuator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineAssignedActuator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineAssignedBiModifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineAssignedComponent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineAssignedModifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineAssignedWorldManager.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineBiModifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineComponent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineData.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineEffects.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineMetrics.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineMode.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineModifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EnginePlayer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineStage.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineTarget.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/EngineWorldManager.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/Fallible.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/Hotloadable.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/IrisEngineMode.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/IrisLootEvent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/Locator.java (98%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/LocatorCanceller.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/LootProvider.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/MeteredCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/PlacedObject.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/PregeneratedData.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/SeedManager.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/Staged.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/WrongEngineBroException.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/framework/placer/HeightmapObjectPlacer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mantle/EngineMantle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mantle/IrisMantleComponent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mantle/MantleComponent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mantle/MantleSized.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mantle/MantleWriter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mantle/components/MantleCarvingComponent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mantle/components/MantleFluidBodyComponent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mantle/components/MantleJigsawComponent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mantle/components/MantleObjectComponent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mode/ModeEnclosure.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mode/ModeIslands.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mode/ModeOverworld.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/mode/ModeSuperFlat.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/modifier/IrisDepositModifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/modifier/IrisPerfectionModifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/CarveResult.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/CarvingMode.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/CaveResult.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IObjectPlacer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IPostBlockAccess.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IRare.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/InferredType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/InventorySlotType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisAttributeModifier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisAxisRotationClamp.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBiome.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBiomeCustom.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBiomeCustomCategory.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBiomeCustomParticle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawn.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawnType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBiomeGeneratorLink.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBiomePaletteLayer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBlockData.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisCarving.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisCave.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisCavePlacer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisColor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisCommand.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisCommandRegistry.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisCompat.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisCompatabilityItemFilter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisDecorationPart.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisDepositGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisDimension.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisDimensionMode.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisDimensionModeType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisDirection.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisDuration.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEffect.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisElipsoid.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEnchantment.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEngineChunkData.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEngineData.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEngineSpawnerCooldown.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEngineStatistics.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEngineStreamType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEngineValueType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEntity.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisEntitySpawn.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisExpression.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisExpressionLoad.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisFluidBodies.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisFontStyle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisGeneratorStyle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisImage.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisImageChannel.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisImageMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisInterpolator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisInterpolator3D.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisJigsawPiece.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisJigsawPieceConnector.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisJigsawPlacement.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisJigsawPool.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisLake.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisLoot.java (89%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisLootMode.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisLootReference.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisLootTable.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisMarker.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisMaterialPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisMod.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisModBiomeInjector.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisModBiomeReplacer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisModNoiseStyleReplacer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementBiomeInjector.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementRegionInjector.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisModObjectReplacer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisModRegionReplacer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisNoiseGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObject.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObjectLimit.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObjectLoot.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObjectMarker.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObjectPlacementScaleInterpolator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObjectReplace.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObjectRotation.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObjectScale.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisObjectTranslate.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisOreGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisPosition.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisPosition2D.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisPotionEffect.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisPyramid.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisRange.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisRareObject.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisRate.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisRavine.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisRavinePlacer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisRegion.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisRiver.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisScript.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisSeed.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisSlopeClip.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisSpawnGroup.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisSpawner.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisSphere.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisStiltSettings.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisStyledRange.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisSurface.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisTimeBlock.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisTree.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisTreeModes.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisTreeSettings.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisTreeSize.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisVillagerOverride.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisVillagerTrade.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisWeather.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisWorld.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/IrisWorm.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/NoiseStyle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/StudioMode.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/TileBanner.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/TileData.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/TileSign.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/TileSpawner.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/ArrayType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/DependsOn.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/Desc.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/MaxNumber.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/MinNumber.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiomeDownfallType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/RegistryListBlockType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/RegistryListEnchantment.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/RegistryListFont.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/RegistryListItemType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/RegistryListResource.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/RegistryListSpecialEntity.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/Required.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/annotations/Snippet.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/matter/IrisMatterObject.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacement.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacementLocation.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/object/matter/IrisMatterTranslate.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java (89%) rename {src => core/src}/main/java/com/volmit/iris/engine/platform/DummyBiomeGrid.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/platform/DummyChunkGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/platform/PlatformChunkGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/platform/studio/EnginedStudioGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/platform/studio/StudioGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/safeguard/IrisSafeguard.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/safeguard/SafeguardUtils.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/safeguard/ServerBoot.java (96%) rename {src => core/src}/main/java/com/volmit/iris/engine/scripting/EngineExecutionEnvironment.java (100%) rename {src => core/src}/main/java/com/volmit/iris/engine/scripting/IrisScriptingAPI.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/api/APIAwareBlock.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/api/APIWorldBlock.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/atomics/AtomicAverage.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/atomics/AtomicRollingSequence.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/board/Board.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/board/BoardEntry.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/board/BoardManager.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/board/BoardProvider.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/board/BoardSettings.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/board/BoardUpdateTask.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/board/ScoreDirection.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/ArrayCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/ByteBitCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/ByteCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/ChunkCache2D.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/DataBitCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/FloatBitCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/FloatCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/IntBitCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/IntCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/ShortBitCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/ShortCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/UByteBitCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/UByteCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/cache/WorldCache2D.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/collection/GBiset.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/collection/GListAdapter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/collection/KList.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/collection/KMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/collection/KSet.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/collection/KeyPair.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/collection/StateList.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/context/ChunkContext.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/context/ChunkedDataCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/context/IrisContext.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/B.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/BiomeMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/ChunkCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/ComplexCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/Cuboid.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/CuboidException.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/DUTF.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/DataPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/DataProvider.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/Dimension.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/DimensionFace.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/DoubleArrayUtils.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/Heafty.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/HeightMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/IOAdapter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/InvertedBiomeGrid.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/IrisBiomeStorage.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/KCache.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/MaterialBlock.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/NibbleArray.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/NibbleDataPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/Recycler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/Shrinkwrap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/VanillaBiomeMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/Varint.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/WeightMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/WeightedRandom.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/Writable.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/BitStorage.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/CountConsumer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/CrudeIncrementalIntIdentityHashBiMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/GlobalPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/HashMapPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/IdMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/IdMapper.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/LinearPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/Mth.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/Palette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/PaletteAccess.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/PaletteResize.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/PaletteType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/PalettedContainer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/data/palette/QuartPos.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/DecreeContext.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/DecreeContextHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/DecreeExecutor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/DecreeNode.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/DecreeOrigin.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/DecreeParameter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/DecreeParameterHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/DecreeSystem.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/annotations/Decree.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/annotations/Param.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/context/BiomeContextHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/context/DimensionContextHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/context/GeneratorContextHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/context/RegionContextHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/context/VectorContextHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/context/WorldContextHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/exceptions/DecreeParsingException.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/BiomeHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/BlockVectorHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/BooleanHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/ByteHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/CaveHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/DimensionHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/DoubleHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/EntityHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/FloatHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/GeneratorHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/IntegerHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/JigsawPieceHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/JigsawPoolHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/JigsawStructureHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/LongHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/PlayerHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/RegionHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/ScriptHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/ShortHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/StringHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/VectorHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/handlers/WorldHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/specialhandlers/DummyHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/specialhandlers/NullablePlayerHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/specialhandlers/ObjectHandler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/decree/virtual/VirtualDecreeCommand.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/documentation/BlockCoordinates.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/documentation/ChunkCoordinates.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/documentation/ChunkRelativeBlockCoordinates.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/documentation/RegionCoordinates.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/exceptions/IrisException.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/exceptions/MissingDimensionException.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/format/C.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/format/Form.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/format/MemoryMonitor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Consumer2.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Consumer2IO.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Consumer3.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Consumer4.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Consumer4IO.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Consumer5.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Consumer6.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Consumer8.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Function2.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Function3.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Function4.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/NastyFunction.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/NastyFuture.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/NastyRunnable.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/NastySupplier.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/NoiseInjector.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/NoiseProvider.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/NoiseProvider3.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Supplier2.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Supplier3.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/function/Supplier3R.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/Hunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/HunkFace.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/HunkFactory.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/bits/DataBits.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/bits/DataContainer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/bits/HashPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/bits/LinearPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/bits/Palette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/bits/Writable.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/ArrayHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/AtomicDoubleHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/AtomicHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/AtomicIntegerHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/AtomicLongHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/MappedSyncHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/PaletteHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/StorageHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/storage/SynchronizedArrayHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkHolder.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/ChunkBiomeHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkHolder.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/ChunkHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/DriftHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/FringedHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/FunctionalHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/HunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/InvertedHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/ListeningHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/ReadOnlyHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/RotatedXHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/RotatedYHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/RotatedZHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/SynchronizedHunkView.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/hunk/view/WriteTrackHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/interpolation/CompiledStarcast.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/interpolation/InterpolationMethod.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/interpolation/InterpolationMethod3D.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/interpolation/InterpolationType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/interpolation/IrisInterpolation.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/interpolation/Starcast.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/Element.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/ElementEvent.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/RandomColor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/UIElement.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/UIStaticDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/UIVoidDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/UIWindow.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/Window.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/WindowDecorator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/inventorygui/WindowResolution.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/Converter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/CustomOutputStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/FileWatcher.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/FolderWatcher.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/IO.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/IORunnable.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/InstanceState.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/JarScanner.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/ReactiveFolder.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/io/VoidOutputStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/HTTP.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/HTTPTokener.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/JSONArray.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/JSONException.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/JSONML.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/JSONObject.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/JSONString.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/JSONStringer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/JSONTokener.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/JSONWriter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/XML.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/json/XMLTokener.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/mantle/Mantle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/mantle/MantleChunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/mantle/MantleFlag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/mantle/TectonicPlate.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/AlignedPoint.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Average.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/AxisAlignedBB.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/BlockPosition.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/CDou.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/DOP.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Direction.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/FinalInteger.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/INode.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/IrisMathHelper.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/KochanekBartelsInterpolation.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/M.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/MathHelper.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/PathInterpolation.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Point3d.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Point3f.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Point4d.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Point4f.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Position2.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/RNG.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/RollingSequence.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Spiral.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Spiraled.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Spiraler.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Tuple2d.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Tuple2f.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Tuple3d.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Tuple3f.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Tuple4d.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Tuple4f.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/VecMathUtil.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Vector2d.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Vector2f.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Vector3d.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/Vector3f.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/math/VectorMath.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/IrisMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/Matter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterBiomeInject.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterCavern.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterEntity.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterEntityGroup.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterFilter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterFluidBody.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterHeader.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterMarker.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterPlacer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterReader.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterSlice.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterStructurePOI.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterUpdate.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/MatterWriter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/Sliced.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/TileWrapper.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/WorldMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/BiomeInjectMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/CompoundMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/IntMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/JigsawPieceMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/LongMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/RawMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/RegistryMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/SpawnerMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/StringMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/StructurePOIMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/TileMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/UpdateMatter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/container/JigsawPieceContainer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/matter/slices/container/RegistrantContainer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/NBTDeserializer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/NBTInputStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/NBTOutputStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/NBTSerializer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/NBTUtil.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/NamedTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/ParseException.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/SNBTDeserializer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/SNBTParser.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/SNBTSerializer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/SNBTUtil.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/SNBTWriter.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/io/StringPointer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/Chunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/CompressionType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/ExceptionFunction.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/LoadFlags.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/MCAFile.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/MCAUtil.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/NBTWorld.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/Section.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCABiomeContainer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCABitStorage.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAChunkBiomeContainer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCACountConsumer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCACrudeIncrementalIntIdentityHashBiMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAGlobalPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAHashMapPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMapper.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCALinearPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAMth.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalette.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteAccess.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteResize.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalettedContainer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAQuartPos.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/mca/palette/MCAWrappedPalettedContainer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/ArrayTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/ByteArrayTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/ByteTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/CompoundTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/DoubleTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/EndTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/FloatTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/IntArrayTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/IntTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/ListTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/LongArrayTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/LongTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/NonNullEntrySet.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/NumberTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/ShortTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/StringTag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/nbt/tag/Tag.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/network/DL.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/network/DownloadException.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/network/DownloadMonitor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/network/MeteredInputStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/network/MeteredOutputStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/CNG.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/CNGFactory.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/CachedNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/CachedNoiseMap.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/CellGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/CellHeightNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/CellularNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/CloverNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/CubicNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/ExpressionNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/FastNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/FastNoiseDouble.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/FlatNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/FractalBillowPerlinNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/FractalBillowSimplexNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/FractalCubicNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/FractalFBMSimplexNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/FractalRigidMultiSimplexNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/GlobNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/ImageNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/InterpolatedNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/NoiseFactory.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/NoiseGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/NoiseType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/OctaveNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/PerlinNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/RarityCellGenerator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/SimplexNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/VascularNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/noise/WhiteNoise.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/parallel/BurstExecutor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/parallel/BurstedHunk.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/parallel/GridLock.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/parallel/HyperLock.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/parallel/MultiBurst.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/parallel/NOOPGridLock.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/particle/FastParticle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/particle/FastReflection.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/particle/ParticleSender.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/particle/ParticleSenderLegacy.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/particle/ParticleType.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/CancellableTask.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/Chunks.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/Command.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/CommandDummy.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/Control.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/Controller.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/ICommand.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/IController.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/Instance.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/IrisService.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/Metrics.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/MetricsLite.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/MortarCommand.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/MortarPermission.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/Permission.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/PluginRegistry.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/PluginRegistryGroup.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/RouterCommand.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/VirtualCommand.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/VolmitPlugin.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/plugin/VolmitSender.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/reflect/ShadeFix.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/reflect/V.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/reflect/Violator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/reflect/WrappedField.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/reflect/WrappedReturningMethod.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/AR.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/Callback.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/ChronoLatch.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/Contained.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/GroupedExecutor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/IrisLock.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/J.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/Looper.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/O.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/Observable.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/Observer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/PrecisionStopwatch.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/Queue.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/QueueExecutor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/S.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/SR.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/ShurikenQueue.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/Switch.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/TaskExecutor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/ThreadMonitor.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/Wrapper.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/jobs/DownloadJob.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/jobs/Job.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/jobs/JobCollection.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/jobs/ParallelQueueJob.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/jobs/QueueJob.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/scheduling/jobs/SingleJob.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/ArraySignificance.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/BasicLayer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/BasicStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/ProceduralLayer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/ProceduralStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/Significance.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/AddingStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/ClampedStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftLeftStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftRightStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/DividingStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/FittedStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/MaxingStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/MinningStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/ModuloStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/MultiplyingStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/OffsetStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/RadialStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/RoundingDoubleStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/SlopeStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/SubtractingStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/arithmetic/ZoomStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream2D.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream3D.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/convert/CachedConversionStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/convert/ConversionStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/convert/ForceDoubleStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/convert/RoundingStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/convert/SelectionStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/convert/SignificanceStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/convert/To3DStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/BiHermiteStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/BiStarcastStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/BicubicStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/BilinearStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/Interpolated.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/InterpolatingStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/Interpolator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/InterpolatorFactory.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/TriHermiteStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/TriStarcastStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/TricubicStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/interpolation/TrilinearStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/sources/CNGStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/sources/FunctionStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/utility/CachedStream2D.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/utility/CachedStream3D.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/utility/ContextInjectingStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/utility/NullSafeStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/utility/ProfiledStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/utility/SemaphoreStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/utility/SynchronizedStream.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/stream/utility/WasteDetector.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/U.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/UBufferedImage.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/UFeature.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/UFeatureMeta.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/UImage.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/UMeta.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/UniqueRenderer.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/features/UFInterpolator.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/features/UFNOOP.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/features/UFWarpedBackground.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/features/UFWarpedCircle.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/features/UFWarpedDisc.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/features/UFWarpedDots.java (100%) rename {src => core/src}/main/java/com/volmit/iris/util/uniques/features/UFWarpedLines.java (100%) rename {src => core/src}/main/resources/plugin.yml (100%) create mode 100644 nms/v1_19_R1/src/main/java/com/volmit/iris/core/nms/v1_19_R1/CustomBiomeSource.java create mode 100644 nms/v1_19_R1/src/main/java/com/volmit/iris/core/nms/v1_19_R1/NMSBinding.java create mode 100644 nms/v1_19_R2/src/main/java/com/volmit/iris/core/nms/v1_19_R2/CustomBiomeSource.java create mode 100644 nms/v1_19_R2/src/main/java/com/volmit/iris/core/nms/v1_19_R2/NMSBinding.java create mode 100644 nms/v1_19_R3/src/main/java/com/volmit/iris/core/nms/v1_19_R3/CustomBiomeSource.java create mode 100644 nms/v1_19_R3/src/main/java/com/volmit/iris/core/nms/v1_19_R3/NMSBinding.java rename {src/main/java/com/volmit/iris/core/nms/v20 => nms/v1_20_R1/src/main/java/com/volmit/iris/core/nms/v1_20_R1}/CustomBiomeSource.java (97%) rename src/main/java/com/volmit/iris/core/nms/v20/NMSBinding1_20_1.java => nms/v1_20_R1/src/main/java/com/volmit/iris/core/nms/v1_20_R1/NMSBinding.java (84%) create mode 100644 nms/v1_20_R2/src/main/java/com/volmit/iris/core/nms/v1_20_R2/CustomBiomeSource.java create mode 100644 nms/v1_20_R2/src/main/java/com/volmit/iris/core/nms/v1_20_R2/NMSBinding.java diff --git a/.gitignore b/.gitignore index eaf77ed40..203047ef2 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,4 @@ libs/ collection/ -src/main/java/com/volmit/iris/util/uniques/ +/core/src/main/java/com/volmit/iris/util/uniques/ diff --git a/build.gradle b/build.gradle index 00b587866..117164f98 100644 --- a/build.gradle +++ b/build.gradle @@ -19,18 +19,12 @@ plugins { id 'java' id 'java-library' - id "io.freefair.lombok" version "6.3.0" id "com.github.johnrengelman.shadow" version "7.1.2" id "de.undercouch.download" version "5.0.1" } -version '2.8.1-1.20.1' -def nmsVersion = '1.20.1' //[NMS] -def apiVersion = '1.20' +version '2.8.0' def specialSourceVersion = '1.11.0' //[NMS] -def spigotJarVersion = '1.20.1-R0.1-SNAPSHOT' //[NMS] -def name = getRootProject().getName() // Defined in settings.gradle -def main = 'com.volmit.iris.Iris' // ADD YOURSELF AS A NEW LINE IF YOU WANT YOUR OWN BUILD TASK GENERATED // ======================== WINDOWS ============================= @@ -47,59 +41,157 @@ registerCustomOutputTaskUnix('CyberpwnLT', '/Users/danielmills/development/serve registerCustomOutputTaskUnix('PsychoLT', '/Users/brianfopiano/Desktop/REMOTES/RemoteMinecraft/plugins') // ============================================================== -/** - * Gradle is weird sometimes, we need to delete the plugin yml from the build folder to actually filter properly. - */ -file(jar.archiveFile.get().getAsFile().getParentFile().getParentFile().getParentFile().getAbsolutePath() + '/build/resources/main/plugin.yml').delete() +def NMS_BINDINGS = Map.of( + "v1_20_R2", "1.20.2-R0.1-SNAPSHOT", + "v1_20_R1", "1.20.1-R0.1-SNAPSHOT", + "v1_19_R3", "1.19.4-R0.1-SNAPSHOT", + "v1_19_R2", "1.19.3-R0.1-SNAPSHOT", + "v1_19_R1", "1.19.2-R0.1-SNAPSHOT" +) +NMS_BINDINGS.each { + def key = it.key + def value = it.value + def nms = value.split("-")[0]; + project(":nms:${key}") { + apply plugin: 'java' + apply plugin: 'java-library' + apply plugin: 'de.undercouch.download' -/** - * Expand properties into plugin yml - */ -processResources { - filesMatching('**/plugin.yml') { - expand( - 'name': name.toString(), - 'version': version.toString(), - 'main': main.toString(), - 'apiversion': apiVersion.toString() - ) - } -} - -/** - * Unified repo - */ -repositories { - mavenLocal { - content { - includeGroup("org.bukkit") - includeGroup("org.spigotmc") + dependencies { + implementation project(":core") + implementation "org.spigotmc:spigot-api:${value}" + implementation "org.bukkit:craftbukkit:${value}:remapped-mojang" //[NMS] } + + def buildToolsJar = new File(rootProject.buildDir, "tools/BuildTools.jar") + def specialSourceJar = new File(rootProject.buildDir, "tools/SpecialSource.jar") + + def buildToolsFolder = new File(buildDir, "buildtools") + def specialSourceFolder = new File(buildDir, "specialsource") + def buildToolsHint = new File(buildDir, "buildtools/craftbukkit-" + nms + ".jar") + + def outputJar = new File(buildDir, "libs/${key}.jar") + def ssiJar = new File(buildDir, "specialsource/${key}.jar") + def ssobfJar = new File(buildDir, "specialsource/${key}-rmo.jar") + def ssJar = new File(buildDir, "specialsource/${key}-rma.jar") + + def homePath = System.properties['user.home'] + def m2 = new File(homePath + "/.m2/repository") + def m2s = m2.getAbsolutePath(); + + // ======================== Building Mapped Jars ============================= + Runnable downloadBuildtools = () -> { + if (!buildToolsJar.exists()) { + download.run { + src 'https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar' + dest buildToolsJar + } + } + } + + Runnable downloadSpecialSource = () -> { + if (!specialSourceJar.exists()) { + download.run { + src 'https://repo.maven.apache.org/maven2/net/md-5/SpecialSource/' + specialSourceVersion + '/SpecialSource-'+specialSourceVersion+'-shaded.jar' + dest specialSourceJar + } + } + } + + Runnable executeBuildTools = () -> { + if (!buildToolsHint.exists()) { + downloadBuildtools.run() + buildToolsFolder.mkdirs() + javaexec { + classpath = files(buildToolsJar) + workingDir = buildToolsFolder + args = [ + "--rev", + nms, + "--compile", + "craftbukkit", + "--remap" + ] + } + } + } + + tasks.register("executeBuildTools") { + doFirst { + executeBuildTools.run() + } + } + + tasks.register("copyBuildToSpecialSource", Copy) { + doFirst { + downloadSpecialSource.run() + specialSourceFolder.mkdirs(); + } + + group "remapping" + from outputJar + into specialSourceFolder + dependsOn(jar) + } + + tasks.register("specialSourceRemapObfuscate", JavaExec) { + group "remapping" + dependsOn(copyBuildToSpecialSource) + workingDir = specialSourceFolder + classpath = files(specialSourceJar, + new File(m2s + "/org/spigotmc/spigot/" + value + "/spigot-" + value + "-remapped-mojang.jar")) + mainClass = "net.md_5.specialsource.SpecialSource" + args = [ + "--live", + "-i", + ssiJar.getName(), + "-o", + ssobfJar.getName(), + "-m", + m2s + "/org/spigotmc/minecraft-server/" + value + "/minecraft-server-" + value + "-maps-mojang.txt", + "--reverse", + ] + } + + tasks.register("specialSourceRemap", JavaExec) { + group "remapping" + dependsOn(specialSourceRemapObfuscate) + workingDir = specialSourceFolder + classpath = files(specialSourceJar, + new File(m2s + "/org/spigotmc/spigot/" + value + "/spigot-" + value + "-remapped-obf.jar")) + mainClass = "net.md_5.specialsource.SpecialSource" + args = [ + "--live", + "-i", + ssobfJar.getName(), + "-o", + ssJar.getName(), + "-m", + m2s + "/org/spigotmc/minecraft-server/" + value + "/minecraft-server-" + value + "-maps-spigot.csrg" + ] + } + + tasks.register("copySpecialSourceToBuild", Copy) { + group "remapping" + from ssJar + into outputJar.getParentFile() + rename { + outputJar.getName() + } + dependsOn(specialSourceRemap) + } + + tasks.build.dependsOn(copySpecialSourceToBuild) + executeBuildTools.run() } - mavenCentral() - maven { url "https://repo.papermc.io/repository/maven-public/"} - maven { url "https://repo.codemc.org/repository/maven-public" } - maven { url "https://mvn.lumine.io/repository/maven-public/" } - maven { url "https://jitpack.io"} - - maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots" } - maven { url "https://mvn.lumine.io/repository/maven/" } - maven { url "https://repo.triumphteam.dev/snapshots" } - maven { url "https://repo.mineinabyss.com/releases" } - maven { url = 'https://hub.jeff-media.com/nexus/repository/jeff-media-public/' } -} - -/** - * We need parameter meta for the decree command system - */ -compileJava { - options.compilerArgs << '-parameters' } /** * Configure Iris for shading */ shadowJar { + NMS_BINDINGS.each {dependsOn(":nms:${it.key}:build")} + //minimize() append("plugin.yml") relocate 'com.dfsek.paralithic', 'com.volmit.iris.util.paralithic' @@ -109,6 +201,16 @@ shadowJar { include(dependency('io.papermc:paperlib')) include(dependency('com.dfsek:Paralithic')) include(dependency('net.kyori:')) + include(project(":core")) + NMS_BINDINGS.each {include(project(":nms:${it.key}"))} + } + archiveFileName.set("Iris-${project.version}.jar") +} + +dependencies { + implementation project(':core') + NMS_BINDINGS.each { + implementation project(":nms:${it.key}") } } @@ -117,52 +219,78 @@ configurations.all { resolutionStrategy.cacheDynamicVersionsFor 60, 'minutes' } -/** - * Dependencies. - * - * Provided or classpath dependencies are not shaded and are available on the runtime classpath - * - * Shaded dependencies are not available at runtime, nor are they available on mvn central so they - * need to be shaded into the jar (increasing binary size) - * - * Dynamically loaded dependencies are defined in the plugin.yml (updating these must be updated in the - * plugin.yml also, otherwise they wont be available). These do not increase binary size). Only declare - * these dependencies if they are available on mvn central. - */ -dependencies { - // Provided or Classpath - compileOnly 'org.projectlombok:lombok:1.18.24' - annotationProcessor 'org.projectlombok:lombok:1.18.24' - implementation 'org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT' - implementation 'org.bukkit:craftbukkit:1.20.1-R0.1-SNAPSHOT:remapped-mojang' //[NMS] +allprojects { + getPlugins().apply("java") - // Third Party Integrations - implementation 'com.ticxo.playeranimator:PlayerAnimator:R1.2.7' - implementation 'com.github.oraxen:oraxen:1.158.0' - implementation 'com.github.LoneDev6:api-itemsadder:3.4.1-r4' - implementation 'com.github.PlaceholderAPI:placeholderapi:2.11.3' - //implementation files('libs/CustomItems.jar') + /** + * Unified repo + */ + repositories { + mavenLocal { + content { + includeGroup("org.bukkit") + includeGroup("org.spigotmc") + } + } + mavenCentral() + maven { url "https://repo.papermc.io/repository/maven-public/"} + maven { url "https://repo.codemc.org/repository/maven-public" } + maven { url "https://mvn.lumine.io/repository/maven-public/" } + maven { url "https://jitpack.io"} - // Shaded - implementation 'com.dfsek:Paralithic:0.4.0' - implementation 'io.papermc:paperlib:1.0.5' - implementation "net.kyori:adventure-text-minimessage:4.13.1" - implementation 'net.kyori:adventure-platform-bukkit:4.3.0' - implementation 'net.kyori:adventure-api:4.13.1' - implementation 'io.lumine:Mythic-Dist:5.2.1' + maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots" } + maven { url "https://mvn.lumine.io/repository/maven/" } + maven { url "https://repo.triumphteam.dev/snapshots" } + maven { url "https://repo.mineinabyss.com/releases" } + maven { url 'https://hub.jeff-media.com/nexus/repository/jeff-media-public/' } + } - // Dynamically Loaded - implementation 'io.timeandspace:smoothie-map:2.0.2' - implementation 'it.unimi.dsi:fastutil:8.5.8' - implementation 'com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2' - implementation 'org.zeroturnaround:zt-zip:1.14' - implementation 'com.google.code.gson:gson:2.9.0' - implementation 'org.ow2.asm:asm:9.2' - implementation 'com.google.guava:guava:31.1-jre' - implementation 'bsf:bsf:2.4.0' - implementation 'rhino:js:1.7R2' - implementation 'com.github.ben-manes.caffeine:caffeine:3.0.6' - implementation 'org.apache.commons:commons-lang3:3.12.0' + /** + * Dependencies. + * + * Provided or classpath dependencies are not shaded and are available on the runtime classpath + * + * Shaded dependencies are not available at runtime, nor are they available on mvn central so they + * need to be shaded into the jar (increasing binary size) + * + * Dynamically loaded dependencies are defined in the plugin.yml (updating these must be updated in the + * plugin.yml also, otherwise they wont be available). These do not increase binary size). Only declare + * these dependencies if they are available on mvn central. + */ + dependencies { + // Provided or Classpath + compileOnly 'org.projectlombok:lombok:1.18.24' + annotationProcessor 'org.projectlombok:lombok:1.18.24' + + // Shaded + implementation 'com.dfsek:Paralithic:0.4.0' + implementation 'io.papermc:paperlib:1.0.5' + implementation "net.kyori:adventure-text-minimessage:4.13.1" + implementation 'net.kyori:adventure-platform-bukkit:4.3.0' + implementation 'net.kyori:adventure-api:4.13.1' + implementation 'io.lumine:Mythic-Dist:5.2.1' + + // Dynamically Loaded + implementation 'io.timeandspace:smoothie-map:2.0.2' + implementation 'it.unimi.dsi:fastutil:8.5.8' + implementation 'com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2' + implementation 'org.zeroturnaround:zt-zip:1.14' + implementation 'com.google.code.gson:gson:2.9.0' + implementation 'org.ow2.asm:asm:9.2' + implementation 'com.google.guava:guava:31.1-jre' + implementation 'bsf:bsf:2.4.0' + implementation 'rhino:js:1.7R2' + implementation 'com.github.ben-manes.caffeine:caffeine:3.0.6' + implementation 'org.apache.commons:commons-lang3:3.12.0' + } + + /** + * We need parameter meta for the decree command system + */ + compileJava { + options.compilerArgs << '-parameters' + options.encoding = "UTF-8" + } } if (JavaVersion.current().toString() != "17") { @@ -183,123 +311,11 @@ if (JavaVersion.current().toString() != "17") { System.exit(69); } -def buildToolsJar = new File(buildDir, "buildtools/BuildTools.jar"); -def specialSourceJar = new File(buildDir, "specialsource/SpecialSource.jar"); -def buildToolsFolder = new File(buildDir, "buildtools"); -def specialSourceFolder = new File(buildDir, "specialsource"); -def buildToolsHint = new File(buildDir, "buildtools/craftbukkit-" + nmsVersion + ".jar"); -def outputShadeJar = new File(buildDir, "libs/Iris-" + version + "-all.jar"); -def ssiJar = new File(buildDir, "specialsource/Iris-" + version + "-all.jar"); -def ssobfJar = new File(buildDir, "specialsource/Iris-" + version + "-rmo.jar"); -def ssJar = new File(buildDir, "specialsource/Iris-" + version + "-rma.jar"); -def homePath = System.properties['user.home'] -def m2 = new File(homePath + "/.m2/repository") -def m2s = m2.getAbsolutePath(); - -// ======================== Building Mapped Jars ============================= -task downloadBuildtools(type: Download) { - group "remapping" - src 'https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar' - dest buildToolsJar - onlyIf { - !buildToolsJar.exists() - } -} - -task downloadSpecialSource(type: Download) { - group "remapping" - src 'https://repo.maven.apache.org/maven2/net/md-5/SpecialSource/' + specialSourceVersion + '/SpecialSource-'+specialSourceVersion+'-shaded.jar' - dest specialSourceJar - onlyIf { - !specialSourceJar.exists() - } -} - -task executeBuildTools(dependsOn: downloadBuildtools, type: JavaExec) -{ - group "remapping" - classpath = files(buildToolsJar) - workingDir = buildToolsFolder - args = [ - "--rev", - nmsVersion, - "--compile", - "craftbukkit", - "--remap" - ] - onlyIf { - !buildToolsHint.exists() - } -} - -task copyBuildToSpecialSource(type: Copy) -{ - group "remapping" - from outputShadeJar - into specialSourceFolder - dependsOn(downloadSpecialSource, shadowJar) -} - -task specialSourceRemapObfuscate(type: JavaExec) -{ - group "remapping" - dependsOn(copyBuildToSpecialSource, downloadSpecialSource, shadowJar) - workingDir = specialSourceFolder - classpath = files(specialSourceJar, - new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-mojang.jar")) - mainClass = "net.md_5.specialsource.SpecialSource" - args = [ - "--live", - "-i", - ssiJar.getName(), - "-o", - ssobfJar.getName(), - "-m", - m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-mojang.txt", - "--reverse", - ] -} - -task specialSourceRemap(type: JavaExec) -{ - group "remapping" - dependsOn(specialSourceRemapObfuscate) - workingDir = specialSourceFolder - classpath = files(specialSourceJar, - new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-obf.jar")) - mainClass = "net.md_5.specialsource.SpecialSource" - args = [ - "--live", - "-i", - ssobfJar.getName(), - "-o", - ssJar.getName(), - "-m", - m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-spigot.csrg" - ] -} - -tasks.compileJava.dependsOn(executeBuildTools) - -compileJava { - options.encoding = "UTF-8" -} - -task setup() -{ - group("iris") - dependsOn(clean, executeBuildTools) -} - -task iris(type: Copy) -{ +task iris(type: Copy) { group "iris" - from ssJar + from new File(buildDir, "Iris-${version}.jar") into buildDir - rename { String fileName -> - fileName.replace('Iris-' + version + '-rma.jar', "Iris-" + version + ".jar") - } - dependsOn(specialSourceRemap) + dependsOn(build) } def registerCustomOutputTask(name, path) { @@ -335,3 +351,5 @@ def registerCustomOutputTaskUnix(name, path) { } } } + +tasks.build.dependsOn(shadowJar) \ No newline at end of file diff --git a/core/build.gradle b/core/build.gradle new file mode 100644 index 000000000..300825e97 --- /dev/null +++ b/core/build.gradle @@ -0,0 +1,84 @@ +/* + * Iris is a World Generator for Minecraft Bukkit Servers + * Copyright (c) 2021 Arcane Arts (Volmit Software) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +plugins { + id 'java' + id 'java-library' + id "io.freefair.lombok" version "6.3.0" +} + +def apiVersion = '1.19' +def main = 'com.volmit.iris.Iris' + +/** + * We need parameter meta for the decree command system + */ +compileJava { + options.compilerArgs << '-parameters' + options.encoding = "UTF-8" +} + +/** + * Dependencies. + * + * Provided or classpath dependencies are not shaded and are available on the runtime classpath + * + * Shaded dependencies are not available at runtime, nor are they available on mvn central so they + * need to be shaded into the jar (increasing binary size) + * + * Dynamically loaded dependencies are defined in the plugin.yml (updating these must be updated in the + * plugin.yml also, otherwise they wont be available). These do not increase binary size). Only declare + * these dependencies if they are available on mvn central. + */ +dependencies { + // Provided or Classpath + implementation 'org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT' + implementation 'org.apache.logging.log4j:log4j-api:2.19.0' + implementation 'org.apache.logging.log4j:log4j-core:2.19.0' + implementation 'commons-lang:commons-lang:2.6' + implementation 'com.github.oshi:oshi-core:5.8.5' + + // Third Party Integrations + implementation 'com.ticxo.playeranimator:PlayerAnimator:R1.2.7' + implementation 'com.github.oraxen:oraxen:1.158.0' + implementation 'com.github.LoneDev6:api-itemsadder:3.4.1-r4' + implementation 'com.github.PlaceholderAPI:placeholderapi:2.11.3' + //implementation files('libs/CustomItems.jar') +} + + +/** + * Gradle is weird sometimes, we need to delete the plugin yml from the build folder to actually filter properly. + */ +file(jar.archiveFile.get().getAsFile().getParentFile().getParentFile().getParentFile().getAbsolutePath() + '/build/resources/main/plugin.yml').delete() + +/** + * Expand properties into plugin yml + */ +processResources { + filesMatching('**/plugin.yml') { + expand( + 'name': rootProject.name.toString(), + 'version': rootProject.version.toString(), + 'main': main.toString(), + 'apiversion': apiVersion.toString() + ) + } +} + +tasks.compileJava.dependsOn(delombok) \ No newline at end of file diff --git a/src/main/java/com/volmit/iris/Iris.java b/core/src/main/java/com/volmit/iris/Iris.java similarity index 96% rename from src/main/java/com/volmit/iris/Iris.java rename to core/src/main/java/com/volmit/iris/Iris.java index 77ddf343f..fd49641ec 100644 --- a/src/main/java/com/volmit/iris/Iris.java +++ b/core/src/main/java/com/volmit/iris/Iris.java @@ -28,7 +28,7 @@ import com.volmit.iris.core.link.MultiverseCoreLink; import com.volmit.iris.core.link.MythicMobsLink; import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.nms.INMS; -import com.volmit.iris.core.nms.v20.NMSBinding1_20_1; +import com.volmit.iris.core.nms.v1X.NMSBinding1X; import com.volmit.iris.core.pregenerator.LazyPregenerator; import com.volmit.iris.core.service.StudioSVC; import com.volmit.iris.core.tools.IrisToolbelt; @@ -593,13 +593,13 @@ public class Iris extends VolmitPlugin implements Listener { private boolean setupChecks() { boolean passed = true; Iris.info("Version Information: " + instance.getServer().getVersion() + " | " + instance.getServer().getBukkitVersion()); - if (!instance.getServer().getBukkitVersion().contains(NMSBinding1_20_1.NMS_VERSION)) { + if (INMS.get() instanceof NMSBinding1X) { passed = false; Iris.warn("============================================"); Iris.warn("="); Iris.warn("="); Iris.warn("="); - Iris.warn("Iris is not compatible with this version of Minecraft.\nPlease use " + NMSBinding1_20_1.NMS_VERSION + " or use an older version of Iris."); + Iris.warn("Iris is not compatible with this version of Minecraft."); Iris.warn("="); Iris.warn("="); Iris.warn("="); diff --git a/src/main/java/com/volmit/iris/core/IrisSettings.java b/core/src/main/java/com/volmit/iris/core/IrisSettings.java similarity index 100% rename from src/main/java/com/volmit/iris/core/IrisSettings.java rename to core/src/main/java/com/volmit/iris/core/IrisSettings.java diff --git a/src/main/java/com/volmit/iris/core/ServerConfigurator.java b/core/src/main/java/com/volmit/iris/core/ServerConfigurator.java similarity index 100% rename from src/main/java/com/volmit/iris/core/ServerConfigurator.java rename to core/src/main/java/com/volmit/iris/core/ServerConfigurator.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandEdit.java b/core/src/main/java/com/volmit/iris/core/commands/CommandEdit.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandEdit.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandEdit.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandFind.java b/core/src/main/java/com/volmit/iris/core/commands/CommandFind.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandFind.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandFind.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandIris.java b/core/src/main/java/com/volmit/iris/core/commands/CommandIris.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandIris.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandIris.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandJigsaw.java b/core/src/main/java/com/volmit/iris/core/commands/CommandJigsaw.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandJigsaw.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandJigsaw.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandObject.java b/core/src/main/java/com/volmit/iris/core/commands/CommandObject.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandObject.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandObject.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandPregen.java b/core/src/main/java/com/volmit/iris/core/commands/CommandPregen.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandPregen.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandPregen.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandSettings.java b/core/src/main/java/com/volmit/iris/core/commands/CommandSettings.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandSettings.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandSettings.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandStudio.java b/core/src/main/java/com/volmit/iris/core/commands/CommandStudio.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandStudio.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandStudio.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandWhat.java b/core/src/main/java/com/volmit/iris/core/commands/CommandWhat.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandWhat.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandWhat.java diff --git a/src/main/java/com/volmit/iris/core/commands/CommandWorldManager.java b/core/src/main/java/com/volmit/iris/core/commands/CommandWorldManager.java similarity index 100% rename from src/main/java/com/volmit/iris/core/commands/CommandWorldManager.java rename to core/src/main/java/com/volmit/iris/core/commands/CommandWorldManager.java diff --git a/src/main/java/com/volmit/iris/core/edit/BlockEditor.java b/core/src/main/java/com/volmit/iris/core/edit/BlockEditor.java similarity index 100% rename from src/main/java/com/volmit/iris/core/edit/BlockEditor.java rename to core/src/main/java/com/volmit/iris/core/edit/BlockEditor.java diff --git a/src/main/java/com/volmit/iris/core/edit/BlockSignal.java b/core/src/main/java/com/volmit/iris/core/edit/BlockSignal.java similarity index 100% rename from src/main/java/com/volmit/iris/core/edit/BlockSignal.java rename to core/src/main/java/com/volmit/iris/core/edit/BlockSignal.java diff --git a/src/main/java/com/volmit/iris/core/edit/BukkitBlockEditor.java b/core/src/main/java/com/volmit/iris/core/edit/BukkitBlockEditor.java similarity index 100% rename from src/main/java/com/volmit/iris/core/edit/BukkitBlockEditor.java rename to core/src/main/java/com/volmit/iris/core/edit/BukkitBlockEditor.java diff --git a/src/main/java/com/volmit/iris/core/edit/DustRevealer.java b/core/src/main/java/com/volmit/iris/core/edit/DustRevealer.java similarity index 100% rename from src/main/java/com/volmit/iris/core/edit/DustRevealer.java rename to core/src/main/java/com/volmit/iris/core/edit/DustRevealer.java diff --git a/src/main/java/com/volmit/iris/core/edit/JigsawEditor.java b/core/src/main/java/com/volmit/iris/core/edit/JigsawEditor.java similarity index 100% rename from src/main/java/com/volmit/iris/core/edit/JigsawEditor.java rename to core/src/main/java/com/volmit/iris/core/edit/JigsawEditor.java diff --git a/src/main/java/com/volmit/iris/core/events/IrisEngineEvent.java b/core/src/main/java/com/volmit/iris/core/events/IrisEngineEvent.java similarity index 100% rename from src/main/java/com/volmit/iris/core/events/IrisEngineEvent.java rename to core/src/main/java/com/volmit/iris/core/events/IrisEngineEvent.java diff --git a/src/main/java/com/volmit/iris/core/events/IrisEngineHotloadEvent.java b/core/src/main/java/com/volmit/iris/core/events/IrisEngineHotloadEvent.java similarity index 100% rename from src/main/java/com/volmit/iris/core/events/IrisEngineHotloadEvent.java rename to core/src/main/java/com/volmit/iris/core/events/IrisEngineHotloadEvent.java diff --git a/src/main/java/com/volmit/iris/core/gui/NoiseExplorerGUI.java b/core/src/main/java/com/volmit/iris/core/gui/NoiseExplorerGUI.java similarity index 100% rename from src/main/java/com/volmit/iris/core/gui/NoiseExplorerGUI.java rename to core/src/main/java/com/volmit/iris/core/gui/NoiseExplorerGUI.java diff --git a/src/main/java/com/volmit/iris/core/gui/PregeneratorJob.java b/core/src/main/java/com/volmit/iris/core/gui/PregeneratorJob.java similarity index 100% rename from src/main/java/com/volmit/iris/core/gui/PregeneratorJob.java rename to core/src/main/java/com/volmit/iris/core/gui/PregeneratorJob.java diff --git a/src/main/java/com/volmit/iris/core/gui/VisionGUI.java b/core/src/main/java/com/volmit/iris/core/gui/VisionGUI.java similarity index 100% rename from src/main/java/com/volmit/iris/core/gui/VisionGUI.java rename to core/src/main/java/com/volmit/iris/core/gui/VisionGUI.java diff --git a/src/main/java/com/volmit/iris/core/gui/components/IrisRenderer.java b/core/src/main/java/com/volmit/iris/core/gui/components/IrisRenderer.java similarity index 100% rename from src/main/java/com/volmit/iris/core/gui/components/IrisRenderer.java rename to core/src/main/java/com/volmit/iris/core/gui/components/IrisRenderer.java diff --git a/src/main/java/com/volmit/iris/core/gui/components/RenderType.java b/core/src/main/java/com/volmit/iris/core/gui/components/RenderType.java similarity index 100% rename from src/main/java/com/volmit/iris/core/gui/components/RenderType.java rename to core/src/main/java/com/volmit/iris/core/gui/components/RenderType.java diff --git a/src/main/java/com/volmit/iris/core/gui/components/Renderer.java b/core/src/main/java/com/volmit/iris/core/gui/components/Renderer.java similarity index 100% rename from src/main/java/com/volmit/iris/core/gui/components/Renderer.java rename to core/src/main/java/com/volmit/iris/core/gui/components/Renderer.java diff --git a/src/main/java/com/volmit/iris/core/gui/components/TileRender.java b/core/src/main/java/com/volmit/iris/core/gui/components/TileRender.java similarity index 100% rename from src/main/java/com/volmit/iris/core/gui/components/TileRender.java rename to core/src/main/java/com/volmit/iris/core/gui/components/TileRender.java diff --git a/src/main/java/com/volmit/iris/core/link/CustomItemsDataProvider.java b/core/src/main/java/com/volmit/iris/core/link/CustomItemsDataProvider.java similarity index 100% rename from src/main/java/com/volmit/iris/core/link/CustomItemsDataProvider.java rename to core/src/main/java/com/volmit/iris/core/link/CustomItemsDataProvider.java diff --git a/src/main/java/com/volmit/iris/core/link/ExternalDataProvider.java b/core/src/main/java/com/volmit/iris/core/link/ExternalDataProvider.java similarity index 100% rename from src/main/java/com/volmit/iris/core/link/ExternalDataProvider.java rename to core/src/main/java/com/volmit/iris/core/link/ExternalDataProvider.java diff --git a/src/main/java/com/volmit/iris/core/link/Identifier.java b/core/src/main/java/com/volmit/iris/core/link/Identifier.java similarity index 100% rename from src/main/java/com/volmit/iris/core/link/Identifier.java rename to core/src/main/java/com/volmit/iris/core/link/Identifier.java diff --git a/src/main/java/com/volmit/iris/core/link/IrisPapiExpansion.java b/core/src/main/java/com/volmit/iris/core/link/IrisPapiExpansion.java similarity index 100% rename from src/main/java/com/volmit/iris/core/link/IrisPapiExpansion.java rename to core/src/main/java/com/volmit/iris/core/link/IrisPapiExpansion.java diff --git a/src/main/java/com/volmit/iris/core/link/ItemAdderDataProvider.java b/core/src/main/java/com/volmit/iris/core/link/ItemAdderDataProvider.java similarity index 100% rename from src/main/java/com/volmit/iris/core/link/ItemAdderDataProvider.java rename to core/src/main/java/com/volmit/iris/core/link/ItemAdderDataProvider.java diff --git a/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java b/core/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java similarity index 100% rename from src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java rename to core/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java diff --git a/src/main/java/com/volmit/iris/core/link/MythicMobsLink.java b/core/src/main/java/com/volmit/iris/core/link/MythicMobsLink.java similarity index 100% rename from src/main/java/com/volmit/iris/core/link/MythicMobsLink.java rename to core/src/main/java/com/volmit/iris/core/link/MythicMobsLink.java diff --git a/src/main/java/com/volmit/iris/core/link/OraxenDataProvider.java b/core/src/main/java/com/volmit/iris/core/link/OraxenDataProvider.java similarity index 100% rename from src/main/java/com/volmit/iris/core/link/OraxenDataProvider.java rename to core/src/main/java/com/volmit/iris/core/link/OraxenDataProvider.java diff --git a/src/main/java/com/volmit/iris/core/link/WorldEditLink.java b/core/src/main/java/com/volmit/iris/core/link/WorldEditLink.java similarity index 100% rename from src/main/java/com/volmit/iris/core/link/WorldEditLink.java rename to core/src/main/java/com/volmit/iris/core/link/WorldEditLink.java diff --git a/src/main/java/com/volmit/iris/core/loader/ImageResourceLoader.java b/core/src/main/java/com/volmit/iris/core/loader/ImageResourceLoader.java similarity index 100% rename from src/main/java/com/volmit/iris/core/loader/ImageResourceLoader.java rename to core/src/main/java/com/volmit/iris/core/loader/ImageResourceLoader.java diff --git a/src/main/java/com/volmit/iris/core/loader/IrisData.java b/core/src/main/java/com/volmit/iris/core/loader/IrisData.java similarity index 100% rename from src/main/java/com/volmit/iris/core/loader/IrisData.java rename to core/src/main/java/com/volmit/iris/core/loader/IrisData.java diff --git a/src/main/java/com/volmit/iris/core/loader/IrisRegistrant.java b/core/src/main/java/com/volmit/iris/core/loader/IrisRegistrant.java similarity index 100% rename from src/main/java/com/volmit/iris/core/loader/IrisRegistrant.java rename to core/src/main/java/com/volmit/iris/core/loader/IrisRegistrant.java diff --git a/src/main/java/com/volmit/iris/core/loader/MatterObjectResourceLoader.java b/core/src/main/java/com/volmit/iris/core/loader/MatterObjectResourceLoader.java similarity index 100% rename from src/main/java/com/volmit/iris/core/loader/MatterObjectResourceLoader.java rename to core/src/main/java/com/volmit/iris/core/loader/MatterObjectResourceLoader.java diff --git a/src/main/java/com/volmit/iris/core/loader/ObjectResourceLoader.java b/core/src/main/java/com/volmit/iris/core/loader/ObjectResourceLoader.java similarity index 100% rename from src/main/java/com/volmit/iris/core/loader/ObjectResourceLoader.java rename to core/src/main/java/com/volmit/iris/core/loader/ObjectResourceLoader.java diff --git a/src/main/java/com/volmit/iris/core/loader/ResourceLoader.java b/core/src/main/java/com/volmit/iris/core/loader/ResourceLoader.java similarity index 100% rename from src/main/java/com/volmit/iris/core/loader/ResourceLoader.java rename to core/src/main/java/com/volmit/iris/core/loader/ResourceLoader.java diff --git a/src/main/java/com/volmit/iris/core/loader/ScriptResourceLoader.java b/core/src/main/java/com/volmit/iris/core/loader/ScriptResourceLoader.java similarity index 100% rename from src/main/java/com/volmit/iris/core/loader/ScriptResourceLoader.java rename to core/src/main/java/com/volmit/iris/core/loader/ScriptResourceLoader.java diff --git a/src/main/java/com/volmit/iris/core/nms/BiomeBaseInjector.java b/core/src/main/java/com/volmit/iris/core/nms/BiomeBaseInjector.java similarity index 100% rename from src/main/java/com/volmit/iris/core/nms/BiomeBaseInjector.java rename to core/src/main/java/com/volmit/iris/core/nms/BiomeBaseInjector.java diff --git a/src/main/java/com/volmit/iris/core/nms/INMS.java b/core/src/main/java/com/volmit/iris/core/nms/INMS.java similarity index 77% rename from src/main/java/com/volmit/iris/core/nms/INMS.java rename to core/src/main/java/com/volmit/iris/core/nms/INMS.java index 2274aa23b..dcb5e8dce 100644 --- a/src/main/java/com/volmit/iris/core/nms/INMS.java +++ b/core/src/main/java/com/volmit/iris/core/nms/INMS.java @@ -1,77 +1,74 @@ -/* - * Iris is a World Generator for Minecraft Bukkit Servers - * Copyright (c) 2022 Arcane Arts (Volmit Software) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.volmit.iris.core.nms; - -import com.volmit.iris.Iris; -import com.volmit.iris.core.IrisSettings; -import com.volmit.iris.core.nms.v20.NMSBinding1_20_1; -import com.volmit.iris.core.nms.v1X.NMSBinding1X; -import com.volmit.iris.util.collection.KMap; -import org.bukkit.Bukkit; - -public class INMS { - //@builder - private static final KMap> bindings = new KMap>() - .qput("v1_20_R1", NMSBinding1_20_1.class); - //@done - private static final INMSBinding binding = bind(); - - public static INMSBinding get() { - return binding; - } - - public static String getNMSTag() { - if (IrisSettings.get().getGeneral().isDisableNMS()) { - return "BUKKIT"; - } - - try { - return Bukkit.getServer().getClass().getCanonicalName().split("\\Q.\\E")[3]; - } catch (Throwable e) { - Iris.reportError(e); - Iris.error("Failed to determine server nms version!"); - e.printStackTrace(); - } - - return "BUKKIT"; - } - - private static INMSBinding bind() { - String code = getNMSTag(); - Iris.info("Locating NMS Binding for " + code); - - if (bindings.containsKey(code)) { - try { - INMSBinding b = bindings.get(code).getConstructor().newInstance(); - Iris.info("Craftbukkit " + code + " <-> " + b.getClass().getSimpleName() + " Successfully Bound"); - - return b; - } catch (Throwable e) { - Iris.reportError(e); - e.printStackTrace(); - } - } - - Iris.info("Craftbukkit " + code + " <-> " + NMSBinding1X.class.getSimpleName() + " Successfully Bound"); - Iris.warn("Note: Some features of Iris may not work the same since you are on an unsupported version of Minecraft."); - Iris.warn("Note: If this is a new version, expect an update soon."); - - return new NMSBinding1X(); - } -} +/* + * Iris is a World Generator for Minecraft Bukkit Servers + * Copyright (c) 2022 Arcane Arts (Volmit Software) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.volmit.iris.core.nms; + +import com.volmit.iris.Iris; +import com.volmit.iris.core.IrisSettings; +import com.volmit.iris.core.nms.v1X.NMSBinding1X; +import org.bukkit.Bukkit; + +public class INMS { + //@done + private static final INMSBinding binding = bind(); + + public static INMSBinding get() { + return binding; + } + + public static String getNMSTag() { + if (IrisSettings.get().getGeneral().isDisableNMS()) { + return "BUKKIT"; + } + + try { + return Bukkit.getServer().getClass().getCanonicalName().split("\\Q.\\E")[3]; + } catch (Throwable e) { + Iris.reportError(e); + Iris.error("Failed to determine server nms version!"); + e.printStackTrace(); + } + + return "BUKKIT"; + } + + private static INMSBinding bind() { + String code = getNMSTag(); + Iris.info("Locating NMS Binding for " + code); + + try { + Class clazz = Class.forName("com.volmit.iris.core.nms."+code+".NMSBinding"); + try { + Object b = clazz.getConstructor().newInstance(); + if (b instanceof INMSBinding binding) { + Iris.info("Craftbukkit " + code + " <-> " + b.getClass().getSimpleName() + " Successfully Bound"); + return binding; + } + } catch (Throwable e) { + Iris.reportError(e); + e.printStackTrace(); + } + } catch (ClassNotFoundException|NoClassDefFoundError classNotFoundException) {} + + Iris.info("Craftbukkit " + code + " <-> " + NMSBinding1X.class.getSimpleName() + " Successfully Bound"); + Iris.warn("Note: Some features of Iris may not work the same since you are on an unsupported version of Minecraft."); + Iris.warn("Note: If this is a new version, expect an update soon."); + + return new NMSBinding1X(); + } +} diff --git a/src/main/java/com/volmit/iris/core/nms/INMSBinding.java b/core/src/main/java/com/volmit/iris/core/nms/INMSBinding.java similarity index 84% rename from src/main/java/com/volmit/iris/core/nms/INMSBinding.java rename to core/src/main/java/com/volmit/iris/core/nms/INMSBinding.java index 0f8f0e44a..e9aa61605 100644 --- a/src/main/java/com/volmit/iris/core/nms/INMSBinding.java +++ b/core/src/main/java/com/volmit/iris/core/nms/INMSBinding.java @@ -18,6 +18,8 @@ package com.volmit.iris.core.nms; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.mantle.Mantle; import com.volmit.iris.util.nbt.mca.palette.MCABiomeContainer; import com.volmit.iris.util.nbt.mca.palette.MCAPaletteAccess; @@ -27,8 +29,10 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.WorldCreator; import org.bukkit.block.Biome; +import org.bukkit.entity.Dolphin; import org.bukkit.entity.Entity; import org.bukkit.generator.ChunkGenerator; +import org.bukkit.inventory.ItemStack; public interface INMSBinding { boolean hasTile(Location l); @@ -90,4 +94,10 @@ public interface INMSBinding { MCAPaletteAccess createPalette(); void injectBiomesFromMantle(Chunk e, Mantle mantle); + + ItemStack applyCustomNbt(ItemStack itemStack, KMap customNbt) throws IllegalArgumentException; + + void setTreasurePos(Dolphin dolphin, com.volmit.iris.core.nms.container.BlockPos pos); + + void inject(long seed, Engine engine, World world) throws NoSuchFieldException, IllegalAccessException; } diff --git a/core/src/main/java/com/volmit/iris/core/nms/container/BlockPos.java b/core/src/main/java/com/volmit/iris/core/nms/container/BlockPos.java new file mode 100644 index 000000000..80a496be7 --- /dev/null +++ b/core/src/main/java/com/volmit/iris/core/nms/container/BlockPos.java @@ -0,0 +1,14 @@ +package com.volmit.iris.core.nms.container; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BlockPos { + private int x; + private int y; + private int z; +} diff --git a/core/src/main/java/com/volmit/iris/core/nms/container/Pair.java b/core/src/main/java/com/volmit/iris/core/nms/container/Pair.java new file mode 100644 index 000000000..140bf0200 --- /dev/null +++ b/core/src/main/java/com/volmit/iris/core/nms/container/Pair.java @@ -0,0 +1,13 @@ +package com.volmit.iris.core.nms.container; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Pair { + private A a; + private B b; +} diff --git a/src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java b/core/src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java similarity index 88% rename from src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java rename to core/src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java index c874b5db5..afd6f9bbc 100644 --- a/src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java +++ b/core/src/main/java/com/volmit/iris/core/nms/v1X/NMSBinding1X.java @@ -20,6 +20,9 @@ package com.volmit.iris.core.nms.v1X; import com.volmit.iris.Iris; import com.volmit.iris.core.nms.INMSBinding; +import com.volmit.iris.core.nms.container.BlockPos; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.mantle.Mantle; import com.volmit.iris.util.nbt.mca.palette.MCABiomeContainer; import com.volmit.iris.util.nbt.mca.palette.MCAPaletteAccess; @@ -28,8 +31,10 @@ import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.Biome; +import org.bukkit.entity.Dolphin; import org.bukkit.entity.Entity; import org.bukkit.generator.ChunkGenerator; +import org.bukkit.inventory.ItemStack; public class NMSBinding1X implements INMSBinding { private static final boolean supportsCustomHeight = testCustomHeight(); @@ -64,6 +69,21 @@ public class NMSBinding1X implements INMSBinding { } + @Override + public ItemStack applyCustomNbt(ItemStack itemStack, KMap customNbt) throws IllegalArgumentException { + return itemStack; + } + + @Override + public void setTreasurePos(Dolphin dolphin, BlockPos pos) { + + } + + @Override + public void inject(long seed, Engine engine, World world) throws NoSuchFieldException, IllegalAccessException { + + } + @Override public void deserializeTile(CompoundTag s, Location newPosition) { diff --git a/src/main/java/com/volmit/iris/core/pack/IrisPack.java b/core/src/main/java/com/volmit/iris/core/pack/IrisPack.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pack/IrisPack.java rename to core/src/main/java/com/volmit/iris/core/pack/IrisPack.java diff --git a/src/main/java/com/volmit/iris/core/pack/IrisPackRepository.java b/core/src/main/java/com/volmit/iris/core/pack/IrisPackRepository.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pack/IrisPackRepository.java rename to core/src/main/java/com/volmit/iris/core/pack/IrisPackRepository.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/IrisPregenerator.java b/core/src/main/java/com/volmit/iris/core/pregenerator/IrisPregenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/IrisPregenerator.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/IrisPregenerator.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/LazyPregenerator.java b/core/src/main/java/com/volmit/iris/core/pregenerator/LazyPregenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/LazyPregenerator.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/LazyPregenerator.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/PregenListener.java b/core/src/main/java/com/volmit/iris/core/pregenerator/PregenListener.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/PregenListener.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/PregenListener.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/PregenTask.java b/core/src/main/java/com/volmit/iris/core/pregenerator/PregenTask.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/PregenTask.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/PregenTask.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/PregeneratorMethod.java b/core/src/main/java/com/volmit/iris/core/pregenerator/PregeneratorMethod.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/PregeneratorMethod.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/PregeneratorMethod.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/methods/AsyncOrMedievalPregenMethod.java b/core/src/main/java/com/volmit/iris/core/pregenerator/methods/AsyncOrMedievalPregenMethod.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/methods/AsyncOrMedievalPregenMethod.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/methods/AsyncOrMedievalPregenMethod.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/methods/AsyncPregenMethod.java b/core/src/main/java/com/volmit/iris/core/pregenerator/methods/AsyncPregenMethod.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/methods/AsyncPregenMethod.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/methods/AsyncPregenMethod.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/methods/DummyPregenMethod.java b/core/src/main/java/com/volmit/iris/core/pregenerator/methods/DummyPregenMethod.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/methods/DummyPregenMethod.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/methods/DummyPregenMethod.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/methods/HybridPregenMethod.java b/core/src/main/java/com/volmit/iris/core/pregenerator/methods/HybridPregenMethod.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/methods/HybridPregenMethod.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/methods/HybridPregenMethod.java diff --git a/src/main/java/com/volmit/iris/core/pregenerator/methods/MedievalPregenMethod.java b/core/src/main/java/com/volmit/iris/core/pregenerator/methods/MedievalPregenMethod.java similarity index 100% rename from src/main/java/com/volmit/iris/core/pregenerator/methods/MedievalPregenMethod.java rename to core/src/main/java/com/volmit/iris/core/pregenerator/methods/MedievalPregenMethod.java diff --git a/src/main/java/com/volmit/iris/core/project/IrisProject.java b/core/src/main/java/com/volmit/iris/core/project/IrisProject.java similarity index 100% rename from src/main/java/com/volmit/iris/core/project/IrisProject.java rename to core/src/main/java/com/volmit/iris/core/project/IrisProject.java diff --git a/src/main/java/com/volmit/iris/core/project/SchemaBuilder.java b/core/src/main/java/com/volmit/iris/core/project/SchemaBuilder.java similarity index 100% rename from src/main/java/com/volmit/iris/core/project/SchemaBuilder.java rename to core/src/main/java/com/volmit/iris/core/project/SchemaBuilder.java diff --git a/src/main/java/com/volmit/iris/core/report/Report.java b/core/src/main/java/com/volmit/iris/core/report/Report.java similarity index 100% rename from src/main/java/com/volmit/iris/core/report/Report.java rename to core/src/main/java/com/volmit/iris/core/report/Report.java diff --git a/src/main/java/com/volmit/iris/core/report/ReportType.java b/core/src/main/java/com/volmit/iris/core/report/ReportType.java similarity index 100% rename from src/main/java/com/volmit/iris/core/report/ReportType.java rename to core/src/main/java/com/volmit/iris/core/report/ReportType.java diff --git a/src/main/java/com/volmit/iris/core/service/BoardSVC.java b/core/src/main/java/com/volmit/iris/core/service/BoardSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/BoardSVC.java rename to core/src/main/java/com/volmit/iris/core/service/BoardSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/CommandSVC.java b/core/src/main/java/com/volmit/iris/core/service/CommandSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/CommandSVC.java rename to core/src/main/java/com/volmit/iris/core/service/CommandSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/ConversionSVC.java b/core/src/main/java/com/volmit/iris/core/service/ConversionSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/ConversionSVC.java rename to core/src/main/java/com/volmit/iris/core/service/ConversionSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/DolphinSVC.java b/core/src/main/java/com/volmit/iris/core/service/DolphinSVC.java similarity index 91% rename from src/main/java/com/volmit/iris/core/service/DolphinSVC.java rename to core/src/main/java/com/volmit/iris/core/service/DolphinSVC.java index a076b01a7..0f4aa53dc 100644 --- a/src/main/java/com/volmit/iris/core/service/DolphinSVC.java +++ b/core/src/main/java/com/volmit/iris/core/service/DolphinSVC.java @@ -18,6 +18,8 @@ package com.volmit.iris.core.service; +import com.volmit.iris.core.nms.INMS; +import com.volmit.iris.core.nms.container.BlockPos; import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.util.documentation.ChunkCoordinates; @@ -25,11 +27,9 @@ import com.volmit.iris.util.function.Consumer4; import com.volmit.iris.util.math.Spiraler; import com.volmit.iris.util.matter.MatterStructurePOI; import com.volmit.iris.util.plugin.IrisService; -import net.minecraft.core.BlockPos; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.SoundCategory; -import org.bukkit.craftbukkit.v1_20_R1.entity.CraftDolphin; import org.bukkit.entity.Dolphin; import org.bukkit.entity.EntityType; import org.bukkit.event.EventHandler; @@ -62,10 +62,8 @@ public class DolphinSVC implements IrisService { searchNearestTreasure(e, event.getPlayer().getLocation().getBlockX() >> 4, event.getPlayer().getLocation().getBlockZ() >> 4, e.getMantle().getRadius() - 1, StructureType.BURIED_TREASURE, (x, y, z, p) -> { event.setCancelled(true); Dolphin d = (Dolphin) event.getRightClicked(); - CraftDolphin cd = (CraftDolphin) d; + INMS.get().setTreasurePos(d, new BlockPos(x, y, z)); d.getWorld().playSound(d, Sound.ENTITY_DOLPHIN_EAT, SoundCategory.NEUTRAL, 1, 1); - cd.getHandle().setTreasurePos(new BlockPos(x, y, z)); - cd.getHandle().setGotFish(true); }); } diff --git a/src/main/java/com/volmit/iris/core/service/EditSVC.java b/core/src/main/java/com/volmit/iris/core/service/EditSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/EditSVC.java rename to core/src/main/java/com/volmit/iris/core/service/EditSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/ExternalDataSVC.java b/core/src/main/java/com/volmit/iris/core/service/ExternalDataSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/ExternalDataSVC.java rename to core/src/main/java/com/volmit/iris/core/service/ExternalDataSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/LogFilterSVC.java b/core/src/main/java/com/volmit/iris/core/service/LogFilterSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/LogFilterSVC.java rename to core/src/main/java/com/volmit/iris/core/service/LogFilterSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/ObjectSVC.java b/core/src/main/java/com/volmit/iris/core/service/ObjectSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/ObjectSVC.java rename to core/src/main/java/com/volmit/iris/core/service/ObjectSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/PreservationSVC.java b/core/src/main/java/com/volmit/iris/core/service/PreservationSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/PreservationSVC.java rename to core/src/main/java/com/volmit/iris/core/service/PreservationSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/StudioSVC.java b/core/src/main/java/com/volmit/iris/core/service/StudioSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/StudioSVC.java rename to core/src/main/java/com/volmit/iris/core/service/StudioSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/TreeSVC.java b/core/src/main/java/com/volmit/iris/core/service/TreeSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/TreeSVC.java rename to core/src/main/java/com/volmit/iris/core/service/TreeSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/VillageSVC.java b/core/src/main/java/com/volmit/iris/core/service/VillageSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/VillageSVC.java rename to core/src/main/java/com/volmit/iris/core/service/VillageSVC.java diff --git a/src/main/java/com/volmit/iris/core/service/WandSVC.java b/core/src/main/java/com/volmit/iris/core/service/WandSVC.java similarity index 100% rename from src/main/java/com/volmit/iris/core/service/WandSVC.java rename to core/src/main/java/com/volmit/iris/core/service/WandSVC.java diff --git a/src/main/java/com/volmit/iris/core/tools/IrisBenchmarking.java b/core/src/main/java/com/volmit/iris/core/tools/IrisBenchmarking.java similarity index 100% rename from src/main/java/com/volmit/iris/core/tools/IrisBenchmarking.java rename to core/src/main/java/com/volmit/iris/core/tools/IrisBenchmarking.java diff --git a/src/main/java/com/volmit/iris/core/tools/IrisCreator.java b/core/src/main/java/com/volmit/iris/core/tools/IrisCreator.java similarity index 100% rename from src/main/java/com/volmit/iris/core/tools/IrisCreator.java rename to core/src/main/java/com/volmit/iris/core/tools/IrisCreator.java diff --git a/src/main/java/com/volmit/iris/core/tools/IrisReflectiveAPI.java b/core/src/main/java/com/volmit/iris/core/tools/IrisReflectiveAPI.java similarity index 100% rename from src/main/java/com/volmit/iris/core/tools/IrisReflectiveAPI.java rename to core/src/main/java/com/volmit/iris/core/tools/IrisReflectiveAPI.java diff --git a/src/main/java/com/volmit/iris/core/tools/IrisToolbelt.java b/core/src/main/java/com/volmit/iris/core/tools/IrisToolbelt.java similarity index 100% rename from src/main/java/com/volmit/iris/core/tools/IrisToolbelt.java rename to core/src/main/java/com/volmit/iris/core/tools/IrisToolbelt.java diff --git a/src/main/java/com/volmit/iris/core/tools/IrisWorldCreator.java b/core/src/main/java/com/volmit/iris/core/tools/IrisWorldCreator.java similarity index 100% rename from src/main/java/com/volmit/iris/core/tools/IrisWorldCreator.java rename to core/src/main/java/com/volmit/iris/core/tools/IrisWorldCreator.java diff --git a/src/main/java/com/volmit/iris/core/wand/WandSelection.java b/core/src/main/java/com/volmit/iris/core/wand/WandSelection.java similarity index 100% rename from src/main/java/com/volmit/iris/core/wand/WandSelection.java rename to core/src/main/java/com/volmit/iris/core/wand/WandSelection.java diff --git a/src/main/java/com/volmit/iris/engine/EnginePanic.java b/core/src/main/java/com/volmit/iris/engine/EnginePanic.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/EnginePanic.java rename to core/src/main/java/com/volmit/iris/engine/EnginePanic.java diff --git a/src/main/java/com/volmit/iris/engine/IrisComplex.java b/core/src/main/java/com/volmit/iris/engine/IrisComplex.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/IrisComplex.java rename to core/src/main/java/com/volmit/iris/engine/IrisComplex.java diff --git a/src/main/java/com/volmit/iris/engine/IrisEngine.java b/core/src/main/java/com/volmit/iris/engine/IrisEngine.java similarity index 96% rename from src/main/java/com/volmit/iris/engine/IrisEngine.java rename to core/src/main/java/com/volmit/iris/engine/IrisEngine.java index 7b6c1850b..ff9d712c3 100644 --- a/src/main/java/com/volmit/iris/engine/IrisEngine.java +++ b/core/src/main/java/com/volmit/iris/engine/IrisEngine.java @@ -24,6 +24,8 @@ import com.volmit.iris.Iris; import com.volmit.iris.core.ServerConfigurator; import com.volmit.iris.core.events.IrisEngineHotloadEvent; import com.volmit.iris.core.gui.PregeneratorJob; +import com.volmit.iris.core.nms.container.BlockPos; +import com.volmit.iris.core.nms.container.Pair; import com.volmit.iris.core.project.IrisProject; import com.volmit.iris.core.service.PreservationSVC; import com.volmit.iris.engine.data.cache.AtomicCache; @@ -48,12 +50,10 @@ import com.volmit.iris.util.scheduling.ChronoLatch; import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.PrecisionStopwatch; import lombok.Data; -import net.minecraft.core.BlockPos; import org.bukkit.Material; import org.bukkit.block.Biome; import org.bukkit.block.data.BlockData; import org.bukkit.command.CommandSender; -import oshi.util.tuples.Pair; import java.io.File; import java.io.IOException; diff --git a/src/main/java/com/volmit/iris/engine/IrisEngineEffects.java b/core/src/main/java/com/volmit/iris/engine/IrisEngineEffects.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/IrisEngineEffects.java rename to core/src/main/java/com/volmit/iris/engine/IrisEngineEffects.java diff --git a/src/main/java/com/volmit/iris/engine/IrisEngineMantle.java b/core/src/main/java/com/volmit/iris/engine/IrisEngineMantle.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/IrisEngineMantle.java rename to core/src/main/java/com/volmit/iris/engine/IrisEngineMantle.java diff --git a/src/main/java/com/volmit/iris/engine/IrisExecutionEnvironment.java b/core/src/main/java/com/volmit/iris/engine/IrisExecutionEnvironment.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/IrisExecutionEnvironment.java rename to core/src/main/java/com/volmit/iris/engine/IrisExecutionEnvironment.java diff --git a/src/main/java/com/volmit/iris/engine/IrisWorldManager.java b/core/src/main/java/com/volmit/iris/engine/IrisWorldManager.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/IrisWorldManager.java rename to core/src/main/java/com/volmit/iris/engine/IrisWorldManager.java diff --git a/src/main/java/com/volmit/iris/engine/actuator/IrisBiomeActuator.java b/core/src/main/java/com/volmit/iris/engine/actuator/IrisBiomeActuator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/actuator/IrisBiomeActuator.java rename to core/src/main/java/com/volmit/iris/engine/actuator/IrisBiomeActuator.java diff --git a/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java b/core/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java rename to core/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java diff --git a/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainNormalActuator.java b/core/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainNormalActuator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/actuator/IrisTerrainNormalActuator.java rename to core/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainNormalActuator.java diff --git a/src/main/java/com/volmit/iris/engine/data/cache/AtomicCache.java b/core/src/main/java/com/volmit/iris/engine/data/cache/AtomicCache.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/cache/AtomicCache.java rename to core/src/main/java/com/volmit/iris/engine/data/cache/AtomicCache.java diff --git a/src/main/java/com/volmit/iris/engine/data/cache/Cache.java b/core/src/main/java/com/volmit/iris/engine/data/cache/Cache.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/cache/Cache.java rename to core/src/main/java/com/volmit/iris/engine/data/cache/Cache.java diff --git a/src/main/java/com/volmit/iris/engine/data/cache/Multicache.java b/core/src/main/java/com/volmit/iris/engine/data/cache/Multicache.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/cache/Multicache.java rename to core/src/main/java/com/volmit/iris/engine/data/cache/Multicache.java diff --git a/src/main/java/com/volmit/iris/engine/data/chunk/LinkedTerrainChunk.java b/core/src/main/java/com/volmit/iris/engine/data/chunk/LinkedTerrainChunk.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/chunk/LinkedTerrainChunk.java rename to core/src/main/java/com/volmit/iris/engine/data/chunk/LinkedTerrainChunk.java diff --git a/src/main/java/com/volmit/iris/engine/data/chunk/MCATerrainChunk.java b/core/src/main/java/com/volmit/iris/engine/data/chunk/MCATerrainChunk.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/chunk/MCATerrainChunk.java rename to core/src/main/java/com/volmit/iris/engine/data/chunk/MCATerrainChunk.java diff --git a/src/main/java/com/volmit/iris/engine/data/chunk/TerrainChunk.java b/core/src/main/java/com/volmit/iris/engine/data/chunk/TerrainChunk.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/chunk/TerrainChunk.java rename to core/src/main/java/com/volmit/iris/engine/data/chunk/TerrainChunk.java diff --git a/src/main/java/com/volmit/iris/engine/data/io/Deserializer.java b/core/src/main/java/com/volmit/iris/engine/data/io/Deserializer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/io/Deserializer.java rename to core/src/main/java/com/volmit/iris/engine/data/io/Deserializer.java diff --git a/src/main/java/com/volmit/iris/engine/data/io/ExceptionBiFunction.java b/core/src/main/java/com/volmit/iris/engine/data/io/ExceptionBiFunction.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/io/ExceptionBiFunction.java rename to core/src/main/java/com/volmit/iris/engine/data/io/ExceptionBiFunction.java diff --git a/src/main/java/com/volmit/iris/engine/data/io/ExceptionTriConsumer.java b/core/src/main/java/com/volmit/iris/engine/data/io/ExceptionTriConsumer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/io/ExceptionTriConsumer.java rename to core/src/main/java/com/volmit/iris/engine/data/io/ExceptionTriConsumer.java diff --git a/src/main/java/com/volmit/iris/engine/data/io/MaxDepthIO.java b/core/src/main/java/com/volmit/iris/engine/data/io/MaxDepthIO.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/io/MaxDepthIO.java rename to core/src/main/java/com/volmit/iris/engine/data/io/MaxDepthIO.java diff --git a/src/main/java/com/volmit/iris/engine/data/io/MaxDepthReachedException.java b/core/src/main/java/com/volmit/iris/engine/data/io/MaxDepthReachedException.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/io/MaxDepthReachedException.java rename to core/src/main/java/com/volmit/iris/engine/data/io/MaxDepthReachedException.java diff --git a/src/main/java/com/volmit/iris/engine/data/io/Serializer.java b/core/src/main/java/com/volmit/iris/engine/data/io/Serializer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/io/Serializer.java rename to core/src/main/java/com/volmit/iris/engine/data/io/Serializer.java diff --git a/src/main/java/com/volmit/iris/engine/data/io/StringDeserializer.java b/core/src/main/java/com/volmit/iris/engine/data/io/StringDeserializer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/io/StringDeserializer.java rename to core/src/main/java/com/volmit/iris/engine/data/io/StringDeserializer.java diff --git a/src/main/java/com/volmit/iris/engine/data/io/StringSerializer.java b/core/src/main/java/com/volmit/iris/engine/data/io/StringSerializer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/data/io/StringSerializer.java rename to core/src/main/java/com/volmit/iris/engine/data/io/StringSerializer.java diff --git a/src/main/java/com/volmit/iris/engine/decorator/IrisCeilingDecorator.java b/core/src/main/java/com/volmit/iris/engine/decorator/IrisCeilingDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/decorator/IrisCeilingDecorator.java rename to core/src/main/java/com/volmit/iris/engine/decorator/IrisCeilingDecorator.java diff --git a/src/main/java/com/volmit/iris/engine/decorator/IrisEngineDecorator.java b/core/src/main/java/com/volmit/iris/engine/decorator/IrisEngineDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/decorator/IrisEngineDecorator.java rename to core/src/main/java/com/volmit/iris/engine/decorator/IrisEngineDecorator.java diff --git a/src/main/java/com/volmit/iris/engine/decorator/IrisSeaFloorDecorator.java b/core/src/main/java/com/volmit/iris/engine/decorator/IrisSeaFloorDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/decorator/IrisSeaFloorDecorator.java rename to core/src/main/java/com/volmit/iris/engine/decorator/IrisSeaFloorDecorator.java diff --git a/src/main/java/com/volmit/iris/engine/decorator/IrisSeaSurfaceDecorator.java b/core/src/main/java/com/volmit/iris/engine/decorator/IrisSeaSurfaceDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/decorator/IrisSeaSurfaceDecorator.java rename to core/src/main/java/com/volmit/iris/engine/decorator/IrisSeaSurfaceDecorator.java diff --git a/src/main/java/com/volmit/iris/engine/decorator/IrisShoreLineDecorator.java b/core/src/main/java/com/volmit/iris/engine/decorator/IrisShoreLineDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/decorator/IrisShoreLineDecorator.java rename to core/src/main/java/com/volmit/iris/engine/decorator/IrisShoreLineDecorator.java diff --git a/src/main/java/com/volmit/iris/engine/decorator/IrisSurfaceDecorator.java b/core/src/main/java/com/volmit/iris/engine/decorator/IrisSurfaceDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/decorator/IrisSurfaceDecorator.java rename to core/src/main/java/com/volmit/iris/engine/decorator/IrisSurfaceDecorator.java diff --git a/src/main/java/com/volmit/iris/engine/framework/BlockUpdater.java b/core/src/main/java/com/volmit/iris/engine/framework/BlockUpdater.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/BlockUpdater.java rename to core/src/main/java/com/volmit/iris/engine/framework/BlockUpdater.java diff --git a/src/main/java/com/volmit/iris/engine/framework/Engine.java b/core/src/main/java/com/volmit/iris/engine/framework/Engine.java similarity index 99% rename from src/main/java/com/volmit/iris/engine/framework/Engine.java rename to core/src/main/java/com/volmit/iris/engine/framework/Engine.java index 35fec78cc..11249b1f6 100644 --- a/src/main/java/com/volmit/iris/engine/framework/Engine.java +++ b/core/src/main/java/com/volmit/iris/engine/framework/Engine.java @@ -24,6 +24,8 @@ import com.volmit.iris.core.gui.components.RenderType; import com.volmit.iris.core.gui.components.Renderer; import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.loader.IrisRegistrant; +import com.volmit.iris.core.nms.container.BlockPos; +import com.volmit.iris.core.nms.container.Pair; import com.volmit.iris.engine.IrisComplex; import com.volmit.iris.engine.data.cache.Cache; import com.volmit.iris.engine.data.chunk.TerrainChunk; @@ -57,7 +59,6 @@ import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.PrecisionStopwatch; import com.volmit.iris.util.stream.ProceduralStream; import io.papermc.lib.PaperLib; -import net.minecraft.core.BlockPos; import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.Location; @@ -71,7 +72,6 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; -import oshi.util.tuples.Pair; import java.awt.*; import java.util.Arrays; diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineActuator.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineActuator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineActuator.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineActuator.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineAssignedActuator.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedActuator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineAssignedActuator.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedActuator.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineAssignedBiModifier.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedBiModifier.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineAssignedBiModifier.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedBiModifier.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineAssignedComponent.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedComponent.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineAssignedComponent.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedComponent.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineAssignedModifier.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedModifier.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineAssignedModifier.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedModifier.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineAssignedWorldManager.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedWorldManager.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineAssignedWorldManager.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineAssignedWorldManager.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineBiModifier.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineBiModifier.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineBiModifier.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineBiModifier.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineComponent.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineComponent.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineComponent.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineComponent.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineData.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineData.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineData.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineData.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineDecorator.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineDecorator.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineDecorator.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineEffects.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineEffects.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineEffects.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineEffects.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineMetrics.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineMetrics.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineMetrics.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineMetrics.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineMode.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineMode.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineMode.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineMode.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineModifier.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineModifier.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineModifier.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineModifier.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EnginePlayer.java b/core/src/main/java/com/volmit/iris/engine/framework/EnginePlayer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EnginePlayer.java rename to core/src/main/java/com/volmit/iris/engine/framework/EnginePlayer.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineStage.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineStage.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineStage.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineStage.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineTarget.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineTarget.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineTarget.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineTarget.java diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineWorldManager.java b/core/src/main/java/com/volmit/iris/engine/framework/EngineWorldManager.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/EngineWorldManager.java rename to core/src/main/java/com/volmit/iris/engine/framework/EngineWorldManager.java diff --git a/src/main/java/com/volmit/iris/engine/framework/Fallible.java b/core/src/main/java/com/volmit/iris/engine/framework/Fallible.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/Fallible.java rename to core/src/main/java/com/volmit/iris/engine/framework/Fallible.java diff --git a/src/main/java/com/volmit/iris/engine/framework/Hotloadable.java b/core/src/main/java/com/volmit/iris/engine/framework/Hotloadable.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/Hotloadable.java rename to core/src/main/java/com/volmit/iris/engine/framework/Hotloadable.java diff --git a/src/main/java/com/volmit/iris/engine/framework/IrisEngineMode.java b/core/src/main/java/com/volmit/iris/engine/framework/IrisEngineMode.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/IrisEngineMode.java rename to core/src/main/java/com/volmit/iris/engine/framework/IrisEngineMode.java diff --git a/src/main/java/com/volmit/iris/engine/framework/IrisLootEvent.java b/core/src/main/java/com/volmit/iris/engine/framework/IrisLootEvent.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/IrisLootEvent.java rename to core/src/main/java/com/volmit/iris/engine/framework/IrisLootEvent.java diff --git a/src/main/java/com/volmit/iris/engine/framework/Locator.java b/core/src/main/java/com/volmit/iris/engine/framework/Locator.java similarity index 98% rename from src/main/java/com/volmit/iris/engine/framework/Locator.java rename to core/src/main/java/com/volmit/iris/engine/framework/Locator.java index 8e57298f5..8dc597605 100644 --- a/src/main/java/com/volmit/iris/engine/framework/Locator.java +++ b/core/src/main/java/com/volmit/iris/engine/framework/Locator.java @@ -19,6 +19,8 @@ package com.volmit.iris.engine.framework; import com.volmit.iris.core.IrisSettings; +import com.volmit.iris.core.nms.container.BlockPos; +import com.volmit.iris.core.nms.container.Pair; import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.engine.object.IrisBiome; import com.volmit.iris.engine.object.IrisJigsawStructure; @@ -36,10 +38,8 @@ import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.PrecisionStopwatch; import com.volmit.iris.util.scheduling.jobs.SingleJob; -import net.minecraft.core.BlockPos; import org.bukkit.Location; import org.bukkit.entity.Player; -import oshi.util.tuples.Pair; import java.util.Set; import java.util.concurrent.ExecutionException; diff --git a/src/main/java/com/volmit/iris/engine/framework/LocatorCanceller.java b/core/src/main/java/com/volmit/iris/engine/framework/LocatorCanceller.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/LocatorCanceller.java rename to core/src/main/java/com/volmit/iris/engine/framework/LocatorCanceller.java diff --git a/src/main/java/com/volmit/iris/engine/framework/LootProvider.java b/core/src/main/java/com/volmit/iris/engine/framework/LootProvider.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/LootProvider.java rename to core/src/main/java/com/volmit/iris/engine/framework/LootProvider.java diff --git a/src/main/java/com/volmit/iris/engine/framework/MeteredCache.java b/core/src/main/java/com/volmit/iris/engine/framework/MeteredCache.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/MeteredCache.java rename to core/src/main/java/com/volmit/iris/engine/framework/MeteredCache.java diff --git a/src/main/java/com/volmit/iris/engine/framework/PlacedObject.java b/core/src/main/java/com/volmit/iris/engine/framework/PlacedObject.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/PlacedObject.java rename to core/src/main/java/com/volmit/iris/engine/framework/PlacedObject.java diff --git a/src/main/java/com/volmit/iris/engine/framework/PregeneratedData.java b/core/src/main/java/com/volmit/iris/engine/framework/PregeneratedData.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/PregeneratedData.java rename to core/src/main/java/com/volmit/iris/engine/framework/PregeneratedData.java diff --git a/src/main/java/com/volmit/iris/engine/framework/SeedManager.java b/core/src/main/java/com/volmit/iris/engine/framework/SeedManager.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/SeedManager.java rename to core/src/main/java/com/volmit/iris/engine/framework/SeedManager.java diff --git a/src/main/java/com/volmit/iris/engine/framework/Staged.java b/core/src/main/java/com/volmit/iris/engine/framework/Staged.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/Staged.java rename to core/src/main/java/com/volmit/iris/engine/framework/Staged.java diff --git a/src/main/java/com/volmit/iris/engine/framework/WrongEngineBroException.java b/core/src/main/java/com/volmit/iris/engine/framework/WrongEngineBroException.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/WrongEngineBroException.java rename to core/src/main/java/com/volmit/iris/engine/framework/WrongEngineBroException.java diff --git a/src/main/java/com/volmit/iris/engine/framework/placer/HeightmapObjectPlacer.java b/core/src/main/java/com/volmit/iris/engine/framework/placer/HeightmapObjectPlacer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/framework/placer/HeightmapObjectPlacer.java rename to core/src/main/java/com/volmit/iris/engine/framework/placer/HeightmapObjectPlacer.java diff --git a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java b/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java rename to core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java diff --git a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java b/core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java rename to core/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java diff --git a/src/main/java/com/volmit/iris/engine/mantle/EngineMantle.java b/core/src/main/java/com/volmit/iris/engine/mantle/EngineMantle.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mantle/EngineMantle.java rename to core/src/main/java/com/volmit/iris/engine/mantle/EngineMantle.java diff --git a/src/main/java/com/volmit/iris/engine/mantle/IrisMantleComponent.java b/core/src/main/java/com/volmit/iris/engine/mantle/IrisMantleComponent.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mantle/IrisMantleComponent.java rename to core/src/main/java/com/volmit/iris/engine/mantle/IrisMantleComponent.java diff --git a/src/main/java/com/volmit/iris/engine/mantle/MantleComponent.java b/core/src/main/java/com/volmit/iris/engine/mantle/MantleComponent.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mantle/MantleComponent.java rename to core/src/main/java/com/volmit/iris/engine/mantle/MantleComponent.java diff --git a/src/main/java/com/volmit/iris/engine/mantle/MantleSized.java b/core/src/main/java/com/volmit/iris/engine/mantle/MantleSized.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mantle/MantleSized.java rename to core/src/main/java/com/volmit/iris/engine/mantle/MantleSized.java diff --git a/src/main/java/com/volmit/iris/engine/mantle/MantleWriter.java b/core/src/main/java/com/volmit/iris/engine/mantle/MantleWriter.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mantle/MantleWriter.java rename to core/src/main/java/com/volmit/iris/engine/mantle/MantleWriter.java diff --git a/src/main/java/com/volmit/iris/engine/mantle/components/MantleCarvingComponent.java b/core/src/main/java/com/volmit/iris/engine/mantle/components/MantleCarvingComponent.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mantle/components/MantleCarvingComponent.java rename to core/src/main/java/com/volmit/iris/engine/mantle/components/MantleCarvingComponent.java diff --git a/src/main/java/com/volmit/iris/engine/mantle/components/MantleFluidBodyComponent.java b/core/src/main/java/com/volmit/iris/engine/mantle/components/MantleFluidBodyComponent.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mantle/components/MantleFluidBodyComponent.java rename to core/src/main/java/com/volmit/iris/engine/mantle/components/MantleFluidBodyComponent.java diff --git a/src/main/java/com/volmit/iris/engine/mantle/components/MantleJigsawComponent.java b/core/src/main/java/com/volmit/iris/engine/mantle/components/MantleJigsawComponent.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mantle/components/MantleJigsawComponent.java rename to core/src/main/java/com/volmit/iris/engine/mantle/components/MantleJigsawComponent.java diff --git a/src/main/java/com/volmit/iris/engine/mantle/components/MantleObjectComponent.java b/core/src/main/java/com/volmit/iris/engine/mantle/components/MantleObjectComponent.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mantle/components/MantleObjectComponent.java rename to core/src/main/java/com/volmit/iris/engine/mantle/components/MantleObjectComponent.java diff --git a/src/main/java/com/volmit/iris/engine/mode/ModeEnclosure.java b/core/src/main/java/com/volmit/iris/engine/mode/ModeEnclosure.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mode/ModeEnclosure.java rename to core/src/main/java/com/volmit/iris/engine/mode/ModeEnclosure.java diff --git a/src/main/java/com/volmit/iris/engine/mode/ModeIslands.java b/core/src/main/java/com/volmit/iris/engine/mode/ModeIslands.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mode/ModeIslands.java rename to core/src/main/java/com/volmit/iris/engine/mode/ModeIslands.java diff --git a/src/main/java/com/volmit/iris/engine/mode/ModeOverworld.java b/core/src/main/java/com/volmit/iris/engine/mode/ModeOverworld.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mode/ModeOverworld.java rename to core/src/main/java/com/volmit/iris/engine/mode/ModeOverworld.java diff --git a/src/main/java/com/volmit/iris/engine/mode/ModeSuperFlat.java b/core/src/main/java/com/volmit/iris/engine/mode/ModeSuperFlat.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/mode/ModeSuperFlat.java rename to core/src/main/java/com/volmit/iris/engine/mode/ModeSuperFlat.java diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java b/core/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java rename to core/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisDepositModifier.java b/core/src/main/java/com/volmit/iris/engine/modifier/IrisDepositModifier.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/modifier/IrisDepositModifier.java rename to core/src/main/java/com/volmit/iris/engine/modifier/IrisDepositModifier.java diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisPerfectionModifier.java b/core/src/main/java/com/volmit/iris/engine/modifier/IrisPerfectionModifier.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/modifier/IrisPerfectionModifier.java rename to core/src/main/java/com/volmit/iris/engine/modifier/IrisPerfectionModifier.java diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java b/core/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java rename to core/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java diff --git a/src/main/java/com/volmit/iris/engine/object/CarveResult.java b/core/src/main/java/com/volmit/iris/engine/object/CarveResult.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/CarveResult.java rename to core/src/main/java/com/volmit/iris/engine/object/CarveResult.java diff --git a/src/main/java/com/volmit/iris/engine/object/CarvingMode.java b/core/src/main/java/com/volmit/iris/engine/object/CarvingMode.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/CarvingMode.java rename to core/src/main/java/com/volmit/iris/engine/object/CarvingMode.java diff --git a/src/main/java/com/volmit/iris/engine/object/CaveResult.java b/core/src/main/java/com/volmit/iris/engine/object/CaveResult.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/CaveResult.java rename to core/src/main/java/com/volmit/iris/engine/object/CaveResult.java diff --git a/src/main/java/com/volmit/iris/engine/object/IObjectPlacer.java b/core/src/main/java/com/volmit/iris/engine/object/IObjectPlacer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IObjectPlacer.java rename to core/src/main/java/com/volmit/iris/engine/object/IObjectPlacer.java diff --git a/src/main/java/com/volmit/iris/engine/object/IPostBlockAccess.java b/core/src/main/java/com/volmit/iris/engine/object/IPostBlockAccess.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IPostBlockAccess.java rename to core/src/main/java/com/volmit/iris/engine/object/IPostBlockAccess.java diff --git a/src/main/java/com/volmit/iris/engine/object/IRare.java b/core/src/main/java/com/volmit/iris/engine/object/IRare.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IRare.java rename to core/src/main/java/com/volmit/iris/engine/object/IRare.java diff --git a/src/main/java/com/volmit/iris/engine/object/InferredType.java b/core/src/main/java/com/volmit/iris/engine/object/InferredType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/InferredType.java rename to core/src/main/java/com/volmit/iris/engine/object/InferredType.java diff --git a/src/main/java/com/volmit/iris/engine/object/InventorySlotType.java b/core/src/main/java/com/volmit/iris/engine/object/InventorySlotType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/InventorySlotType.java rename to core/src/main/java/com/volmit/iris/engine/object/InventorySlotType.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisAttributeModifier.java b/core/src/main/java/com/volmit/iris/engine/object/IrisAttributeModifier.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisAttributeModifier.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisAttributeModifier.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisAxisRotationClamp.java b/core/src/main/java/com/volmit/iris/engine/object/IrisAxisRotationClamp.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisAxisRotationClamp.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisAxisRotationClamp.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiome.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiome.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBiome.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBiome.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustom.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustom.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBiomeCustom.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustom.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomCategory.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomCategory.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomCategory.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomCategory.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomParticle.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomParticle.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomParticle.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomParticle.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawn.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawn.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawn.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawn.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawnType.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawnType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawnType.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawnType.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeGeneratorLink.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeGeneratorLink.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBiomeGeneratorLink.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBiomeGeneratorLink.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomePaletteLayer.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomePaletteLayer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBiomePaletteLayer.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBiomePaletteLayer.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBlockData.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBlockData.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBlockData.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBlockData.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCarving.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCarving.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisCarving.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisCarving.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCave.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCave.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisCave.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisCave.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCavePlacer.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCavePlacer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisCavePlacer.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisCavePlacer.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisColor.java b/core/src/main/java/com/volmit/iris/engine/object/IrisColor.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisColor.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisColor.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCommand.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCommand.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisCommand.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisCommand.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCommandRegistry.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCommandRegistry.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisCommandRegistry.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisCommandRegistry.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCompat.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCompat.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisCompat.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisCompat.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityItemFilter.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityItemFilter.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisCompatabilityItemFilter.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityItemFilter.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDecorationPart.java b/core/src/main/java/com/volmit/iris/engine/object/IrisDecorationPart.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisDecorationPart.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisDecorationPart.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDecorator.java b/core/src/main/java/com/volmit/iris/engine/object/IrisDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisDecorator.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisDecorator.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDepositGenerator.java b/core/src/main/java/com/volmit/iris/engine/object/IrisDepositGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisDepositGenerator.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisDepositGenerator.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDimension.java b/core/src/main/java/com/volmit/iris/engine/object/IrisDimension.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisDimension.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisDimension.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDimensionMode.java b/core/src/main/java/com/volmit/iris/engine/object/IrisDimensionMode.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisDimensionMode.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisDimensionMode.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDimensionModeType.java b/core/src/main/java/com/volmit/iris/engine/object/IrisDimensionModeType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisDimensionModeType.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisDimensionModeType.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDirection.java b/core/src/main/java/com/volmit/iris/engine/object/IrisDirection.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisDirection.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisDirection.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDuration.java b/core/src/main/java/com/volmit/iris/engine/object/IrisDuration.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisDuration.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisDuration.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEffect.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEffect.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEffect.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEffect.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisElipsoid.java b/core/src/main/java/com/volmit/iris/engine/object/IrisElipsoid.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisElipsoid.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisElipsoid.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEnchantment.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEnchantment.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEnchantment.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEnchantment.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEngineChunkData.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEngineChunkData.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEngineChunkData.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEngineChunkData.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEngineData.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEngineData.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEngineData.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEngineData.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEngineSpawnerCooldown.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEngineSpawnerCooldown.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEngineSpawnerCooldown.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEngineSpawnerCooldown.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEngineStatistics.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEngineStatistics.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEngineStatistics.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEngineStatistics.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEngineStreamType.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEngineStreamType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEngineStreamType.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEngineStreamType.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEngineValueType.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEngineValueType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEngineValueType.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEngineValueType.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEntity.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEntity.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEntity.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEntity.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEntitySpawn.java b/core/src/main/java/com/volmit/iris/engine/object/IrisEntitySpawn.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisEntitySpawn.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisEntitySpawn.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisExpression.java b/core/src/main/java/com/volmit/iris/engine/object/IrisExpression.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisExpression.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisExpression.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisExpressionLoad.java b/core/src/main/java/com/volmit/iris/engine/object/IrisExpressionLoad.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisExpressionLoad.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisExpressionLoad.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisFluidBodies.java b/core/src/main/java/com/volmit/iris/engine/object/IrisFluidBodies.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisFluidBodies.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisFluidBodies.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisFontStyle.java b/core/src/main/java/com/volmit/iris/engine/object/IrisFontStyle.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisFontStyle.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisFontStyle.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisGenerator.java b/core/src/main/java/com/volmit/iris/engine/object/IrisGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisGenerator.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisGenerator.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisGeneratorStyle.java b/core/src/main/java/com/volmit/iris/engine/object/IrisGeneratorStyle.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisGeneratorStyle.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisGeneratorStyle.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisImage.java b/core/src/main/java/com/volmit/iris/engine/object/IrisImage.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisImage.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisImage.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisImageChannel.java b/core/src/main/java/com/volmit/iris/engine/object/IrisImageChannel.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisImageChannel.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisImageChannel.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisImageMap.java b/core/src/main/java/com/volmit/iris/engine/object/IrisImageMap.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisImageMap.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisImageMap.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisInterpolator.java b/core/src/main/java/com/volmit/iris/engine/object/IrisInterpolator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisInterpolator.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisInterpolator.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisInterpolator3D.java b/core/src/main/java/com/volmit/iris/engine/object/IrisInterpolator3D.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisInterpolator3D.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisInterpolator3D.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPiece.java b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawPiece.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisJigsawPiece.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisJigsawPiece.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPieceConnector.java b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawPieceConnector.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisJigsawPieceConnector.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisJigsawPieceConnector.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPlacement.java b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawPlacement.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisJigsawPlacement.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisJigsawPlacement.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPool.java b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawPool.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisJigsawPool.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisJigsawPool.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java b/core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisLake.java b/core/src/main/java/com/volmit/iris/engine/object/IrisLake.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisLake.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisLake.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisLoot.java b/core/src/main/java/com/volmit/iris/engine/object/IrisLoot.java similarity index 89% rename from src/main/java/com/volmit/iris/engine/object/IrisLoot.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisLoot.java index fa8a4f4ad..d7001f233 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisLoot.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisLoot.java @@ -18,9 +18,9 @@ package com.volmit.iris.engine.object; -import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.volmit.iris.Iris; import com.volmit.iris.core.link.Identifier; +import com.volmit.iris.core.nms.INMS; import com.volmit.iris.core.service.ExternalDataSVC; import com.volmit.iris.engine.data.cache.AtomicCache; import com.volmit.iris.engine.object.annotations.*; @@ -36,11 +36,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.TagParser; import org.bukkit.DyeColor; import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; @@ -118,7 +115,7 @@ public class IrisLoot { if (is == null) return new ItemStack(Material.AIR); is.setItemMeta(applyProperties(is, rng, debug, null)); - return applyCustomNbt(is); + return INMS.get().applyCustomNbt(is, customNbt); } catch (Throwable e) { Iris.reportError(e); return new ItemStack(Material.AIR); @@ -136,7 +133,7 @@ public class IrisLoot { if (is == null) return null; is.setItemMeta(applyProperties(is, rng, debug, table)); - return applyCustomNbt(is); + return INMS.get().applyCustomNbt(is, customNbt); } catch (Throwable e) { //Iris.reportError(e); e.printStackTrace(); @@ -238,15 +235,4 @@ public class IrisLoot { return m; } - - - private ItemStack applyCustomNbt(ItemStack stack) throws CommandSyntaxException { - if (customNbt == null || customNbt.isEmpty()) - return stack; - net.minecraft.world.item.ItemStack s = CraftItemStack.asNMSCopy(stack); - CompoundTag tag = TagParser.parseTag(new JSONObject(customNbt).toString()); - tag.merge(s.getOrCreateTag()); - s.setTag(tag); - return CraftItemStack.asBukkitCopy(s); - } } diff --git a/src/main/java/com/volmit/iris/engine/object/IrisLootMode.java b/core/src/main/java/com/volmit/iris/engine/object/IrisLootMode.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisLootMode.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisLootMode.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisLootReference.java b/core/src/main/java/com/volmit/iris/engine/object/IrisLootReference.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisLootReference.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisLootReference.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisLootTable.java b/core/src/main/java/com/volmit/iris/engine/object/IrisLootTable.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisLootTable.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisLootTable.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisMarker.java b/core/src/main/java/com/volmit/iris/engine/object/IrisMarker.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisMarker.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisMarker.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisMaterialPalette.java b/core/src/main/java/com/volmit/iris/engine/object/IrisMaterialPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisMaterialPalette.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisMaterialPalette.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisMod.java b/core/src/main/java/com/volmit/iris/engine/object/IrisMod.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisMod.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisMod.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisModBiomeInjector.java b/core/src/main/java/com/volmit/iris/engine/object/IrisModBiomeInjector.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisModBiomeInjector.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisModBiomeInjector.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisModBiomeReplacer.java b/core/src/main/java/com/volmit/iris/engine/object/IrisModBiomeReplacer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisModBiomeReplacer.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisModBiomeReplacer.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisModNoiseStyleReplacer.java b/core/src/main/java/com/volmit/iris/engine/object/IrisModNoiseStyleReplacer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisModNoiseStyleReplacer.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisModNoiseStyleReplacer.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementBiomeInjector.java b/core/src/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementBiomeInjector.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementBiomeInjector.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementBiomeInjector.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementRegionInjector.java b/core/src/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementRegionInjector.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementRegionInjector.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisModObjectPlacementRegionInjector.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisModObjectReplacer.java b/core/src/main/java/com/volmit/iris/engine/object/IrisModObjectReplacer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisModObjectReplacer.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisModObjectReplacer.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisModRegionReplacer.java b/core/src/main/java/com/volmit/iris/engine/object/IrisModRegionReplacer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisModRegionReplacer.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisModRegionReplacer.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisNoiseGenerator.java b/core/src/main/java/com/volmit/iris/engine/object/IrisNoiseGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisNoiseGenerator.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisNoiseGenerator.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObject.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObject.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObject.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObject.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectLimit.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObjectLimit.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObjectLimit.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObjectLimit.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectLoot.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObjectLoot.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObjectLoot.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObjectLoot.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectMarker.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObjectMarker.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObjectMarker.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObjectMarker.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacementScaleInterpolator.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacementScaleInterpolator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObjectPlacementScaleInterpolator.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacementScaleInterpolator.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectReplace.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObjectReplace.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObjectReplace.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObjectReplace.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectRotation.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObjectRotation.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObjectRotation.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObjectRotation.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectScale.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObjectScale.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObjectScale.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObjectScale.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectTranslate.java b/core/src/main/java/com/volmit/iris/engine/object/IrisObjectTranslate.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisObjectTranslate.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisObjectTranslate.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisOreGenerator.java b/core/src/main/java/com/volmit/iris/engine/object/IrisOreGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisOreGenerator.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisOreGenerator.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisPosition.java b/core/src/main/java/com/volmit/iris/engine/object/IrisPosition.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisPosition.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisPosition.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisPosition2D.java b/core/src/main/java/com/volmit/iris/engine/object/IrisPosition2D.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisPosition2D.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisPosition2D.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisPotionEffect.java b/core/src/main/java/com/volmit/iris/engine/object/IrisPotionEffect.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisPotionEffect.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisPotionEffect.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisPyramid.java b/core/src/main/java/com/volmit/iris/engine/object/IrisPyramid.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisPyramid.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisPyramid.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRange.java b/core/src/main/java/com/volmit/iris/engine/object/IrisRange.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisRange.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisRange.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRareObject.java b/core/src/main/java/com/volmit/iris/engine/object/IrisRareObject.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisRareObject.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisRareObject.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRate.java b/core/src/main/java/com/volmit/iris/engine/object/IrisRate.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisRate.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisRate.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRavine.java b/core/src/main/java/com/volmit/iris/engine/object/IrisRavine.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisRavine.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisRavine.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRavinePlacer.java b/core/src/main/java/com/volmit/iris/engine/object/IrisRavinePlacer.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisRavinePlacer.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisRavinePlacer.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRegion.java b/core/src/main/java/com/volmit/iris/engine/object/IrisRegion.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisRegion.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisRegion.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRiver.java b/core/src/main/java/com/volmit/iris/engine/object/IrisRiver.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisRiver.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisRiver.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisScript.java b/core/src/main/java/com/volmit/iris/engine/object/IrisScript.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisScript.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisScript.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisSeed.java b/core/src/main/java/com/volmit/iris/engine/object/IrisSeed.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisSeed.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisSeed.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java b/core/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisSlopeClip.java b/core/src/main/java/com/volmit/iris/engine/object/IrisSlopeClip.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisSlopeClip.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisSlopeClip.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisSpawnGroup.java b/core/src/main/java/com/volmit/iris/engine/object/IrisSpawnGroup.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisSpawnGroup.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisSpawnGroup.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisSpawner.java b/core/src/main/java/com/volmit/iris/engine/object/IrisSpawner.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisSpawner.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisSpawner.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisSphere.java b/core/src/main/java/com/volmit/iris/engine/object/IrisSphere.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisSphere.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisSphere.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisStiltSettings.java b/core/src/main/java/com/volmit/iris/engine/object/IrisStiltSettings.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisStiltSettings.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisStiltSettings.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisStyledRange.java b/core/src/main/java/com/volmit/iris/engine/object/IrisStyledRange.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisStyledRange.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisStyledRange.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisSurface.java b/core/src/main/java/com/volmit/iris/engine/object/IrisSurface.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisSurface.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisSurface.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisTimeBlock.java b/core/src/main/java/com/volmit/iris/engine/object/IrisTimeBlock.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisTimeBlock.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisTimeBlock.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisTree.java b/core/src/main/java/com/volmit/iris/engine/object/IrisTree.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisTree.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisTree.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisTreeModes.java b/core/src/main/java/com/volmit/iris/engine/object/IrisTreeModes.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisTreeModes.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisTreeModes.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisTreeSettings.java b/core/src/main/java/com/volmit/iris/engine/object/IrisTreeSettings.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisTreeSettings.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisTreeSettings.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisTreeSize.java b/core/src/main/java/com/volmit/iris/engine/object/IrisTreeSize.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisTreeSize.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisTreeSize.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisVillagerOverride.java b/core/src/main/java/com/volmit/iris/engine/object/IrisVillagerOverride.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisVillagerOverride.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisVillagerOverride.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisVillagerTrade.java b/core/src/main/java/com/volmit/iris/engine/object/IrisVillagerTrade.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisVillagerTrade.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisVillagerTrade.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisWeather.java b/core/src/main/java/com/volmit/iris/engine/object/IrisWeather.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisWeather.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisWeather.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisWorld.java b/core/src/main/java/com/volmit/iris/engine/object/IrisWorld.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisWorld.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisWorld.java diff --git a/src/main/java/com/volmit/iris/engine/object/IrisWorm.java b/core/src/main/java/com/volmit/iris/engine/object/IrisWorm.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/IrisWorm.java rename to core/src/main/java/com/volmit/iris/engine/object/IrisWorm.java diff --git a/src/main/java/com/volmit/iris/engine/object/NoiseStyle.java b/core/src/main/java/com/volmit/iris/engine/object/NoiseStyle.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/NoiseStyle.java rename to core/src/main/java/com/volmit/iris/engine/object/NoiseStyle.java diff --git a/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java b/core/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java rename to core/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java diff --git a/src/main/java/com/volmit/iris/engine/object/StudioMode.java b/core/src/main/java/com/volmit/iris/engine/object/StudioMode.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/StudioMode.java rename to core/src/main/java/com/volmit/iris/engine/object/StudioMode.java diff --git a/src/main/java/com/volmit/iris/engine/object/TileBanner.java b/core/src/main/java/com/volmit/iris/engine/object/TileBanner.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/TileBanner.java rename to core/src/main/java/com/volmit/iris/engine/object/TileBanner.java diff --git a/src/main/java/com/volmit/iris/engine/object/TileData.java b/core/src/main/java/com/volmit/iris/engine/object/TileData.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/TileData.java rename to core/src/main/java/com/volmit/iris/engine/object/TileData.java diff --git a/src/main/java/com/volmit/iris/engine/object/TileSign.java b/core/src/main/java/com/volmit/iris/engine/object/TileSign.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/TileSign.java rename to core/src/main/java/com/volmit/iris/engine/object/TileSign.java diff --git a/src/main/java/com/volmit/iris/engine/object/TileSpawner.java b/core/src/main/java/com/volmit/iris/engine/object/TileSpawner.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/TileSpawner.java rename to core/src/main/java/com/volmit/iris/engine/object/TileSpawner.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/ArrayType.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/ArrayType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/ArrayType.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/ArrayType.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/DependsOn.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/DependsOn.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/DependsOn.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/DependsOn.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/Desc.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/Desc.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/Desc.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/Desc.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/MaxNumber.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/MaxNumber.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/MaxNumber.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/MaxNumber.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/MinNumber.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/MinNumber.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/MinNumber.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/MinNumber.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiomeDownfallType.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiomeDownfallType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiomeDownfallType.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiomeDownfallType.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBlockType.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBlockType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBlockType.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBlockType.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListEnchantment.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListEnchantment.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/RegistryListEnchantment.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListEnchantment.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListFont.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListFont.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/RegistryListFont.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListFont.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListItemType.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListItemType.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/RegistryListItemType.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListItemType.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListResource.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListResource.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/RegistryListResource.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListResource.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListSpecialEntity.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListSpecialEntity.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/RegistryListSpecialEntity.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListSpecialEntity.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/Required.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/Required.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/Required.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/Required.java diff --git a/src/main/java/com/volmit/iris/engine/object/annotations/Snippet.java b/core/src/main/java/com/volmit/iris/engine/object/annotations/Snippet.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/annotations/Snippet.java rename to core/src/main/java/com/volmit/iris/engine/object/annotations/Snippet.java diff --git a/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterObject.java b/core/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterObject.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/matter/IrisMatterObject.java rename to core/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterObject.java diff --git a/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacement.java b/core/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacement.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacement.java rename to core/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacement.java diff --git a/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacementLocation.java b/core/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacementLocation.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacementLocation.java rename to core/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacementLocation.java diff --git a/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterTranslate.java b/core/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterTranslate.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/object/matter/IrisMatterTranslate.java rename to core/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterTranslate.java diff --git a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java b/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java similarity index 89% rename from src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java rename to core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java index 9fe19f048..f63b6d12a 100644 --- a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java +++ b/core/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java @@ -20,7 +20,7 @@ package com.volmit.iris.engine.platform; import com.volmit.iris.Iris; import com.volmit.iris.core.loader.IrisData; -import com.volmit.iris.core.nms.v20.CustomBiomeSource; +import com.volmit.iris.core.nms.INMS; import com.volmit.iris.core.service.StudioSVC; import com.volmit.iris.engine.IrisEngine; import com.volmit.iris.engine.data.chunk.TerrainChunk; @@ -42,11 +42,9 @@ import com.volmit.iris.util.scheduling.Looper; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.Setter; -import net.minecraft.server.level.ServerLevel; import org.bukkit.*; import org.bukkit.block.Biome; import org.bukkit.block.data.BlockData; -import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -58,7 +56,6 @@ import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.WorldInfo; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import sun.misc.Unsafe; import java.io.File; import java.lang.reflect.Field; @@ -129,17 +126,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun if (!initialized) { world.setRawWorldSeed(event.getWorld().getSeed()); if (world.name().equals(event.getWorld().getName())) { - ServerLevel serverLevel = ((CraftWorld) event.getWorld()).getHandle(); - Engine engine = getEngine(event.getWorld()); - Class clazz = serverLevel.getChunkSource().chunkMap.generator.getClass(); - Field biomeSource = getField(clazz, "b"); - biomeSource.setAccessible(true); - Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); - unsafeField.setAccessible(true); - Unsafe unsafe = (Unsafe) unsafeField.get(null); - CustomBiomeSource customBiomeSource = new CustomBiomeSource(event.getWorld().getSeed(), engine, event.getWorld()); - unsafe.putObject(biomeSource.get(serverLevel.getChunkSource().chunkMap.generator), unsafe.objectFieldOffset(biomeSource), customBiomeSource); - biomeSource.set(serverLevel.getChunkSource().chunkMap.generator, customBiomeSource); + INMS.get().inject(event.getWorld().getSeed(), getEngine(event.getWorld()), event.getWorld()); Iris.info("Injected Iris Biome Source into " + event.getWorld().getName()); initialized = true; } diff --git a/src/main/java/com/volmit/iris/engine/platform/DummyBiomeGrid.java b/core/src/main/java/com/volmit/iris/engine/platform/DummyBiomeGrid.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/platform/DummyBiomeGrid.java rename to core/src/main/java/com/volmit/iris/engine/platform/DummyBiomeGrid.java diff --git a/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java b/core/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java rename to core/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java diff --git a/src/main/java/com/volmit/iris/engine/platform/DummyChunkGenerator.java b/core/src/main/java/com/volmit/iris/engine/platform/DummyChunkGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/platform/DummyChunkGenerator.java rename to core/src/main/java/com/volmit/iris/engine/platform/DummyChunkGenerator.java diff --git a/src/main/java/com/volmit/iris/engine/platform/PlatformChunkGenerator.java b/core/src/main/java/com/volmit/iris/engine/platform/PlatformChunkGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/platform/PlatformChunkGenerator.java rename to core/src/main/java/com/volmit/iris/engine/platform/PlatformChunkGenerator.java diff --git a/src/main/java/com/volmit/iris/engine/platform/studio/EnginedStudioGenerator.java b/core/src/main/java/com/volmit/iris/engine/platform/studio/EnginedStudioGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/platform/studio/EnginedStudioGenerator.java rename to core/src/main/java/com/volmit/iris/engine/platform/studio/EnginedStudioGenerator.java diff --git a/src/main/java/com/volmit/iris/engine/platform/studio/StudioGenerator.java b/core/src/main/java/com/volmit/iris/engine/platform/studio/StudioGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/platform/studio/StudioGenerator.java rename to core/src/main/java/com/volmit/iris/engine/platform/studio/StudioGenerator.java diff --git a/src/main/java/com/volmit/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java b/core/src/main/java/com/volmit/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java rename to core/src/main/java/com/volmit/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java diff --git a/src/main/java/com/volmit/iris/engine/safeguard/IrisSafeguard.java b/core/src/main/java/com/volmit/iris/engine/safeguard/IrisSafeguard.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/safeguard/IrisSafeguard.java rename to core/src/main/java/com/volmit/iris/engine/safeguard/IrisSafeguard.java diff --git a/src/main/java/com/volmit/iris/engine/safeguard/SafeguardUtils.java b/core/src/main/java/com/volmit/iris/engine/safeguard/SafeguardUtils.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/safeguard/SafeguardUtils.java rename to core/src/main/java/com/volmit/iris/engine/safeguard/SafeguardUtils.java diff --git a/src/main/java/com/volmit/iris/engine/safeguard/ServerBoot.java b/core/src/main/java/com/volmit/iris/engine/safeguard/ServerBoot.java similarity index 96% rename from src/main/java/com/volmit/iris/engine/safeguard/ServerBoot.java rename to core/src/main/java/com/volmit/iris/engine/safeguard/ServerBoot.java index bb8d7c140..27f993b9f 100644 --- a/src/main/java/com/volmit/iris/engine/safeguard/ServerBoot.java +++ b/core/src/main/java/com/volmit/iris/engine/safeguard/ServerBoot.java @@ -1,7 +1,8 @@ package com.volmit.iris.engine.safeguard; import com.volmit.iris.Iris; -import com.volmit.iris.core.nms.v20.NMSBinding1_20_1; +import com.volmit.iris.core.nms.INMS; +import com.volmit.iris.core.nms.v1X.NMSBinding1X; import com.volmit.iris.util.format.C; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; @@ -24,7 +25,7 @@ public class ServerBoot { Iris.info("Checking for possible conflicts.."); org.bukkit.plugin.PluginManager pluginManager = Bukkit.getPluginManager(); Plugin[] plugins = pluginManager.getPlugins(); - if (!instance.getServer().getBukkitVersion().contains(NMSBinding1_20_1.NMS_VERSION)) { + if (INMS.get() instanceof NMSBinding1X) { unstablemode = true; correctversion = false; } diff --git a/src/main/java/com/volmit/iris/engine/scripting/EngineExecutionEnvironment.java b/core/src/main/java/com/volmit/iris/engine/scripting/EngineExecutionEnvironment.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/scripting/EngineExecutionEnvironment.java rename to core/src/main/java/com/volmit/iris/engine/scripting/EngineExecutionEnvironment.java diff --git a/src/main/java/com/volmit/iris/engine/scripting/IrisScriptingAPI.java b/core/src/main/java/com/volmit/iris/engine/scripting/IrisScriptingAPI.java similarity index 100% rename from src/main/java/com/volmit/iris/engine/scripting/IrisScriptingAPI.java rename to core/src/main/java/com/volmit/iris/engine/scripting/IrisScriptingAPI.java diff --git a/src/main/java/com/volmit/iris/util/api/APIAwareBlock.java b/core/src/main/java/com/volmit/iris/util/api/APIAwareBlock.java similarity index 100% rename from src/main/java/com/volmit/iris/util/api/APIAwareBlock.java rename to core/src/main/java/com/volmit/iris/util/api/APIAwareBlock.java diff --git a/src/main/java/com/volmit/iris/util/api/APIWorldBlock.java b/core/src/main/java/com/volmit/iris/util/api/APIWorldBlock.java similarity index 100% rename from src/main/java/com/volmit/iris/util/api/APIWorldBlock.java rename to core/src/main/java/com/volmit/iris/util/api/APIWorldBlock.java diff --git a/src/main/java/com/volmit/iris/util/atomics/AtomicAverage.java b/core/src/main/java/com/volmit/iris/util/atomics/AtomicAverage.java similarity index 100% rename from src/main/java/com/volmit/iris/util/atomics/AtomicAverage.java rename to core/src/main/java/com/volmit/iris/util/atomics/AtomicAverage.java diff --git a/src/main/java/com/volmit/iris/util/atomics/AtomicRollingSequence.java b/core/src/main/java/com/volmit/iris/util/atomics/AtomicRollingSequence.java similarity index 100% rename from src/main/java/com/volmit/iris/util/atomics/AtomicRollingSequence.java rename to core/src/main/java/com/volmit/iris/util/atomics/AtomicRollingSequence.java diff --git a/src/main/java/com/volmit/iris/util/board/Board.java b/core/src/main/java/com/volmit/iris/util/board/Board.java similarity index 100% rename from src/main/java/com/volmit/iris/util/board/Board.java rename to core/src/main/java/com/volmit/iris/util/board/Board.java diff --git a/src/main/java/com/volmit/iris/util/board/BoardEntry.java b/core/src/main/java/com/volmit/iris/util/board/BoardEntry.java similarity index 100% rename from src/main/java/com/volmit/iris/util/board/BoardEntry.java rename to core/src/main/java/com/volmit/iris/util/board/BoardEntry.java diff --git a/src/main/java/com/volmit/iris/util/board/BoardManager.java b/core/src/main/java/com/volmit/iris/util/board/BoardManager.java similarity index 100% rename from src/main/java/com/volmit/iris/util/board/BoardManager.java rename to core/src/main/java/com/volmit/iris/util/board/BoardManager.java diff --git a/src/main/java/com/volmit/iris/util/board/BoardProvider.java b/core/src/main/java/com/volmit/iris/util/board/BoardProvider.java similarity index 100% rename from src/main/java/com/volmit/iris/util/board/BoardProvider.java rename to core/src/main/java/com/volmit/iris/util/board/BoardProvider.java diff --git a/src/main/java/com/volmit/iris/util/board/BoardSettings.java b/core/src/main/java/com/volmit/iris/util/board/BoardSettings.java similarity index 100% rename from src/main/java/com/volmit/iris/util/board/BoardSettings.java rename to core/src/main/java/com/volmit/iris/util/board/BoardSettings.java diff --git a/src/main/java/com/volmit/iris/util/board/BoardUpdateTask.java b/core/src/main/java/com/volmit/iris/util/board/BoardUpdateTask.java similarity index 100% rename from src/main/java/com/volmit/iris/util/board/BoardUpdateTask.java rename to core/src/main/java/com/volmit/iris/util/board/BoardUpdateTask.java diff --git a/src/main/java/com/volmit/iris/util/board/ScoreDirection.java b/core/src/main/java/com/volmit/iris/util/board/ScoreDirection.java similarity index 100% rename from src/main/java/com/volmit/iris/util/board/ScoreDirection.java rename to core/src/main/java/com/volmit/iris/util/board/ScoreDirection.java diff --git a/src/main/java/com/volmit/iris/util/cache/ArrayCache.java b/core/src/main/java/com/volmit/iris/util/cache/ArrayCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/ArrayCache.java rename to core/src/main/java/com/volmit/iris/util/cache/ArrayCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/ByteBitCache.java b/core/src/main/java/com/volmit/iris/util/cache/ByteBitCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/ByteBitCache.java rename to core/src/main/java/com/volmit/iris/util/cache/ByteBitCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/ByteCache.java b/core/src/main/java/com/volmit/iris/util/cache/ByteCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/ByteCache.java rename to core/src/main/java/com/volmit/iris/util/cache/ByteCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/ChunkCache2D.java b/core/src/main/java/com/volmit/iris/util/cache/ChunkCache2D.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/ChunkCache2D.java rename to core/src/main/java/com/volmit/iris/util/cache/ChunkCache2D.java diff --git a/src/main/java/com/volmit/iris/util/cache/DataBitCache.java b/core/src/main/java/com/volmit/iris/util/cache/DataBitCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/DataBitCache.java rename to core/src/main/java/com/volmit/iris/util/cache/DataBitCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/FloatBitCache.java b/core/src/main/java/com/volmit/iris/util/cache/FloatBitCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/FloatBitCache.java rename to core/src/main/java/com/volmit/iris/util/cache/FloatBitCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/FloatCache.java b/core/src/main/java/com/volmit/iris/util/cache/FloatCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/FloatCache.java rename to core/src/main/java/com/volmit/iris/util/cache/FloatCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/IntBitCache.java b/core/src/main/java/com/volmit/iris/util/cache/IntBitCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/IntBitCache.java rename to core/src/main/java/com/volmit/iris/util/cache/IntBitCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/IntCache.java b/core/src/main/java/com/volmit/iris/util/cache/IntCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/IntCache.java rename to core/src/main/java/com/volmit/iris/util/cache/IntCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/ShortBitCache.java b/core/src/main/java/com/volmit/iris/util/cache/ShortBitCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/ShortBitCache.java rename to core/src/main/java/com/volmit/iris/util/cache/ShortBitCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/ShortCache.java b/core/src/main/java/com/volmit/iris/util/cache/ShortCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/ShortCache.java rename to core/src/main/java/com/volmit/iris/util/cache/ShortCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/UByteBitCache.java b/core/src/main/java/com/volmit/iris/util/cache/UByteBitCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/UByteBitCache.java rename to core/src/main/java/com/volmit/iris/util/cache/UByteBitCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/UByteCache.java b/core/src/main/java/com/volmit/iris/util/cache/UByteCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/UByteCache.java rename to core/src/main/java/com/volmit/iris/util/cache/UByteCache.java diff --git a/src/main/java/com/volmit/iris/util/cache/WorldCache2D.java b/core/src/main/java/com/volmit/iris/util/cache/WorldCache2D.java similarity index 100% rename from src/main/java/com/volmit/iris/util/cache/WorldCache2D.java rename to core/src/main/java/com/volmit/iris/util/cache/WorldCache2D.java diff --git a/src/main/java/com/volmit/iris/util/collection/GBiset.java b/core/src/main/java/com/volmit/iris/util/collection/GBiset.java similarity index 100% rename from src/main/java/com/volmit/iris/util/collection/GBiset.java rename to core/src/main/java/com/volmit/iris/util/collection/GBiset.java diff --git a/src/main/java/com/volmit/iris/util/collection/GListAdapter.java b/core/src/main/java/com/volmit/iris/util/collection/GListAdapter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/collection/GListAdapter.java rename to core/src/main/java/com/volmit/iris/util/collection/GListAdapter.java diff --git a/src/main/java/com/volmit/iris/util/collection/KList.java b/core/src/main/java/com/volmit/iris/util/collection/KList.java similarity index 100% rename from src/main/java/com/volmit/iris/util/collection/KList.java rename to core/src/main/java/com/volmit/iris/util/collection/KList.java diff --git a/src/main/java/com/volmit/iris/util/collection/KMap.java b/core/src/main/java/com/volmit/iris/util/collection/KMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/collection/KMap.java rename to core/src/main/java/com/volmit/iris/util/collection/KMap.java diff --git a/src/main/java/com/volmit/iris/util/collection/KSet.java b/core/src/main/java/com/volmit/iris/util/collection/KSet.java similarity index 100% rename from src/main/java/com/volmit/iris/util/collection/KSet.java rename to core/src/main/java/com/volmit/iris/util/collection/KSet.java diff --git a/src/main/java/com/volmit/iris/util/collection/KeyPair.java b/core/src/main/java/com/volmit/iris/util/collection/KeyPair.java similarity index 100% rename from src/main/java/com/volmit/iris/util/collection/KeyPair.java rename to core/src/main/java/com/volmit/iris/util/collection/KeyPair.java diff --git a/src/main/java/com/volmit/iris/util/collection/StateList.java b/core/src/main/java/com/volmit/iris/util/collection/StateList.java similarity index 100% rename from src/main/java/com/volmit/iris/util/collection/StateList.java rename to core/src/main/java/com/volmit/iris/util/collection/StateList.java diff --git a/src/main/java/com/volmit/iris/util/context/ChunkContext.java b/core/src/main/java/com/volmit/iris/util/context/ChunkContext.java similarity index 100% rename from src/main/java/com/volmit/iris/util/context/ChunkContext.java rename to core/src/main/java/com/volmit/iris/util/context/ChunkContext.java diff --git a/src/main/java/com/volmit/iris/util/context/ChunkedDataCache.java b/core/src/main/java/com/volmit/iris/util/context/ChunkedDataCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/context/ChunkedDataCache.java rename to core/src/main/java/com/volmit/iris/util/context/ChunkedDataCache.java diff --git a/src/main/java/com/volmit/iris/util/context/IrisContext.java b/core/src/main/java/com/volmit/iris/util/context/IrisContext.java similarity index 100% rename from src/main/java/com/volmit/iris/util/context/IrisContext.java rename to core/src/main/java/com/volmit/iris/util/context/IrisContext.java diff --git a/src/main/java/com/volmit/iris/util/data/B.java b/core/src/main/java/com/volmit/iris/util/data/B.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/B.java rename to core/src/main/java/com/volmit/iris/util/data/B.java diff --git a/src/main/java/com/volmit/iris/util/data/BiomeMap.java b/core/src/main/java/com/volmit/iris/util/data/BiomeMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/BiomeMap.java rename to core/src/main/java/com/volmit/iris/util/data/BiomeMap.java diff --git a/src/main/java/com/volmit/iris/util/data/ChunkCache.java b/core/src/main/java/com/volmit/iris/util/data/ChunkCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/ChunkCache.java rename to core/src/main/java/com/volmit/iris/util/data/ChunkCache.java diff --git a/src/main/java/com/volmit/iris/util/data/ComplexCache.java b/core/src/main/java/com/volmit/iris/util/data/ComplexCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/ComplexCache.java rename to core/src/main/java/com/volmit/iris/util/data/ComplexCache.java diff --git a/src/main/java/com/volmit/iris/util/data/Cuboid.java b/core/src/main/java/com/volmit/iris/util/data/Cuboid.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/Cuboid.java rename to core/src/main/java/com/volmit/iris/util/data/Cuboid.java diff --git a/src/main/java/com/volmit/iris/util/data/CuboidException.java b/core/src/main/java/com/volmit/iris/util/data/CuboidException.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/CuboidException.java rename to core/src/main/java/com/volmit/iris/util/data/CuboidException.java diff --git a/src/main/java/com/volmit/iris/util/data/DUTF.java b/core/src/main/java/com/volmit/iris/util/data/DUTF.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/DUTF.java rename to core/src/main/java/com/volmit/iris/util/data/DUTF.java diff --git a/src/main/java/com/volmit/iris/util/data/DataPalette.java b/core/src/main/java/com/volmit/iris/util/data/DataPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/DataPalette.java rename to core/src/main/java/com/volmit/iris/util/data/DataPalette.java diff --git a/src/main/java/com/volmit/iris/util/data/DataProvider.java b/core/src/main/java/com/volmit/iris/util/data/DataProvider.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/DataProvider.java rename to core/src/main/java/com/volmit/iris/util/data/DataProvider.java diff --git a/src/main/java/com/volmit/iris/util/data/Dimension.java b/core/src/main/java/com/volmit/iris/util/data/Dimension.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/Dimension.java rename to core/src/main/java/com/volmit/iris/util/data/Dimension.java diff --git a/src/main/java/com/volmit/iris/util/data/DimensionFace.java b/core/src/main/java/com/volmit/iris/util/data/DimensionFace.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/DimensionFace.java rename to core/src/main/java/com/volmit/iris/util/data/DimensionFace.java diff --git a/src/main/java/com/volmit/iris/util/data/DoubleArrayUtils.java b/core/src/main/java/com/volmit/iris/util/data/DoubleArrayUtils.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/DoubleArrayUtils.java rename to core/src/main/java/com/volmit/iris/util/data/DoubleArrayUtils.java diff --git a/src/main/java/com/volmit/iris/util/data/Heafty.java b/core/src/main/java/com/volmit/iris/util/data/Heafty.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/Heafty.java rename to core/src/main/java/com/volmit/iris/util/data/Heafty.java diff --git a/src/main/java/com/volmit/iris/util/data/HeightMap.java b/core/src/main/java/com/volmit/iris/util/data/HeightMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/HeightMap.java rename to core/src/main/java/com/volmit/iris/util/data/HeightMap.java diff --git a/src/main/java/com/volmit/iris/util/data/IOAdapter.java b/core/src/main/java/com/volmit/iris/util/data/IOAdapter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/IOAdapter.java rename to core/src/main/java/com/volmit/iris/util/data/IOAdapter.java diff --git a/src/main/java/com/volmit/iris/util/data/InvertedBiomeGrid.java b/core/src/main/java/com/volmit/iris/util/data/InvertedBiomeGrid.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/InvertedBiomeGrid.java rename to core/src/main/java/com/volmit/iris/util/data/InvertedBiomeGrid.java diff --git a/src/main/java/com/volmit/iris/util/data/IrisBiomeStorage.java b/core/src/main/java/com/volmit/iris/util/data/IrisBiomeStorage.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/IrisBiomeStorage.java rename to core/src/main/java/com/volmit/iris/util/data/IrisBiomeStorage.java diff --git a/src/main/java/com/volmit/iris/util/data/KCache.java b/core/src/main/java/com/volmit/iris/util/data/KCache.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/KCache.java rename to core/src/main/java/com/volmit/iris/util/data/KCache.java diff --git a/src/main/java/com/volmit/iris/util/data/MaterialBlock.java b/core/src/main/java/com/volmit/iris/util/data/MaterialBlock.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/MaterialBlock.java rename to core/src/main/java/com/volmit/iris/util/data/MaterialBlock.java diff --git a/src/main/java/com/volmit/iris/util/data/NibbleArray.java b/core/src/main/java/com/volmit/iris/util/data/NibbleArray.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/NibbleArray.java rename to core/src/main/java/com/volmit/iris/util/data/NibbleArray.java diff --git a/src/main/java/com/volmit/iris/util/data/NibbleDataPalette.java b/core/src/main/java/com/volmit/iris/util/data/NibbleDataPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/NibbleDataPalette.java rename to core/src/main/java/com/volmit/iris/util/data/NibbleDataPalette.java diff --git a/src/main/java/com/volmit/iris/util/data/Recycler.java b/core/src/main/java/com/volmit/iris/util/data/Recycler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/Recycler.java rename to core/src/main/java/com/volmit/iris/util/data/Recycler.java diff --git a/src/main/java/com/volmit/iris/util/data/Shrinkwrap.java b/core/src/main/java/com/volmit/iris/util/data/Shrinkwrap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/Shrinkwrap.java rename to core/src/main/java/com/volmit/iris/util/data/Shrinkwrap.java diff --git a/src/main/java/com/volmit/iris/util/data/VanillaBiomeMap.java b/core/src/main/java/com/volmit/iris/util/data/VanillaBiomeMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/VanillaBiomeMap.java rename to core/src/main/java/com/volmit/iris/util/data/VanillaBiomeMap.java diff --git a/src/main/java/com/volmit/iris/util/data/Varint.java b/core/src/main/java/com/volmit/iris/util/data/Varint.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/Varint.java rename to core/src/main/java/com/volmit/iris/util/data/Varint.java diff --git a/src/main/java/com/volmit/iris/util/data/WeightMap.java b/core/src/main/java/com/volmit/iris/util/data/WeightMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/WeightMap.java rename to core/src/main/java/com/volmit/iris/util/data/WeightMap.java diff --git a/src/main/java/com/volmit/iris/util/data/WeightedRandom.java b/core/src/main/java/com/volmit/iris/util/data/WeightedRandom.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/WeightedRandom.java rename to core/src/main/java/com/volmit/iris/util/data/WeightedRandom.java diff --git a/src/main/java/com/volmit/iris/util/data/Writable.java b/core/src/main/java/com/volmit/iris/util/data/Writable.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/Writable.java rename to core/src/main/java/com/volmit/iris/util/data/Writable.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/BitStorage.java b/core/src/main/java/com/volmit/iris/util/data/palette/BitStorage.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/BitStorage.java rename to core/src/main/java/com/volmit/iris/util/data/palette/BitStorage.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/CountConsumer.java b/core/src/main/java/com/volmit/iris/util/data/palette/CountConsumer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/CountConsumer.java rename to core/src/main/java/com/volmit/iris/util/data/palette/CountConsumer.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/CrudeIncrementalIntIdentityHashBiMap.java b/core/src/main/java/com/volmit/iris/util/data/palette/CrudeIncrementalIntIdentityHashBiMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/CrudeIncrementalIntIdentityHashBiMap.java rename to core/src/main/java/com/volmit/iris/util/data/palette/CrudeIncrementalIntIdentityHashBiMap.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/GlobalPalette.java b/core/src/main/java/com/volmit/iris/util/data/palette/GlobalPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/GlobalPalette.java rename to core/src/main/java/com/volmit/iris/util/data/palette/GlobalPalette.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/HashMapPalette.java b/core/src/main/java/com/volmit/iris/util/data/palette/HashMapPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/HashMapPalette.java rename to core/src/main/java/com/volmit/iris/util/data/palette/HashMapPalette.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/IdMap.java b/core/src/main/java/com/volmit/iris/util/data/palette/IdMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/IdMap.java rename to core/src/main/java/com/volmit/iris/util/data/palette/IdMap.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/IdMapper.java b/core/src/main/java/com/volmit/iris/util/data/palette/IdMapper.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/IdMapper.java rename to core/src/main/java/com/volmit/iris/util/data/palette/IdMapper.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/LinearPalette.java b/core/src/main/java/com/volmit/iris/util/data/palette/LinearPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/LinearPalette.java rename to core/src/main/java/com/volmit/iris/util/data/palette/LinearPalette.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/Mth.java b/core/src/main/java/com/volmit/iris/util/data/palette/Mth.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/Mth.java rename to core/src/main/java/com/volmit/iris/util/data/palette/Mth.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/Palette.java b/core/src/main/java/com/volmit/iris/util/data/palette/Palette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/Palette.java rename to core/src/main/java/com/volmit/iris/util/data/palette/Palette.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/PaletteAccess.java b/core/src/main/java/com/volmit/iris/util/data/palette/PaletteAccess.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/PaletteAccess.java rename to core/src/main/java/com/volmit/iris/util/data/palette/PaletteAccess.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/PaletteResize.java b/core/src/main/java/com/volmit/iris/util/data/palette/PaletteResize.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/PaletteResize.java rename to core/src/main/java/com/volmit/iris/util/data/palette/PaletteResize.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/PaletteType.java b/core/src/main/java/com/volmit/iris/util/data/palette/PaletteType.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/PaletteType.java rename to core/src/main/java/com/volmit/iris/util/data/palette/PaletteType.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/PalettedContainer.java b/core/src/main/java/com/volmit/iris/util/data/palette/PalettedContainer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/PalettedContainer.java rename to core/src/main/java/com/volmit/iris/util/data/palette/PalettedContainer.java diff --git a/src/main/java/com/volmit/iris/util/data/palette/QuartPos.java b/core/src/main/java/com/volmit/iris/util/data/palette/QuartPos.java similarity index 100% rename from src/main/java/com/volmit/iris/util/data/palette/QuartPos.java rename to core/src/main/java/com/volmit/iris/util/data/palette/QuartPos.java diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeContext.java b/core/src/main/java/com/volmit/iris/util/decree/DecreeContext.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/DecreeContext.java rename to core/src/main/java/com/volmit/iris/util/decree/DecreeContext.java diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeContextHandler.java b/core/src/main/java/com/volmit/iris/util/decree/DecreeContextHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/DecreeContextHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/DecreeContextHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeExecutor.java b/core/src/main/java/com/volmit/iris/util/decree/DecreeExecutor.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/DecreeExecutor.java rename to core/src/main/java/com/volmit/iris/util/decree/DecreeExecutor.java diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeNode.java b/core/src/main/java/com/volmit/iris/util/decree/DecreeNode.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/DecreeNode.java rename to core/src/main/java/com/volmit/iris/util/decree/DecreeNode.java diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeOrigin.java b/core/src/main/java/com/volmit/iris/util/decree/DecreeOrigin.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/DecreeOrigin.java rename to core/src/main/java/com/volmit/iris/util/decree/DecreeOrigin.java diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeParameter.java b/core/src/main/java/com/volmit/iris/util/decree/DecreeParameter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/DecreeParameter.java rename to core/src/main/java/com/volmit/iris/util/decree/DecreeParameter.java diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeParameterHandler.java b/core/src/main/java/com/volmit/iris/util/decree/DecreeParameterHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/DecreeParameterHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/DecreeParameterHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeSystem.java b/core/src/main/java/com/volmit/iris/util/decree/DecreeSystem.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/DecreeSystem.java rename to core/src/main/java/com/volmit/iris/util/decree/DecreeSystem.java diff --git a/src/main/java/com/volmit/iris/util/decree/annotations/Decree.java b/core/src/main/java/com/volmit/iris/util/decree/annotations/Decree.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/annotations/Decree.java rename to core/src/main/java/com/volmit/iris/util/decree/annotations/Decree.java diff --git a/src/main/java/com/volmit/iris/util/decree/annotations/Param.java b/core/src/main/java/com/volmit/iris/util/decree/annotations/Param.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/annotations/Param.java rename to core/src/main/java/com/volmit/iris/util/decree/annotations/Param.java diff --git a/src/main/java/com/volmit/iris/util/decree/context/BiomeContextHandler.java b/core/src/main/java/com/volmit/iris/util/decree/context/BiomeContextHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/context/BiomeContextHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/context/BiomeContextHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/context/DimensionContextHandler.java b/core/src/main/java/com/volmit/iris/util/decree/context/DimensionContextHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/context/DimensionContextHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/context/DimensionContextHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/context/GeneratorContextHandler.java b/core/src/main/java/com/volmit/iris/util/decree/context/GeneratorContextHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/context/GeneratorContextHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/context/GeneratorContextHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/context/RegionContextHandler.java b/core/src/main/java/com/volmit/iris/util/decree/context/RegionContextHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/context/RegionContextHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/context/RegionContextHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/context/VectorContextHandler.java b/core/src/main/java/com/volmit/iris/util/decree/context/VectorContextHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/context/VectorContextHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/context/VectorContextHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/context/WorldContextHandler.java b/core/src/main/java/com/volmit/iris/util/decree/context/WorldContextHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/context/WorldContextHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/context/WorldContextHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/exceptions/DecreeParsingException.java b/core/src/main/java/com/volmit/iris/util/decree/exceptions/DecreeParsingException.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/exceptions/DecreeParsingException.java rename to core/src/main/java/com/volmit/iris/util/decree/exceptions/DecreeParsingException.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/BiomeHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/BiomeHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/BiomeHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/BiomeHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/BlockVectorHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/BlockVectorHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/BlockVectorHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/BlockVectorHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/BooleanHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/BooleanHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/BooleanHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/BooleanHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/ByteHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/ByteHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/ByteHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/ByteHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/CaveHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/CaveHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/CaveHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/CaveHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/DimensionHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/DimensionHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/DimensionHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/DimensionHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/DoubleHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/DoubleHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/DoubleHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/DoubleHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/EntityHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/EntityHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/EntityHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/EntityHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/FloatHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/FloatHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/FloatHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/FloatHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/GeneratorHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/GeneratorHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/GeneratorHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/GeneratorHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/IntegerHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/IntegerHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/IntegerHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/IntegerHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/JigsawPieceHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/JigsawPieceHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/JigsawPieceHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/JigsawPieceHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/JigsawPoolHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/JigsawPoolHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/JigsawPoolHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/JigsawPoolHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/JigsawStructureHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/JigsawStructureHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/JigsawStructureHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/JigsawStructureHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/LongHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/LongHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/LongHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/LongHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/PlayerHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/PlayerHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/PlayerHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/PlayerHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/RegionHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/RegionHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/RegionHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/RegionHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/ScriptHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/ScriptHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/ScriptHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/ScriptHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/ShortHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/ShortHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/ShortHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/ShortHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/StringHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/StringHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/StringHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/StringHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/VectorHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/VectorHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/VectorHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/VectorHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/handlers/WorldHandler.java b/core/src/main/java/com/volmit/iris/util/decree/handlers/WorldHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/handlers/WorldHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/handlers/WorldHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/specialhandlers/DummyHandler.java b/core/src/main/java/com/volmit/iris/util/decree/specialhandlers/DummyHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/specialhandlers/DummyHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/specialhandlers/DummyHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/specialhandlers/NullablePlayerHandler.java b/core/src/main/java/com/volmit/iris/util/decree/specialhandlers/NullablePlayerHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/specialhandlers/NullablePlayerHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/specialhandlers/NullablePlayerHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/specialhandlers/ObjectHandler.java b/core/src/main/java/com/volmit/iris/util/decree/specialhandlers/ObjectHandler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/specialhandlers/ObjectHandler.java rename to core/src/main/java/com/volmit/iris/util/decree/specialhandlers/ObjectHandler.java diff --git a/src/main/java/com/volmit/iris/util/decree/virtual/VirtualDecreeCommand.java b/core/src/main/java/com/volmit/iris/util/decree/virtual/VirtualDecreeCommand.java similarity index 100% rename from src/main/java/com/volmit/iris/util/decree/virtual/VirtualDecreeCommand.java rename to core/src/main/java/com/volmit/iris/util/decree/virtual/VirtualDecreeCommand.java diff --git a/src/main/java/com/volmit/iris/util/documentation/BlockCoordinates.java b/core/src/main/java/com/volmit/iris/util/documentation/BlockCoordinates.java similarity index 100% rename from src/main/java/com/volmit/iris/util/documentation/BlockCoordinates.java rename to core/src/main/java/com/volmit/iris/util/documentation/BlockCoordinates.java diff --git a/src/main/java/com/volmit/iris/util/documentation/ChunkCoordinates.java b/core/src/main/java/com/volmit/iris/util/documentation/ChunkCoordinates.java similarity index 100% rename from src/main/java/com/volmit/iris/util/documentation/ChunkCoordinates.java rename to core/src/main/java/com/volmit/iris/util/documentation/ChunkCoordinates.java diff --git a/src/main/java/com/volmit/iris/util/documentation/ChunkRelativeBlockCoordinates.java b/core/src/main/java/com/volmit/iris/util/documentation/ChunkRelativeBlockCoordinates.java similarity index 100% rename from src/main/java/com/volmit/iris/util/documentation/ChunkRelativeBlockCoordinates.java rename to core/src/main/java/com/volmit/iris/util/documentation/ChunkRelativeBlockCoordinates.java diff --git a/src/main/java/com/volmit/iris/util/documentation/RegionCoordinates.java b/core/src/main/java/com/volmit/iris/util/documentation/RegionCoordinates.java similarity index 100% rename from src/main/java/com/volmit/iris/util/documentation/RegionCoordinates.java rename to core/src/main/java/com/volmit/iris/util/documentation/RegionCoordinates.java diff --git a/src/main/java/com/volmit/iris/util/exceptions/IrisException.java b/core/src/main/java/com/volmit/iris/util/exceptions/IrisException.java similarity index 100% rename from src/main/java/com/volmit/iris/util/exceptions/IrisException.java rename to core/src/main/java/com/volmit/iris/util/exceptions/IrisException.java diff --git a/src/main/java/com/volmit/iris/util/exceptions/MissingDimensionException.java b/core/src/main/java/com/volmit/iris/util/exceptions/MissingDimensionException.java similarity index 100% rename from src/main/java/com/volmit/iris/util/exceptions/MissingDimensionException.java rename to core/src/main/java/com/volmit/iris/util/exceptions/MissingDimensionException.java diff --git a/src/main/java/com/volmit/iris/util/format/C.java b/core/src/main/java/com/volmit/iris/util/format/C.java similarity index 100% rename from src/main/java/com/volmit/iris/util/format/C.java rename to core/src/main/java/com/volmit/iris/util/format/C.java diff --git a/src/main/java/com/volmit/iris/util/format/Form.java b/core/src/main/java/com/volmit/iris/util/format/Form.java similarity index 100% rename from src/main/java/com/volmit/iris/util/format/Form.java rename to core/src/main/java/com/volmit/iris/util/format/Form.java diff --git a/src/main/java/com/volmit/iris/util/format/MemoryMonitor.java b/core/src/main/java/com/volmit/iris/util/format/MemoryMonitor.java similarity index 100% rename from src/main/java/com/volmit/iris/util/format/MemoryMonitor.java rename to core/src/main/java/com/volmit/iris/util/format/MemoryMonitor.java diff --git a/src/main/java/com/volmit/iris/util/function/Consumer2.java b/core/src/main/java/com/volmit/iris/util/function/Consumer2.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Consumer2.java rename to core/src/main/java/com/volmit/iris/util/function/Consumer2.java diff --git a/src/main/java/com/volmit/iris/util/function/Consumer2IO.java b/core/src/main/java/com/volmit/iris/util/function/Consumer2IO.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Consumer2IO.java rename to core/src/main/java/com/volmit/iris/util/function/Consumer2IO.java diff --git a/src/main/java/com/volmit/iris/util/function/Consumer3.java b/core/src/main/java/com/volmit/iris/util/function/Consumer3.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Consumer3.java rename to core/src/main/java/com/volmit/iris/util/function/Consumer3.java diff --git a/src/main/java/com/volmit/iris/util/function/Consumer4.java b/core/src/main/java/com/volmit/iris/util/function/Consumer4.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Consumer4.java rename to core/src/main/java/com/volmit/iris/util/function/Consumer4.java diff --git a/src/main/java/com/volmit/iris/util/function/Consumer4IO.java b/core/src/main/java/com/volmit/iris/util/function/Consumer4IO.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Consumer4IO.java rename to core/src/main/java/com/volmit/iris/util/function/Consumer4IO.java diff --git a/src/main/java/com/volmit/iris/util/function/Consumer5.java b/core/src/main/java/com/volmit/iris/util/function/Consumer5.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Consumer5.java rename to core/src/main/java/com/volmit/iris/util/function/Consumer5.java diff --git a/src/main/java/com/volmit/iris/util/function/Consumer6.java b/core/src/main/java/com/volmit/iris/util/function/Consumer6.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Consumer6.java rename to core/src/main/java/com/volmit/iris/util/function/Consumer6.java diff --git a/src/main/java/com/volmit/iris/util/function/Consumer8.java b/core/src/main/java/com/volmit/iris/util/function/Consumer8.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Consumer8.java rename to core/src/main/java/com/volmit/iris/util/function/Consumer8.java diff --git a/src/main/java/com/volmit/iris/util/function/Function2.java b/core/src/main/java/com/volmit/iris/util/function/Function2.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Function2.java rename to core/src/main/java/com/volmit/iris/util/function/Function2.java diff --git a/src/main/java/com/volmit/iris/util/function/Function3.java b/core/src/main/java/com/volmit/iris/util/function/Function3.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Function3.java rename to core/src/main/java/com/volmit/iris/util/function/Function3.java diff --git a/src/main/java/com/volmit/iris/util/function/Function4.java b/core/src/main/java/com/volmit/iris/util/function/Function4.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Function4.java rename to core/src/main/java/com/volmit/iris/util/function/Function4.java diff --git a/src/main/java/com/volmit/iris/util/function/NastyFunction.java b/core/src/main/java/com/volmit/iris/util/function/NastyFunction.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/NastyFunction.java rename to core/src/main/java/com/volmit/iris/util/function/NastyFunction.java diff --git a/src/main/java/com/volmit/iris/util/function/NastyFuture.java b/core/src/main/java/com/volmit/iris/util/function/NastyFuture.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/NastyFuture.java rename to core/src/main/java/com/volmit/iris/util/function/NastyFuture.java diff --git a/src/main/java/com/volmit/iris/util/function/NastyRunnable.java b/core/src/main/java/com/volmit/iris/util/function/NastyRunnable.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/NastyRunnable.java rename to core/src/main/java/com/volmit/iris/util/function/NastyRunnable.java diff --git a/src/main/java/com/volmit/iris/util/function/NastySupplier.java b/core/src/main/java/com/volmit/iris/util/function/NastySupplier.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/NastySupplier.java rename to core/src/main/java/com/volmit/iris/util/function/NastySupplier.java diff --git a/src/main/java/com/volmit/iris/util/function/NoiseInjector.java b/core/src/main/java/com/volmit/iris/util/function/NoiseInjector.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/NoiseInjector.java rename to core/src/main/java/com/volmit/iris/util/function/NoiseInjector.java diff --git a/src/main/java/com/volmit/iris/util/function/NoiseProvider.java b/core/src/main/java/com/volmit/iris/util/function/NoiseProvider.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/NoiseProvider.java rename to core/src/main/java/com/volmit/iris/util/function/NoiseProvider.java diff --git a/src/main/java/com/volmit/iris/util/function/NoiseProvider3.java b/core/src/main/java/com/volmit/iris/util/function/NoiseProvider3.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/NoiseProvider3.java rename to core/src/main/java/com/volmit/iris/util/function/NoiseProvider3.java diff --git a/src/main/java/com/volmit/iris/util/function/Supplier2.java b/core/src/main/java/com/volmit/iris/util/function/Supplier2.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Supplier2.java rename to core/src/main/java/com/volmit/iris/util/function/Supplier2.java diff --git a/src/main/java/com/volmit/iris/util/function/Supplier3.java b/core/src/main/java/com/volmit/iris/util/function/Supplier3.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Supplier3.java rename to core/src/main/java/com/volmit/iris/util/function/Supplier3.java diff --git a/src/main/java/com/volmit/iris/util/function/Supplier3R.java b/core/src/main/java/com/volmit/iris/util/function/Supplier3R.java similarity index 100% rename from src/main/java/com/volmit/iris/util/function/Supplier3R.java rename to core/src/main/java/com/volmit/iris/util/function/Supplier3R.java diff --git a/src/main/java/com/volmit/iris/util/hunk/Hunk.java b/core/src/main/java/com/volmit/iris/util/hunk/Hunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/Hunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/Hunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/HunkFace.java b/core/src/main/java/com/volmit/iris/util/hunk/HunkFace.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/HunkFace.java rename to core/src/main/java/com/volmit/iris/util/hunk/HunkFace.java diff --git a/src/main/java/com/volmit/iris/util/hunk/HunkFactory.java b/core/src/main/java/com/volmit/iris/util/hunk/HunkFactory.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/HunkFactory.java rename to core/src/main/java/com/volmit/iris/util/hunk/HunkFactory.java diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/DataBits.java b/core/src/main/java/com/volmit/iris/util/hunk/bits/DataBits.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/bits/DataBits.java rename to core/src/main/java/com/volmit/iris/util/hunk/bits/DataBits.java diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/DataContainer.java b/core/src/main/java/com/volmit/iris/util/hunk/bits/DataContainer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/bits/DataContainer.java rename to core/src/main/java/com/volmit/iris/util/hunk/bits/DataContainer.java diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/HashPalette.java b/core/src/main/java/com/volmit/iris/util/hunk/bits/HashPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/bits/HashPalette.java rename to core/src/main/java/com/volmit/iris/util/hunk/bits/HashPalette.java diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/LinearPalette.java b/core/src/main/java/com/volmit/iris/util/hunk/bits/LinearPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/bits/LinearPalette.java rename to core/src/main/java/com/volmit/iris/util/hunk/bits/LinearPalette.java diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/Palette.java b/core/src/main/java/com/volmit/iris/util/hunk/bits/Palette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/bits/Palette.java rename to core/src/main/java/com/volmit/iris/util/hunk/bits/Palette.java diff --git a/src/main/java/com/volmit/iris/util/hunk/bits/Writable.java b/core/src/main/java/com/volmit/iris/util/hunk/bits/Writable.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/bits/Writable.java rename to core/src/main/java/com/volmit/iris/util/hunk/bits/Writable.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/ArrayHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/ArrayHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/ArrayHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/ArrayHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/AtomicDoubleHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/AtomicDoubleHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/AtomicDoubleHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/AtomicDoubleHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/AtomicHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/AtomicHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/AtomicHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/AtomicHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/AtomicIntegerHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/AtomicIntegerHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/AtomicIntegerHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/AtomicIntegerHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/AtomicLongHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/AtomicLongHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/AtomicLongHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/AtomicLongHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/MappedSyncHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/MappedSyncHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/MappedSyncHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/MappedSyncHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/PaletteHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/PaletteHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/PaletteHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/PaletteHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/PaletteOrHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/StorageHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/StorageHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/StorageHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/StorageHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/SynchronizedArrayHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/storage/SynchronizedArrayHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/storage/SynchronizedArrayHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/storage/SynchronizedArrayHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkHolder.java b/core/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkHolder.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkHolder.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkHolder.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/ChunkBiomeHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/ChunkBiomeHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/ChunkBiomeHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/ChunkBiomeHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkHolder.java b/core/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkHolder.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkHolder.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkHolder.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/ChunkHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/ChunkHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/ChunkHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/ChunkHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/DriftHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/DriftHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/DriftHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/DriftHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/FringedHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/FringedHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/FringedHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/FringedHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/FunctionalHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/FunctionalHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/FunctionalHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/FunctionalHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/HunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/HunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/HunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/HunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/InvertedHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/InvertedHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/InvertedHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/InvertedHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/ListeningHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/view/ListeningHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/ListeningHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/ListeningHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/ReadOnlyHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/view/ReadOnlyHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/ReadOnlyHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/ReadOnlyHunk.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/RotatedXHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/RotatedXHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/RotatedXHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/RotatedXHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/RotatedYHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/RotatedYHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/RotatedYHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/RotatedYHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/RotatedZHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/RotatedZHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/RotatedZHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/RotatedZHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/SynchronizedHunkView.java b/core/src/main/java/com/volmit/iris/util/hunk/view/SynchronizedHunkView.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/SynchronizedHunkView.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/SynchronizedHunkView.java diff --git a/src/main/java/com/volmit/iris/util/hunk/view/WriteTrackHunk.java b/core/src/main/java/com/volmit/iris/util/hunk/view/WriteTrackHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/hunk/view/WriteTrackHunk.java rename to core/src/main/java/com/volmit/iris/util/hunk/view/WriteTrackHunk.java diff --git a/src/main/java/com/volmit/iris/util/interpolation/CompiledStarcast.java b/core/src/main/java/com/volmit/iris/util/interpolation/CompiledStarcast.java similarity index 100% rename from src/main/java/com/volmit/iris/util/interpolation/CompiledStarcast.java rename to core/src/main/java/com/volmit/iris/util/interpolation/CompiledStarcast.java diff --git a/src/main/java/com/volmit/iris/util/interpolation/InterpolationMethod.java b/core/src/main/java/com/volmit/iris/util/interpolation/InterpolationMethod.java similarity index 100% rename from src/main/java/com/volmit/iris/util/interpolation/InterpolationMethod.java rename to core/src/main/java/com/volmit/iris/util/interpolation/InterpolationMethod.java diff --git a/src/main/java/com/volmit/iris/util/interpolation/InterpolationMethod3D.java b/core/src/main/java/com/volmit/iris/util/interpolation/InterpolationMethod3D.java similarity index 100% rename from src/main/java/com/volmit/iris/util/interpolation/InterpolationMethod3D.java rename to core/src/main/java/com/volmit/iris/util/interpolation/InterpolationMethod3D.java diff --git a/src/main/java/com/volmit/iris/util/interpolation/InterpolationType.java b/core/src/main/java/com/volmit/iris/util/interpolation/InterpolationType.java similarity index 100% rename from src/main/java/com/volmit/iris/util/interpolation/InterpolationType.java rename to core/src/main/java/com/volmit/iris/util/interpolation/InterpolationType.java diff --git a/src/main/java/com/volmit/iris/util/interpolation/IrisInterpolation.java b/core/src/main/java/com/volmit/iris/util/interpolation/IrisInterpolation.java similarity index 100% rename from src/main/java/com/volmit/iris/util/interpolation/IrisInterpolation.java rename to core/src/main/java/com/volmit/iris/util/interpolation/IrisInterpolation.java diff --git a/src/main/java/com/volmit/iris/util/interpolation/Starcast.java b/core/src/main/java/com/volmit/iris/util/interpolation/Starcast.java similarity index 100% rename from src/main/java/com/volmit/iris/util/interpolation/Starcast.java rename to core/src/main/java/com/volmit/iris/util/interpolation/Starcast.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/Element.java b/core/src/main/java/com/volmit/iris/util/inventorygui/Element.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/Element.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/Element.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/ElementEvent.java b/core/src/main/java/com/volmit/iris/util/inventorygui/ElementEvent.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/ElementEvent.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/ElementEvent.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/RandomColor.java b/core/src/main/java/com/volmit/iris/util/inventorygui/RandomColor.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/RandomColor.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/RandomColor.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/UIElement.java b/core/src/main/java/com/volmit/iris/util/inventorygui/UIElement.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/UIElement.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/UIElement.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/UIStaticDecorator.java b/core/src/main/java/com/volmit/iris/util/inventorygui/UIStaticDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/UIStaticDecorator.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/UIStaticDecorator.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/UIVoidDecorator.java b/core/src/main/java/com/volmit/iris/util/inventorygui/UIVoidDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/UIVoidDecorator.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/UIVoidDecorator.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/UIWindow.java b/core/src/main/java/com/volmit/iris/util/inventorygui/UIWindow.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/UIWindow.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/UIWindow.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/Window.java b/core/src/main/java/com/volmit/iris/util/inventorygui/Window.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/Window.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/Window.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/WindowDecorator.java b/core/src/main/java/com/volmit/iris/util/inventorygui/WindowDecorator.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/WindowDecorator.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/WindowDecorator.java diff --git a/src/main/java/com/volmit/iris/util/inventorygui/WindowResolution.java b/core/src/main/java/com/volmit/iris/util/inventorygui/WindowResolution.java similarity index 100% rename from src/main/java/com/volmit/iris/util/inventorygui/WindowResolution.java rename to core/src/main/java/com/volmit/iris/util/inventorygui/WindowResolution.java diff --git a/src/main/java/com/volmit/iris/util/io/Converter.java b/core/src/main/java/com/volmit/iris/util/io/Converter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/Converter.java rename to core/src/main/java/com/volmit/iris/util/io/Converter.java diff --git a/src/main/java/com/volmit/iris/util/io/CustomOutputStream.java b/core/src/main/java/com/volmit/iris/util/io/CustomOutputStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/CustomOutputStream.java rename to core/src/main/java/com/volmit/iris/util/io/CustomOutputStream.java diff --git a/src/main/java/com/volmit/iris/util/io/FileWatcher.java b/core/src/main/java/com/volmit/iris/util/io/FileWatcher.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/FileWatcher.java rename to core/src/main/java/com/volmit/iris/util/io/FileWatcher.java diff --git a/src/main/java/com/volmit/iris/util/io/FolderWatcher.java b/core/src/main/java/com/volmit/iris/util/io/FolderWatcher.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/FolderWatcher.java rename to core/src/main/java/com/volmit/iris/util/io/FolderWatcher.java diff --git a/src/main/java/com/volmit/iris/util/io/IO.java b/core/src/main/java/com/volmit/iris/util/io/IO.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/IO.java rename to core/src/main/java/com/volmit/iris/util/io/IO.java diff --git a/src/main/java/com/volmit/iris/util/io/IORunnable.java b/core/src/main/java/com/volmit/iris/util/io/IORunnable.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/IORunnable.java rename to core/src/main/java/com/volmit/iris/util/io/IORunnable.java diff --git a/src/main/java/com/volmit/iris/util/io/InstanceState.java b/core/src/main/java/com/volmit/iris/util/io/InstanceState.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/InstanceState.java rename to core/src/main/java/com/volmit/iris/util/io/InstanceState.java diff --git a/src/main/java/com/volmit/iris/util/io/JarScanner.java b/core/src/main/java/com/volmit/iris/util/io/JarScanner.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/JarScanner.java rename to core/src/main/java/com/volmit/iris/util/io/JarScanner.java diff --git a/src/main/java/com/volmit/iris/util/io/ReactiveFolder.java b/core/src/main/java/com/volmit/iris/util/io/ReactiveFolder.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/ReactiveFolder.java rename to core/src/main/java/com/volmit/iris/util/io/ReactiveFolder.java diff --git a/src/main/java/com/volmit/iris/util/io/VoidOutputStream.java b/core/src/main/java/com/volmit/iris/util/io/VoidOutputStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/io/VoidOutputStream.java rename to core/src/main/java/com/volmit/iris/util/io/VoidOutputStream.java diff --git a/src/main/java/com/volmit/iris/util/json/HTTP.java b/core/src/main/java/com/volmit/iris/util/json/HTTP.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/HTTP.java rename to core/src/main/java/com/volmit/iris/util/json/HTTP.java diff --git a/src/main/java/com/volmit/iris/util/json/HTTPTokener.java b/core/src/main/java/com/volmit/iris/util/json/HTTPTokener.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/HTTPTokener.java rename to core/src/main/java/com/volmit/iris/util/json/HTTPTokener.java diff --git a/src/main/java/com/volmit/iris/util/json/JSONArray.java b/core/src/main/java/com/volmit/iris/util/json/JSONArray.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/JSONArray.java rename to core/src/main/java/com/volmit/iris/util/json/JSONArray.java diff --git a/src/main/java/com/volmit/iris/util/json/JSONException.java b/core/src/main/java/com/volmit/iris/util/json/JSONException.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/JSONException.java rename to core/src/main/java/com/volmit/iris/util/json/JSONException.java diff --git a/src/main/java/com/volmit/iris/util/json/JSONML.java b/core/src/main/java/com/volmit/iris/util/json/JSONML.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/JSONML.java rename to core/src/main/java/com/volmit/iris/util/json/JSONML.java diff --git a/src/main/java/com/volmit/iris/util/json/JSONObject.java b/core/src/main/java/com/volmit/iris/util/json/JSONObject.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/JSONObject.java rename to core/src/main/java/com/volmit/iris/util/json/JSONObject.java diff --git a/src/main/java/com/volmit/iris/util/json/JSONString.java b/core/src/main/java/com/volmit/iris/util/json/JSONString.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/JSONString.java rename to core/src/main/java/com/volmit/iris/util/json/JSONString.java diff --git a/src/main/java/com/volmit/iris/util/json/JSONStringer.java b/core/src/main/java/com/volmit/iris/util/json/JSONStringer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/JSONStringer.java rename to core/src/main/java/com/volmit/iris/util/json/JSONStringer.java diff --git a/src/main/java/com/volmit/iris/util/json/JSONTokener.java b/core/src/main/java/com/volmit/iris/util/json/JSONTokener.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/JSONTokener.java rename to core/src/main/java/com/volmit/iris/util/json/JSONTokener.java diff --git a/src/main/java/com/volmit/iris/util/json/JSONWriter.java b/core/src/main/java/com/volmit/iris/util/json/JSONWriter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/JSONWriter.java rename to core/src/main/java/com/volmit/iris/util/json/JSONWriter.java diff --git a/src/main/java/com/volmit/iris/util/json/XML.java b/core/src/main/java/com/volmit/iris/util/json/XML.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/XML.java rename to core/src/main/java/com/volmit/iris/util/json/XML.java diff --git a/src/main/java/com/volmit/iris/util/json/XMLTokener.java b/core/src/main/java/com/volmit/iris/util/json/XMLTokener.java similarity index 100% rename from src/main/java/com/volmit/iris/util/json/XMLTokener.java rename to core/src/main/java/com/volmit/iris/util/json/XMLTokener.java diff --git a/src/main/java/com/volmit/iris/util/mantle/Mantle.java b/core/src/main/java/com/volmit/iris/util/mantle/Mantle.java similarity index 100% rename from src/main/java/com/volmit/iris/util/mantle/Mantle.java rename to core/src/main/java/com/volmit/iris/util/mantle/Mantle.java diff --git a/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java b/core/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/mantle/MantleChunk.java rename to core/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java diff --git a/src/main/java/com/volmit/iris/util/mantle/MantleFlag.java b/core/src/main/java/com/volmit/iris/util/mantle/MantleFlag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/mantle/MantleFlag.java rename to core/src/main/java/com/volmit/iris/util/mantle/MantleFlag.java diff --git a/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java b/core/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java similarity index 100% rename from src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java rename to core/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java diff --git a/src/main/java/com/volmit/iris/util/math/AlignedPoint.java b/core/src/main/java/com/volmit/iris/util/math/AlignedPoint.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/AlignedPoint.java rename to core/src/main/java/com/volmit/iris/util/math/AlignedPoint.java diff --git a/src/main/java/com/volmit/iris/util/math/Average.java b/core/src/main/java/com/volmit/iris/util/math/Average.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Average.java rename to core/src/main/java/com/volmit/iris/util/math/Average.java diff --git a/src/main/java/com/volmit/iris/util/math/AxisAlignedBB.java b/core/src/main/java/com/volmit/iris/util/math/AxisAlignedBB.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/AxisAlignedBB.java rename to core/src/main/java/com/volmit/iris/util/math/AxisAlignedBB.java diff --git a/src/main/java/com/volmit/iris/util/math/BlockPosition.java b/core/src/main/java/com/volmit/iris/util/math/BlockPosition.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/BlockPosition.java rename to core/src/main/java/com/volmit/iris/util/math/BlockPosition.java diff --git a/src/main/java/com/volmit/iris/util/math/CDou.java b/core/src/main/java/com/volmit/iris/util/math/CDou.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/CDou.java rename to core/src/main/java/com/volmit/iris/util/math/CDou.java diff --git a/src/main/java/com/volmit/iris/util/math/DOP.java b/core/src/main/java/com/volmit/iris/util/math/DOP.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/DOP.java rename to core/src/main/java/com/volmit/iris/util/math/DOP.java diff --git a/src/main/java/com/volmit/iris/util/math/Direction.java b/core/src/main/java/com/volmit/iris/util/math/Direction.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Direction.java rename to core/src/main/java/com/volmit/iris/util/math/Direction.java diff --git a/src/main/java/com/volmit/iris/util/math/FinalInteger.java b/core/src/main/java/com/volmit/iris/util/math/FinalInteger.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/FinalInteger.java rename to core/src/main/java/com/volmit/iris/util/math/FinalInteger.java diff --git a/src/main/java/com/volmit/iris/util/math/INode.java b/core/src/main/java/com/volmit/iris/util/math/INode.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/INode.java rename to core/src/main/java/com/volmit/iris/util/math/INode.java diff --git a/src/main/java/com/volmit/iris/util/math/IrisMathHelper.java b/core/src/main/java/com/volmit/iris/util/math/IrisMathHelper.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/IrisMathHelper.java rename to core/src/main/java/com/volmit/iris/util/math/IrisMathHelper.java diff --git a/src/main/java/com/volmit/iris/util/math/KochanekBartelsInterpolation.java b/core/src/main/java/com/volmit/iris/util/math/KochanekBartelsInterpolation.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/KochanekBartelsInterpolation.java rename to core/src/main/java/com/volmit/iris/util/math/KochanekBartelsInterpolation.java diff --git a/src/main/java/com/volmit/iris/util/math/M.java b/core/src/main/java/com/volmit/iris/util/math/M.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/M.java rename to core/src/main/java/com/volmit/iris/util/math/M.java diff --git a/src/main/java/com/volmit/iris/util/math/MathHelper.java b/core/src/main/java/com/volmit/iris/util/math/MathHelper.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/MathHelper.java rename to core/src/main/java/com/volmit/iris/util/math/MathHelper.java diff --git a/src/main/java/com/volmit/iris/util/math/PathInterpolation.java b/core/src/main/java/com/volmit/iris/util/math/PathInterpolation.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/PathInterpolation.java rename to core/src/main/java/com/volmit/iris/util/math/PathInterpolation.java diff --git a/src/main/java/com/volmit/iris/util/math/Point3d.java b/core/src/main/java/com/volmit/iris/util/math/Point3d.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Point3d.java rename to core/src/main/java/com/volmit/iris/util/math/Point3d.java diff --git a/src/main/java/com/volmit/iris/util/math/Point3f.java b/core/src/main/java/com/volmit/iris/util/math/Point3f.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Point3f.java rename to core/src/main/java/com/volmit/iris/util/math/Point3f.java diff --git a/src/main/java/com/volmit/iris/util/math/Point4d.java b/core/src/main/java/com/volmit/iris/util/math/Point4d.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Point4d.java rename to core/src/main/java/com/volmit/iris/util/math/Point4d.java diff --git a/src/main/java/com/volmit/iris/util/math/Point4f.java b/core/src/main/java/com/volmit/iris/util/math/Point4f.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Point4f.java rename to core/src/main/java/com/volmit/iris/util/math/Point4f.java diff --git a/src/main/java/com/volmit/iris/util/math/Position2.java b/core/src/main/java/com/volmit/iris/util/math/Position2.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Position2.java rename to core/src/main/java/com/volmit/iris/util/math/Position2.java diff --git a/src/main/java/com/volmit/iris/util/math/RNG.java b/core/src/main/java/com/volmit/iris/util/math/RNG.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/RNG.java rename to core/src/main/java/com/volmit/iris/util/math/RNG.java diff --git a/src/main/java/com/volmit/iris/util/math/RollingSequence.java b/core/src/main/java/com/volmit/iris/util/math/RollingSequence.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/RollingSequence.java rename to core/src/main/java/com/volmit/iris/util/math/RollingSequence.java diff --git a/src/main/java/com/volmit/iris/util/math/Spiral.java b/core/src/main/java/com/volmit/iris/util/math/Spiral.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Spiral.java rename to core/src/main/java/com/volmit/iris/util/math/Spiral.java diff --git a/src/main/java/com/volmit/iris/util/math/Spiraled.java b/core/src/main/java/com/volmit/iris/util/math/Spiraled.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Spiraled.java rename to core/src/main/java/com/volmit/iris/util/math/Spiraled.java diff --git a/src/main/java/com/volmit/iris/util/math/Spiraler.java b/core/src/main/java/com/volmit/iris/util/math/Spiraler.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Spiraler.java rename to core/src/main/java/com/volmit/iris/util/math/Spiraler.java diff --git a/src/main/java/com/volmit/iris/util/math/Tuple2d.java b/core/src/main/java/com/volmit/iris/util/math/Tuple2d.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Tuple2d.java rename to core/src/main/java/com/volmit/iris/util/math/Tuple2d.java diff --git a/src/main/java/com/volmit/iris/util/math/Tuple2f.java b/core/src/main/java/com/volmit/iris/util/math/Tuple2f.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Tuple2f.java rename to core/src/main/java/com/volmit/iris/util/math/Tuple2f.java diff --git a/src/main/java/com/volmit/iris/util/math/Tuple3d.java b/core/src/main/java/com/volmit/iris/util/math/Tuple3d.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Tuple3d.java rename to core/src/main/java/com/volmit/iris/util/math/Tuple3d.java diff --git a/src/main/java/com/volmit/iris/util/math/Tuple3f.java b/core/src/main/java/com/volmit/iris/util/math/Tuple3f.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Tuple3f.java rename to core/src/main/java/com/volmit/iris/util/math/Tuple3f.java diff --git a/src/main/java/com/volmit/iris/util/math/Tuple4d.java b/core/src/main/java/com/volmit/iris/util/math/Tuple4d.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Tuple4d.java rename to core/src/main/java/com/volmit/iris/util/math/Tuple4d.java diff --git a/src/main/java/com/volmit/iris/util/math/Tuple4f.java b/core/src/main/java/com/volmit/iris/util/math/Tuple4f.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Tuple4f.java rename to core/src/main/java/com/volmit/iris/util/math/Tuple4f.java diff --git a/src/main/java/com/volmit/iris/util/math/VecMathUtil.java b/core/src/main/java/com/volmit/iris/util/math/VecMathUtil.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/VecMathUtil.java rename to core/src/main/java/com/volmit/iris/util/math/VecMathUtil.java diff --git a/src/main/java/com/volmit/iris/util/math/Vector2d.java b/core/src/main/java/com/volmit/iris/util/math/Vector2d.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Vector2d.java rename to core/src/main/java/com/volmit/iris/util/math/Vector2d.java diff --git a/src/main/java/com/volmit/iris/util/math/Vector2f.java b/core/src/main/java/com/volmit/iris/util/math/Vector2f.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Vector2f.java rename to core/src/main/java/com/volmit/iris/util/math/Vector2f.java diff --git a/src/main/java/com/volmit/iris/util/math/Vector3d.java b/core/src/main/java/com/volmit/iris/util/math/Vector3d.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Vector3d.java rename to core/src/main/java/com/volmit/iris/util/math/Vector3d.java diff --git a/src/main/java/com/volmit/iris/util/math/Vector3f.java b/core/src/main/java/com/volmit/iris/util/math/Vector3f.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/Vector3f.java rename to core/src/main/java/com/volmit/iris/util/math/Vector3f.java diff --git a/src/main/java/com/volmit/iris/util/math/VectorMath.java b/core/src/main/java/com/volmit/iris/util/math/VectorMath.java similarity index 100% rename from src/main/java/com/volmit/iris/util/math/VectorMath.java rename to core/src/main/java/com/volmit/iris/util/math/VectorMath.java diff --git a/src/main/java/com/volmit/iris/util/matter/IrisMatter.java b/core/src/main/java/com/volmit/iris/util/matter/IrisMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/IrisMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/IrisMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/Matter.java b/core/src/main/java/com/volmit/iris/util/matter/Matter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/Matter.java rename to core/src/main/java/com/volmit/iris/util/matter/Matter.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterBiomeInject.java b/core/src/main/java/com/volmit/iris/util/matter/MatterBiomeInject.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterBiomeInject.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterBiomeInject.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterCavern.java b/core/src/main/java/com/volmit/iris/util/matter/MatterCavern.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterCavern.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterCavern.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterEntity.java b/core/src/main/java/com/volmit/iris/util/matter/MatterEntity.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterEntity.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterEntity.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterEntityGroup.java b/core/src/main/java/com/volmit/iris/util/matter/MatterEntityGroup.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterEntityGroup.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterEntityGroup.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterFilter.java b/core/src/main/java/com/volmit/iris/util/matter/MatterFilter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterFilter.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterFilter.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterFluidBody.java b/core/src/main/java/com/volmit/iris/util/matter/MatterFluidBody.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterFluidBody.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterFluidBody.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterHeader.java b/core/src/main/java/com/volmit/iris/util/matter/MatterHeader.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterHeader.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterHeader.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterMarker.java b/core/src/main/java/com/volmit/iris/util/matter/MatterMarker.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterMarker.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterMarker.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterPalette.java b/core/src/main/java/com/volmit/iris/util/matter/MatterPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterPalette.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterPalette.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterPlacer.java b/core/src/main/java/com/volmit/iris/util/matter/MatterPlacer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterPlacer.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterPlacer.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterReader.java b/core/src/main/java/com/volmit/iris/util/matter/MatterReader.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterReader.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterReader.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterSlice.java b/core/src/main/java/com/volmit/iris/util/matter/MatterSlice.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterSlice.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterSlice.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterStructurePOI.java b/core/src/main/java/com/volmit/iris/util/matter/MatterStructurePOI.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterStructurePOI.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterStructurePOI.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterUpdate.java b/core/src/main/java/com/volmit/iris/util/matter/MatterUpdate.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterUpdate.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterUpdate.java diff --git a/src/main/java/com/volmit/iris/util/matter/MatterWriter.java b/core/src/main/java/com/volmit/iris/util/matter/MatterWriter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/MatterWriter.java rename to core/src/main/java/com/volmit/iris/util/matter/MatterWriter.java diff --git a/src/main/java/com/volmit/iris/util/matter/Sliced.java b/core/src/main/java/com/volmit/iris/util/matter/Sliced.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/Sliced.java rename to core/src/main/java/com/volmit/iris/util/matter/Sliced.java diff --git a/src/main/java/com/volmit/iris/util/matter/TileWrapper.java b/core/src/main/java/com/volmit/iris/util/matter/TileWrapper.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/TileWrapper.java rename to core/src/main/java/com/volmit/iris/util/matter/TileWrapper.java diff --git a/src/main/java/com/volmit/iris/util/matter/WorldMatter.java b/core/src/main/java/com/volmit/iris/util/matter/WorldMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/WorldMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/WorldMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/BiomeInjectMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/BiomeInjectMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/BiomeInjectMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/BiomeInjectMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/CompoundMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/CompoundMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/CompoundMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/CompoundMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/JigsawPieceMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/JigsawPieceMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/JigsawPieceMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/JigsawPieceMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/RawMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/RawMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/RawMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/RawMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/RegistryMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/RegistryMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/RegistryMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/RegistryMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/SpawnerMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/SpawnerMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/SpawnerMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/SpawnerMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/StringMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/StringMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/StringMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/StringMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/StructurePOIMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/StructurePOIMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/StructurePOIMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/StructurePOIMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/TileMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/TileMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/TileMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/TileMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/UpdateMatter.java b/core/src/main/java/com/volmit/iris/util/matter/slices/UpdateMatter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/UpdateMatter.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/UpdateMatter.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/container/JigsawPieceContainer.java b/core/src/main/java/com/volmit/iris/util/matter/slices/container/JigsawPieceContainer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/container/JigsawPieceContainer.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/container/JigsawPieceContainer.java diff --git a/src/main/java/com/volmit/iris/util/matter/slices/container/RegistrantContainer.java b/core/src/main/java/com/volmit/iris/util/matter/slices/container/RegistrantContainer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/matter/slices/container/RegistrantContainer.java rename to core/src/main/java/com/volmit/iris/util/matter/slices/container/RegistrantContainer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/NBTDeserializer.java b/core/src/main/java/com/volmit/iris/util/nbt/io/NBTDeserializer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/NBTDeserializer.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/NBTDeserializer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/NBTInputStream.java b/core/src/main/java/com/volmit/iris/util/nbt/io/NBTInputStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/NBTInputStream.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/NBTInputStream.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/NBTOutputStream.java b/core/src/main/java/com/volmit/iris/util/nbt/io/NBTOutputStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/NBTOutputStream.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/NBTOutputStream.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/NBTSerializer.java b/core/src/main/java/com/volmit/iris/util/nbt/io/NBTSerializer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/NBTSerializer.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/NBTSerializer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/NBTUtil.java b/core/src/main/java/com/volmit/iris/util/nbt/io/NBTUtil.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/NBTUtil.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/NBTUtil.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/NamedTag.java b/core/src/main/java/com/volmit/iris/util/nbt/io/NamedTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/NamedTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/NamedTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/ParseException.java b/core/src/main/java/com/volmit/iris/util/nbt/io/ParseException.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/ParseException.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/ParseException.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/SNBTDeserializer.java b/core/src/main/java/com/volmit/iris/util/nbt/io/SNBTDeserializer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/SNBTDeserializer.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/SNBTDeserializer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/SNBTParser.java b/core/src/main/java/com/volmit/iris/util/nbt/io/SNBTParser.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/SNBTParser.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/SNBTParser.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/SNBTSerializer.java b/core/src/main/java/com/volmit/iris/util/nbt/io/SNBTSerializer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/SNBTSerializer.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/SNBTSerializer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/SNBTUtil.java b/core/src/main/java/com/volmit/iris/util/nbt/io/SNBTUtil.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/SNBTUtil.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/SNBTUtil.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/SNBTWriter.java b/core/src/main/java/com/volmit/iris/util/nbt/io/SNBTWriter.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/SNBTWriter.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/SNBTWriter.java diff --git a/src/main/java/com/volmit/iris/util/nbt/io/StringPointer.java b/core/src/main/java/com/volmit/iris/util/nbt/io/StringPointer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/io/StringPointer.java rename to core/src/main/java/com/volmit/iris/util/nbt/io/StringPointer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/Chunk.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/Chunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/Chunk.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/Chunk.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/CompressionType.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/CompressionType.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/CompressionType.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/CompressionType.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/ExceptionFunction.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/ExceptionFunction.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/ExceptionFunction.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/ExceptionFunction.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/LoadFlags.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/LoadFlags.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/LoadFlags.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/LoadFlags.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/MCAFile.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/MCAFile.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/MCAFile.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/MCAFile.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/MCAUtil.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/MCAUtil.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/MCAUtil.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/MCAUtil.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/NBTWorld.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/NBTWorld.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/NBTWorld.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/NBTWorld.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/Section.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/Section.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/Section.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/Section.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCABiomeContainer.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCABiomeContainer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCABiomeContainer.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCABiomeContainer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCABitStorage.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCABitStorage.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCABitStorage.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCABitStorage.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAChunkBiomeContainer.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAChunkBiomeContainer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAChunkBiomeContainer.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAChunkBiomeContainer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCACountConsumer.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCACountConsumer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCACountConsumer.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCACountConsumer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCACrudeIncrementalIntIdentityHashBiMap.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCACrudeIncrementalIntIdentityHashBiMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCACrudeIncrementalIntIdentityHashBiMap.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCACrudeIncrementalIntIdentityHashBiMap.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAGlobalPalette.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAGlobalPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAGlobalPalette.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAGlobalPalette.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAHashMapPalette.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAHashMapPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAHashMapPalette.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAHashMapPalette.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMap.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMap.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMap.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMapper.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMapper.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMapper.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMapper.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCALinearPalette.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCALinearPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCALinearPalette.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCALinearPalette.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAMth.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAMth.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAMth.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAMth.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalette.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalette.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalette.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalette.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteAccess.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteAccess.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteAccess.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteAccess.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteResize.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteResize.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteResize.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteResize.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalettedContainer.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalettedContainer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalettedContainer.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalettedContainer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAQuartPos.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAQuartPos.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAQuartPos.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAQuartPos.java diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAWrappedPalettedContainer.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAWrappedPalettedContainer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAWrappedPalettedContainer.java rename to core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAWrappedPalettedContainer.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/ArrayTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/ArrayTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/ArrayTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/ArrayTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/ByteArrayTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/ByteArrayTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/ByteArrayTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/ByteArrayTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/ByteTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/ByteTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/ByteTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/ByteTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/CompoundTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/CompoundTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/CompoundTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/CompoundTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/DoubleTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/DoubleTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/DoubleTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/DoubleTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/EndTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/EndTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/EndTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/EndTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/FloatTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/FloatTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/FloatTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/FloatTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/IntArrayTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/IntArrayTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/IntArrayTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/IntArrayTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/IntTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/IntTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/IntTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/IntTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/ListTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/ListTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/ListTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/ListTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/LongArrayTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/LongArrayTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/LongArrayTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/LongArrayTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/LongTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/LongTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/LongTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/LongTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/NonNullEntrySet.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/NonNullEntrySet.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/NonNullEntrySet.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/NonNullEntrySet.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/NumberTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/NumberTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/NumberTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/NumberTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/ShortTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/ShortTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/ShortTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/ShortTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/StringTag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/StringTag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/StringTag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/StringTag.java diff --git a/src/main/java/com/volmit/iris/util/nbt/tag/Tag.java b/core/src/main/java/com/volmit/iris/util/nbt/tag/Tag.java similarity index 100% rename from src/main/java/com/volmit/iris/util/nbt/tag/Tag.java rename to core/src/main/java/com/volmit/iris/util/nbt/tag/Tag.java diff --git a/src/main/java/com/volmit/iris/util/network/DL.java b/core/src/main/java/com/volmit/iris/util/network/DL.java similarity index 100% rename from src/main/java/com/volmit/iris/util/network/DL.java rename to core/src/main/java/com/volmit/iris/util/network/DL.java diff --git a/src/main/java/com/volmit/iris/util/network/DownloadException.java b/core/src/main/java/com/volmit/iris/util/network/DownloadException.java similarity index 100% rename from src/main/java/com/volmit/iris/util/network/DownloadException.java rename to core/src/main/java/com/volmit/iris/util/network/DownloadException.java diff --git a/src/main/java/com/volmit/iris/util/network/DownloadMonitor.java b/core/src/main/java/com/volmit/iris/util/network/DownloadMonitor.java similarity index 100% rename from src/main/java/com/volmit/iris/util/network/DownloadMonitor.java rename to core/src/main/java/com/volmit/iris/util/network/DownloadMonitor.java diff --git a/src/main/java/com/volmit/iris/util/network/MeteredInputStream.java b/core/src/main/java/com/volmit/iris/util/network/MeteredInputStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/network/MeteredInputStream.java rename to core/src/main/java/com/volmit/iris/util/network/MeteredInputStream.java diff --git a/src/main/java/com/volmit/iris/util/network/MeteredOutputStream.java b/core/src/main/java/com/volmit/iris/util/network/MeteredOutputStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/network/MeteredOutputStream.java rename to core/src/main/java/com/volmit/iris/util/network/MeteredOutputStream.java diff --git a/src/main/java/com/volmit/iris/util/noise/CNG.java b/core/src/main/java/com/volmit/iris/util/noise/CNG.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/CNG.java rename to core/src/main/java/com/volmit/iris/util/noise/CNG.java diff --git a/src/main/java/com/volmit/iris/util/noise/CNGFactory.java b/core/src/main/java/com/volmit/iris/util/noise/CNGFactory.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/CNGFactory.java rename to core/src/main/java/com/volmit/iris/util/noise/CNGFactory.java diff --git a/src/main/java/com/volmit/iris/util/noise/CachedNoise.java b/core/src/main/java/com/volmit/iris/util/noise/CachedNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/CachedNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/CachedNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/CachedNoiseMap.java b/core/src/main/java/com/volmit/iris/util/noise/CachedNoiseMap.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/CachedNoiseMap.java rename to core/src/main/java/com/volmit/iris/util/noise/CachedNoiseMap.java diff --git a/src/main/java/com/volmit/iris/util/noise/CellGenerator.java b/core/src/main/java/com/volmit/iris/util/noise/CellGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/CellGenerator.java rename to core/src/main/java/com/volmit/iris/util/noise/CellGenerator.java diff --git a/src/main/java/com/volmit/iris/util/noise/CellHeightNoise.java b/core/src/main/java/com/volmit/iris/util/noise/CellHeightNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/CellHeightNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/CellHeightNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/CellularNoise.java b/core/src/main/java/com/volmit/iris/util/noise/CellularNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/CellularNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/CellularNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/CloverNoise.java b/core/src/main/java/com/volmit/iris/util/noise/CloverNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/CloverNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/CloverNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/CubicNoise.java b/core/src/main/java/com/volmit/iris/util/noise/CubicNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/CubicNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/CubicNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/ExpressionNoise.java b/core/src/main/java/com/volmit/iris/util/noise/ExpressionNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/ExpressionNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/ExpressionNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/FastNoise.java b/core/src/main/java/com/volmit/iris/util/noise/FastNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/FastNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/FastNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/FastNoiseDouble.java b/core/src/main/java/com/volmit/iris/util/noise/FastNoiseDouble.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/FastNoiseDouble.java rename to core/src/main/java/com/volmit/iris/util/noise/FastNoiseDouble.java diff --git a/src/main/java/com/volmit/iris/util/noise/FlatNoise.java b/core/src/main/java/com/volmit/iris/util/noise/FlatNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/FlatNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/FlatNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/FractalBillowPerlinNoise.java b/core/src/main/java/com/volmit/iris/util/noise/FractalBillowPerlinNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/FractalBillowPerlinNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/FractalBillowPerlinNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/FractalBillowSimplexNoise.java b/core/src/main/java/com/volmit/iris/util/noise/FractalBillowSimplexNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/FractalBillowSimplexNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/FractalBillowSimplexNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/FractalCubicNoise.java b/core/src/main/java/com/volmit/iris/util/noise/FractalCubicNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/FractalCubicNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/FractalCubicNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/FractalFBMSimplexNoise.java b/core/src/main/java/com/volmit/iris/util/noise/FractalFBMSimplexNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/FractalFBMSimplexNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/FractalFBMSimplexNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/FractalRigidMultiSimplexNoise.java b/core/src/main/java/com/volmit/iris/util/noise/FractalRigidMultiSimplexNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/FractalRigidMultiSimplexNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/FractalRigidMultiSimplexNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/GlobNoise.java b/core/src/main/java/com/volmit/iris/util/noise/GlobNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/GlobNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/GlobNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/ImageNoise.java b/core/src/main/java/com/volmit/iris/util/noise/ImageNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/ImageNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/ImageNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/InterpolatedNoise.java b/core/src/main/java/com/volmit/iris/util/noise/InterpolatedNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/InterpolatedNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/InterpolatedNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/NoiseFactory.java b/core/src/main/java/com/volmit/iris/util/noise/NoiseFactory.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/NoiseFactory.java rename to core/src/main/java/com/volmit/iris/util/noise/NoiseFactory.java diff --git a/src/main/java/com/volmit/iris/util/noise/NoiseGenerator.java b/core/src/main/java/com/volmit/iris/util/noise/NoiseGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/NoiseGenerator.java rename to core/src/main/java/com/volmit/iris/util/noise/NoiseGenerator.java diff --git a/src/main/java/com/volmit/iris/util/noise/NoiseType.java b/core/src/main/java/com/volmit/iris/util/noise/NoiseType.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/NoiseType.java rename to core/src/main/java/com/volmit/iris/util/noise/NoiseType.java diff --git a/src/main/java/com/volmit/iris/util/noise/OctaveNoise.java b/core/src/main/java/com/volmit/iris/util/noise/OctaveNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/OctaveNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/OctaveNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/PerlinNoise.java b/core/src/main/java/com/volmit/iris/util/noise/PerlinNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/PerlinNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/PerlinNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/RarityCellGenerator.java b/core/src/main/java/com/volmit/iris/util/noise/RarityCellGenerator.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/RarityCellGenerator.java rename to core/src/main/java/com/volmit/iris/util/noise/RarityCellGenerator.java diff --git a/src/main/java/com/volmit/iris/util/noise/SimplexNoise.java b/core/src/main/java/com/volmit/iris/util/noise/SimplexNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/SimplexNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/SimplexNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/VascularNoise.java b/core/src/main/java/com/volmit/iris/util/noise/VascularNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/VascularNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/VascularNoise.java diff --git a/src/main/java/com/volmit/iris/util/noise/WhiteNoise.java b/core/src/main/java/com/volmit/iris/util/noise/WhiteNoise.java similarity index 100% rename from src/main/java/com/volmit/iris/util/noise/WhiteNoise.java rename to core/src/main/java/com/volmit/iris/util/noise/WhiteNoise.java diff --git a/src/main/java/com/volmit/iris/util/parallel/BurstExecutor.java b/core/src/main/java/com/volmit/iris/util/parallel/BurstExecutor.java similarity index 100% rename from src/main/java/com/volmit/iris/util/parallel/BurstExecutor.java rename to core/src/main/java/com/volmit/iris/util/parallel/BurstExecutor.java diff --git a/src/main/java/com/volmit/iris/util/parallel/BurstedHunk.java b/core/src/main/java/com/volmit/iris/util/parallel/BurstedHunk.java similarity index 100% rename from src/main/java/com/volmit/iris/util/parallel/BurstedHunk.java rename to core/src/main/java/com/volmit/iris/util/parallel/BurstedHunk.java diff --git a/src/main/java/com/volmit/iris/util/parallel/GridLock.java b/core/src/main/java/com/volmit/iris/util/parallel/GridLock.java similarity index 100% rename from src/main/java/com/volmit/iris/util/parallel/GridLock.java rename to core/src/main/java/com/volmit/iris/util/parallel/GridLock.java diff --git a/src/main/java/com/volmit/iris/util/parallel/HyperLock.java b/core/src/main/java/com/volmit/iris/util/parallel/HyperLock.java similarity index 100% rename from src/main/java/com/volmit/iris/util/parallel/HyperLock.java rename to core/src/main/java/com/volmit/iris/util/parallel/HyperLock.java diff --git a/src/main/java/com/volmit/iris/util/parallel/MultiBurst.java b/core/src/main/java/com/volmit/iris/util/parallel/MultiBurst.java similarity index 100% rename from src/main/java/com/volmit/iris/util/parallel/MultiBurst.java rename to core/src/main/java/com/volmit/iris/util/parallel/MultiBurst.java diff --git a/src/main/java/com/volmit/iris/util/parallel/NOOPGridLock.java b/core/src/main/java/com/volmit/iris/util/parallel/NOOPGridLock.java similarity index 100% rename from src/main/java/com/volmit/iris/util/parallel/NOOPGridLock.java rename to core/src/main/java/com/volmit/iris/util/parallel/NOOPGridLock.java diff --git a/src/main/java/com/volmit/iris/util/particle/FastParticle.java b/core/src/main/java/com/volmit/iris/util/particle/FastParticle.java similarity index 100% rename from src/main/java/com/volmit/iris/util/particle/FastParticle.java rename to core/src/main/java/com/volmit/iris/util/particle/FastParticle.java diff --git a/src/main/java/com/volmit/iris/util/particle/FastReflection.java b/core/src/main/java/com/volmit/iris/util/particle/FastReflection.java similarity index 100% rename from src/main/java/com/volmit/iris/util/particle/FastReflection.java rename to core/src/main/java/com/volmit/iris/util/particle/FastReflection.java diff --git a/src/main/java/com/volmit/iris/util/particle/ParticleSender.java b/core/src/main/java/com/volmit/iris/util/particle/ParticleSender.java similarity index 100% rename from src/main/java/com/volmit/iris/util/particle/ParticleSender.java rename to core/src/main/java/com/volmit/iris/util/particle/ParticleSender.java diff --git a/src/main/java/com/volmit/iris/util/particle/ParticleSenderLegacy.java b/core/src/main/java/com/volmit/iris/util/particle/ParticleSenderLegacy.java similarity index 100% rename from src/main/java/com/volmit/iris/util/particle/ParticleSenderLegacy.java rename to core/src/main/java/com/volmit/iris/util/particle/ParticleSenderLegacy.java diff --git a/src/main/java/com/volmit/iris/util/particle/ParticleType.java b/core/src/main/java/com/volmit/iris/util/particle/ParticleType.java similarity index 100% rename from src/main/java/com/volmit/iris/util/particle/ParticleType.java rename to core/src/main/java/com/volmit/iris/util/particle/ParticleType.java diff --git a/src/main/java/com/volmit/iris/util/plugin/CancellableTask.java b/core/src/main/java/com/volmit/iris/util/plugin/CancellableTask.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/CancellableTask.java rename to core/src/main/java/com/volmit/iris/util/plugin/CancellableTask.java diff --git a/src/main/java/com/volmit/iris/util/plugin/Chunks.java b/core/src/main/java/com/volmit/iris/util/plugin/Chunks.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/Chunks.java rename to core/src/main/java/com/volmit/iris/util/plugin/Chunks.java diff --git a/src/main/java/com/volmit/iris/util/plugin/Command.java b/core/src/main/java/com/volmit/iris/util/plugin/Command.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/Command.java rename to core/src/main/java/com/volmit/iris/util/plugin/Command.java diff --git a/src/main/java/com/volmit/iris/util/plugin/CommandDummy.java b/core/src/main/java/com/volmit/iris/util/plugin/CommandDummy.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/CommandDummy.java rename to core/src/main/java/com/volmit/iris/util/plugin/CommandDummy.java diff --git a/src/main/java/com/volmit/iris/util/plugin/Control.java b/core/src/main/java/com/volmit/iris/util/plugin/Control.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/Control.java rename to core/src/main/java/com/volmit/iris/util/plugin/Control.java diff --git a/src/main/java/com/volmit/iris/util/plugin/Controller.java b/core/src/main/java/com/volmit/iris/util/plugin/Controller.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/Controller.java rename to core/src/main/java/com/volmit/iris/util/plugin/Controller.java diff --git a/src/main/java/com/volmit/iris/util/plugin/ICommand.java b/core/src/main/java/com/volmit/iris/util/plugin/ICommand.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/ICommand.java rename to core/src/main/java/com/volmit/iris/util/plugin/ICommand.java diff --git a/src/main/java/com/volmit/iris/util/plugin/IController.java b/core/src/main/java/com/volmit/iris/util/plugin/IController.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/IController.java rename to core/src/main/java/com/volmit/iris/util/plugin/IController.java diff --git a/src/main/java/com/volmit/iris/util/plugin/Instance.java b/core/src/main/java/com/volmit/iris/util/plugin/Instance.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/Instance.java rename to core/src/main/java/com/volmit/iris/util/plugin/Instance.java diff --git a/src/main/java/com/volmit/iris/util/plugin/IrisService.java b/core/src/main/java/com/volmit/iris/util/plugin/IrisService.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/IrisService.java rename to core/src/main/java/com/volmit/iris/util/plugin/IrisService.java diff --git a/src/main/java/com/volmit/iris/util/plugin/Metrics.java b/core/src/main/java/com/volmit/iris/util/plugin/Metrics.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/Metrics.java rename to core/src/main/java/com/volmit/iris/util/plugin/Metrics.java diff --git a/src/main/java/com/volmit/iris/util/plugin/MetricsLite.java b/core/src/main/java/com/volmit/iris/util/plugin/MetricsLite.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/MetricsLite.java rename to core/src/main/java/com/volmit/iris/util/plugin/MetricsLite.java diff --git a/src/main/java/com/volmit/iris/util/plugin/MortarCommand.java b/core/src/main/java/com/volmit/iris/util/plugin/MortarCommand.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/MortarCommand.java rename to core/src/main/java/com/volmit/iris/util/plugin/MortarCommand.java diff --git a/src/main/java/com/volmit/iris/util/plugin/MortarPermission.java b/core/src/main/java/com/volmit/iris/util/plugin/MortarPermission.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/MortarPermission.java rename to core/src/main/java/com/volmit/iris/util/plugin/MortarPermission.java diff --git a/src/main/java/com/volmit/iris/util/plugin/Permission.java b/core/src/main/java/com/volmit/iris/util/plugin/Permission.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/Permission.java rename to core/src/main/java/com/volmit/iris/util/plugin/Permission.java diff --git a/src/main/java/com/volmit/iris/util/plugin/PluginRegistry.java b/core/src/main/java/com/volmit/iris/util/plugin/PluginRegistry.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/PluginRegistry.java rename to core/src/main/java/com/volmit/iris/util/plugin/PluginRegistry.java diff --git a/src/main/java/com/volmit/iris/util/plugin/PluginRegistryGroup.java b/core/src/main/java/com/volmit/iris/util/plugin/PluginRegistryGroup.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/PluginRegistryGroup.java rename to core/src/main/java/com/volmit/iris/util/plugin/PluginRegistryGroup.java diff --git a/src/main/java/com/volmit/iris/util/plugin/RouterCommand.java b/core/src/main/java/com/volmit/iris/util/plugin/RouterCommand.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/RouterCommand.java rename to core/src/main/java/com/volmit/iris/util/plugin/RouterCommand.java diff --git a/src/main/java/com/volmit/iris/util/plugin/VirtualCommand.java b/core/src/main/java/com/volmit/iris/util/plugin/VirtualCommand.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/VirtualCommand.java rename to core/src/main/java/com/volmit/iris/util/plugin/VirtualCommand.java diff --git a/src/main/java/com/volmit/iris/util/plugin/VolmitPlugin.java b/core/src/main/java/com/volmit/iris/util/plugin/VolmitPlugin.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/VolmitPlugin.java rename to core/src/main/java/com/volmit/iris/util/plugin/VolmitPlugin.java diff --git a/src/main/java/com/volmit/iris/util/plugin/VolmitSender.java b/core/src/main/java/com/volmit/iris/util/plugin/VolmitSender.java similarity index 100% rename from src/main/java/com/volmit/iris/util/plugin/VolmitSender.java rename to core/src/main/java/com/volmit/iris/util/plugin/VolmitSender.java diff --git a/src/main/java/com/volmit/iris/util/reflect/ShadeFix.java b/core/src/main/java/com/volmit/iris/util/reflect/ShadeFix.java similarity index 100% rename from src/main/java/com/volmit/iris/util/reflect/ShadeFix.java rename to core/src/main/java/com/volmit/iris/util/reflect/ShadeFix.java diff --git a/src/main/java/com/volmit/iris/util/reflect/V.java b/core/src/main/java/com/volmit/iris/util/reflect/V.java similarity index 100% rename from src/main/java/com/volmit/iris/util/reflect/V.java rename to core/src/main/java/com/volmit/iris/util/reflect/V.java diff --git a/src/main/java/com/volmit/iris/util/reflect/Violator.java b/core/src/main/java/com/volmit/iris/util/reflect/Violator.java similarity index 100% rename from src/main/java/com/volmit/iris/util/reflect/Violator.java rename to core/src/main/java/com/volmit/iris/util/reflect/Violator.java diff --git a/src/main/java/com/volmit/iris/util/reflect/WrappedField.java b/core/src/main/java/com/volmit/iris/util/reflect/WrappedField.java similarity index 100% rename from src/main/java/com/volmit/iris/util/reflect/WrappedField.java rename to core/src/main/java/com/volmit/iris/util/reflect/WrappedField.java diff --git a/src/main/java/com/volmit/iris/util/reflect/WrappedReturningMethod.java b/core/src/main/java/com/volmit/iris/util/reflect/WrappedReturningMethod.java similarity index 100% rename from src/main/java/com/volmit/iris/util/reflect/WrappedReturningMethod.java rename to core/src/main/java/com/volmit/iris/util/reflect/WrappedReturningMethod.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/AR.java b/core/src/main/java/com/volmit/iris/util/scheduling/AR.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/AR.java rename to core/src/main/java/com/volmit/iris/util/scheduling/AR.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/Callback.java b/core/src/main/java/com/volmit/iris/util/scheduling/Callback.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/Callback.java rename to core/src/main/java/com/volmit/iris/util/scheduling/Callback.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/ChronoLatch.java b/core/src/main/java/com/volmit/iris/util/scheduling/ChronoLatch.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/ChronoLatch.java rename to core/src/main/java/com/volmit/iris/util/scheduling/ChronoLatch.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/Contained.java b/core/src/main/java/com/volmit/iris/util/scheduling/Contained.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/Contained.java rename to core/src/main/java/com/volmit/iris/util/scheduling/Contained.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/GroupedExecutor.java b/core/src/main/java/com/volmit/iris/util/scheduling/GroupedExecutor.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/GroupedExecutor.java rename to core/src/main/java/com/volmit/iris/util/scheduling/GroupedExecutor.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/IrisLock.java b/core/src/main/java/com/volmit/iris/util/scheduling/IrisLock.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/IrisLock.java rename to core/src/main/java/com/volmit/iris/util/scheduling/IrisLock.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/J.java b/core/src/main/java/com/volmit/iris/util/scheduling/J.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/J.java rename to core/src/main/java/com/volmit/iris/util/scheduling/J.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/Looper.java b/core/src/main/java/com/volmit/iris/util/scheduling/Looper.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/Looper.java rename to core/src/main/java/com/volmit/iris/util/scheduling/Looper.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/O.java b/core/src/main/java/com/volmit/iris/util/scheduling/O.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/O.java rename to core/src/main/java/com/volmit/iris/util/scheduling/O.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/Observable.java b/core/src/main/java/com/volmit/iris/util/scheduling/Observable.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/Observable.java rename to core/src/main/java/com/volmit/iris/util/scheduling/Observable.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/Observer.java b/core/src/main/java/com/volmit/iris/util/scheduling/Observer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/Observer.java rename to core/src/main/java/com/volmit/iris/util/scheduling/Observer.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/PrecisionStopwatch.java b/core/src/main/java/com/volmit/iris/util/scheduling/PrecisionStopwatch.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/PrecisionStopwatch.java rename to core/src/main/java/com/volmit/iris/util/scheduling/PrecisionStopwatch.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/Queue.java b/core/src/main/java/com/volmit/iris/util/scheduling/Queue.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/Queue.java rename to core/src/main/java/com/volmit/iris/util/scheduling/Queue.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/QueueExecutor.java b/core/src/main/java/com/volmit/iris/util/scheduling/QueueExecutor.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/QueueExecutor.java rename to core/src/main/java/com/volmit/iris/util/scheduling/QueueExecutor.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/S.java b/core/src/main/java/com/volmit/iris/util/scheduling/S.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/S.java rename to core/src/main/java/com/volmit/iris/util/scheduling/S.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/SR.java b/core/src/main/java/com/volmit/iris/util/scheduling/SR.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/SR.java rename to core/src/main/java/com/volmit/iris/util/scheduling/SR.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/ShurikenQueue.java b/core/src/main/java/com/volmit/iris/util/scheduling/ShurikenQueue.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/ShurikenQueue.java rename to core/src/main/java/com/volmit/iris/util/scheduling/ShurikenQueue.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/Switch.java b/core/src/main/java/com/volmit/iris/util/scheduling/Switch.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/Switch.java rename to core/src/main/java/com/volmit/iris/util/scheduling/Switch.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/TaskExecutor.java b/core/src/main/java/com/volmit/iris/util/scheduling/TaskExecutor.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/TaskExecutor.java rename to core/src/main/java/com/volmit/iris/util/scheduling/TaskExecutor.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/ThreadMonitor.java b/core/src/main/java/com/volmit/iris/util/scheduling/ThreadMonitor.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/ThreadMonitor.java rename to core/src/main/java/com/volmit/iris/util/scheduling/ThreadMonitor.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/Wrapper.java b/core/src/main/java/com/volmit/iris/util/scheduling/Wrapper.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/Wrapper.java rename to core/src/main/java/com/volmit/iris/util/scheduling/Wrapper.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/jobs/DownloadJob.java b/core/src/main/java/com/volmit/iris/util/scheduling/jobs/DownloadJob.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/jobs/DownloadJob.java rename to core/src/main/java/com/volmit/iris/util/scheduling/jobs/DownloadJob.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/jobs/Job.java b/core/src/main/java/com/volmit/iris/util/scheduling/jobs/Job.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/jobs/Job.java rename to core/src/main/java/com/volmit/iris/util/scheduling/jobs/Job.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/jobs/JobCollection.java b/core/src/main/java/com/volmit/iris/util/scheduling/jobs/JobCollection.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/jobs/JobCollection.java rename to core/src/main/java/com/volmit/iris/util/scheduling/jobs/JobCollection.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/jobs/ParallelQueueJob.java b/core/src/main/java/com/volmit/iris/util/scheduling/jobs/ParallelQueueJob.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/jobs/ParallelQueueJob.java rename to core/src/main/java/com/volmit/iris/util/scheduling/jobs/ParallelQueueJob.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/jobs/QueueJob.java b/core/src/main/java/com/volmit/iris/util/scheduling/jobs/QueueJob.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/jobs/QueueJob.java rename to core/src/main/java/com/volmit/iris/util/scheduling/jobs/QueueJob.java diff --git a/src/main/java/com/volmit/iris/util/scheduling/jobs/SingleJob.java b/core/src/main/java/com/volmit/iris/util/scheduling/jobs/SingleJob.java similarity index 100% rename from src/main/java/com/volmit/iris/util/scheduling/jobs/SingleJob.java rename to core/src/main/java/com/volmit/iris/util/scheduling/jobs/SingleJob.java diff --git a/src/main/java/com/volmit/iris/util/stream/ArraySignificance.java b/core/src/main/java/com/volmit/iris/util/stream/ArraySignificance.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/ArraySignificance.java rename to core/src/main/java/com/volmit/iris/util/stream/ArraySignificance.java diff --git a/src/main/java/com/volmit/iris/util/stream/BasicLayer.java b/core/src/main/java/com/volmit/iris/util/stream/BasicLayer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/BasicLayer.java rename to core/src/main/java/com/volmit/iris/util/stream/BasicLayer.java diff --git a/src/main/java/com/volmit/iris/util/stream/BasicStream.java b/core/src/main/java/com/volmit/iris/util/stream/BasicStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/BasicStream.java rename to core/src/main/java/com/volmit/iris/util/stream/BasicStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/ProceduralLayer.java b/core/src/main/java/com/volmit/iris/util/stream/ProceduralLayer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/ProceduralLayer.java rename to core/src/main/java/com/volmit/iris/util/stream/ProceduralLayer.java diff --git a/src/main/java/com/volmit/iris/util/stream/ProceduralStream.java b/core/src/main/java/com/volmit/iris/util/stream/ProceduralStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/ProceduralStream.java rename to core/src/main/java/com/volmit/iris/util/stream/ProceduralStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/Significance.java b/core/src/main/java/com/volmit/iris/util/stream/Significance.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/Significance.java rename to core/src/main/java/com/volmit/iris/util/stream/Significance.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/AddingStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/AddingStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/AddingStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/AddingStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/ClampedStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/ClampedStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/ClampedStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/ClampedStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftLeftStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftLeftStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftLeftStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftLeftStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftRightStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftRightStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftRightStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/CoordinateBitShiftRightStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/DividingStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/DividingStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/DividingStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/DividingStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/FittedStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/FittedStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/FittedStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/FittedStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/MaxingStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/MaxingStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/MaxingStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/MaxingStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/MinningStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/MinningStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/MinningStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/MinningStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/ModuloStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/ModuloStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/ModuloStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/ModuloStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/MultiplyingStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/MultiplyingStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/MultiplyingStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/MultiplyingStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/OffsetStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/OffsetStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/OffsetStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/OffsetStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/RadialStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/RadialStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/RadialStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/RadialStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/RoundingDoubleStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/RoundingDoubleStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/RoundingDoubleStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/RoundingDoubleStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/SlopeStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/SlopeStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/SlopeStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/SlopeStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/SubtractingStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/SubtractingStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/SubtractingStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/SubtractingStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/arithmetic/ZoomStream.java b/core/src/main/java/com/volmit/iris/util/stream/arithmetic/ZoomStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/arithmetic/ZoomStream.java rename to core/src/main/java/com/volmit/iris/util/stream/arithmetic/ZoomStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream2D.java b/core/src/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream2D.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream2D.java rename to core/src/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream2D.java diff --git a/src/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream3D.java b/core/src/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream3D.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream3D.java rename to core/src/main/java/com/volmit/iris/util/stream/convert/AwareConversionStream3D.java diff --git a/src/main/java/com/volmit/iris/util/stream/convert/CachedConversionStream.java b/core/src/main/java/com/volmit/iris/util/stream/convert/CachedConversionStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/convert/CachedConversionStream.java rename to core/src/main/java/com/volmit/iris/util/stream/convert/CachedConversionStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/convert/ConversionStream.java b/core/src/main/java/com/volmit/iris/util/stream/convert/ConversionStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/convert/ConversionStream.java rename to core/src/main/java/com/volmit/iris/util/stream/convert/ConversionStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/convert/ForceDoubleStream.java b/core/src/main/java/com/volmit/iris/util/stream/convert/ForceDoubleStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/convert/ForceDoubleStream.java rename to core/src/main/java/com/volmit/iris/util/stream/convert/ForceDoubleStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/convert/RoundingStream.java b/core/src/main/java/com/volmit/iris/util/stream/convert/RoundingStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/convert/RoundingStream.java rename to core/src/main/java/com/volmit/iris/util/stream/convert/RoundingStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/convert/SelectionStream.java b/core/src/main/java/com/volmit/iris/util/stream/convert/SelectionStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/convert/SelectionStream.java rename to core/src/main/java/com/volmit/iris/util/stream/convert/SelectionStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/convert/SignificanceStream.java b/core/src/main/java/com/volmit/iris/util/stream/convert/SignificanceStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/convert/SignificanceStream.java rename to core/src/main/java/com/volmit/iris/util/stream/convert/SignificanceStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/convert/To3DStream.java b/core/src/main/java/com/volmit/iris/util/stream/convert/To3DStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/convert/To3DStream.java rename to core/src/main/java/com/volmit/iris/util/stream/convert/To3DStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/BiHermiteStream.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/BiHermiteStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/BiHermiteStream.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/BiHermiteStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/BiStarcastStream.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/BiStarcastStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/BiStarcastStream.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/BiStarcastStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/BicubicStream.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/BicubicStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/BicubicStream.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/BicubicStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/BilinearStream.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/BilinearStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/BilinearStream.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/BilinearStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/Interpolated.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/Interpolated.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/Interpolated.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/Interpolated.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/InterpolatingStream.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/InterpolatingStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/InterpolatingStream.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/InterpolatingStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/Interpolator.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/Interpolator.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/Interpolator.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/Interpolator.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/InterpolatorFactory.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/InterpolatorFactory.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/InterpolatorFactory.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/InterpolatorFactory.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/TriHermiteStream.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/TriHermiteStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/TriHermiteStream.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/TriHermiteStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/TriStarcastStream.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/TriStarcastStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/TriStarcastStream.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/TriStarcastStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/TricubicStream.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/TricubicStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/TricubicStream.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/TricubicStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/interpolation/TrilinearStream.java b/core/src/main/java/com/volmit/iris/util/stream/interpolation/TrilinearStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/interpolation/TrilinearStream.java rename to core/src/main/java/com/volmit/iris/util/stream/interpolation/TrilinearStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/sources/CNGStream.java b/core/src/main/java/com/volmit/iris/util/stream/sources/CNGStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/sources/CNGStream.java rename to core/src/main/java/com/volmit/iris/util/stream/sources/CNGStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/sources/FunctionStream.java b/core/src/main/java/com/volmit/iris/util/stream/sources/FunctionStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/sources/FunctionStream.java rename to core/src/main/java/com/volmit/iris/util/stream/sources/FunctionStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/utility/CachedStream2D.java b/core/src/main/java/com/volmit/iris/util/stream/utility/CachedStream2D.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/utility/CachedStream2D.java rename to core/src/main/java/com/volmit/iris/util/stream/utility/CachedStream2D.java diff --git a/src/main/java/com/volmit/iris/util/stream/utility/CachedStream3D.java b/core/src/main/java/com/volmit/iris/util/stream/utility/CachedStream3D.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/utility/CachedStream3D.java rename to core/src/main/java/com/volmit/iris/util/stream/utility/CachedStream3D.java diff --git a/src/main/java/com/volmit/iris/util/stream/utility/ContextInjectingStream.java b/core/src/main/java/com/volmit/iris/util/stream/utility/ContextInjectingStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/utility/ContextInjectingStream.java rename to core/src/main/java/com/volmit/iris/util/stream/utility/ContextInjectingStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/utility/NullSafeStream.java b/core/src/main/java/com/volmit/iris/util/stream/utility/NullSafeStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/utility/NullSafeStream.java rename to core/src/main/java/com/volmit/iris/util/stream/utility/NullSafeStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/utility/ProfiledStream.java b/core/src/main/java/com/volmit/iris/util/stream/utility/ProfiledStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/utility/ProfiledStream.java rename to core/src/main/java/com/volmit/iris/util/stream/utility/ProfiledStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/utility/SemaphoreStream.java b/core/src/main/java/com/volmit/iris/util/stream/utility/SemaphoreStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/utility/SemaphoreStream.java rename to core/src/main/java/com/volmit/iris/util/stream/utility/SemaphoreStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/utility/SynchronizedStream.java b/core/src/main/java/com/volmit/iris/util/stream/utility/SynchronizedStream.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/utility/SynchronizedStream.java rename to core/src/main/java/com/volmit/iris/util/stream/utility/SynchronizedStream.java diff --git a/src/main/java/com/volmit/iris/util/stream/utility/WasteDetector.java b/core/src/main/java/com/volmit/iris/util/stream/utility/WasteDetector.java similarity index 100% rename from src/main/java/com/volmit/iris/util/stream/utility/WasteDetector.java rename to core/src/main/java/com/volmit/iris/util/stream/utility/WasteDetector.java diff --git a/src/main/java/com/volmit/iris/util/uniques/U.java b/core/src/main/java/com/volmit/iris/util/uniques/U.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/U.java rename to core/src/main/java/com/volmit/iris/util/uniques/U.java diff --git a/src/main/java/com/volmit/iris/util/uniques/UBufferedImage.java b/core/src/main/java/com/volmit/iris/util/uniques/UBufferedImage.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/UBufferedImage.java rename to core/src/main/java/com/volmit/iris/util/uniques/UBufferedImage.java diff --git a/src/main/java/com/volmit/iris/util/uniques/UFeature.java b/core/src/main/java/com/volmit/iris/util/uniques/UFeature.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/UFeature.java rename to core/src/main/java/com/volmit/iris/util/uniques/UFeature.java diff --git a/src/main/java/com/volmit/iris/util/uniques/UFeatureMeta.java b/core/src/main/java/com/volmit/iris/util/uniques/UFeatureMeta.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/UFeatureMeta.java rename to core/src/main/java/com/volmit/iris/util/uniques/UFeatureMeta.java diff --git a/src/main/java/com/volmit/iris/util/uniques/UImage.java b/core/src/main/java/com/volmit/iris/util/uniques/UImage.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/UImage.java rename to core/src/main/java/com/volmit/iris/util/uniques/UImage.java diff --git a/src/main/java/com/volmit/iris/util/uniques/UMeta.java b/core/src/main/java/com/volmit/iris/util/uniques/UMeta.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/UMeta.java rename to core/src/main/java/com/volmit/iris/util/uniques/UMeta.java diff --git a/src/main/java/com/volmit/iris/util/uniques/UniqueRenderer.java b/core/src/main/java/com/volmit/iris/util/uniques/UniqueRenderer.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/UniqueRenderer.java rename to core/src/main/java/com/volmit/iris/util/uniques/UniqueRenderer.java diff --git a/src/main/java/com/volmit/iris/util/uniques/features/UFInterpolator.java b/core/src/main/java/com/volmit/iris/util/uniques/features/UFInterpolator.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/features/UFInterpolator.java rename to core/src/main/java/com/volmit/iris/util/uniques/features/UFInterpolator.java diff --git a/src/main/java/com/volmit/iris/util/uniques/features/UFNOOP.java b/core/src/main/java/com/volmit/iris/util/uniques/features/UFNOOP.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/features/UFNOOP.java rename to core/src/main/java/com/volmit/iris/util/uniques/features/UFNOOP.java diff --git a/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedBackground.java b/core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedBackground.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/features/UFWarpedBackground.java rename to core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedBackground.java diff --git a/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedCircle.java b/core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedCircle.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/features/UFWarpedCircle.java rename to core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedCircle.java diff --git a/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedDisc.java b/core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedDisc.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/features/UFWarpedDisc.java rename to core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedDisc.java diff --git a/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedDots.java b/core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedDots.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/features/UFWarpedDots.java rename to core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedDots.java diff --git a/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedLines.java b/core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedLines.java similarity index 100% rename from src/main/java/com/volmit/iris/util/uniques/features/UFWarpedLines.java rename to core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedLines.java diff --git a/src/main/resources/plugin.yml b/core/src/main/resources/plugin.yml similarity index 100% rename from src/main/resources/plugin.yml rename to core/src/main/resources/plugin.yml diff --git a/nms/v1_19_R1/src/main/java/com/volmit/iris/core/nms/v1_19_R1/CustomBiomeSource.java b/nms/v1_19_R1/src/main/java/com/volmit/iris/core/nms/v1_19_R1/CustomBiomeSource.java new file mode 100644 index 000000000..a24e62d85 --- /dev/null +++ b/nms/v1_19_R1/src/main/java/com/volmit/iris/core/nms/v1_19_R1/CustomBiomeSource.java @@ -0,0 +1,150 @@ +package com.volmit.iris.core.nms.v1_19_R1; + +import com.mojang.serialization.Codec; +import com.volmit.iris.Iris; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.engine.object.IrisBiome; +import com.volmit.iris.engine.object.IrisBiomeCustom; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.math.RNG; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.biome.Climate; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.craftbukkit.v1_19_R1.CraftServer; +import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R1.block.CraftBlock; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +public class CustomBiomeSource extends BiomeSource { + private final long seed; + private final Engine engine; + private final Registry biomeCustomRegistry; + private final Registry biomeRegistry; + private final AtomicCache registryAccess = new AtomicCache<>(); + private final RNG rng; + private final KMap> customBiomes; + + public CustomBiomeSource(long seed, Engine engine, World world) { + super(getAllBiomes( + ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())) + .registry(Registry.BIOME_REGISTRY).orElse(null), + ((CraftWorld) world).getHandle().registryAccess().registry(Registry.BIOME_REGISTRY).orElse(null), + engine)); + this.engine = engine; + this.seed = seed; + this.biomeCustomRegistry = registry().registry(Registry.BIOME_REGISTRY).orElse(null); + this.biomeRegistry = ((CraftWorld) world).getHandle().registryAccess().registry(Registry.BIOME_REGISTRY).orElse(null); + this.rng = new RNG(engine.getSeedManager().getBiome()); + this.customBiomes = fillCustomBiomes(biomeCustomRegistry, engine); + } + + private static List> getAllBiomes(Registry customRegistry, Registry registry, Engine engine) { + List> b = new ArrayList<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + b.add(customRegistry.getHolder(customRegistry.getResourceKey(customRegistry + .get(new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()))).get()).get()); + } + } else { + b.add(CraftBlock.biomeToBiomeBase(registry, i.getVanillaDerivative())); + } + } + + return b; + } + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private KMap> fillCustomBiomes(Registry customRegistry, Engine engine) { + KMap> m = new KMap<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + m.put(j.getId(), customRegistry.getHolder(customRegistry.getResourceKey(customRegistry + .get(new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()))).get()).get()); + } + } + } + + return m; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + @Override + protected Codec codec() { + throw new UnsupportedOperationException("Not supported"); + } + + @Override + public Holder getNoiseBiome(int x, int y, int z, Climate.Sampler sampler) { + int m = (y - engine.getMinHeight()) << 2; + IrisBiome ib = engine.getComplex().getTrueBiomeStream().get(x << 2, z << 2); + if (ib.isCustom()) { + return customBiomes.get(ib.getCustomBiome(rng, x << 2, m, z << 2).getId()); + } else { + org.bukkit.block.Biome v = ib.getSkyBiome(rng, x << 2, m, z << 2); + return CraftBlock.biomeToBiomeBase(biomeRegistry, v); + } + } +} \ No newline at end of file diff --git a/nms/v1_19_R1/src/main/java/com/volmit/iris/core/nms/v1_19_R1/NMSBinding.java b/nms/v1_19_R1/src/main/java/com/volmit/iris/core/nms/v1_19_R1/NMSBinding.java new file mode 100644 index 000000000..abea5d67c --- /dev/null +++ b/nms/v1_19_R1/src/main/java/com/volmit/iris/core/nms/v1_19_R1/NMSBinding.java @@ -0,0 +1,496 @@ +package com.volmit.iris.core.nms.v1_19_R1; + +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.volmit.iris.Iris; +import com.volmit.iris.core.nms.INMSBinding; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.hunk.Hunk; +import com.volmit.iris.util.json.JSONObject; +import com.volmit.iris.util.mantle.Mantle; +import com.volmit.iris.util.matter.MatterBiomeInject; +import com.volmit.iris.util.nbt.io.NBTUtil; +import com.volmit.iris.util.nbt.mca.NBTWorld; +import com.volmit.iris.util.nbt.mca.palette.*; +import com.volmit.iris.util.nbt.tag.CompoundTag; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.nbt.NbtIo; +import net.minecraft.nbt.TagParser; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.LevelChunk; +import org.bukkit.*; +import org.bukkit.block.Biome; +import org.bukkit.block.data.BlockData; + +import org.bukkit.craftbukkit.v1_19_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_19_R1.CraftServer; +import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R1.block.CraftBlock; +import org.bukkit.craftbukkit.v1_19_R1.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftDolphin; +import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; +import org.bukkit.entity.Dolphin; +import org.bukkit.entity.Entity; +import org.bukkit.generator.ChunkGenerator; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import sun.misc.Unsafe; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +public class NMSBinding implements INMSBinding { + private final KMap baseBiomeCache = new KMap<>(); + private final BlockData AIR = Material.AIR.createBlockData(); + private final AtomicCache> biomeMapCache = new AtomicCache<>(); + private final AtomicCache> registryCache = new AtomicCache<>(); + private final AtomicCache> globalCache = new AtomicCache<>(); + private final AtomicCache registryAccess = new AtomicCache<>(); + private final AtomicCache byIdRef = new AtomicCache<>(); + private Field biomeStorageCache = null; + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private static Class getClassType(Class type, int ordinal) { + return type.getDeclaredClasses()[ordinal]; + } + + @Override + public boolean hasTile(Location l) { + return ((CraftWorld) l.getWorld()).getHandle().getBlockEntity(new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()), false) != null; + } + + @Override + public CompoundTag serializeTile(Location location) { + BlockEntity e = ((CraftWorld) location.getWorld()).getHandle().getBlockEntity(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()), true); + + if (e == null) { + return null; + } + + net.minecraft.nbt.CompoundTag tag = e.saveWithFullMetadata(); + return convert(tag); + } + + private CompoundTag convert(net.minecraft.nbt.CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(boas); + tag.write(dos); + dos.close(); + return (CompoundTag) NBTUtil.read(new ByteArrayInputStream(boas.toByteArray()), false).getTag(); + } catch (Throwable ex) { + ex.printStackTrace(); + } + + return null; + } + + private net.minecraft.nbt.CompoundTag convert(CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + NBTUtil.write(tag, boas, false); + DataInputStream din = new DataInputStream(new ByteArrayInputStream(boas.toByteArray())); + net.minecraft.nbt.CompoundTag c = NbtIo.read(din); + din.close(); + return c; + } catch (Throwable e) { + e.printStackTrace(); + } + + return null; + } + + @Override + public void deserializeTile(CompoundTag c, Location pos) { + ((CraftWorld) pos.getWorld()).getHandle().getChunkAt(new BlockPos(pos.getBlockX(), 0, pos.getBlockZ())).setBlockEntityNbt(convert(c)); + } + + @Override + public CompoundTag serializeEntity(Entity location) { + return null;// TODO: + } + + @Override + public Entity deserializeEntity(CompoundTag s, Location newPosition) { + return null;// TODO: + } + + @Override + public boolean supportsCustomHeight() { + return true; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + private Registry getCustomBiomeRegistry() { + return registry().registry(Registry.BIOME_REGISTRY).orElse(null); + } + + private Registry getBlockRegistry() { + return registry().registry(Registry.BLOCK_REGISTRY).orElse(null); + } + + @Override + public Object getBiomeBaseFromId(int id) { + return getCustomBiomeRegistry().getHolder(id); + } + + @Override + public int getMinHeight(World world) { + return world.getMinHeight(); + } + + @Override + public boolean supportsCustomBiomes() { + return true; + } + + @Override + public int getTrueBiomeBaseId(Object biomeBase) { + return getCustomBiomeRegistry().getId(((Holder) biomeBase).value()); + } + + @Override + public Object getTrueBiomeBase(Location location) { + return ((CraftWorld) location.getWorld()).getHandle().getBiome(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ())); + } + + @Override + public String getTrueBiomeBaseKey(Location location) { + return getKeyForBiomeBase(getTrueBiomeBase(location)); + } + + @Override + public Object getCustomBiomeBaseFor(String mckey) { + return getCustomBiomeRegistry().get(new ResourceLocation(mckey)); + } + + @Override + public Object getCustomBiomeBaseHolderFor(String mckey) { + return getCustomBiomeRegistry().getHolder(getTrueBiomeBaseId(getCustomBiomeRegistry().get(new ResourceLocation(mckey)))).get(); + } + + public int getBiomeBaseIdForKey(String key) { + return getCustomBiomeRegistry().getId(getCustomBiomeRegistry().get(new ResourceLocation(key))); + } + + @Override + public String getKeyForBiomeBase(Object biomeBase) { + return getCustomBiomeRegistry().getKey((net.minecraft.world.level.biome.Biome) biomeBase).getPath(); // something, not something:something + } + + @Override + public Object getBiomeBase(World world, Biome biome) { + return CraftBlock.biomeToBiomeBase(((CraftWorld) world).getHandle() + .registryAccess().registry(Registry.BIOME_REGISTRY).orElse(null), biome); + } + + @Override + public Object getBiomeBase(Object registry, Biome biome) { + Object v = baseBiomeCache.get(biome); + + if (v != null) { + return v; + } + //noinspection unchecked + v = CraftBlock.biomeToBiomeBase((Registry) registry, biome); + if (v == null) { + // Ok so there is this new biome name called "CUSTOM" in Paper's new releases. + // But, this does NOT exist within CraftBukkit which makes it return an error. + // So, we will just return the ID that the plains biome returns instead. + //noinspection unchecked + return CraftBlock.biomeToBiomeBase((Registry) registry, Biome.PLAINS); + } + baseBiomeCache.put(biome, v); + return v; + } + + @Override + public boolean isBukkit() { + return true; + } + + @Override + public int getBiomeId(Biome biome) { + for (World i : Bukkit.getWorlds()) { + if (i.getEnvironment().equals(World.Environment.NORMAL)) { + Registry registry = ((CraftWorld) i).getHandle().registryAccess().registry(Registry.BIOME_REGISTRY).orElse(null); + return registry.getId((net.minecraft.world.level.biome.Biome) getBiomeBase(registry, biome)); + } + } + + return biome.ordinal(); + } + + private MCAIdMap getBiomeMapping() { + return biomeMapCache.aquire(() -> new MCAIdMap<>() { + @NotNull + @Override + public Iterator iterator() { + return getCustomBiomeRegistry().iterator(); + } + + @Override + public int getId(net.minecraft.world.level.biome.Biome paramT) { + return getCustomBiomeRegistry().getId(paramT); + } + + @Override + public net.minecraft.world.level.biome.Biome byId(int paramInt) { + return (net.minecraft.world.level.biome.Biome) getBiomeBaseFromId(paramInt); + } + }); + } + + @NotNull + private MCABiomeContainer getBiomeContainerInterface(MCAIdMap biomeMapping, MCAChunkBiomeContainer base) { + return new MCABiomeContainer() { + @Override + public int[] getData() { + return base.writeBiomes(); + } + + @Override + public void setBiome(int x, int y, int z, int id) { + base.setBiome(x, y, z, biomeMapping.byId(id)); + } + + @Override + public int getBiome(int x, int y, int z) { + return biomeMapping.getId(base.getBiome(x, y, z)); + } + }; + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max, int[] data) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max, data); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public int countCustomBiomes() { + AtomicInteger a = new AtomicInteger(0); + + getCustomBiomeRegistry().keySet().forEach((i) -> { + if (i.getNamespace().equals("minecraft")) { + return; + } + + a.incrementAndGet(); + Iris.debug("Custom Biome: " + i); + }); + + return a.get(); + } + + public boolean supportsDataPacks() { + return true; + } + + public void setBiomes(int cx, int cz, World world, Hunk biomes) { + LevelChunk c = ((CraftWorld) world).getHandle().getChunk(cx, cz); + biomes.iterateSync((x, y, z, b) -> c.setBiome(x, y, z, (Holder) b)); + c.setUnsaved(true); + } + + @Override + public void forceBiomeInto(int x, int y, int z, Object somethingVeryDirty, ChunkGenerator.BiomeGrid chunk) { + try { + ChunkAccess s = (ChunkAccess) getFieldForBiomeStorage(chunk).get(chunk); + Holder biome = (Holder) somethingVeryDirty; + s.setBiome(x, y, z, biome); + } catch (IllegalAccessException e) { + Iris.reportError(e); + e.printStackTrace(); + } + } + + private Field getFieldForBiomeStorage(Object storage) { + Field f = biomeStorageCache; + + if (f != null) { + return f; + } + try { + f = storage.getClass().getDeclaredField("biome"); + f.setAccessible(true); + return f; + } catch (Throwable e) { + Iris.reportError(e); + e.printStackTrace(); + Iris.error(storage.getClass().getCanonicalName()); + } + + biomeStorageCache = f; + return null; + } + + @Override + public MCAPaletteAccess createPalette() { + MCAIdMapper registry = registryCache.aquireNasty(() -> { + Field cf = net.minecraft.core.IdMapper.class.getDeclaredField("tToId"); + Field df = net.minecraft.core.IdMapper.class.getDeclaredField("idToT"); + Field bf = net.minecraft.core.IdMapper.class.getDeclaredField("nextId"); + cf.setAccessible(true); + df.setAccessible(true); + bf.setAccessible(true); + net.minecraft.core.IdMapper blockData = Block.BLOCK_STATE_REGISTRY; + int b = bf.getInt(blockData); + Object2IntMap c = (Object2IntMap) cf.get(blockData); + List d = (List) df.get(blockData); + return new MCAIdMapper(c, d, b); + }); + MCAPalette global = globalCache.aquireNasty(() -> new MCAGlobalPalette<>(registry, ((CraftBlockData) AIR).getState())); + MCAPalettedContainer container = new MCAPalettedContainer<>(global, registry, + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState(), + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + ((CraftBlockData) AIR).getState()); + return new MCAWrappedPalettedContainer<>(container, + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState()); + } + + @Override + public void injectBiomesFromMantle(Chunk e, Mantle mantle) { + ChunkAccess chunk = ((CraftChunk) e).getHandle(); + AtomicInteger c = new AtomicInteger(); + AtomicInteger r = new AtomicInteger(); + mantle.iterateChunk(e.getX(), e.getZ(), MatterBiomeInject.class, (x, y, z, b) -> { + if (b != null) { + if (b.isCustom()) { + chunk.setBiome(x, y, z, getCustomBiomeRegistry().getHolder(b.getBiomeId()).get()); + c.getAndIncrement(); + } else { + chunk.setBiome(x, y, z, (Holder) getBiomeBase(e.getWorld(), b.getBiome())); + r.getAndIncrement(); + } + } + }); + } + + public ItemStack applyCustomNbt(ItemStack itemStack, KMap customNbt) throws IllegalArgumentException { + if (customNbt != null && !customNbt.isEmpty()) { + net.minecraft.world.item.ItemStack s = CraftItemStack.asNMSCopy(itemStack); + + try { + net.minecraft.nbt.CompoundTag tag = TagParser.parseTag((new JSONObject(customNbt)).toString()); + tag.merge(s.getOrCreateTag()); + s.setTag(tag); + } catch (CommandSyntaxException var5) { + throw new IllegalArgumentException(var5); + } + + return CraftItemStack.asBukkitCopy(s); + } else { + return itemStack; + } + } + + public void setTreasurePos(Dolphin dolphin, com.volmit.iris.core.nms.container.BlockPos pos) { + CraftDolphin cd = (CraftDolphin)dolphin; + cd.getHandle().setTreasurePos(new BlockPos(pos.getX(), pos.getY(), pos.getZ())); + cd.getHandle().setGotFish(true); + } + + public void inject(long seed, Engine engine, World world) throws NoSuchFieldException, IllegalAccessException { + ServerLevel serverLevel = ((CraftWorld)world).getHandle(); + Class clazz = serverLevel.getChunkSource().chunkMap.generator.getClass(); + Field biomeSource = getField(clazz, BiomeSource.class); + biomeSource.setAccessible(true); + Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + unsafeField.setAccessible(true); + Unsafe unsafe = (Unsafe)unsafeField.get(null); + CustomBiomeSource customBiomeSource = new CustomBiomeSource(seed, engine, world); + unsafe.putObject(biomeSource.get(serverLevel.getChunkSource().chunkMap.generator), unsafe.objectFieldOffset(biomeSource), customBiomeSource); + biomeSource.set(serverLevel.getChunkSource().chunkMap.generator, customBiomeSource); + } + + private static Field getField(Class clazz, Class fieldType) throws NoSuchFieldException { + try { + for (Field f : clazz.getDeclaredFields()) { + if (f.getType().equals(fieldType)) + return f; + } + throw new NoSuchFieldException(fieldType.getName()); + } catch (NoSuchFieldException var4) { + Class superClass = clazz.getSuperclass(); + if (superClass == null) { + throw var4; + } else { + return getField(superClass, fieldType); + } + } + } +} diff --git a/nms/v1_19_R2/src/main/java/com/volmit/iris/core/nms/v1_19_R2/CustomBiomeSource.java b/nms/v1_19_R2/src/main/java/com/volmit/iris/core/nms/v1_19_R2/CustomBiomeSource.java new file mode 100644 index 000000000..7a82acf42 --- /dev/null +++ b/nms/v1_19_R2/src/main/java/com/volmit/iris/core/nms/v1_19_R2/CustomBiomeSource.java @@ -0,0 +1,152 @@ +package com.volmit.iris.core.nms.v1_19_R2; + +import com.mojang.serialization.Codec; +import com.volmit.iris.Iris; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.engine.object.IrisBiome; +import com.volmit.iris.engine.object.IrisBiomeCustom; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.math.RNG; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.biome.Climate; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.craftbukkit.v1_19_R2.CraftServer; +import org.bukkit.craftbukkit.v1_19_R2.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R2.block.CraftBlock; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +public class CustomBiomeSource extends BiomeSource { + + private final long seed; + private final Engine engine; + private final Registry biomeCustomRegistry; + private final Registry biomeRegistry; + private final AtomicCache registryAccess = new AtomicCache<>(); + private final RNG rng; + private final KMap> customBiomes; + + public CustomBiomeSource(long seed, Engine engine, World world) { + super(getAllBiomes( + ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())) + .registry(Registries.BIOME).orElse(null), + ((CraftWorld) world).getHandle().registryAccess().registry(Registries.BIOME).orElse(null), + engine)); + this.engine = engine; + this.seed = seed; + this.biomeCustomRegistry = registry().registry(Registries.BIOME).orElse(null); + this.biomeRegistry = ((CraftWorld) world).getHandle().registryAccess().registry(Registries.BIOME).orElse(null); + this.rng = new RNG(engine.getSeedManager().getBiome()); + this.customBiomes = fillCustomBiomes(biomeCustomRegistry, engine); + } + + private static List> getAllBiomes(Registry customRegistry, Registry registry, Engine engine) { + List> b = new ArrayList<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + b.add(customRegistry.getHolder(customRegistry.getResourceKey(customRegistry + .get(new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()))).get()).get()); + } + } else { + b.add(CraftBlock.biomeToBiomeBase(registry, i.getVanillaDerivative())); + } + } + + return b; + } + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private KMap> fillCustomBiomes(Registry customRegistry, Engine engine) { + KMap> m = new KMap<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + m.put(j.getId(), customRegistry.getHolder(customRegistry.getResourceKey(customRegistry + .get(new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()))).get()).get()); + } + } + } + + return m; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + @Override + protected Codec codec() { + throw new UnsupportedOperationException("Not supported"); + } + + @Override + public Holder getNoiseBiome(int x, int y, int z, Climate.Sampler sampler) { + int m = (y - engine.getMinHeight()) << 2; + IrisBiome ib = engine.getComplex().getTrueBiomeStream().get(x << 2, z << 2); + if (ib.isCustom()) { + return customBiomes.get(ib.getCustomBiome(rng, x << 2, m, z << 2).getId()); + } else { + org.bukkit.block.Biome v = ib.getSkyBiome(rng, x << 2, m, z << 2); + return CraftBlock.biomeToBiomeBase(biomeRegistry, v); + } + } +} \ No newline at end of file diff --git a/nms/v1_19_R2/src/main/java/com/volmit/iris/core/nms/v1_19_R2/NMSBinding.java b/nms/v1_19_R2/src/main/java/com/volmit/iris/core/nms/v1_19_R2/NMSBinding.java new file mode 100644 index 000000000..9dcaf20e9 --- /dev/null +++ b/nms/v1_19_R2/src/main/java/com/volmit/iris/core/nms/v1_19_R2/NMSBinding.java @@ -0,0 +1,496 @@ +package com.volmit.iris.core.nms.v1_19_R2; + +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.volmit.iris.Iris; +import com.volmit.iris.core.nms.INMSBinding; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.hunk.Hunk; +import com.volmit.iris.util.json.JSONObject; +import com.volmit.iris.util.mantle.Mantle; +import com.volmit.iris.util.matter.MatterBiomeInject; +import com.volmit.iris.util.nbt.io.NBTUtil; +import com.volmit.iris.util.nbt.mca.NBTWorld; +import com.volmit.iris.util.nbt.mca.palette.*; +import com.volmit.iris.util.nbt.tag.CompoundTag; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.NbtIo; +import net.minecraft.nbt.TagParser; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.LevelChunk; +import org.bukkit.*; +import org.bukkit.block.Biome; +import org.bukkit.block.data.BlockData; +import org.bukkit.craftbukkit.v1_19_R2.CraftChunk; +import org.bukkit.craftbukkit.v1_19_R2.CraftServer; +import org.bukkit.craftbukkit.v1_19_R2.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R2.block.CraftBlock; +import org.bukkit.craftbukkit.v1_19_R2.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_19_R2.entity.CraftDolphin; +import org.bukkit.craftbukkit.v1_19_R2.inventory.CraftItemStack; +import org.bukkit.entity.Dolphin; +import org.bukkit.entity.Entity; +import org.bukkit.generator.ChunkGenerator; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import sun.misc.Unsafe; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +public class NMSBinding implements INMSBinding { + private final KMap baseBiomeCache = new KMap<>(); + private final BlockData AIR = Material.AIR.createBlockData(); + private final AtomicCache> biomeMapCache = new AtomicCache<>(); + private final AtomicCache> registryCache = new AtomicCache<>(); + private final AtomicCache> globalCache = new AtomicCache<>(); + private final AtomicCache registryAccess = new AtomicCache<>(); + private final AtomicCache byIdRef = new AtomicCache<>(); + private Field biomeStorageCache = null; + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private static Class getClassType(Class type, int ordinal) { + return type.getDeclaredClasses()[ordinal]; + } + + @Override + public boolean hasTile(Location l) { + return ((CraftWorld) l.getWorld()).getHandle().getBlockEntity(new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()), false) != null; + } + + @Override + public CompoundTag serializeTile(Location location) { + BlockEntity e = ((CraftWorld) location.getWorld()).getHandle().getBlockEntity(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()), true); + + if (e == null) { + return null; + } + + net.minecraft.nbt.CompoundTag tag = e.saveWithFullMetadata(); + return convert(tag); + } + + private CompoundTag convert(net.minecraft.nbt.CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(boas); + tag.write(dos); + dos.close(); + return (CompoundTag) NBTUtil.read(new ByteArrayInputStream(boas.toByteArray()), false).getTag(); + } catch (Throwable ex) { + ex.printStackTrace(); + } + + return null; + } + + private net.minecraft.nbt.CompoundTag convert(CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + NBTUtil.write(tag, boas, false); + DataInputStream din = new DataInputStream(new ByteArrayInputStream(boas.toByteArray())); + net.minecraft.nbt.CompoundTag c = NbtIo.read(din); + din.close(); + return c; + } catch (Throwable e) { + e.printStackTrace(); + } + + return null; + } + + @Override + public void deserializeTile(CompoundTag c, Location pos) { + ((CraftWorld) pos.getWorld()).getHandle().getChunkAt(new BlockPos(pos.getBlockX(), 0, pos.getBlockZ())).setBlockEntityNbt(convert(c)); + } + + @Override + public CompoundTag serializeEntity(Entity location) { + return null;// TODO: + } + + @Override + public Entity deserializeEntity(CompoundTag s, Location newPosition) { + return null;// TODO: + } + + @Override + public boolean supportsCustomHeight() { + return true; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + private Registry getCustomBiomeRegistry() { + return registry().registry(Registries.BIOME).orElse(null); + } + + private Registry getBlockRegistry() { + return registry().registry(Registries.BLOCK).orElse(null); + } + + @Override + public Object getBiomeBaseFromId(int id) { + return getCustomBiomeRegistry().getHolder(id); + } + + @Override + public int getMinHeight(World world) { + return world.getMinHeight(); + } + + @Override + public boolean supportsCustomBiomes() { + return true; + } + + @Override + public int getTrueBiomeBaseId(Object biomeBase) { + return getCustomBiomeRegistry().getId(((Holder) biomeBase).value()); + } + + @Override + public Object getTrueBiomeBase(Location location) { + return ((CraftWorld) location.getWorld()).getHandle().getBiome(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ())); + } + + @Override + public String getTrueBiomeBaseKey(Location location) { + return getKeyForBiomeBase(getTrueBiomeBase(location)); + } + + @Override + public Object getCustomBiomeBaseFor(String mckey) { + return getCustomBiomeRegistry().get(new ResourceLocation(mckey)); + } + + @Override + public Object getCustomBiomeBaseHolderFor(String mckey) { + return getCustomBiomeRegistry().getHolder(getTrueBiomeBaseId(getCustomBiomeRegistry().get(new ResourceLocation(mckey)))).get(); + } + + public int getBiomeBaseIdForKey(String key) { + return getCustomBiomeRegistry().getId(getCustomBiomeRegistry().get(new ResourceLocation(key))); + } + + @Override + public String getKeyForBiomeBase(Object biomeBase) { + return getCustomBiomeRegistry().getKey((net.minecraft.world.level.biome.Biome) biomeBase).getPath(); // something, not something:something + } + + @Override + public Object getBiomeBase(World world, Biome biome) { + return CraftBlock.biomeToBiomeBase(((CraftWorld) world).getHandle() + .registryAccess().registry(Registries.BIOME).orElse(null), biome); + } + + @Override + public Object getBiomeBase(Object registry, Biome biome) { + Object v = baseBiomeCache.get(biome); + + if (v != null) { + return v; + } + //noinspection unchecked + v = CraftBlock.biomeToBiomeBase((Registry) registry, biome); + if (v == null) { + // Ok so there is this new biome name called "CUSTOM" in Paper's new releases. + // But, this does NOT exist within CraftBukkit which makes it return an error. + // So, we will just return the ID that the plains biome returns instead. + //noinspection unchecked + return CraftBlock.biomeToBiomeBase((Registry) registry, Biome.PLAINS); + } + baseBiomeCache.put(biome, v); + return v; + } + + @Override + public boolean isBukkit() { + return true; + } + + @Override + public int getBiomeId(Biome biome) { + for (World i : Bukkit.getWorlds()) { + if (i.getEnvironment().equals(World.Environment.NORMAL)) { + Registry registry = ((CraftWorld) i).getHandle().registryAccess().registry(Registries.BIOME).orElse(null); + return registry.getId((net.minecraft.world.level.biome.Biome) getBiomeBase(registry, biome)); + } + } + + return biome.ordinal(); + } + + private MCAIdMap getBiomeMapping() { + return biomeMapCache.aquire(() -> new MCAIdMap<>() { + @NotNull + @Override + public Iterator iterator() { + return getCustomBiomeRegistry().iterator(); + } + + @Override + public int getId(net.minecraft.world.level.biome.Biome paramT) { + return getCustomBiomeRegistry().getId(paramT); + } + + @Override + public net.minecraft.world.level.biome.Biome byId(int paramInt) { + return (net.minecraft.world.level.biome.Biome) getBiomeBaseFromId(paramInt); + } + }); + } + + @NotNull + private MCABiomeContainer getBiomeContainerInterface(MCAIdMap biomeMapping, MCAChunkBiomeContainer base) { + return new MCABiomeContainer() { + @Override + public int[] getData() { + return base.writeBiomes(); + } + + @Override + public void setBiome(int x, int y, int z, int id) { + base.setBiome(x, y, z, biomeMapping.byId(id)); + } + + @Override + public int getBiome(int x, int y, int z) { + return biomeMapping.getId(base.getBiome(x, y, z)); + } + }; + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max, int[] data) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max, data); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public int countCustomBiomes() { + AtomicInteger a = new AtomicInteger(0); + + getCustomBiomeRegistry().keySet().forEach((i) -> { + if (i.getNamespace().equals("minecraft")) { + return; + } + + a.incrementAndGet(); + Iris.debug("Custom Biome: " + i); + }); + + return a.get(); + } + + public boolean supportsDataPacks() { + return true; + } + + public void setBiomes(int cx, int cz, World world, Hunk biomes) { + LevelChunk c = ((CraftWorld) world).getHandle().getChunk(cx, cz); + biomes.iterateSync((x, y, z, b) -> c.setBiome(x, y, z, (Holder) b)); + c.setUnsaved(true); + } + + @Override + public void forceBiomeInto(int x, int y, int z, Object somethingVeryDirty, ChunkGenerator.BiomeGrid chunk) { + try { + ChunkAccess s = (ChunkAccess) getFieldForBiomeStorage(chunk).get(chunk); + Holder biome = (Holder) somethingVeryDirty; + s.setBiome(x, y, z, biome); + } catch (IllegalAccessException e) { + Iris.reportError(e); + e.printStackTrace(); + } + } + + private Field getFieldForBiomeStorage(Object storage) { + Field f = biomeStorageCache; + + if (f != null) { + return f; + } + try { + f = storage.getClass().getDeclaredField("biome"); + f.setAccessible(true); + return f; + } catch (Throwable e) { + Iris.reportError(e); + e.printStackTrace(); + Iris.error(storage.getClass().getCanonicalName()); + } + + biomeStorageCache = f; + return null; + } + + @Override + public MCAPaletteAccess createPalette() { + MCAIdMapper registry = registryCache.aquireNasty(() -> { + Field cf = net.minecraft.core.IdMapper.class.getDeclaredField("tToId"); + Field df = net.minecraft.core.IdMapper.class.getDeclaredField("idToT"); + Field bf = net.minecraft.core.IdMapper.class.getDeclaredField("nextId"); + cf.setAccessible(true); + df.setAccessible(true); + bf.setAccessible(true); + net.minecraft.core.IdMapper blockData = Block.BLOCK_STATE_REGISTRY; + int b = bf.getInt(blockData); + Object2IntMap c = (Object2IntMap) cf.get(blockData); + List d = (List) df.get(blockData); + return new MCAIdMapper(c, d, b); + }); + MCAPalette global = globalCache.aquireNasty(() -> new MCAGlobalPalette<>(registry, ((CraftBlockData) AIR).getState())); + MCAPalettedContainer container = new MCAPalettedContainer<>(global, registry, + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState(), + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + ((CraftBlockData) AIR).getState()); + return new MCAWrappedPalettedContainer<>(container, + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState()); + } + + @Override + public void injectBiomesFromMantle(Chunk e, Mantle mantle) { + ChunkAccess chunk = ((CraftChunk) e).getHandle(); + AtomicInteger c = new AtomicInteger(); + AtomicInteger r = new AtomicInteger(); + mantle.iterateChunk(e.getX(), e.getZ(), MatterBiomeInject.class, (x, y, z, b) -> { + if (b != null) { + if (b.isCustom()) { + chunk.setBiome(x, y, z, getCustomBiomeRegistry().getHolder(b.getBiomeId()).get()); + c.getAndIncrement(); + } else { + chunk.setBiome(x, y, z, (Holder) getBiomeBase(e.getWorld(), b.getBiome())); + r.getAndIncrement(); + } + } + }); + } + + public ItemStack applyCustomNbt(ItemStack itemStack, KMap customNbt) throws IllegalArgumentException { + if (customNbt != null && !customNbt.isEmpty()) { + net.minecraft.world.item.ItemStack s = CraftItemStack.asNMSCopy(itemStack); + + try { + net.minecraft.nbt.CompoundTag tag = TagParser.parseTag((new JSONObject(customNbt)).toString()); + tag.merge(s.getOrCreateTag()); + s.setTag(tag); + } catch (CommandSyntaxException var5) { + throw new IllegalArgumentException(var5); + } + + return CraftItemStack.asBukkitCopy(s); + } else { + return itemStack; + } + } + + public void setTreasurePos(Dolphin dolphin, com.volmit.iris.core.nms.container.BlockPos pos) { + CraftDolphin cd = (CraftDolphin)dolphin; + cd.getHandle().setTreasurePos(new BlockPos(pos.getX(), pos.getY(), pos.getZ())); + cd.getHandle().setGotFish(true); + } + + public void inject(long seed, Engine engine, World world) throws NoSuchFieldException, IllegalAccessException { + ServerLevel serverLevel = ((CraftWorld)world).getHandle(); + Class clazz = serverLevel.getChunkSource().chunkMap.generator.getClass(); + Field biomeSource = getField(clazz, BiomeSource.class); + biomeSource.setAccessible(true); + Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + unsafeField.setAccessible(true); + Unsafe unsafe = (Unsafe)unsafeField.get(null); + CustomBiomeSource customBiomeSource = new CustomBiomeSource(seed, engine, world); + unsafe.putObject(biomeSource.get(serverLevel.getChunkSource().chunkMap.generator), unsafe.objectFieldOffset(biomeSource), customBiomeSource); + biomeSource.set(serverLevel.getChunkSource().chunkMap.generator, customBiomeSource); + } + + private static Field getField(Class clazz, Class fieldType) throws NoSuchFieldException { + try { + for (Field f : clazz.getDeclaredFields()) { + if (f.getType().equals(fieldType)) + return f; + } + throw new NoSuchFieldException(fieldType.getName()); + } catch (NoSuchFieldException var4) { + Class superClass = clazz.getSuperclass(); + if (superClass == null) { + throw var4; + } else { + return getField(superClass, fieldType); + } + } + } +} diff --git a/nms/v1_19_R3/src/main/java/com/volmit/iris/core/nms/v1_19_R3/CustomBiomeSource.java b/nms/v1_19_R3/src/main/java/com/volmit/iris/core/nms/v1_19_R3/CustomBiomeSource.java new file mode 100644 index 000000000..f3debbaad --- /dev/null +++ b/nms/v1_19_R3/src/main/java/com/volmit/iris/core/nms/v1_19_R3/CustomBiomeSource.java @@ -0,0 +1,169 @@ +package com.volmit.iris.core.nms.v1_19_R3; + +import com.mojang.serialization.Codec; +import com.volmit.iris.Iris; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.engine.object.IrisBiome; +import com.volmit.iris.engine.object.IrisBiomeCustom; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.math.RNG; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.biome.Climate; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.craftbukkit.v1_19_R3.CraftServer; +import org.bukkit.craftbukkit.v1_19_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R3.block.CraftBlock; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Stream; + +public class CustomBiomeSource extends BiomeSource { + + private final long seed; + private final Engine engine; + private final Registry biomeCustomRegistry; + private final Registry biomeRegistry; + private final AtomicCache registryAccess = new AtomicCache<>(); + private final RNG rng; + private final KMap> customBiomes; + + public CustomBiomeSource(long seed, Engine engine, World world) { + this.engine = engine; + this.seed = seed; + this.biomeCustomRegistry = registry().registry(Registries.BIOME).orElse(null); + this.biomeRegistry = ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())).registry(Registries.BIOME).orElse(null); + this.rng = new RNG(engine.getSeedManager().getBiome()); + this.customBiomes = fillCustomBiomes(biomeCustomRegistry, engine); + } + + private static List> getAllBiomes(Registry customRegistry, Registry registry, Engine engine) { + List> b = new ArrayList<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + b.add(customRegistry.getHolder(customRegistry.getResourceKey(customRegistry + .get(new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()))).get()).get()); + } + } else { + b.add(CraftBlock.biomeToBiomeBase(registry, i.getVanillaDerivative())); + } + } + + return b; + } + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + @Override + protected Stream> collectPossibleBiomes() { + return getAllBiomes( + ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())) + .registry(Registries.BIOME).orElse(null), + ((CraftWorld) engine.getWorld().realWorld()).getHandle().registryAccess().registry(Registries.BIOME).orElse(null), + engine).stream(); + } + private KMap> fillCustomBiomes(Registry customRegistry, Engine engine) { + KMap> m = new KMap<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + ResourceLocation resourceLocation = new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()); + Biome biome = customRegistry.get(resourceLocation); + Optional> optionalBiomeKey = customRegistry.getResourceKey(biome); + if (optionalBiomeKey.isEmpty()) { + Iris.error("Cannot find biome for IrisBiomeCustom " + j.getId() + " from engine " + engine.getName()); + continue; + } + ResourceKey biomeKey = optionalBiomeKey.get(); + Optional> optionalReferenceHolder = customRegistry.getHolder(biomeKey); + if (optionalReferenceHolder.isEmpty()) { + Iris.error("Cannot find reference to biome " + biomeKey + " for engine " + engine.getName()); + continue; + } + m.put(j.getId(), optionalReferenceHolder.get()); + } + } + } + + return m; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + @Override + protected Codec codec() { + throw new UnsupportedOperationException("Not supported"); + } + + @Override + public Holder getNoiseBiome(int x, int y, int z, Climate.Sampler sampler) { + int m = (y - engine.getMinHeight()) << 2; + IrisBiome ib = engine.getComplex().getTrueBiomeStream().get(x << 2, z << 2); + if (ib.isCustom()) { + return customBiomes.get(ib.getCustomBiome(rng, x << 2, m, z << 2).getId()); + } else { + org.bukkit.block.Biome v = ib.getSkyBiome(rng, x << 2, m, z << 2); + return CraftBlock.biomeToBiomeBase(biomeRegistry, v); + } + } +} \ No newline at end of file diff --git a/nms/v1_19_R3/src/main/java/com/volmit/iris/core/nms/v1_19_R3/NMSBinding.java b/nms/v1_19_R3/src/main/java/com/volmit/iris/core/nms/v1_19_R3/NMSBinding.java new file mode 100644 index 000000000..f0087b9a3 --- /dev/null +++ b/nms/v1_19_R3/src/main/java/com/volmit/iris/core/nms/v1_19_R3/NMSBinding.java @@ -0,0 +1,498 @@ +package com.volmit.iris.core.nms.v1_19_R3; + +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.volmit.iris.Iris; +import com.volmit.iris.core.nms.INMSBinding; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.hunk.Hunk; +import com.volmit.iris.util.json.JSONObject; +import com.volmit.iris.util.mantle.Mantle; +import com.volmit.iris.util.matter.MatterBiomeInject; +import com.volmit.iris.util.nbt.io.NBTUtil; +import com.volmit.iris.util.nbt.mca.NBTWorld; +import com.volmit.iris.util.nbt.mca.palette.*; +import com.volmit.iris.util.nbt.tag.CompoundTag; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.NbtIo; +import net.minecraft.nbt.TagParser; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.ChunkStatus; +import net.minecraft.world.level.chunk.LevelChunk; +import org.bukkit.*; +import org.bukkit.block.Biome; +import org.bukkit.block.data.BlockData; + +import org.bukkit.craftbukkit.v1_19_R3.CraftChunk; +import org.bukkit.craftbukkit.v1_19_R3.CraftServer; +import org.bukkit.craftbukkit.v1_19_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R3.block.CraftBlock; +import org.bukkit.craftbukkit.v1_19_R3.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_19_R3.entity.CraftDolphin; +import org.bukkit.craftbukkit.v1_19_R3.inventory.CraftItemStack; +import org.bukkit.entity.Dolphin; +import org.bukkit.entity.Entity; +import org.bukkit.generator.ChunkGenerator; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import sun.misc.Unsafe; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +public class NMSBinding implements INMSBinding { + private final KMap baseBiomeCache = new KMap<>(); + private final BlockData AIR = Material.AIR.createBlockData(); + private final AtomicCache> biomeMapCache = new AtomicCache<>(); + private final AtomicCache> registryCache = new AtomicCache<>(); + private final AtomicCache> globalCache = new AtomicCache<>(); + private final AtomicCache registryAccess = new AtomicCache<>(); + private final AtomicCache byIdRef = new AtomicCache<>(); + private Field biomeStorageCache = null; + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private static Class getClassType(Class type, int ordinal) { + return type.getDeclaredClasses()[ordinal]; + } + + @Override + public boolean hasTile(Location l) { + return ((CraftWorld) l.getWorld()).getHandle().getBlockEntity(new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()), false) != null; + } + + @Override + public CompoundTag serializeTile(Location location) { + BlockEntity e = ((CraftWorld) location.getWorld()).getHandle().getBlockEntity(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()), true); + + if (e == null) { + return null; + } + + net.minecraft.nbt.CompoundTag tag = e.saveWithFullMetadata(); + return convert(tag); + } + + private CompoundTag convert(net.minecraft.nbt.CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(boas); + tag.write(dos); + dos.close(); + return (CompoundTag) NBTUtil.read(new ByteArrayInputStream(boas.toByteArray()), false).getTag(); + } catch (Throwable ex) { + ex.printStackTrace(); + } + + return null; + } + + private net.minecraft.nbt.CompoundTag convert(CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + NBTUtil.write(tag, boas, false); + DataInputStream din = new DataInputStream(new ByteArrayInputStream(boas.toByteArray())); + net.minecraft.nbt.CompoundTag c = NbtIo.read(din); + din.close(); + return c; + } catch (Throwable e) { + e.printStackTrace(); + } + + return null; + } + + @Override + public void deserializeTile(CompoundTag c, Location pos) { + ((CraftWorld) pos.getWorld()).getHandle().getChunkAt(new BlockPos(pos.getBlockX(), 0, pos.getBlockZ())).setBlockEntityNbt(convert(c)); + } + + @Override + public CompoundTag serializeEntity(Entity location) { + return null;// TODO: + } + + @Override + public Entity deserializeEntity(CompoundTag s, Location newPosition) { + return null;// TODO: + } + + @Override + public boolean supportsCustomHeight() { + return true; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + private Registry getCustomBiomeRegistry() { + return registry().registry(Registries.BIOME).orElse(null); + } + + private Registry getBlockRegistry() { + return registry().registry(Registries.BLOCK).orElse(null); + } + + @Override + public Object getBiomeBaseFromId(int id) { + return getCustomBiomeRegistry().getHolder(id); + } + + @Override + public int getMinHeight(World world) { + return world.getMinHeight(); + } + + @Override + public boolean supportsCustomBiomes() { + return true; + } + + @Override + public int getTrueBiomeBaseId(Object biomeBase) { + return getCustomBiomeRegistry().getId(((Holder) biomeBase).value()); + } + + @Override + public Object getTrueBiomeBase(Location location) { + return ((CraftWorld) location.getWorld()).getHandle().getBiome(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ())); + } + + @Override + public String getTrueBiomeBaseKey(Location location) { + return getKeyForBiomeBase(getTrueBiomeBase(location)); + } + + @Override + public Object getCustomBiomeBaseFor(String mckey) { + return getCustomBiomeRegistry().get(new ResourceLocation(mckey)); + } + + @Override + public Object getCustomBiomeBaseHolderFor(String mckey) { + return getCustomBiomeRegistry().getHolder(getTrueBiomeBaseId(getCustomBiomeRegistry().get(new ResourceLocation(mckey)))).get(); + } + + public int getBiomeBaseIdForKey(String key) { + return getCustomBiomeRegistry().getId(getCustomBiomeRegistry().get(new ResourceLocation(key))); + } + + @Override + public String getKeyForBiomeBase(Object biomeBase) { + return getCustomBiomeRegistry().getKey((net.minecraft.world.level.biome.Biome) biomeBase).getPath(); // something, not something:something + } + + @Override + public Object getBiomeBase(World world, Biome biome) { + return CraftBlock.biomeToBiomeBase(((CraftWorld) world).getHandle() + .registryAccess().registry(Registries.BIOME).orElse(null), biome); + } + + @Override + public Object getBiomeBase(Object registry, Biome biome) { + Object v = baseBiomeCache.get(biome); + + if (v != null) { + return v; + } + //noinspection unchecked + v = CraftBlock.biomeToBiomeBase((Registry) registry, biome); + if (v == null) { + // Ok so there is this new biome name called "CUSTOM" in Paper's new releases. + // But, this does NOT exist within CraftBukkit which makes it return an error. + // So, we will just return the ID that the plains biome returns instead. + //noinspection unchecked + return CraftBlock.biomeToBiomeBase((Registry) registry, Biome.PLAINS); + } + baseBiomeCache.put(biome, v); + return v; + } + + @Override + public boolean isBukkit() { + return true; + } + + @Override + public int getBiomeId(Biome biome) { + for (World i : Bukkit.getWorlds()) { + if (i.getEnvironment().equals(World.Environment.NORMAL)) { + Registry registry = ((CraftWorld) i).getHandle().registryAccess().registry(Registries.BIOME).orElse(null); + return registry.getId((net.minecraft.world.level.biome.Biome) getBiomeBase(registry, biome)); + } + } + + return biome.ordinal(); + } + + private MCAIdMap getBiomeMapping() { + return biomeMapCache.aquire(() -> new MCAIdMap<>() { + @NotNull + @Override + public Iterator iterator() { + return getCustomBiomeRegistry().iterator(); + } + + @Override + public int getId(net.minecraft.world.level.biome.Biome paramT) { + return getCustomBiomeRegistry().getId(paramT); + } + + @Override + public net.minecraft.world.level.biome.Biome byId(int paramInt) { + return (net.minecraft.world.level.biome.Biome) getBiomeBaseFromId(paramInt); + } + }); + } + + @NotNull + private MCABiomeContainer getBiomeContainerInterface(MCAIdMap biomeMapping, MCAChunkBiomeContainer base) { + return new MCABiomeContainer() { + @Override + public int[] getData() { + return base.writeBiomes(); + } + + @Override + public void setBiome(int x, int y, int z, int id) { + base.setBiome(x, y, z, biomeMapping.byId(id)); + } + + @Override + public int getBiome(int x, int y, int z) { + return biomeMapping.getId(base.getBiome(x, y, z)); + } + }; + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max, int[] data) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max, data); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public int countCustomBiomes() { + AtomicInteger a = new AtomicInteger(0); + + getCustomBiomeRegistry().keySet().forEach((i) -> { + if (i.getNamespace().equals("minecraft")) { + return; + } + + a.incrementAndGet(); + Iris.debug("Custom Biome: " + i); + }); + + return a.get(); + } + + public boolean supportsDataPacks() { + return true; + } + + public void setBiomes(int cx, int cz, World world, Hunk biomes) { + LevelChunk c = ((CraftWorld) world).getHandle().getChunk(cx, cz); + biomes.iterateSync((x, y, z, b) -> c.setBiome(x, y, z, (Holder) b)); + c.setUnsaved(true); + } + + @Override + public void forceBiomeInto(int x, int y, int z, Object somethingVeryDirty, ChunkGenerator.BiomeGrid chunk) { + try { + ChunkAccess s = (ChunkAccess) getFieldForBiomeStorage(chunk).get(chunk); + Holder biome = (Holder) somethingVeryDirty; + s.setBiome(x, y, z, biome); + } catch (IllegalAccessException e) { + Iris.reportError(e); + e.printStackTrace(); + } + } + + private Field getFieldForBiomeStorage(Object storage) { + Field f = biomeStorageCache; + + if (f != null) { + return f; + } + try { + f = storage.getClass().getDeclaredField("biome"); + f.setAccessible(true); + return f; + } catch (Throwable e) { + Iris.reportError(e); + e.printStackTrace(); + Iris.error(storage.getClass().getCanonicalName()); + } + + biomeStorageCache = f; + return null; + } + + @Override + public MCAPaletteAccess createPalette() { + MCAIdMapper registry = registryCache.aquireNasty(() -> { + Field cf = net.minecraft.core.IdMapper.class.getDeclaredField("tToId"); + Field df = net.minecraft.core.IdMapper.class.getDeclaredField("idToT"); + Field bf = net.minecraft.core.IdMapper.class.getDeclaredField("nextId"); + cf.setAccessible(true); + df.setAccessible(true); + bf.setAccessible(true); + net.minecraft.core.IdMapper blockData = Block.BLOCK_STATE_REGISTRY; + int b = bf.getInt(blockData); + Object2IntMap c = (Object2IntMap) cf.get(blockData); + List d = (List) df.get(blockData); + return new MCAIdMapper(c, d, b); + }); + MCAPalette global = globalCache.aquireNasty(() -> new MCAGlobalPalette<>(registry, ((CraftBlockData) AIR).getState())); + MCAPalettedContainer container = new MCAPalettedContainer<>(global, registry, + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState(), + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + ((CraftBlockData) AIR).getState()); + return new MCAWrappedPalettedContainer<>(container, + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState()); + } + + @Override + public void injectBiomesFromMantle(Chunk e, Mantle mantle) { + ChunkAccess chunk = ((CraftChunk) e).getHandle(ChunkStatus.FULL); + AtomicInteger c = new AtomicInteger(); + AtomicInteger r = new AtomicInteger(); + mantle.iterateChunk(e.getX(), e.getZ(), MatterBiomeInject.class, (x, y, z, b) -> { + if (b != null) { + if (b.isCustom()) { + chunk.setBiome(x, y, z, getCustomBiomeRegistry().getHolder(b.getBiomeId()).get()); + c.getAndIncrement(); + } else { + chunk.setBiome(x, y, z, (Holder) getBiomeBase(e.getWorld(), b.getBiome())); + r.getAndIncrement(); + } + } + }); + } + + public ItemStack applyCustomNbt(ItemStack itemStack, KMap customNbt) throws IllegalArgumentException { + if (customNbt != null && !customNbt.isEmpty()) { + net.minecraft.world.item.ItemStack s = CraftItemStack.asNMSCopy(itemStack); + + try { + net.minecraft.nbt.CompoundTag tag = TagParser.parseTag((new JSONObject(customNbt)).toString()); + tag.merge(s.getOrCreateTag()); + s.setTag(tag); + } catch (CommandSyntaxException var5) { + throw new IllegalArgumentException(var5); + } + + return CraftItemStack.asBukkitCopy(s); + } else { + return itemStack; + } + } + + public void setTreasurePos(Dolphin dolphin, com.volmit.iris.core.nms.container.BlockPos pos) { + CraftDolphin cd = (CraftDolphin)dolphin; + cd.getHandle().setTreasurePos(new BlockPos(pos.getX(), pos.getY(), pos.getZ())); + cd.getHandle().setGotFish(true); + } + + public void inject(long seed, Engine engine, World world) throws NoSuchFieldException, IllegalAccessException { + ServerLevel serverLevel = ((CraftWorld)world).getHandle(); + Class clazz = serverLevel.getChunkSource().chunkMap.generator.getClass(); + Field biomeSource = getField(clazz, BiomeSource.class); + biomeSource.setAccessible(true); + Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + unsafeField.setAccessible(true); + Unsafe unsafe = (Unsafe)unsafeField.get(null); + CustomBiomeSource customBiomeSource = new CustomBiomeSource(seed, engine, world); + unsafe.putObject(biomeSource.get(serverLevel.getChunkSource().chunkMap.generator), unsafe.objectFieldOffset(biomeSource), customBiomeSource); + biomeSource.set(serverLevel.getChunkSource().chunkMap.generator, customBiomeSource); + } + + private static Field getField(Class clazz, Class fieldType) throws NoSuchFieldException { + try { + for (Field f : clazz.getDeclaredFields()) { + if (f.getType().equals(fieldType)) + return f; + } + throw new NoSuchFieldException(fieldType.getName()); + } catch (NoSuchFieldException var4) { + Class superClass = clazz.getSuperclass(); + if (superClass == null) { + throw var4; + } else { + return getField(superClass, fieldType); + } + } + } +} diff --git a/src/main/java/com/volmit/iris/core/nms/v20/CustomBiomeSource.java b/nms/v1_20_R1/src/main/java/com/volmit/iris/core/nms/v1_20_R1/CustomBiomeSource.java similarity index 97% rename from src/main/java/com/volmit/iris/core/nms/v20/CustomBiomeSource.java rename to nms/v1_20_R1/src/main/java/com/volmit/iris/core/nms/v1_20_R1/CustomBiomeSource.java index 3a22557e6..41f4170c8 100644 --- a/src/main/java/com/volmit/iris/core/nms/v20/CustomBiomeSource.java +++ b/nms/v1_20_R1/src/main/java/com/volmit/iris/core/nms/v1_20_R1/CustomBiomeSource.java @@ -1,169 +1,169 @@ -package com.volmit.iris.core.nms.v20; - -import com.mojang.serialization.Codec; -import com.volmit.iris.Iris; -import com.volmit.iris.engine.data.cache.AtomicCache; -import com.volmit.iris.engine.framework.Engine; -import com.volmit.iris.engine.object.IrisBiome; -import com.volmit.iris.engine.object.IrisBiomeCustom; -import com.volmit.iris.util.collection.KMap; -import com.volmit.iris.util.math.RNG; -import net.minecraft.core.Holder; -import net.minecraft.core.Registry; -import net.minecraft.core.RegistryAccess; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.biome.BiomeSource; -import net.minecraft.world.level.biome.Climate; -import org.bukkit.Bukkit; -import org.bukkit.World; -import org.bukkit.craftbukkit.v1_20_R1.CraftServer; -import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R1.block.CraftBlock; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.stream.Stream; - -public class CustomBiomeSource extends BiomeSource { - - private final long seed; - private final Engine engine; - private final Registry biomeCustomRegistry; - private final Registry biomeRegistry; - private final AtomicCache registryAccess = new AtomicCache<>(); - private final RNG rng; - private final KMap> customBiomes; - - public CustomBiomeSource(long seed, Engine engine, World world) { - this.engine = engine; - this.seed = seed; - this.biomeCustomRegistry = registry().registry(Registries.BIOME).orElse(null); - this.biomeRegistry = ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())).registry(Registries.BIOME).orElse(null); - this.rng = new RNG(engine.getSeedManager().getBiome()); - this.customBiomes = fillCustomBiomes(biomeCustomRegistry, engine); - } - - private static List> getAllBiomes(Registry customRegistry, Registry registry, Engine engine) { - List> b = new ArrayList<>(); - - for (IrisBiome i : engine.getAllBiomes()) { - if (i.isCustom()) { - for (IrisBiomeCustom j : i.getCustomDerivitives()) { - b.add(customRegistry.getHolder(customRegistry.getResourceKey(customRegistry - .get(new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()))).get()).get()); - } - } else { - b.add(CraftBlock.biomeToBiomeBase(registry, i.getVanillaDerivative())); - } - } - - return b; - } - - private static Object getFor(Class type, Object source) { - Object o = fieldFor(type, source); - - if (o != null) { - return o; - } - - return invokeFor(type, source); - } - - private static Object fieldFor(Class returns, Object in) { - return fieldForClass(returns, in.getClass(), in); - } - - private static Object invokeFor(Class returns, Object in) { - for (Method i : in.getClass().getMethods()) { - if (i.getReturnType().equals(returns)) { - i.setAccessible(true); - try { - Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); - return i.invoke(in); - } catch (Throwable e) { - e.printStackTrace(); - } - } - } - - return null; - } - - @SuppressWarnings("unchecked") - private static T fieldForClass(Class returnType, Class sourceType, Object in) { - for (Field i : sourceType.getDeclaredFields()) { - if (i.getType().equals(returnType)) { - i.setAccessible(true); - try { - Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); - return (T) i.get(in); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - return null; - } - - @Override - protected Stream> collectPossibleBiomes() { - return getAllBiomes( - ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())) - .registry(Registries.BIOME).orElse(null), - ((CraftWorld) engine.getWorld().realWorld()).getHandle().registryAccess().registry(Registries.BIOME).orElse(null), - engine).stream(); - } - private KMap> fillCustomBiomes(Registry customRegistry, Engine engine) { - KMap> m = new KMap<>(); - - for (IrisBiome i : engine.getAllBiomes()) { - if (i.isCustom()) { - for (IrisBiomeCustom j : i.getCustomDerivitives()) { - ResourceLocation resourceLocation = new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()); - Biome biome = customRegistry.get(resourceLocation); - Optional> optionalBiomeKey = customRegistry.getResourceKey(biome); - if (optionalBiomeKey.isEmpty()) { - Iris.error("Cannot find biome for IrisBiomeCustom " + j.getId() + " from engine " + engine.getName()); - continue; - } - ResourceKey biomeKey = optionalBiomeKey.get(); - Optional> optionalReferenceHolder = customRegistry.getHolder(biomeKey); - if (optionalReferenceHolder.isEmpty()) { - Iris.error("Cannot find reference to biome " + biomeKey + " for engine " + engine.getName()); - continue; - } - m.put(j.getId(), optionalReferenceHolder.get()); - } - } - } - - return m; - } - - private RegistryAccess registry() { - return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); - } - - @Override - protected Codec codec() { - throw new UnsupportedOperationException("Not supported"); - } - - @Override - public Holder getNoiseBiome(int x, int y, int z, Climate.Sampler sampler) { - int m = (y - engine.getMinHeight()) << 2; - IrisBiome ib = engine.getComplex().getTrueBiomeStream().get(x << 2, z << 2); - if (ib.isCustom()) { - return customBiomes.get(ib.getCustomBiome(rng, x << 2, m, z << 2).getId()); - } else { - org.bukkit.block.Biome v = ib.getSkyBiome(rng, x << 2, m, z << 2); - return CraftBlock.biomeToBiomeBase(biomeRegistry, v); - } - } +package com.volmit.iris.core.nms.v1_20_R1; + +import com.mojang.serialization.Codec; +import com.volmit.iris.Iris; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.engine.object.IrisBiome; +import com.volmit.iris.engine.object.IrisBiomeCustom; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.math.RNG; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.biome.Climate; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.craftbukkit.v1_20_R1.CraftServer; +import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R1.block.CraftBlock; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Stream; + +public class CustomBiomeSource extends BiomeSource { + + private final long seed; + private final Engine engine; + private final Registry biomeCustomRegistry; + private final Registry biomeRegistry; + private final AtomicCache registryAccess = new AtomicCache<>(); + private final RNG rng; + private final KMap> customBiomes; + + public CustomBiomeSource(long seed, Engine engine, World world) { + this.engine = engine; + this.seed = seed; + this.biomeCustomRegistry = registry().registry(Registries.BIOME).orElse(null); + this.biomeRegistry = ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())).registry(Registries.BIOME).orElse(null); + this.rng = new RNG(engine.getSeedManager().getBiome()); + this.customBiomes = fillCustomBiomes(biomeCustomRegistry, engine); + } + + private static List> getAllBiomes(Registry customRegistry, Registry registry, Engine engine) { + List> b = new ArrayList<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + b.add(customRegistry.getHolder(customRegistry.getResourceKey(customRegistry + .get(new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()))).get()).get()); + } + } else { + b.add(CraftBlock.biomeToBiomeBase(registry, i.getVanillaDerivative())); + } + } + + return b; + } + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + @Override + protected Stream> collectPossibleBiomes() { + return getAllBiomes( + ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())) + .registry(Registries.BIOME).orElse(null), + ((CraftWorld) engine.getWorld().realWorld()).getHandle().registryAccess().registry(Registries.BIOME).orElse(null), + engine).stream(); + } + private KMap> fillCustomBiomes(Registry customRegistry, Engine engine) { + KMap> m = new KMap<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + ResourceLocation resourceLocation = new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()); + Biome biome = customRegistry.get(resourceLocation); + Optional> optionalBiomeKey = customRegistry.getResourceKey(biome); + if (optionalBiomeKey.isEmpty()) { + Iris.error("Cannot find biome for IrisBiomeCustom " + j.getId() + " from engine " + engine.getName()); + continue; + } + ResourceKey biomeKey = optionalBiomeKey.get(); + Optional> optionalReferenceHolder = customRegistry.getHolder(biomeKey); + if (optionalReferenceHolder.isEmpty()) { + Iris.error("Cannot find reference to biome " + biomeKey + " for engine " + engine.getName()); + continue; + } + m.put(j.getId(), optionalReferenceHolder.get()); + } + } + } + + return m; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + @Override + protected Codec codec() { + throw new UnsupportedOperationException("Not supported"); + } + + @Override + public Holder getNoiseBiome(int x, int y, int z, Climate.Sampler sampler) { + int m = (y - engine.getMinHeight()) << 2; + IrisBiome ib = engine.getComplex().getTrueBiomeStream().get(x << 2, z << 2); + if (ib.isCustom()) { + return customBiomes.get(ib.getCustomBiome(rng, x << 2, m, z << 2).getId()); + } else { + org.bukkit.block.Biome v = ib.getSkyBiome(rng, x << 2, m, z << 2); + return CraftBlock.biomeToBiomeBase(biomeRegistry, v); + } + } } \ No newline at end of file diff --git a/src/main/java/com/volmit/iris/core/nms/v20/NMSBinding1_20_1.java b/nms/v1_20_R1/src/main/java/com/volmit/iris/core/nms/v1_20_R1/NMSBinding.java similarity index 84% rename from src/main/java/com/volmit/iris/core/nms/v20/NMSBinding1_20_1.java rename to nms/v1_20_R1/src/main/java/com/volmit/iris/core/nms/v1_20_R1/NMSBinding.java index 71f17640b..cf48c8daf 100644 --- a/src/main/java/com/volmit/iris/core/nms/v20/NMSBinding1_20_1.java +++ b/nms/v1_20_R1/src/main/java/com/volmit/iris/core/nms/v1_20_R1/NMSBinding.java @@ -1,454 +1,500 @@ -/* - * Iris is a World Generator for Minecraft Bukkit Servers - * Copyright (c) 2022 Arcane Arts (Volmit Software) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.volmit.iris.core.nms.v20; - - -import com.volmit.iris.Iris; -import com.volmit.iris.core.nms.INMSBinding; -import com.volmit.iris.engine.data.cache.AtomicCache; -import com.volmit.iris.util.collection.KMap; -import com.volmit.iris.util.hunk.Hunk; -import com.volmit.iris.util.mantle.Mantle; -import com.volmit.iris.util.matter.MatterBiomeInject; -import com.volmit.iris.util.nbt.io.NBTUtil; -import com.volmit.iris.util.nbt.mca.NBTWorld; -import com.volmit.iris.util.nbt.mca.palette.*; -import com.volmit.iris.util.nbt.tag.CompoundTag; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Holder; -import net.minecraft.core.Registry; -import net.minecraft.core.RegistryAccess; -import net.minecraft.core.registries.Registries; -import net.minecraft.nbt.NbtIo; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.chunk.ChunkStatus; -import net.minecraft.world.level.chunk.LevelChunk; -import org.bukkit.*; -import org.bukkit.block.Biome; -import org.bukkit.block.data.BlockData; - -import org.bukkit.craftbukkit.v1_20_R1.CraftChunk; -import org.bukkit.craftbukkit.v1_20_R1.CraftServer; -import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R1.block.CraftBlock; -import org.bukkit.craftbukkit.v1_20_R1.block.data.CraftBlockData; -import org.bukkit.entity.Entity; -import org.bukkit.generator.ChunkGenerator; -import org.jetbrains.annotations.NotNull; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Iterator; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; - -public class NMSBinding1_20_1 implements INMSBinding { - - public static final String NMS_VERSION = "1.20.1"; - private final KMap baseBiomeCache = new KMap<>(); - private final BlockData AIR = Material.AIR.createBlockData(); - private final AtomicCache> biomeMapCache = new AtomicCache<>(); - private final AtomicCache> registryCache = new AtomicCache<>(); - private final AtomicCache> globalCache = new AtomicCache<>(); - private final AtomicCache registryAccess = new AtomicCache<>(); - private final AtomicCache byIdRef = new AtomicCache<>(); - private Field biomeStorageCache = null; - - private static Object getFor(Class type, Object source) { - Object o = fieldFor(type, source); - - if (o != null) { - return o; - } - - return invokeFor(type, source); - } - - private static Object invokeFor(Class returns, Object in) { - for (Method i : in.getClass().getMethods()) { - if (i.getReturnType().equals(returns)) { - i.setAccessible(true); - try { - Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); - return i.invoke(in); - } catch (Throwable e) { - e.printStackTrace(); - } - } - } - - return null; - } - - private static Object fieldFor(Class returns, Object in) { - return fieldForClass(returns, in.getClass(), in); - } - - @SuppressWarnings("unchecked") - private static T fieldForClass(Class returnType, Class sourceType, Object in) { - for (Field i : sourceType.getDeclaredFields()) { - if (i.getType().equals(returnType)) { - i.setAccessible(true); - try { - Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); - return (T) i.get(in); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - return null; - } - - private static Class getClassType(Class type, int ordinal) { - return type.getDeclaredClasses()[ordinal]; - } - - @Override - public boolean hasTile(Location l) { - return ((CraftWorld) l.getWorld()).getHandle().getBlockEntity(new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()), false) != null; - } - - @Override - public CompoundTag serializeTile(Location location) { - BlockEntity e = ((CraftWorld) location.getWorld()).getHandle().getBlockEntity(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()), true); - - if (e == null) { - return null; - } - - net.minecraft.nbt.CompoundTag tag = e.saveWithFullMetadata(); - return convert(tag); - } - - private CompoundTag convert(net.minecraft.nbt.CompoundTag tag) { - try { - ByteArrayOutputStream boas = new ByteArrayOutputStream(); - DataOutputStream dos = new DataOutputStream(boas); - tag.write(dos); - dos.close(); - return (CompoundTag) NBTUtil.read(new ByteArrayInputStream(boas.toByteArray()), false).getTag(); - } catch (Throwable ex) { - ex.printStackTrace(); - } - - return null; - } - - private net.minecraft.nbt.CompoundTag convert(CompoundTag tag) { - try { - ByteArrayOutputStream boas = new ByteArrayOutputStream(); - NBTUtil.write(tag, boas, false); - DataInputStream din = new DataInputStream(new ByteArrayInputStream(boas.toByteArray())); - net.minecraft.nbt.CompoundTag c = NbtIo.read(din); - din.close(); - return c; - } catch (Throwable e) { - e.printStackTrace(); - } - - return null; - } - - @Override - public void deserializeTile(CompoundTag c, Location pos) { - ((CraftWorld) pos.getWorld()).getHandle().getChunkAt(new BlockPos(pos.getBlockX(), 0, pos.getBlockZ())).setBlockEntityNbt(convert(c)); - } - - @Override - public CompoundTag serializeEntity(Entity location) { - return null;// TODO: - } - - @Override - public Entity deserializeEntity(CompoundTag s, Location newPosition) { - return null;// TODO: - } - - @Override - public boolean supportsCustomHeight() { - return true; - } - - private RegistryAccess registry() { - return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); - } - - private Registry getCustomBiomeRegistry() { - return registry().registry(Registries.BIOME).orElse(null); - } - - private Registry getBlockRegistry() { - return registry().registry(Registries.BLOCK).orElse(null); - } - - @Override - public Object getBiomeBaseFromId(int id) { - return getCustomBiomeRegistry().getHolder(id); - } - - @Override - public int getMinHeight(World world) { - return world.getMinHeight(); - } - - @Override - public boolean supportsCustomBiomes() { - return true; - } - - @Override - public int getTrueBiomeBaseId(Object biomeBase) { - return getCustomBiomeRegistry().getId(((Holder) biomeBase).value()); - } - - @Override - public Object getTrueBiomeBase(Location location) { - return ((CraftWorld) location.getWorld()).getHandle().getBiome(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ())); - } - - @Override - public String getTrueBiomeBaseKey(Location location) { - return getKeyForBiomeBase(getTrueBiomeBase(location)); - } - - @Override - public Object getCustomBiomeBaseFor(String mckey) { - return getCustomBiomeRegistry().get(new ResourceLocation(mckey)); - } - - @Override - public Object getCustomBiomeBaseHolderFor(String mckey) { - return getCustomBiomeRegistry().getHolder(getTrueBiomeBaseId(getCustomBiomeRegistry().get(new ResourceLocation(mckey)))).get(); - } - - public int getBiomeBaseIdForKey(String key) { - return getCustomBiomeRegistry().getId(getCustomBiomeRegistry().get(new ResourceLocation(key))); - } - - @Override - public String getKeyForBiomeBase(Object biomeBase) { - return getCustomBiomeRegistry().getKey((net.minecraft.world.level.biome.Biome) biomeBase).getPath(); // something, not something:something - } - - @Override - public Object getBiomeBase(World world, Biome biome) { - return CraftBlock.biomeToBiomeBase(((CraftWorld) world).getHandle() - .registryAccess().registry(Registries.BIOME).orElse(null), biome); - } - - @Override - public Object getBiomeBase(Object registry, Biome biome) { - Object v = baseBiomeCache.get(biome); - - if (v != null) { - return v; - } - //noinspection unchecked - v = CraftBlock.biomeToBiomeBase((Registry) registry, biome); - if (v == null) { - // Ok so there is this new biome name called "CUSTOM" in Paper's new releases. - // But, this does NOT exist within CraftBukkit which makes it return an error. - // So, we will just return the ID that the plains biome returns instead. - //noinspection unchecked - return CraftBlock.biomeToBiomeBase((Registry) registry, Biome.PLAINS); - } - baseBiomeCache.put(biome, v); - return v; - } - - @Override - public boolean isBukkit() { - return true; - } - - @Override - public int getBiomeId(Biome biome) { - for (World i : Bukkit.getWorlds()) { - if (i.getEnvironment().equals(World.Environment.NORMAL)) { - Registry registry = ((CraftWorld) i).getHandle().registryAccess().registry(Registries.BIOME).orElse(null); - return registry.getId((net.minecraft.world.level.biome.Biome) getBiomeBase(registry, biome)); - } - } - - return biome.ordinal(); - } - - private MCAIdMap getBiomeMapping() { - return biomeMapCache.aquire(() -> new MCAIdMap<>() { - @NotNull - @Override - public Iterator iterator() { - return getCustomBiomeRegistry().iterator(); - } - - @Override - public int getId(net.minecraft.world.level.biome.Biome paramT) { - return getCustomBiomeRegistry().getId(paramT); - } - - @Override - public net.minecraft.world.level.biome.Biome byId(int paramInt) { - return (net.minecraft.world.level.biome.Biome) getBiomeBaseFromId(paramInt); - } - }); - } - - @NotNull - private MCABiomeContainer getBiomeContainerInterface(MCAIdMap biomeMapping, MCAChunkBiomeContainer base) { - return new MCABiomeContainer() { - @Override - public int[] getData() { - return base.writeBiomes(); - } - - @Override - public void setBiome(int x, int y, int z, int id) { - base.setBiome(x, y, z, biomeMapping.byId(id)); - } - - @Override - public int getBiome(int x, int y, int z) { - return biomeMapping.getId(base.getBiome(x, y, z)); - } - }; - } - - @Override - public MCABiomeContainer newBiomeContainer(int min, int max) { - MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max); - return getBiomeContainerInterface(getBiomeMapping(), base); - } - - @Override - public MCABiomeContainer newBiomeContainer(int min, int max, int[] data) { - MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max, data); - return getBiomeContainerInterface(getBiomeMapping(), base); - } - - @Override - public int countCustomBiomes() { - AtomicInteger a = new AtomicInteger(0); - - getCustomBiomeRegistry().keySet().forEach((i) -> { - if (i.getNamespace().equals("minecraft")) { - return; - } - - a.incrementAndGet(); - Iris.debug("Custom Biome: " + i); - }); - - return a.get(); - } - - public boolean supportsDataPacks() { - return true; - } - - public void setBiomes(int cx, int cz, World world, Hunk biomes) { - LevelChunk c = ((CraftWorld) world).getHandle().getChunk(cx, cz); - biomes.iterateSync((x, y, z, b) -> c.setBiome(x, y, z, (Holder) b)); - c.setUnsaved(true); - } - - @Override - public void forceBiomeInto(int x, int y, int z, Object somethingVeryDirty, ChunkGenerator.BiomeGrid chunk) { - try { - ChunkAccess s = (ChunkAccess) getFieldForBiomeStorage(chunk).get(chunk); - Holder biome = (Holder) somethingVeryDirty; - s.setBiome(x, y, z, biome); - } catch (IllegalAccessException e) { - Iris.reportError(e); - e.printStackTrace(); - } - } - - private Field getFieldForBiomeStorage(Object storage) { - Field f = biomeStorageCache; - - if (f != null) { - return f; - } - try { - f = storage.getClass().getDeclaredField("biome"); - f.setAccessible(true); - return f; - } catch (Throwable e) { - Iris.reportError(e); - e.printStackTrace(); - Iris.error(storage.getClass().getCanonicalName()); - } - - biomeStorageCache = f; - return null; - } - - @Override - public MCAPaletteAccess createPalette() { - MCAIdMapper registry = registryCache.aquireNasty(() -> { - Field cf = net.minecraft.core.IdMapper.class.getDeclaredField("tToId"); - Field df = net.minecraft.core.IdMapper.class.getDeclaredField("idToT"); - Field bf = net.minecraft.core.IdMapper.class.getDeclaredField("nextId"); - cf.setAccessible(true); - df.setAccessible(true); - bf.setAccessible(true); - net.minecraft.core.IdMapper blockData = Block.BLOCK_STATE_REGISTRY; - int b = bf.getInt(blockData); - Object2IntMap c = (Object2IntMap) cf.get(blockData); - List d = (List) df.get(blockData); - return new MCAIdMapper(c, d, b); - }); - MCAPalette global = globalCache.aquireNasty(() -> new MCAGlobalPalette<>(registry, ((CraftBlockData) AIR).getState())); - MCAPalettedContainer container = new MCAPalettedContainer<>(global, registry, - i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState(), - i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), - ((CraftBlockData) AIR).getState()); - return new MCAWrappedPalettedContainer<>(container, - i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), - i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState()); - } - - @Override - public void injectBiomesFromMantle(Chunk e, Mantle mantle) { - ChunkAccess chunk = ((CraftChunk) e).getHandle(ChunkStatus.FULL); - AtomicInteger c = new AtomicInteger(); - AtomicInteger r = new AtomicInteger(); - mantle.iterateChunk(e.getX(), e.getZ(), MatterBiomeInject.class, (x, y, z, b) -> { - if (b != null) { - if (b.isCustom()) { - chunk.setBiome(x, y, z, getCustomBiomeRegistry().getHolder(b.getBiomeId()).get()); - c.getAndIncrement(); - } else { - chunk.setBiome(x, y, z, (Holder) getBiomeBase(e.getWorld(), b.getBiome())); - r.getAndIncrement(); - } - } - }); - } -} +package com.volmit.iris.core.nms.v1_20_R1; + +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.volmit.iris.Iris; +import com.volmit.iris.core.nms.INMSBinding; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.hunk.Hunk; +import com.volmit.iris.util.json.JSONObject; +import com.volmit.iris.util.mantle.Mantle; +import com.volmit.iris.util.matter.MatterBiomeInject; +import com.volmit.iris.util.nbt.io.NBTUtil; +import com.volmit.iris.util.nbt.mca.NBTWorld; +import com.volmit.iris.util.nbt.mca.palette.*; +import com.volmit.iris.util.nbt.tag.CompoundTag; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.NbtIo; +import net.minecraft.nbt.TagParser; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.ChunkStatus; +import net.minecraft.world.level.chunk.LevelChunk; +import org.bukkit.*; +import org.bukkit.block.Biome; +import org.bukkit.block.data.BlockData; + +import org.bukkit.craftbukkit.v1_20_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_20_R1.CraftServer; +import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R1.block.CraftBlock; +import org.bukkit.craftbukkit.v1_20_R1.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_20_R1.entity.CraftDolphin; +import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack; +import org.bukkit.entity.Dolphin; +import org.bukkit.entity.Entity; +import org.bukkit.generator.ChunkGenerator; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import sun.misc.Unsafe; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +public class NMSBinding implements INMSBinding { + + public static final String NMS_VERSION = "1.20.1"; + private final KMap baseBiomeCache = new KMap<>(); + private final BlockData AIR = Material.AIR.createBlockData(); + private final AtomicCache> biomeMapCache = new AtomicCache<>(); + private final AtomicCache> registryCache = new AtomicCache<>(); + private final AtomicCache> globalCache = new AtomicCache<>(); + private final AtomicCache registryAccess = new AtomicCache<>(); + private final AtomicCache byIdRef = new AtomicCache<>(); + private Field biomeStorageCache = null; + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private static Class getClassType(Class type, int ordinal) { + return type.getDeclaredClasses()[ordinal]; + } + + @Override + public boolean hasTile(Location l) { + return ((CraftWorld) l.getWorld()).getHandle().getBlockEntity(new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()), false) != null; + } + + @Override + public CompoundTag serializeTile(Location location) { + BlockEntity e = ((CraftWorld) location.getWorld()).getHandle().getBlockEntity(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()), true); + + if (e == null) { + return null; + } + + net.minecraft.nbt.CompoundTag tag = e.saveWithFullMetadata(); + return convert(tag); + } + + private CompoundTag convert(net.minecraft.nbt.CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(boas); + tag.write(dos); + dos.close(); + return (CompoundTag) NBTUtil.read(new ByteArrayInputStream(boas.toByteArray()), false).getTag(); + } catch (Throwable ex) { + ex.printStackTrace(); + } + + return null; + } + + private net.minecraft.nbt.CompoundTag convert(CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + NBTUtil.write(tag, boas, false); + DataInputStream din = new DataInputStream(new ByteArrayInputStream(boas.toByteArray())); + net.minecraft.nbt.CompoundTag c = NbtIo.read(din); + din.close(); + return c; + } catch (Throwable e) { + e.printStackTrace(); + } + + return null; + } + + @Override + public void deserializeTile(CompoundTag c, Location pos) { + ((CraftWorld) pos.getWorld()).getHandle().getChunkAt(new BlockPos(pos.getBlockX(), 0, pos.getBlockZ())).setBlockEntityNbt(convert(c)); + } + + @Override + public CompoundTag serializeEntity(Entity location) { + return null;// TODO: + } + + @Override + public Entity deserializeEntity(CompoundTag s, Location newPosition) { + return null;// TODO: + } + + @Override + public boolean supportsCustomHeight() { + return true; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + private Registry getCustomBiomeRegistry() { + return registry().registry(Registries.BIOME).orElse(null); + } + + private Registry getBlockRegistry() { + return registry().registry(Registries.BLOCK).orElse(null); + } + + @Override + public Object getBiomeBaseFromId(int id) { + return getCustomBiomeRegistry().getHolder(id); + } + + @Override + public int getMinHeight(World world) { + return world.getMinHeight(); + } + + @Override + public boolean supportsCustomBiomes() { + return true; + } + + @Override + public int getTrueBiomeBaseId(Object biomeBase) { + return getCustomBiomeRegistry().getId(((Holder) biomeBase).value()); + } + + @Override + public Object getTrueBiomeBase(Location location) { + return ((CraftWorld) location.getWorld()).getHandle().getBiome(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ())); + } + + @Override + public String getTrueBiomeBaseKey(Location location) { + return getKeyForBiomeBase(getTrueBiomeBase(location)); + } + + @Override + public Object getCustomBiomeBaseFor(String mckey) { + return getCustomBiomeRegistry().get(new ResourceLocation(mckey)); + } + + @Override + public Object getCustomBiomeBaseHolderFor(String mckey) { + return getCustomBiomeRegistry().getHolder(getTrueBiomeBaseId(getCustomBiomeRegistry().get(new ResourceLocation(mckey)))).get(); + } + + public int getBiomeBaseIdForKey(String key) { + return getCustomBiomeRegistry().getId(getCustomBiomeRegistry().get(new ResourceLocation(key))); + } + + @Override + public String getKeyForBiomeBase(Object biomeBase) { + return getCustomBiomeRegistry().getKey((net.minecraft.world.level.biome.Biome) biomeBase).getPath(); // something, not something:something + } + + @Override + public Object getBiomeBase(World world, Biome biome) { + return CraftBlock.biomeToBiomeBase(((CraftWorld) world).getHandle() + .registryAccess().registry(Registries.BIOME).orElse(null), biome); + } + + @Override + public Object getBiomeBase(Object registry, Biome biome) { + Object v = baseBiomeCache.get(biome); + + if (v != null) { + return v; + } + //noinspection unchecked + v = CraftBlock.biomeToBiomeBase((Registry) registry, biome); + if (v == null) { + // Ok so there is this new biome name called "CUSTOM" in Paper's new releases. + // But, this does NOT exist within CraftBukkit which makes it return an error. + // So, we will just return the ID that the plains biome returns instead. + //noinspection unchecked + return CraftBlock.biomeToBiomeBase((Registry) registry, Biome.PLAINS); + } + baseBiomeCache.put(biome, v); + return v; + } + + @Override + public boolean isBukkit() { + return true; + } + + @Override + public int getBiomeId(Biome biome) { + for (World i : Bukkit.getWorlds()) { + if (i.getEnvironment().equals(World.Environment.NORMAL)) { + Registry registry = ((CraftWorld) i).getHandle().registryAccess().registry(Registries.BIOME).orElse(null); + return registry.getId((net.minecraft.world.level.biome.Biome) getBiomeBase(registry, biome)); + } + } + + return biome.ordinal(); + } + + private MCAIdMap getBiomeMapping() { + return biomeMapCache.aquire(() -> new MCAIdMap<>() { + @NotNull + @Override + public Iterator iterator() { + return getCustomBiomeRegistry().iterator(); + } + + @Override + public int getId(net.minecraft.world.level.biome.Biome paramT) { + return getCustomBiomeRegistry().getId(paramT); + } + + @Override + public net.minecraft.world.level.biome.Biome byId(int paramInt) { + return (net.minecraft.world.level.biome.Biome) getBiomeBaseFromId(paramInt); + } + }); + } + + @NotNull + private MCABiomeContainer getBiomeContainerInterface(MCAIdMap biomeMapping, MCAChunkBiomeContainer base) { + return new MCABiomeContainer() { + @Override + public int[] getData() { + return base.writeBiomes(); + } + + @Override + public void setBiome(int x, int y, int z, int id) { + base.setBiome(x, y, z, biomeMapping.byId(id)); + } + + @Override + public int getBiome(int x, int y, int z) { + return biomeMapping.getId(base.getBiome(x, y, z)); + } + }; + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max, int[] data) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max, data); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public int countCustomBiomes() { + AtomicInteger a = new AtomicInteger(0); + + getCustomBiomeRegistry().keySet().forEach((i) -> { + if (i.getNamespace().equals("minecraft")) { + return; + } + + a.incrementAndGet(); + Iris.debug("Custom Biome: " + i); + }); + + return a.get(); + } + + public boolean supportsDataPacks() { + return true; + } + + public void setBiomes(int cx, int cz, World world, Hunk biomes) { + LevelChunk c = ((CraftWorld) world).getHandle().getChunk(cx, cz); + biomes.iterateSync((x, y, z, b) -> c.setBiome(x, y, z, (Holder) b)); + c.setUnsaved(true); + } + + @Override + public void forceBiomeInto(int x, int y, int z, Object somethingVeryDirty, ChunkGenerator.BiomeGrid chunk) { + try { + ChunkAccess s = (ChunkAccess) getFieldForBiomeStorage(chunk).get(chunk); + Holder biome = (Holder) somethingVeryDirty; + s.setBiome(x, y, z, biome); + } catch (IllegalAccessException e) { + Iris.reportError(e); + e.printStackTrace(); + } + } + + private Field getFieldForBiomeStorage(Object storage) { + Field f = biomeStorageCache; + + if (f != null) { + return f; + } + try { + f = storage.getClass().getDeclaredField("biome"); + f.setAccessible(true); + return f; + } catch (Throwable e) { + Iris.reportError(e); + e.printStackTrace(); + Iris.error(storage.getClass().getCanonicalName()); + } + + biomeStorageCache = f; + return null; + } + + @Override + public MCAPaletteAccess createPalette() { + MCAIdMapper registry = registryCache.aquireNasty(() -> { + Field cf = net.minecraft.core.IdMapper.class.getDeclaredField("tToId"); + Field df = net.minecraft.core.IdMapper.class.getDeclaredField("idToT"); + Field bf = net.minecraft.core.IdMapper.class.getDeclaredField("nextId"); + cf.setAccessible(true); + df.setAccessible(true); + bf.setAccessible(true); + net.minecraft.core.IdMapper blockData = Block.BLOCK_STATE_REGISTRY; + int b = bf.getInt(blockData); + Object2IntMap c = (Object2IntMap) cf.get(blockData); + List d = (List) df.get(blockData); + return new MCAIdMapper(c, d, b); + }); + MCAPalette global = globalCache.aquireNasty(() -> new MCAGlobalPalette<>(registry, ((CraftBlockData) AIR).getState())); + MCAPalettedContainer container = new MCAPalettedContainer<>(global, registry, + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState(), + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + ((CraftBlockData) AIR).getState()); + return new MCAWrappedPalettedContainer<>(container, + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState()); + } + + @Override + public void injectBiomesFromMantle(Chunk e, Mantle mantle) { + ChunkAccess chunk = ((CraftChunk) e).getHandle(ChunkStatus.FULL); + AtomicInteger c = new AtomicInteger(); + AtomicInteger r = new AtomicInteger(); + mantle.iterateChunk(e.getX(), e.getZ(), MatterBiomeInject.class, (x, y, z, b) -> { + if (b != null) { + if (b.isCustom()) { + chunk.setBiome(x, y, z, getCustomBiomeRegistry().getHolder(b.getBiomeId()).get()); + c.getAndIncrement(); + } else { + chunk.setBiome(x, y, z, (Holder) getBiomeBase(e.getWorld(), b.getBiome())); + r.getAndIncrement(); + } + } + }); + } + + public ItemStack applyCustomNbt(ItemStack itemStack, KMap customNbt) throws IllegalArgumentException { + if (customNbt != null && !customNbt.isEmpty()) { + net.minecraft.world.item.ItemStack s = CraftItemStack.asNMSCopy(itemStack); + + try { + net.minecraft.nbt.CompoundTag tag = TagParser.parseTag((new JSONObject(customNbt)).toString()); + tag.merge(s.getOrCreateTag()); + s.setTag(tag); + } catch (CommandSyntaxException var5) { + throw new IllegalArgumentException(var5); + } + + return CraftItemStack.asBukkitCopy(s); + } else { + return itemStack; + } + } + + public void setTreasurePos(Dolphin dolphin, com.volmit.iris.core.nms.container.BlockPos pos) { + CraftDolphin cd = (CraftDolphin)dolphin; + cd.getHandle().setTreasurePos(new BlockPos(pos.getX(), pos.getY(), pos.getZ())); + cd.getHandle().setGotFish(true); + } + + public void inject(long seed, Engine engine, World world) throws NoSuchFieldException, IllegalAccessException { + ServerLevel serverLevel = ((CraftWorld)world).getHandle(); + Class clazz = serverLevel.getChunkSource().chunkMap.generator.getClass(); + Field biomeSource = getField(clazz, BiomeSource.class); + biomeSource.setAccessible(true); + Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + unsafeField.setAccessible(true); + Unsafe unsafe = (Unsafe)unsafeField.get(null); + CustomBiomeSource customBiomeSource = new CustomBiomeSource(seed, engine, world); + unsafe.putObject(biomeSource.get(serverLevel.getChunkSource().chunkMap.generator), unsafe.objectFieldOffset(biomeSource), customBiomeSource); + biomeSource.set(serverLevel.getChunkSource().chunkMap.generator, customBiomeSource); + } + + private static Field getField(Class clazz, Class fieldType) throws NoSuchFieldException { + try { + for (Field f : clazz.getDeclaredFields()) { + if (f.getType().equals(fieldType)) + return f; + } + throw new NoSuchFieldException(fieldType.getName()); + } catch (NoSuchFieldException var4) { + Class superClass = clazz.getSuperclass(); + if (superClass == null) { + throw var4; + } else { + return getField(superClass, fieldType); + } + } + } +} diff --git a/nms/v1_20_R2/src/main/java/com/volmit/iris/core/nms/v1_20_R2/CustomBiomeSource.java b/nms/v1_20_R2/src/main/java/com/volmit/iris/core/nms/v1_20_R2/CustomBiomeSource.java new file mode 100644 index 000000000..fcf462f95 --- /dev/null +++ b/nms/v1_20_R2/src/main/java/com/volmit/iris/core/nms/v1_20_R2/CustomBiomeSource.java @@ -0,0 +1,168 @@ +package com.volmit.iris.core.nms.v1_20_R2; + +import com.mojang.serialization.Codec; +import com.volmit.iris.Iris; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.engine.object.IrisBiome; +import com.volmit.iris.engine.object.IrisBiomeCustom; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.math.RNG; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.biome.Climate; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.craftbukkit.v1_20_R2.CraftServer; +import org.bukkit.craftbukkit.v1_20_R2.CraftWorld; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Stream; + +public class CustomBiomeSource extends BiomeSource { + + private final long seed; + private final Engine engine; + private final Registry biomeCustomRegistry; + private final Registry biomeRegistry; + private final AtomicCache registryAccess = new AtomicCache<>(); + private final RNG rng; + private final KMap> customBiomes; + + public CustomBiomeSource(long seed, Engine engine, World world) { + this.engine = engine; + this.seed = seed; + this.biomeCustomRegistry = registry().registry(Registries.BIOME).orElse(null); + this.biomeRegistry = ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())).registry(Registries.BIOME).orElse(null); + this.rng = new RNG(engine.getSeedManager().getBiome()); + this.customBiomes = fillCustomBiomes(biomeCustomRegistry, engine); + } + + private static List> getAllBiomes(Registry customRegistry, Registry registry, Engine engine) { + List> b = new ArrayList<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + b.add(customRegistry.getHolder(customRegistry.getResourceKey(customRegistry + .get(new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()))).get()).get()); + } + } else { + b.add(NMSBinding.biomeToBiomeBase(registry, i.getVanillaDerivative())); + } + } + + return b; + } + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + @Override + protected Stream> collectPossibleBiomes() { + return getAllBiomes( + ((RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())) + .registry(Registries.BIOME).orElse(null), + ((CraftWorld) engine.getWorld().realWorld()).getHandle().registryAccess().registry(Registries.BIOME).orElse(null), + engine).stream(); + } + private KMap> fillCustomBiomes(Registry customRegistry, Engine engine) { + KMap> m = new KMap<>(); + + for (IrisBiome i : engine.getAllBiomes()) { + if (i.isCustom()) { + for (IrisBiomeCustom j : i.getCustomDerivitives()) { + ResourceLocation resourceLocation = new ResourceLocation(engine.getDimension().getLoadKey() + ":" + j.getId()); + Biome biome = customRegistry.get(resourceLocation); + Optional> optionalBiomeKey = customRegistry.getResourceKey(biome); + if (optionalBiomeKey.isEmpty()) { + Iris.error("Cannot find biome for IrisBiomeCustom " + j.getId() + " from engine " + engine.getName()); + continue; + } + ResourceKey biomeKey = optionalBiomeKey.get(); + Optional> optionalReferenceHolder = customRegistry.getHolder(biomeKey); + if (optionalReferenceHolder.isEmpty()) { + Iris.error("Cannot find reference to biome " + biomeKey + " for engine " + engine.getName()); + continue; + } + m.put(j.getId(), optionalReferenceHolder.get()); + } + } + } + + return m; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + @Override + protected Codec codec() { + throw new UnsupportedOperationException("Not supported"); + } + + @Override + public Holder getNoiseBiome(int x, int y, int z, Climate.Sampler sampler) { + int m = (y - engine.getMinHeight()) << 2; + IrisBiome ib = engine.getComplex().getTrueBiomeStream().get(x << 2, z << 2); + if (ib.isCustom()) { + return customBiomes.get(ib.getCustomBiome(rng, x << 2, m, z << 2).getId()); + } else { + org.bukkit.block.Biome v = ib.getSkyBiome(rng, x << 2, m, z << 2); + return NMSBinding.biomeToBiomeBase(biomeRegistry, v); + } + } +} \ No newline at end of file diff --git a/nms/v1_20_R2/src/main/java/com/volmit/iris/core/nms/v1_20_R2/NMSBinding.java b/nms/v1_20_R2/src/main/java/com/volmit/iris/core/nms/v1_20_R2/NMSBinding.java new file mode 100644 index 000000000..9d7283735 --- /dev/null +++ b/nms/v1_20_R2/src/main/java/com/volmit/iris/core/nms/v1_20_R2/NMSBinding.java @@ -0,0 +1,503 @@ +package com.volmit.iris.core.nms.v1_20_R2; + +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.volmit.iris.Iris; +import com.volmit.iris.core.nms.INMSBinding; +import com.volmit.iris.engine.data.cache.AtomicCache; +import com.volmit.iris.engine.framework.Engine; +import com.volmit.iris.util.collection.KMap; +import com.volmit.iris.util.hunk.Hunk; +import com.volmit.iris.util.json.JSONObject; +import com.volmit.iris.util.mantle.Mantle; +import com.volmit.iris.util.matter.MatterBiomeInject; +import com.volmit.iris.util.nbt.io.NBTUtil; +import com.volmit.iris.util.nbt.mca.NBTWorld; +import com.volmit.iris.util.nbt.mca.palette.*; +import com.volmit.iris.util.nbt.tag.CompoundTag; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.NbtIo; +import net.minecraft.nbt.TagParser; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.ChunkStatus; +import net.minecraft.world.level.chunk.LevelChunk; +import org.bukkit.*; +import org.bukkit.block.Biome; +import org.bukkit.block.data.BlockData; + +import org.bukkit.craftbukkit.v1_20_R2.CraftChunk; +import org.bukkit.craftbukkit.v1_20_R2.CraftServer; +import org.bukkit.craftbukkit.v1_20_R2.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R2.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_20_R2.entity.CraftDolphin; +import org.bukkit.craftbukkit.v1_20_R2.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_20_R2.util.CraftNamespacedKey; +import org.bukkit.entity.Dolphin; +import org.bukkit.entity.Entity; +import org.bukkit.generator.ChunkGenerator; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import sun.misc.Unsafe; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +public class NMSBinding implements INMSBinding { + private final KMap baseBiomeCache = new KMap<>(); + private final BlockData AIR = Material.AIR.createBlockData(); + private final AtomicCache> biomeMapCache = new AtomicCache<>(); + private final AtomicCache> registryCache = new AtomicCache<>(); + private final AtomicCache> globalCache = new AtomicCache<>(); + private final AtomicCache registryAccess = new AtomicCache<>(); + private final AtomicCache byIdRef = new AtomicCache<>(); + private Field biomeStorageCache = null; + + private static Object getFor(Class type, Object source) { + Object o = fieldFor(type, source); + + if (o != null) { + return o; + } + + return invokeFor(type, source); + } + + private static Object invokeFor(Class returns, Object in) { + for (Method i : in.getClass().getMethods()) { + if (i.getReturnType().equals(returns)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returns.getSimpleName() + " in " + in.getClass().getSimpleName() + "." + i.getName() + "()"); + return i.invoke(in); + } catch (Throwable e) { + e.printStackTrace(); + } + } + } + + return null; + } + + private static Object fieldFor(Class returns, Object in) { + return fieldForClass(returns, in.getClass(), in); + } + + @SuppressWarnings("unchecked") + private static T fieldForClass(Class returnType, Class sourceType, Object in) { + for (Field i : sourceType.getDeclaredFields()) { + if (i.getType().equals(returnType)) { + i.setAccessible(true); + try { + Iris.debug("[NMS] Found " + returnType.getSimpleName() + " in " + sourceType.getSimpleName() + "." + i.getName()); + return (T) i.get(in); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private static Class getClassType(Class type, int ordinal) { + return type.getDeclaredClasses()[ordinal]; + } + + @Override + public boolean hasTile(Location l) { + return ((CraftWorld) l.getWorld()).getHandle().getBlockEntity(new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()), false) != null; + } + + @Override + public CompoundTag serializeTile(Location location) { + BlockEntity e = ((CraftWorld) location.getWorld()).getHandle().getBlockEntity(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()), true); + + if (e == null) { + return null; + } + + net.minecraft.nbt.CompoundTag tag = e.saveWithFullMetadata(); + return convert(tag); + } + + private CompoundTag convert(net.minecraft.nbt.CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(boas); + tag.write(dos); + dos.close(); + return (CompoundTag) NBTUtil.read(new ByteArrayInputStream(boas.toByteArray()), false).getTag(); + } catch (Throwable ex) { + ex.printStackTrace(); + } + + return null; + } + + private net.minecraft.nbt.CompoundTag convert(CompoundTag tag) { + try { + ByteArrayOutputStream boas = new ByteArrayOutputStream(); + NBTUtil.write(tag, boas, false); + DataInputStream din = new DataInputStream(new ByteArrayInputStream(boas.toByteArray())); + net.minecraft.nbt.CompoundTag c = NbtIo.read(din); + din.close(); + return c; + } catch (Throwable e) { + e.printStackTrace(); + } + + return null; + } + + @Override + public void deserializeTile(CompoundTag c, Location pos) { + ((CraftWorld) pos.getWorld()).getHandle().getChunkAt(new BlockPos(pos.getBlockX(), 0, pos.getBlockZ())).setBlockEntityNbt(convert(c)); + } + + @Override + public CompoundTag serializeEntity(Entity location) { + return null;// TODO: + } + + @Override + public Entity deserializeEntity(CompoundTag s, Location newPosition) { + return null;// TODO: + } + + @Override + public boolean supportsCustomHeight() { + return true; + } + + private RegistryAccess registry() { + return registryAccess.aquire(() -> (RegistryAccess) getFor(RegistryAccess.Frozen.class, ((CraftServer) Bukkit.getServer()).getHandle().getServer())); + } + + private Registry getCustomBiomeRegistry() { + return registry().registry(Registries.BIOME).orElse(null); + } + + private Registry getBlockRegistry() { + return registry().registry(Registries.BLOCK).orElse(null); + } + + @Override + public Object getBiomeBaseFromId(int id) { + return getCustomBiomeRegistry().getHolder(id); + } + + @Override + public int getMinHeight(World world) { + return world.getMinHeight(); + } + + @Override + public boolean supportsCustomBiomes() { + return true; + } + + @Override + public int getTrueBiomeBaseId(Object biomeBase) { + return getCustomBiomeRegistry().getId(((Holder) biomeBase).value()); + } + + @Override + public Object getTrueBiomeBase(Location location) { + return ((CraftWorld) location.getWorld()).getHandle().getBiome(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ())); + } + + @Override + public String getTrueBiomeBaseKey(Location location) { + return getKeyForBiomeBase(getTrueBiomeBase(location)); + } + + @Override + public Object getCustomBiomeBaseFor(String mckey) { + return getCustomBiomeRegistry().get(new ResourceLocation(mckey)); + } + + @Override + public Object getCustomBiomeBaseHolderFor(String mckey) { + return getCustomBiomeRegistry().getHolder(getTrueBiomeBaseId(getCustomBiomeRegistry().get(new ResourceLocation(mckey)))).get(); + } + + public int getBiomeBaseIdForKey(String key) { + return getCustomBiomeRegistry().getId(getCustomBiomeRegistry().get(new ResourceLocation(key))); + } + + @Override + public String getKeyForBiomeBase(Object biomeBase) { + return getCustomBiomeRegistry().getKey((net.minecraft.world.level.biome.Biome) biomeBase).getPath(); // something, not something:something + } + + @Override + public Object getBiomeBase(World world, Biome biome) { + return biomeToBiomeBase(((CraftWorld) world).getHandle() + .registryAccess().registry(Registries.BIOME).orElse(null), biome); + } + + @Override + public Object getBiomeBase(Object registry, Biome biome) { + Object v = baseBiomeCache.get(biome); + + if (v != null) { + return v; + } + //noinspection unchecked + v = biomeToBiomeBase((Registry) registry, biome); + if (v == null) { + // Ok so there is this new biome name called "CUSTOM" in Paper's new releases. + // But, this does NOT exist within CraftBukkit which makes it return an error. + // So, we will just return the ID that the plains biome returns instead. + //noinspection unchecked + return biomeToBiomeBase((Registry) registry, Biome.PLAINS); + } + baseBiomeCache.put(biome, v); + return v; + } + + @Override + public boolean isBukkit() { + return true; + } + + @Override + public int getBiomeId(Biome biome) { + for (World i : Bukkit.getWorlds()) { + if (i.getEnvironment().equals(World.Environment.NORMAL)) { + Registry registry = ((CraftWorld) i).getHandle().registryAccess().registry(Registries.BIOME).orElse(null); + return registry.getId((net.minecraft.world.level.biome.Biome) getBiomeBase(registry, biome)); + } + } + + return biome.ordinal(); + } + + private MCAIdMap getBiomeMapping() { + return biomeMapCache.aquire(() -> new MCAIdMap<>() { + @NotNull + @Override + public Iterator iterator() { + return getCustomBiomeRegistry().iterator(); + } + + @Override + public int getId(net.minecraft.world.level.biome.Biome paramT) { + return getCustomBiomeRegistry().getId(paramT); + } + + @Override + public net.minecraft.world.level.biome.Biome byId(int paramInt) { + return (net.minecraft.world.level.biome.Biome) getBiomeBaseFromId(paramInt); + } + }); + } + + @NotNull + private MCABiomeContainer getBiomeContainerInterface(MCAIdMap biomeMapping, MCAChunkBiomeContainer base) { + return new MCABiomeContainer() { + @Override + public int[] getData() { + return base.writeBiomes(); + } + + @Override + public void setBiome(int x, int y, int z, int id) { + base.setBiome(x, y, z, biomeMapping.byId(id)); + } + + @Override + public int getBiome(int x, int y, int z) { + return biomeMapping.getId(base.getBiome(x, y, z)); + } + }; + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public MCABiomeContainer newBiomeContainer(int min, int max, int[] data) { + MCAChunkBiomeContainer base = new MCAChunkBiomeContainer<>(getBiomeMapping(), min, max, data); + return getBiomeContainerInterface(getBiomeMapping(), base); + } + + @Override + public int countCustomBiomes() { + AtomicInteger a = new AtomicInteger(0); + + getCustomBiomeRegistry().keySet().forEach((i) -> { + if (i.getNamespace().equals("minecraft")) { + return; + } + + a.incrementAndGet(); + Iris.debug("Custom Biome: " + i); + }); + + return a.get(); + } + + public boolean supportsDataPacks() { + return true; + } + + public void setBiomes(int cx, int cz, World world, Hunk biomes) { + LevelChunk c = ((CraftWorld) world).getHandle().getChunk(cx, cz); + biomes.iterateSync((x, y, z, b) -> c.setBiome(x, y, z, (Holder) b)); + c.setUnsaved(true); + } + + @Override + public void forceBiomeInto(int x, int y, int z, Object somethingVeryDirty, ChunkGenerator.BiomeGrid chunk) { + try { + ChunkAccess s = (ChunkAccess) getFieldForBiomeStorage(chunk).get(chunk); + Holder biome = (Holder) somethingVeryDirty; + s.setBiome(x, y, z, biome); + } catch (IllegalAccessException e) { + Iris.reportError(e); + e.printStackTrace(); + } + } + + private Field getFieldForBiomeStorage(Object storage) { + Field f = biomeStorageCache; + + if (f != null) { + return f; + } + try { + f = storage.getClass().getDeclaredField("biome"); + f.setAccessible(true); + return f; + } catch (Throwable e) { + Iris.reportError(e); + e.printStackTrace(); + Iris.error(storage.getClass().getCanonicalName()); + } + + biomeStorageCache = f; + return null; + } + + @Override + public MCAPaletteAccess createPalette() { + MCAIdMapper registry = registryCache.aquireNasty(() -> { + Field cf = net.minecraft.core.IdMapper.class.getDeclaredField("tToId"); + Field df = net.minecraft.core.IdMapper.class.getDeclaredField("idToT"); + Field bf = net.minecraft.core.IdMapper.class.getDeclaredField("nextId"); + cf.setAccessible(true); + df.setAccessible(true); + bf.setAccessible(true); + net.minecraft.core.IdMapper blockData = Block.BLOCK_STATE_REGISTRY; + int b = bf.getInt(blockData); + Object2IntMap c = (Object2IntMap) cf.get(blockData); + List d = (List) df.get(blockData); + return new MCAIdMapper(c, d, b); + }); + MCAPalette global = globalCache.aquireNasty(() -> new MCAGlobalPalette<>(registry, ((CraftBlockData) AIR).getState())); + MCAPalettedContainer container = new MCAPalettedContainer<>(global, registry, + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState(), + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + ((CraftBlockData) AIR).getState()); + return new MCAWrappedPalettedContainer<>(container, + i -> NBTWorld.getCompound(CraftBlockData.fromData(i)), + i -> ((CraftBlockData) NBTWorld.getBlockData(i)).getState()); + } + + @Override + public void injectBiomesFromMantle(Chunk e, Mantle mantle) { + ChunkAccess chunk = ((CraftChunk) e).getHandle(ChunkStatus.FULL); + AtomicInteger c = new AtomicInteger(); + AtomicInteger r = new AtomicInteger(); + mantle.iterateChunk(e.getX(), e.getZ(), MatterBiomeInject.class, (x, y, z, b) -> { + if (b != null) { + if (b.isCustom()) { + chunk.setBiome(x, y, z, getCustomBiomeRegistry().getHolder(b.getBiomeId()).get()); + c.getAndIncrement(); + } else { + chunk.setBiome(x, y, z, (Holder) getBiomeBase(e.getWorld(), b.getBiome())); + r.getAndIncrement(); + } + } + }); + } + + public ItemStack applyCustomNbt(ItemStack itemStack, KMap customNbt) throws IllegalArgumentException { + if (customNbt != null && !customNbt.isEmpty()) { + net.minecraft.world.item.ItemStack s = CraftItemStack.asNMSCopy(itemStack); + + try { + net.minecraft.nbt.CompoundTag tag = TagParser.parseTag((new JSONObject(customNbt)).toString()); + tag.merge(s.getOrCreateTag()); + s.setTag(tag); + } catch (CommandSyntaxException var5) { + throw new IllegalArgumentException(var5); + } + + return CraftItemStack.asBukkitCopy(s); + } else { + return itemStack; + } + } + + public void setTreasurePos(Dolphin dolphin, com.volmit.iris.core.nms.container.BlockPos pos) { + CraftDolphin cd = (CraftDolphin)dolphin; + cd.getHandle().setTreasurePos(new BlockPos(pos.getX(), pos.getY(), pos.getZ())); + cd.getHandle().setGotFish(true); + } + + public void inject(long seed, Engine engine, World world) throws NoSuchFieldException, IllegalAccessException { + ServerLevel serverLevel = ((CraftWorld)world).getHandle(); + Class clazz = serverLevel.getChunkSource().chunkMap.generator.getClass(); + Field biomeSource = getField(clazz, BiomeSource.class); + biomeSource.setAccessible(true); + Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + unsafeField.setAccessible(true); + Unsafe unsafe = (Unsafe)unsafeField.get(null); + CustomBiomeSource customBiomeSource = new CustomBiomeSource(seed, engine, world); + unsafe.putObject(biomeSource.get(serverLevel.getChunkSource().chunkMap.generator), unsafe.objectFieldOffset(biomeSource), customBiomeSource); + biomeSource.set(serverLevel.getChunkSource().chunkMap.generator, customBiomeSource); + } + + private static Field getField(Class clazz, Class fieldType) throws NoSuchFieldException { + try { + for (Field f : clazz.getDeclaredFields()) { + if (f.getType().equals(fieldType)) + return f; + } + throw new NoSuchFieldException(fieldType.getName()); + } catch (NoSuchFieldException var4) { + Class superClass = clazz.getSuperclass(); + if (superClass == null) { + throw var4; + } else { + return getField(superClass, fieldType); + } + } + } + + public static Holder biomeToBiomeBase(Registry registry, Biome biome) { + return registry.getHolderOrThrow(ResourceKey.create(Registries.BIOME, CraftNamespacedKey.toMinecraft(biome.getKey()))); + } +} diff --git a/settings.gradle b/settings.gradle index b7c58eb8b..ebce3f9c4 100644 --- a/settings.gradle +++ b/settings.gradle @@ -22,4 +22,13 @@ pluginManagement { gradlePluginPortal() } } -rootProject.name = 'Iris' \ No newline at end of file +rootProject.name = 'Iris' + +include(':core') +include( + ':nms:v1_20_R2', + ':nms:v1_20_R1', + ':nms:v1_19_R3', + ':nms:v1_19_R2', + ':nms:v1_19_R1' +) \ No newline at end of file