├── .github └── ISSUE_TEMPLATE │ ├── bug.yml │ └── feature.yml ├── .gitignore ├── IRIS.png ├── LICENSE.md ├── README.md ├── build.gradle ├── core ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── volmit │ │ └── iris │ │ ├── Iris.java │ │ ├── core │ │ ├── IrisSettings.java │ │ ├── ServerConfigurator.java │ │ ├── commands │ │ │ ├── CommandDeveloper.java │ │ │ ├── CommandEdit.java │ │ │ ├── CommandFind.java │ │ │ ├── CommandIris.java │ │ │ ├── CommandJigsaw.java │ │ │ ├── CommandLazyPregen.java │ │ │ ├── CommandObject.java │ │ │ ├── CommandPregen.java │ │ │ ├── CommandSettings.java │ │ │ ├── CommandStudio.java │ │ │ ├── CommandTurboPregen.java │ │ │ ├── CommandUpdater.java │ │ │ └── CommandWhat.java │ │ ├── edit │ │ │ ├── BlockEditor.java │ │ │ ├── BlockSignal.java │ │ │ ├── BukkitBlockEditor.java │ │ │ ├── DustRevealer.java │ │ │ └── JigsawEditor.java │ │ ├── events │ │ │ ├── IrisEngineEvent.java │ │ │ ├── IrisEngineHotloadEvent.java │ │ │ └── IrisLootEvent.java │ │ ├── gui │ │ │ ├── NoiseExplorerGUI.java │ │ │ ├── PregeneratorJob.java │ │ │ ├── VisionGUI.java │ │ │ └── components │ │ │ │ ├── IrisRenderer.java │ │ │ │ ├── RenderType.java │ │ │ │ ├── Renderer.java │ │ │ │ └── TileRender.java │ │ ├── link │ │ │ ├── CustomItemsDataProvider.java │ │ │ ├── EcoItemsDataProvider.java │ │ │ ├── ExecutableItemsDataProvider.java │ │ │ ├── ExternalDataProvider.java │ │ │ ├── HMCLeavesDataProvider.java │ │ │ ├── Identifier.java │ │ │ ├── IrisPapiExpansion.java │ │ │ ├── ItemAdderDataProvider.java │ │ │ ├── MMOItemsDataProvider.java │ │ │ ├── MultiverseCoreLink.java │ │ │ ├── MythicCrucibleDataProvider.java │ │ │ ├── MythicMobsLink.java │ │ │ ├── NexoDataProvider.java │ │ │ └── WorldEditLink.java │ │ ├── loader │ │ │ ├── ImageResourceLoader.java │ │ │ ├── IrisData.java │ │ │ ├── IrisRegistrant.java │ │ │ ├── MatterObjectResourceLoader.java │ │ │ ├── ObjectResourceLoader.java │ │ │ ├── ResourceLoader.java │ │ │ └── ScriptResourceLoader.java │ │ ├── nms │ │ │ ├── BiomeBaseInjector.java │ │ │ ├── INMS.java │ │ │ ├── INMSBinding.java │ │ │ ├── container │ │ │ │ ├── AutoClosing.java │ │ │ │ ├── BiomeColor.java │ │ │ │ ├── BlockPos.java │ │ │ │ └── Pair.java │ │ │ ├── datapack │ │ │ │ ├── DataVersion.java │ │ │ │ ├── IDataFixer.java │ │ │ │ ├── v1192 │ │ │ │ │ └── DataFixerV1192.java │ │ │ │ ├── v1206 │ │ │ │ │ └── DataFixerV1206.java │ │ │ │ └── v1213 │ │ │ │ │ └── DataFixerV1213.java │ │ │ └── v1X │ │ │ │ └── NMSBinding1X.java │ │ ├── pack │ │ │ ├── IrisPack.java │ │ │ └── IrisPackRepository.java │ │ ├── pregenerator │ │ │ ├── ChunkUpdater.java │ │ │ ├── DeepSearchPregenerator.java │ │ │ ├── IrisPregenerator.java │ │ │ ├── LazyPregenerator.java │ │ │ ├── PregenListener.java │ │ │ ├── PregenTask.java │ │ │ ├── PregeneratorMethod.java │ │ │ ├── TurboPregenerator.java │ │ │ ├── cache │ │ │ │ ├── PregenCache.java │ │ │ │ ├── PregenCacheImpl.java │ │ │ │ └── SynchronizedCache.java │ │ │ └── methods │ │ │ │ ├── AsyncOrMedievalPregenMethod.java │ │ │ │ ├── AsyncPregenMethod.java │ │ │ │ ├── CachedPregenMethod.java │ │ │ │ ├── DummyPregenMethod.java │ │ │ │ ├── HybridPregenMethod.java │ │ │ │ └── MedievalPregenMethod.java │ │ ├── project │ │ │ ├── IrisProject.java │ │ │ └── SchemaBuilder.java │ │ ├── report │ │ │ ├── Report.java │ │ │ └── ReportType.java │ │ ├── safeguard │ │ │ ├── IrisSafeguard.java │ │ │ ├── ModesSFG.java │ │ │ ├── PerformanceSFG.java │ │ │ ├── ServerBootSFG.java │ │ │ └── UtilsSFG.java │ │ ├── service │ │ │ ├── BoardSVC.java │ │ │ ├── CommandSVC.java │ │ │ ├── ConversionSVC.java │ │ │ ├── EditSVC.java │ │ │ ├── ExternalDataSVC.java │ │ │ ├── GlobalCacheSVC.java │ │ │ ├── IrisEngineSVC.java │ │ │ ├── LogFilterSVC.java │ │ │ ├── ObjectSVC.java │ │ │ ├── PreservationSVC.java │ │ │ ├── StudioSVC.java │ │ │ ├── TreeSVC.java │ │ │ └── WandSVC.java │ │ ├── tools │ │ │ ├── IrisConverter.java │ │ │ ├── IrisCreator.java │ │ │ ├── IrisPackBenchmarking.java │ │ │ ├── IrisReflectiveAPI.java │ │ │ ├── IrisToolbelt.java │ │ │ └── IrisWorldCreator.java │ │ └── wand │ │ │ └── WandSelection.java │ │ ├── engine │ │ ├── EnginePanic.java │ │ ├── IrisComplex.java │ │ ├── IrisEngine.java │ │ ├── IrisEngineEffects.java │ │ ├── IrisEngineMantle.java │ │ ├── IrisExecutionEnvironment.java │ │ ├── IrisWorldManager.java │ │ ├── actuator │ │ │ ├── IrisBiomeActuator.java │ │ │ ├── IrisDecorantActuator.java │ │ │ └── IrisTerrainNormalActuator.java │ │ ├── data │ │ │ ├── cache │ │ │ │ ├── AtomicCache.java │ │ │ │ ├── Cache.java │ │ │ │ └── Multicache.java │ │ │ ├── chunk │ │ │ │ ├── LinkedTerrainChunk.java │ │ │ │ ├── MCATerrainChunk.java │ │ │ │ └── TerrainChunk.java │ │ │ └── io │ │ │ │ ├── Deserializer.java │ │ │ │ ├── ExceptionBiFunction.java │ │ │ │ ├── ExceptionTriConsumer.java │ │ │ │ ├── MaxDepthIO.java │ │ │ │ ├── MaxDepthReachedException.java │ │ │ │ ├── Serializer.java │ │ │ │ ├── StringDeserializer.java │ │ │ │ └── StringSerializer.java │ │ ├── decorator │ │ │ ├── IrisCeilingDecorator.java │ │ │ ├── IrisEngineDecorator.java │ │ │ ├── IrisSeaFloorDecorator.java │ │ │ ├── IrisSeaSurfaceDecorator.java │ │ │ ├── IrisShoreLineDecorator.java │ │ │ └── IrisSurfaceDecorator.java │ │ ├── framework │ │ │ ├── BlockUpdater.java │ │ │ ├── Engine.java │ │ │ ├── EngineActuator.java │ │ │ ├── EngineAssignedActuator.java │ │ │ ├── EngineAssignedBiModifier.java │ │ │ ├── EngineAssignedComponent.java │ │ │ ├── EngineAssignedModifier.java │ │ │ ├── EngineAssignedWorldManager.java │ │ │ ├── EngineBiModifier.java │ │ │ ├── EngineComponent.java │ │ │ ├── EngineData.java │ │ │ ├── EngineDecorator.java │ │ │ ├── EngineEffects.java │ │ │ ├── EngineMetrics.java │ │ │ ├── EngineMode.java │ │ │ ├── EngineModifier.java │ │ │ ├── EnginePlayer.java │ │ │ ├── EngineStage.java │ │ │ ├── EngineTarget.java │ │ │ ├── EngineWorldManager.java │ │ │ ├── Fallible.java │ │ │ ├── Hotloadable.java │ │ │ ├── IrisEngineMode.java │ │ │ ├── ListFunction.java │ │ │ ├── Locator.java │ │ │ ├── LocatorCanceller.java │ │ │ ├── LootProvider.java │ │ │ ├── MeteredCache.java │ │ │ ├── PlacedObject.java │ │ │ ├── PregeneratedData.java │ │ │ ├── ResultLocator.java │ │ │ ├── SeedManager.java │ │ │ ├── Staged.java │ │ │ ├── WrongEngineBroException.java │ │ │ └── placer │ │ │ │ ├── HeightmapObjectPlacer.java │ │ │ │ └── WorldObjectPlacer.java │ │ ├── jigsaw │ │ │ ├── PlannedPiece.java │ │ │ └── PlannedStructure.java │ │ ├── mantle │ │ │ ├── EngineMantle.java │ │ │ ├── IrisMantleComponent.java │ │ │ ├── MantleComponent.java │ │ │ ├── MantleSized.java │ │ │ ├── MantleWriter.java │ │ │ └── components │ │ │ │ ├── MantleCarvingComponent.java │ │ │ │ ├── MantleFluidBodyComponent.java │ │ │ │ ├── MantleJigsawComponent.java │ │ │ │ └── MantleObjectComponent.java │ │ ├── mode │ │ │ ├── ModeEnclosure.java │ │ │ ├── ModeIslands.java │ │ │ ├── ModeOverworld.java │ │ │ └── ModeSuperFlat.java │ │ ├── modifier │ │ │ ├── IrisCarveModifier.java │ │ │ ├── IrisCustomModifier.java │ │ │ ├── IrisDepositModifier.java │ │ │ ├── IrisPerfectionModifier.java │ │ │ └── IrisPostModifier.java │ │ ├── object │ │ │ ├── CarveResult.java │ │ │ ├── CarvingMode.java │ │ │ ├── CaveResult.java │ │ │ ├── IObjectLoot.java │ │ │ ├── IObjectPlacer.java │ │ │ ├── IPostBlockAccess.java │ │ │ ├── IRare.java │ │ │ ├── InferredType.java │ │ │ ├── InventorySlotType.java │ │ │ ├── IrisAttributeModifier.java │ │ │ ├── IrisAxisRotationClamp.java │ │ │ ├── IrisBiome.java │ │ │ ├── IrisBiomeCustom.java │ │ │ ├── IrisBiomeCustomCategory.java │ │ │ ├── IrisBiomeCustomParticle.java │ │ │ ├── IrisBiomeCustomPrecipType.java │ │ │ ├── IrisBiomeCustomSpawn.java │ │ │ ├── IrisBiomeCustomSpawnType.java │ │ │ ├── IrisBiomeGeneratorLink.java │ │ │ ├── IrisBiomePaletteLayer.java │ │ │ ├── IrisBlockData.java │ │ │ ├── IrisBlockDrops.java │ │ │ ├── IrisCarving.java │ │ │ ├── IrisCave.java │ │ │ ├── IrisCavePlacer.java │ │ │ ├── IrisColor.java │ │ │ ├── IrisCommand.java │ │ │ ├── IrisCommandRegistry.java │ │ │ ├── IrisCompat.java │ │ │ ├── IrisCompatabilityBlockFilter.java │ │ │ ├── IrisCompatabilityItemFilter.java │ │ │ ├── IrisContextInjector.java │ │ │ ├── IrisDecorationPart.java │ │ │ ├── IrisDecorator.java │ │ │ ├── IrisDepositGenerator.java │ │ │ ├── IrisDimension.java │ │ │ ├── IrisDimensionMode.java │ │ │ ├── IrisDimensionModeType.java │ │ │ ├── IrisDirection.java │ │ │ ├── IrisDuration.java │ │ │ ├── IrisEffect.java │ │ │ ├── IrisElipsoid.java │ │ │ ├── IrisEnchantment.java │ │ │ ├── IrisEngineData.java │ │ │ ├── IrisEngineSpawnerCooldown.java │ │ │ ├── IrisEngineStatistics.java │ │ │ ├── IrisEngineStreamType.java │ │ │ ├── IrisEngineValueType.java │ │ │ ├── IrisEntity.java │ │ │ ├── IrisEntitySpawn.java │ │ │ ├── IrisExpression.java │ │ │ ├── IrisExpressionFunction.java │ │ │ ├── IrisExpressionLoad.java │ │ │ ├── IrisFluidBodies.java │ │ │ ├── IrisFontStyle.java │ │ │ ├── IrisGenerator.java │ │ │ ├── IrisGeneratorStyle.java │ │ │ ├── IrisImage.java │ │ │ ├── IrisImageChannel.java │ │ │ ├── IrisImageMap.java │ │ │ ├── IrisInterpolator.java │ │ │ ├── IrisInterpolator3D.java │ │ │ ├── IrisJigsawMinDistance.java │ │ │ ├── IrisJigsawPiece.java │ │ │ ├── IrisJigsawPieceConnector.java │ │ │ ├── IrisJigsawPlacement.java │ │ │ ├── IrisJigsawPool.java │ │ │ ├── IrisJigsawStructure.java │ │ │ ├── IrisJigsawStructurePlacement.java │ │ │ ├── IrisLake.java │ │ │ ├── IrisLoot.java │ │ │ ├── IrisLootMode.java │ │ │ ├── IrisLootReference.java │ │ │ ├── IrisLootTable.java │ │ │ ├── IrisMarker.java │ │ │ ├── IrisMaterialPalette.java │ │ │ ├── IrisMod.java │ │ │ ├── IrisModBiomeInjector.java │ │ │ ├── IrisModBiomeReplacer.java │ │ │ ├── IrisModNoiseStyleReplacer.java │ │ │ ├── IrisModObjectPlacementBiomeInjector.java │ │ │ ├── IrisModObjectPlacementRegionInjector.java │ │ │ ├── IrisModObjectReplacer.java │ │ │ ├── IrisModRegionReplacer.java │ │ │ ├── IrisNoiseGenerator.java │ │ │ ├── IrisObject.java │ │ │ ├── IrisObjectLimit.java │ │ │ ├── IrisObjectLoot.java │ │ │ ├── IrisObjectMarker.java │ │ │ ├── IrisObjectPlacement.java │ │ │ ├── IrisObjectPlacementScaleInterpolator.java │ │ │ ├── IrisObjectReplace.java │ │ │ ├── IrisObjectRotation.java │ │ │ ├── IrisObjectScale.java │ │ │ ├── IrisObjectTranslate.java │ │ │ ├── IrisObjectVanillaLoot.java │ │ │ ├── IrisOreGenerator.java │ │ │ ├── IrisPosition.java │ │ │ ├── IrisPosition2D.java │ │ │ ├── IrisPotionEffect.java │ │ │ ├── IrisPyramid.java │ │ │ ├── IrisRange.java │ │ │ ├── IrisRareObject.java │ │ │ ├── IrisRate.java │ │ │ ├── IrisRavine.java │ │ │ ├── IrisRavinePlacer.java │ │ │ ├── IrisRegion.java │ │ │ ├── IrisRiver.java │ │ │ ├── IrisScript.java │ │ │ ├── IrisSeed.java │ │ │ ├── IrisShapedGeneratorStyle.java │ │ │ ├── IrisSlopeClip.java │ │ │ ├── IrisSpawnGroup.java │ │ │ ├── IrisSpawner.java │ │ │ ├── IrisSpawnerCooldowns.java │ │ │ ├── IrisSphere.java │ │ │ ├── IrisStiltSettings.java │ │ │ ├── IrisStyledRange.java │ │ │ ├── IrisSurface.java │ │ │ ├── IrisTimeBlock.java │ │ │ ├── IrisTree.java │ │ │ ├── IrisTreeModes.java │ │ │ ├── IrisTreeSettings.java │ │ │ ├── IrisTreeSize.java │ │ │ ├── IrisVanillaLootTable.java │ │ │ ├── IrisVillagerOverride.java │ │ │ ├── IrisVillagerTrade.java │ │ │ ├── IrisWeather.java │ │ │ ├── IrisWorld.java │ │ │ ├── IrisWorm.java │ │ │ ├── LegacyTileData.java │ │ │ ├── NoiseStyle.java │ │ │ ├── ObjectPlaceMode.java │ │ │ ├── StudioMode.java │ │ │ ├── TileData.java │ │ │ ├── annotations │ │ │ │ ├── ArrayType.java │ │ │ │ ├── DependsOn.java │ │ │ │ ├── Desc.java │ │ │ │ ├── MaxNumber.java │ │ │ │ ├── MinNumber.java │ │ │ │ ├── RegistryListBiomeDownfallType.java │ │ │ │ ├── RegistryListBlockType.java │ │ │ │ ├── RegistryListEnchantment.java │ │ │ │ ├── RegistryListFont.java │ │ │ │ ├── RegistryListFunction.java │ │ │ │ ├── RegistryListItemType.java │ │ │ │ ├── RegistryListResource.java │ │ │ │ ├── RegistryListSpecialEntity.java │ │ │ │ ├── Required.java │ │ │ │ ├── Snippet.java │ │ │ │ └── functions │ │ │ │ │ ├── LootTableKeyFunction.java │ │ │ │ │ └── StructureKeyFunction.java │ │ │ └── matter │ │ │ │ ├── IrisMatterObject.java │ │ │ │ ├── IrisMatterPlacement.java │ │ │ │ ├── IrisMatterPlacementLocation.java │ │ │ │ └── IrisMatterTranslate.java │ │ ├── platform │ │ │ ├── BukkitChunkGenerator.java │ │ │ ├── DummyBiomeGrid.java │ │ │ ├── DummyBiomeProvider.java │ │ │ ├── DummyChunkGenerator.java │ │ │ ├── PlatformChunkGenerator.java │ │ │ └── studio │ │ │ │ ├── EnginedStudioGenerator.java │ │ │ │ ├── StudioGenerator.java │ │ │ │ └── generators │ │ │ │ └── BiomeBuffetGenerator.java │ │ └── scripting │ │ │ ├── EngineExecutionEnvironment.java │ │ │ └── IrisScriptingAPI.java │ │ └── util │ │ ├── api │ │ ├── APIAwareBlock.java │ │ └── APIWorldBlock.java │ │ ├── atomics │ │ ├── AtomicAverage.java │ │ └── AtomicRollingSequence.java │ │ ├── board │ │ ├── Board.java │ │ ├── BoardEntry.java │ │ ├── BoardManager.java │ │ ├── BoardProvider.java │ │ ├── BoardSettings.java │ │ ├── BoardUpdateTask.java │ │ └── ScoreDirection.java │ │ ├── cache │ │ ├── ArrayCache.java │ │ ├── ByteBitCache.java │ │ ├── ByteCache.java │ │ ├── ChunkCache2D.java │ │ ├── DataBitCache.java │ │ ├── FloatBitCache.java │ │ ├── FloatCache.java │ │ ├── IntBitCache.java │ │ ├── IntCache.java │ │ ├── ShortBitCache.java │ │ ├── ShortCache.java │ │ ├── UByteBitCache.java │ │ ├── UByteCache.java │ │ └── WorldCache2D.java │ │ ├── collection │ │ ├── GBiset.java │ │ ├── GListAdapter.java │ │ ├── KList.java │ │ ├── KMap.java │ │ ├── KSet.java │ │ ├── KeyPair.java │ │ └── StateList.java │ │ ├── context │ │ ├── ChunkContext.java │ │ ├── ChunkedDataCache.java │ │ └── IrisContext.java │ │ ├── data │ │ ├── B.java │ │ ├── BiomeMap.java │ │ ├── ChunkCache.java │ │ ├── ComplexCache.java │ │ ├── Cuboid.java │ │ ├── CuboidException.java │ │ ├── DUTF.java │ │ ├── DataPalette.java │ │ ├── DataProvider.java │ │ ├── Dimension.java │ │ ├── DimensionFace.java │ │ ├── DoubleArrayUtils.java │ │ ├── Heafty.java │ │ ├── HeightMap.java │ │ ├── IOAdapter.java │ │ ├── InvertedBiomeGrid.java │ │ ├── IrisBiomeStorage.java │ │ ├── IrisCustomData.java │ │ ├── KCache.java │ │ ├── MaterialBlock.java │ │ ├── NibbleArray.java │ │ ├── NibbleDataPalette.java │ │ ├── Recycler.java │ │ ├── Shrinkwrap.java │ │ ├── VanillaBiomeMap.java │ │ ├── Varint.java │ │ ├── WeightMap.java │ │ ├── WeightedRandom.java │ │ ├── Writable.java │ │ ├── palette │ │ │ ├── BitStorage.java │ │ │ ├── CountConsumer.java │ │ │ ├── CrudeIncrementalIntIdentityHashBiMap.java │ │ │ ├── GlobalPalette.java │ │ │ ├── HashMapPalette.java │ │ │ ├── IdMap.java │ │ │ ├── IdMapper.java │ │ │ ├── LinearPalette.java │ │ │ ├── Mth.java │ │ │ ├── Palette.java │ │ │ ├── PaletteAccess.java │ │ │ ├── PaletteResize.java │ │ │ ├── PaletteType.java │ │ │ ├── PalettedContainer.java │ │ │ └── QuartPos.java │ │ └── registry │ │ │ ├── Attributes.java │ │ │ ├── Materials.java │ │ │ ├── Particles.java │ │ │ └── RegistryUtil.java │ │ ├── decree │ │ ├── DecreeContext.java │ │ ├── DecreeContextHandler.java │ │ ├── DecreeExecutor.java │ │ ├── DecreeNode.java │ │ ├── DecreeOrigin.java │ │ ├── DecreeParameter.java │ │ ├── DecreeParameterHandler.java │ │ ├── DecreeSystem.java │ │ ├── annotations │ │ │ ├── Decree.java │ │ │ └── Param.java │ │ ├── context │ │ │ ├── BiomeContextHandler.java │ │ │ ├── DimensionContextHandler.java │ │ │ ├── GeneratorContextHandler.java │ │ │ ├── RegionContextHandler.java │ │ │ ├── VectorContextHandler.java │ │ │ └── WorldContextHandler.java │ │ ├── exceptions │ │ │ └── DecreeParsingException.java │ │ ├── handlers │ │ │ ├── BiomeHandler.java │ │ │ ├── BlockVectorHandler.java │ │ │ ├── BooleanHandler.java │ │ │ ├── ByteHandler.java │ │ │ ├── CaveHandler.java │ │ │ ├── DataVersionHandler.java │ │ │ ├── DimensionHandler.java │ │ │ ├── DoubleHandler.java │ │ │ ├── EntityHandler.java │ │ │ ├── FloatHandler.java │ │ │ ├── GeneratorHandler.java │ │ │ ├── IntegerHandler.java │ │ │ ├── JigsawPieceHandler.java │ │ │ ├── JigsawPoolHandler.java │ │ │ ├── JigsawStructureHandler.java │ │ │ ├── LongHandler.java │ │ │ ├── PlayerHandler.java │ │ │ ├── RegionHandler.java │ │ │ ├── ScriptHandler.java │ │ │ ├── ShortHandler.java │ │ │ ├── StringHandler.java │ │ │ ├── VectorHandler.java │ │ │ └── WorldHandler.java │ │ ├── specialhandlers │ │ │ ├── DummyHandler.java │ │ │ ├── NullablePlayerHandler.java │ │ │ └── ObjectHandler.java │ │ └── virtual │ │ │ └── VirtualDecreeCommand.java │ │ ├── documentation │ │ ├── BlockCoordinates.java │ │ ├── ChunkCoordinates.java │ │ ├── ChunkRelativeBlockCoordinates.java │ │ ├── Exclusive.java │ │ ├── Inclusive.java │ │ └── RegionCoordinates.java │ │ ├── exceptions │ │ ├── IrisException.java │ │ └── MissingDimensionException.java │ │ ├── format │ │ ├── C.java │ │ ├── Form.java │ │ └── MemoryMonitor.java │ │ ├── function │ │ ├── Consumer2.java │ │ ├── Consumer2IO.java │ │ ├── Consumer3.java │ │ ├── Consumer4.java │ │ ├── Consumer4IO.java │ │ ├── Consumer5.java │ │ ├── Consumer6.java │ │ ├── Consumer8.java │ │ ├── Function2.java │ │ ├── Function3.java │ │ ├── Function4.java │ │ ├── NastyFunction.java │ │ ├── NastyFuture.java │ │ ├── NastyRunnable.java │ │ ├── NastySupplier.java │ │ ├── NoiseInjector.java │ │ ├── NoiseProvider.java │ │ ├── NoiseProvider3.java │ │ ├── Supplier2.java │ │ ├── Supplier3.java │ │ └── Supplier3R.java │ │ ├── hunk │ │ ├── Hunk.java │ │ ├── HunkFace.java │ │ ├── HunkFactory.java │ │ ├── bits │ │ │ ├── DataBits.java │ │ │ ├── DataContainer.java │ │ │ ├── HashPalette.java │ │ │ ├── LinearPalette.java │ │ │ ├── Palette.java │ │ │ └── Writable.java │ │ ├── storage │ │ │ ├── ArrayHunk.java │ │ │ ├── AtomicDoubleHunk.java │ │ │ ├── AtomicHunk.java │ │ │ ├── AtomicIntegerHunk.java │ │ │ ├── AtomicLongHunk.java │ │ │ ├── MappedHunk.java │ │ │ ├── MappedSyncHunk.java │ │ │ ├── PaletteHunk.java │ │ │ ├── PaletteOrHunk.java │ │ │ ├── StorageHunk.java │ │ │ └── SynchronizedArrayHunk.java │ │ └── view │ │ │ ├── BiomeGridHunkHolder.java │ │ │ ├── BiomeGridHunkView.java │ │ │ ├── ChunkBiomeHunkView.java │ │ │ ├── ChunkDataHunkHolder.java │ │ │ ├── ChunkDataHunkView.java │ │ │ ├── ChunkHunkView.java │ │ │ ├── DriftHunkView.java │ │ │ ├── FringedHunkView.java │ │ │ ├── FunctionalHunkView.java │ │ │ ├── HunkView.java │ │ │ ├── InvertedHunkView.java │ │ │ ├── ListeningHunk.java │ │ │ ├── ReadOnlyHunk.java │ │ │ ├── RotatedXHunkView.java │ │ │ ├── RotatedYHunkView.java │ │ │ ├── RotatedZHunkView.java │ │ │ ├── SynchronizedHunkView.java │ │ │ └── WriteTrackHunk.java │ │ ├── interpolation │ │ ├── CompiledStarcast.java │ │ ├── InterpolationMethod.java │ │ ├── InterpolationMethod3D.java │ │ ├── InterpolationType.java │ │ ├── IrisInterpolation.java │ │ └── Starcast.java │ │ ├── inventorygui │ │ ├── Element.java │ │ ├── ElementEvent.java │ │ ├── RandomColor.java │ │ ├── UIElement.java │ │ ├── UIStaticDecorator.java │ │ ├── UIVoidDecorator.java │ │ ├── UIWindow.java │ │ ├── Window.java │ │ ├── WindowDecorator.java │ │ └── WindowResolution.java │ │ ├── io │ │ ├── Converter.java │ │ ├── CountingDataInputStream.java │ │ ├── CustomOutputStream.java │ │ ├── FileWatcher.java │ │ ├── FolderWatcher.java │ │ ├── IO.java │ │ ├── IORunnable.java │ │ ├── InstanceState.java │ │ ├── JarScanner.java │ │ ├── ReactiveFolder.java │ │ └── VoidOutputStream.java │ │ ├── json │ │ ├── HTTP.java │ │ ├── HTTPTokener.java │ │ ├── JSONArray.java │ │ ├── JSONException.java │ │ ├── JSONML.java │ │ ├── JSONObject.java │ │ ├── JSONString.java │ │ ├── JSONStringer.java │ │ ├── JSONTokener.java │ │ ├── JSONWriter.java │ │ ├── XML.java │ │ └── XMLTokener.java │ │ ├── mantle │ │ ├── Mantle.java │ │ ├── MantleChunk.java │ │ ├── MantleFlag.java │ │ └── TectonicPlate.java │ │ ├── math │ │ ├── AlignedPoint.java │ │ ├── Average.java │ │ ├── AxisAlignedBB.java │ │ ├── BlockPosition.java │ │ ├── CDou.java │ │ ├── DOP.java │ │ ├── Direction.java │ │ ├── FinalInteger.java │ │ ├── INode.java │ │ ├── IrisMathHelper.java │ │ ├── KochanekBartelsInterpolation.java │ │ ├── M.java │ │ ├── MathHelper.java │ │ ├── PathInterpolation.java │ │ ├── Point3d.java │ │ ├── Point3f.java │ │ ├── Point4d.java │ │ ├── Point4f.java │ │ ├── Position2.java │ │ ├── RNG.java │ │ ├── RNGV2.java │ │ ├── RollingSequence.java │ │ ├── Spiral.java │ │ ├── Spiraled.java │ │ ├── Spiraler.java │ │ ├── Tuple2d.java │ │ ├── Tuple2f.java │ │ ├── Tuple3d.java │ │ ├── Tuple3f.java │ │ ├── Tuple4d.java │ │ ├── Tuple4f.java │ │ ├── VecMathUtil.java │ │ ├── Vector2d.java │ │ ├── Vector2f.java │ │ ├── Vector3d.java │ │ ├── Vector3f.java │ │ └── VectorMath.java │ │ ├── matter │ │ ├── IrisMatter.java │ │ ├── Matter.java │ │ ├── MatterBiomeInject.java │ │ ├── MatterCavern.java │ │ ├── MatterEntity.java │ │ ├── MatterEntityGroup.java │ │ ├── MatterFilter.java │ │ ├── MatterFluidBody.java │ │ ├── MatterHeader.java │ │ ├── MatterMarker.java │ │ ├── MatterPalette.java │ │ ├── MatterPlacer.java │ │ ├── MatterReader.java │ │ ├── MatterSlice.java │ │ ├── MatterStructurePOI.java │ │ ├── MatterUpdate.java │ │ ├── MatterWriter.java │ │ ├── Sliced.java │ │ ├── TileWrapper.java │ │ ├── WorldMatter.java │ │ └── slices │ │ │ ├── BiomeInjectMatter.java │ │ │ ├── BlockMatter.java │ │ │ ├── BooleanMatter.java │ │ │ ├── CavernMatter.java │ │ │ ├── CompoundMatter.java │ │ │ ├── EntityMatter.java │ │ │ ├── IdentifierMatter.java │ │ │ ├── IntMatter.java │ │ │ ├── JigsawPieceMatter.java │ │ │ ├── JigsawStructuresMatter.java │ │ │ ├── LongMatter.java │ │ │ ├── MarkerMatter.java │ │ │ ├── NBTMatter.java │ │ │ ├── RawMatter.java │ │ │ ├── RegistryMatter.java │ │ │ ├── SpawnerMatter.java │ │ │ ├── StringMatter.java │ │ │ ├── StructurePOIMatter.java │ │ │ ├── TileMatter.java │ │ │ ├── UpdateMatter.java │ │ │ └── container │ │ │ ├── JigsawPieceContainer.java │ │ │ ├── JigsawStructuresContainer.java │ │ │ └── RegistrantContainer.java │ │ ├── misc │ │ ├── ServerProperties.java │ │ └── getHardware.java │ │ ├── nbt │ │ ├── io │ │ │ ├── NBTDeserializer.java │ │ │ ├── NBTInputStream.java │ │ │ ├── NBTOutputStream.java │ │ │ ├── NBTSerializer.java │ │ │ ├── NBTUtil.java │ │ │ ├── NamedTag.java │ │ │ ├── ParseException.java │ │ │ ├── SNBTDeserializer.java │ │ │ ├── SNBTParser.java │ │ │ ├── SNBTSerializer.java │ │ │ ├── SNBTUtil.java │ │ │ ├── SNBTWriter.java │ │ │ └── StringPointer.java │ │ ├── mca │ │ │ ├── Chunk.java │ │ │ ├── CompressionType.java │ │ │ ├── ExceptionFunction.java │ │ │ ├── LoadFlags.java │ │ │ ├── MCAFile.java │ │ │ ├── MCAUtil.java │ │ │ ├── NBTWorld.java │ │ │ ├── Section.java │ │ │ └── palette │ │ │ │ ├── MCABiomeContainer.java │ │ │ │ ├── MCABitStorage.java │ │ │ │ ├── MCAChunkBiomeContainer.java │ │ │ │ ├── MCACountConsumer.java │ │ │ │ ├── MCACrudeIncrementalIntIdentityHashBiMap.java │ │ │ │ ├── MCAGlobalPalette.java │ │ │ │ ├── MCAHashMapPalette.java │ │ │ │ ├── MCAIdMap.java │ │ │ │ ├── MCAIdMapper.java │ │ │ │ ├── MCALinearPalette.java │ │ │ │ ├── MCAMth.java │ │ │ │ ├── MCAPalette.java │ │ │ │ ├── MCAPaletteAccess.java │ │ │ │ ├── MCAPaletteResize.java │ │ │ │ ├── MCAPalettedContainer.java │ │ │ │ ├── MCAQuartPos.java │ │ │ │ └── MCAWrappedPalettedContainer.java │ │ └── tag │ │ │ ├── ArrayTag.java │ │ │ ├── ByteArrayTag.java │ │ │ ├── ByteTag.java │ │ │ ├── CompoundTag.java │ │ │ ├── DoubleTag.java │ │ │ ├── EndTag.java │ │ │ ├── FloatTag.java │ │ │ ├── IntArrayTag.java │ │ │ ├── IntTag.java │ │ │ ├── ListTag.java │ │ │ ├── LongArrayTag.java │ │ │ ├── LongTag.java │ │ │ ├── NonNullEntrySet.java │ │ │ ├── NumberTag.java │ │ │ ├── ShortTag.java │ │ │ ├── StringTag.java │ │ │ └── Tag.java │ │ ├── network │ │ ├── DL.java │ │ ├── DownloadException.java │ │ ├── DownloadMonitor.java │ │ ├── MeteredInputStream.java │ │ └── MeteredOutputStream.java │ │ ├── noise │ │ ├── CNG.java │ │ ├── CNGFactory.java │ │ ├── CachedNoise.java │ │ ├── CachedNoiseMap.java │ │ ├── CellGenerator.java │ │ ├── CellHeightNoise.java │ │ ├── CellularNoise.java │ │ ├── CloverNoise.java │ │ ├── CubicNoise.java │ │ ├── ExpressionNoise.java │ │ ├── FastNoise.java │ │ ├── FastNoiseDouble.java │ │ ├── FlatNoise.java │ │ ├── FractalBillowPerlinNoise.java │ │ ├── FractalBillowSimplexNoise.java │ │ ├── FractalCubicNoise.java │ │ ├── FractalFBMSimplexNoise.java │ │ ├── FractalRigidMultiSimplexNoise.java │ │ ├── GlobNoise.java │ │ ├── ImageNoise.java │ │ ├── InterpolatedNoise.java │ │ ├── NoiseFactory.java │ │ ├── NoiseGenerator.java │ │ ├── NoiseType.java │ │ ├── OctaveNoise.java │ │ ├── PerlinNoise.java │ │ ├── RarityCellGenerator.java │ │ ├── SimplexNoise.java │ │ ├── VascularNoise.java │ │ └── WhiteNoise.java │ │ ├── parallel │ │ ├── BurstExecutor.java │ │ ├── BurstedHunk.java │ │ ├── GridLock.java │ │ ├── HyperLock.java │ │ ├── MultiBurst.java │ │ └── NOOPGridLock.java │ │ ├── particle │ │ ├── FastParticle.java │ │ ├── FastReflection.java │ │ ├── ParticleSender.java │ │ ├── ParticleSenderLegacy.java │ │ └── ParticleType.java │ │ ├── plugin │ │ ├── CancellableTask.java │ │ ├── Chunks.java │ │ ├── Command.java │ │ ├── CommandDummy.java │ │ ├── Control.java │ │ ├── Controller.java │ │ ├── ICommand.java │ │ ├── IController.java │ │ ├── Instance.java │ │ ├── IrisService.java │ │ ├── MortarCommand.java │ │ ├── MortarPermission.java │ │ ├── Permission.java │ │ ├── PluginRegistry.java │ │ ├── PluginRegistryGroup.java │ │ ├── RouterCommand.java │ │ ├── VirtualCommand.java │ │ ├── VolmitPlugin.java │ │ └── VolmitSender.java │ │ ├── profile │ │ ├── LoadBalancer.java │ │ └── MsptTimings.java │ │ ├── reflect │ │ ├── OldEnum.java │ │ ├── ShadeFix.java │ │ ├── V.java │ │ ├── Violator.java │ │ ├── W.java │ │ ├── WrappedField.java │ │ └── WrappedReturningMethod.java │ │ ├── scheduling │ │ ├── AR.java │ │ ├── Callback.java │ │ ├── ChronoLatch.java │ │ ├── Contained.java │ │ ├── GroupedExecutor.java │ │ ├── IrisLock.java │ │ ├── J.java │ │ ├── Looper.java │ │ ├── O.java │ │ ├── Observable.java │ │ ├── Observer.java │ │ ├── PrecisionStopwatch.java │ │ ├── Queue.java │ │ ├── QueueExecutor.java │ │ ├── S.java │ │ ├── SR.java │ │ ├── ShurikenQueue.java │ │ ├── Switch.java │ │ ├── TaskExecutor.java │ │ ├── ThreadMonitor.java │ │ ├── Wrapper.java │ │ └── jobs │ │ │ ├── DownloadJob.java │ │ │ ├── Job.java │ │ │ ├── JobCollection.java │ │ │ ├── ParallelQueueJob.java │ │ │ ├── QueueJob.java │ │ │ └── SingleJob.java │ │ ├── stream │ │ ├── ArraySignificance.java │ │ ├── BasicLayer.java │ │ ├── BasicStream.java │ │ ├── ProceduralLayer.java │ │ ├── ProceduralStream.java │ │ ├── Significance.java │ │ ├── arithmetic │ │ │ ├── AddingStream.java │ │ │ ├── ClampedStream.java │ │ │ ├── CoordinateBitShiftLeftStream.java │ │ │ ├── CoordinateBitShiftRightStream.java │ │ │ ├── DividingStream.java │ │ │ ├── FittedStream.java │ │ │ ├── MaxingStream.java │ │ │ ├── MinningStream.java │ │ │ ├── ModuloStream.java │ │ │ ├── MultiplyingStream.java │ │ │ ├── OffsetStream.java │ │ │ ├── RadialStream.java │ │ │ ├── RoundingDoubleStream.java │ │ │ ├── SlopeStream.java │ │ │ ├── SubtractingStream.java │ │ │ └── ZoomStream.java │ │ ├── convert │ │ │ ├── AwareConversionStream2D.java │ │ │ ├── AwareConversionStream3D.java │ │ │ ├── CachedConversionStream.java │ │ │ ├── ConversionStream.java │ │ │ ├── ForceDoubleStream.java │ │ │ ├── RoundingStream.java │ │ │ ├── SelectionStream.java │ │ │ ├── SignificanceStream.java │ │ │ └── To3DStream.java │ │ ├── interpolation │ │ │ ├── BiHermiteStream.java │ │ │ ├── BiStarcastStream.java │ │ │ ├── BicubicStream.java │ │ │ ├── BilinearStream.java │ │ │ ├── Interpolated.java │ │ │ ├── InterpolatingStream.java │ │ │ ├── Interpolator.java │ │ │ ├── InterpolatorFactory.java │ │ │ ├── TriHermiteStream.java │ │ │ ├── TriStarcastStream.java │ │ │ ├── TricubicStream.java │ │ │ └── TrilinearStream.java │ │ ├── sources │ │ │ ├── CNGStream.java │ │ │ └── FunctionStream.java │ │ └── utility │ │ │ ├── CachedStream2D.java │ │ │ ├── CachedStream3D.java │ │ │ ├── ContextInjectingStream.java │ │ │ ├── NullSafeStream.java │ │ │ ├── ProfiledStream.java │ │ │ ├── SemaphoreStream.java │ │ │ ├── SynchronizedStream.java │ │ │ └── WasteDetector.java │ │ └── uniques │ │ ├── U.java │ │ ├── UBufferedImage.java │ │ ├── UFeature.java │ │ ├── UFeatureMeta.java │ │ ├── UImage.java │ │ ├── UMeta.java │ │ ├── UniqueRenderer.java │ │ └── features │ │ ├── UFInterpolator.java │ │ ├── UFNOOP.java │ │ ├── UFWarpedBackground.java │ │ ├── UFWarpedCircle.java │ │ ├── UFWarpedDisc.java │ │ ├── UFWarpedDots.java │ │ └── UFWarpedLines.java │ └── resources │ └── plugin.yml ├── gource.bat ├── gource ├── COPYING.txt ├── ChangeLog.txt ├── README.txt ├── SDL2.dll ├── SDL2_image.dll ├── THANKS.txt ├── cmd │ ├── gource │ └── gource.cmd ├── data │ ├── beam.png │ ├── bloom.tga │ ├── bloom_alpha.tga │ ├── file.png │ ├── fonts │ │ ├── FreeSans.ttf │ │ └── README.txt │ ├── gource.style │ ├── shaders │ │ ├── bloom.frag │ │ ├── bloom.vert │ │ ├── shadow.frag │ │ ├── shadow.vert │ │ ├── text.frag │ │ └── text.vert │ └── user.png ├── glew32.dll ├── gource.exe ├── libboost_filesystem-mt.dll ├── libbz2-1.dll ├── libfreetype-6.dll ├── libgcc_s_seh-1.dll ├── libglib-2.0-0.dll ├── libgraphite2.dll ├── libharfbuzz-0.dll ├── libiconv-2.dll ├── libintl-8.dll ├── libjpeg-8.dll ├── liblzma-5.dll ├── libpcre-1.dll ├── libpng16-16.dll ├── libstdc++-6.dll ├── libtiff-5.dll ├── libwebp-7.dll ├── libwinpthread-1.dll ├── libzstd.dll └── zlib1.dll ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── icon.png ├── listing.json ├── lombok.config ├── nms ├── v1_20_R1 │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── volmit │ │ └── iris │ │ └── core │ │ └── nms │ │ └── v1_20_R1 │ │ ├── CustomBiomeSource.java │ │ ├── IrisChunkGenerator.java │ │ └── NMSBinding.java ├── v1_20_R2 │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── volmit │ │ └── iris │ │ └── core │ │ └── nms │ │ └── v1_20_R2 │ │ ├── CustomBiomeSource.java │ │ ├── IrisChunkGenerator.java │ │ └── NMSBinding.java ├── v1_20_R3 │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── volmit │ │ └── iris │ │ └── core │ │ └── nms │ │ └── v1_20_R3 │ │ ├── CustomBiomeSource.java │ │ ├── IrisChunkGenerator.java │ │ └── NMSBinding.java ├── v1_20_R4 │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── volmit │ │ └── iris │ │ └── core │ │ └── nms │ │ └── v1_20_R4 │ │ ├── CustomBiomeSource.java │ │ ├── IrisChunkGenerator.java │ │ └── NMSBinding.java ├── v1_21_R1 │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── volmit │ │ └── iris │ │ └── core │ │ └── nms │ │ └── v1_21_R1 │ │ ├── CustomBiomeSource.java │ │ ├── IrisChunkGenerator.java │ │ └── NMSBinding.java ├── v1_21_R2 │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── volmit │ │ └── iris │ │ └── core │ │ └── nms │ │ └── v1_21_R2 │ │ ├── CustomBiomeSource.java │ │ ├── IrisChunkGenerator.java │ │ └── NMSBinding.java ├── v1_21_R3 │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── volmit │ │ └── iris │ │ └── core │ │ └── nms │ │ └── v1_21_R3 │ │ ├── CustomBiomeSource.java │ │ ├── IrisChunkGenerator.java │ │ └── NMSBinding.java └── v1_21_R4 │ └── src │ └── main │ └── java │ └── com │ └── volmit │ └── iris │ └── core │ └── nms │ └── v1_21_R4 │ ├── CustomBiomeSource.java │ ├── IrisChunkGenerator.java │ └── NMSBinding.java ├── out └── production │ └── resources │ └── plugin.yml ├── packignore.ignore ├── settings.gradle ├── storepage ├── Incredible-Tools.png ├── Performance.png ├── Real-Custom-Biomes.png ├── The-Dimension-Engine.png ├── The-Overworld.png ├── gg.png └── two │ ├── Footer.png │ ├── Header.png │ ├── Iris.xd │ ├── NOTE.png │ ├── NOTERED.png │ ├── SUPERTHANKS.png │ ├── WhyChooseIris.png │ ├── allnewfeatures.png │ ├── c1.png │ ├── c2.png │ ├── c3.png │ ├── c4.png │ ├── c5.png │ ├── dlshare.png │ ├── icard.png │ └── speed.png └── wad.png /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | build/ 3 | libs/ 4 | 5 | .gradle/ 6 | 7 | .idea/ 8 | 9 | .DS_Store 10 | 11 | collection/ 12 | 13 | /core/src/main/java/com/volmit/iris/util/uniques/ 14 | -------------------------------------------------------------------------------- /IRIS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/IRIS.png -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/commands/CommandSettings.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.core.commands; 20 | 21 | import com.volmit.iris.util.decree.DecreeExecutor; 22 | 23 | public class CommandSettings implements DecreeExecutor { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/gui/components/RenderType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.core.gui.components; 20 | 21 | public enum RenderType { 22 | BIOME, BIOME_LAND, BIOME_SEA, REGION, CAVE_LAND, HEIGHT, OBJECT_LOAD, DECORATOR_LOAD, CONTINENT, LAYER_LOAD 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/gui/components/Renderer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.core.gui.components; 20 | 21 | import java.awt.*; 22 | 23 | @FunctionalInterface 24 | public interface Renderer { 25 | Color draw(double x, double z); 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/gui/components/TileRender.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.core.gui.components; 20 | 21 | import lombok.Builder; 22 | import lombok.Data; 23 | 24 | import java.awt.image.BufferedImage; 25 | 26 | @Builder 27 | @Data 28 | public class TileRender { 29 | private BufferedImage image; 30 | private int quality; 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/nms/BiomeBaseInjector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.core.nms; 20 | 21 | @FunctionalInterface 22 | public interface BiomeBaseInjector { 23 | default void setBiome(int x, int z, Object biomeBase) { 24 | setBiome(x, 0, z, biomeBase); 25 | } 26 | 27 | void setBiome(int x, int y, int z, Object biomeBase); 28 | } 29 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/nms/container/AutoClosing.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.core.nms.container; 2 | 3 | import com.volmit.iris.util.collection.KMap; 4 | import com.volmit.iris.util.function.NastyRunnable; 5 | import lombok.AllArgsConstructor; 6 | 7 | import java.util.concurrent.atomic.AtomicBoolean; 8 | 9 | @AllArgsConstructor 10 | public class AutoClosing implements AutoCloseable { 11 | private static final KMap CONTEXTS = new KMap<>(); 12 | private final AtomicBoolean closed = new AtomicBoolean(); 13 | private final NastyRunnable action; 14 | 15 | @Override 16 | public void close() { 17 | if (closed.getAndSet(true)) return; 18 | try { 19 | removeContext(); 20 | action.run(); 21 | } catch (Throwable e) { 22 | throw new RuntimeException(e); 23 | } 24 | } 25 | 26 | public void storeContext() { 27 | CONTEXTS.put(Thread.currentThread(), this); 28 | } 29 | 30 | public void removeContext() { 31 | CONTEXTS.values().removeIf(c -> c == this); 32 | } 33 | 34 | public static void closeContext() { 35 | AutoClosing closing = CONTEXTS.remove(Thread.currentThread()); 36 | if (closing == null) return; 37 | closing.close(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/nms/container/BiomeColor.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.core.nms.container; 2 | 3 | public enum BiomeColor { 4 | FOG, 5 | WATER, 6 | WATER_FOG, 7 | SKY, 8 | FOLIAGE, 9 | GRASS 10 | } 11 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/nms/container/BlockPos.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.core.nms.container; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | public class BlockPos { 11 | private int x; 12 | private int y; 13 | private int z; 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/nms/container/Pair.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.core.nms.container; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | public class Pair { 11 | private A a; 12 | private B b; 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/nms/datapack/IDataFixer.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.core.nms.datapack; 2 | 3 | import com.volmit.iris.engine.object.IrisBiomeCustom; 4 | import com.volmit.iris.engine.object.IrisRange; 5 | import com.volmit.iris.util.json.JSONObject; 6 | 7 | public interface IDataFixer { 8 | 9 | default JSONObject fixCustomBiome(IrisBiomeCustom biome, JSONObject json) { 10 | return json; 11 | } 12 | 13 | JSONObject rawDimension(Dimension dimension); 14 | 15 | default JSONObject createDimension(Dimension dimension, IrisRange height, int logicalHeight) { 16 | JSONObject obj = rawDimension(dimension); 17 | obj.put("min_y", height.getMin()); 18 | obj.put("height", height.getMax() - height.getMin()); 19 | obj.put("logical_height", logicalHeight); 20 | return obj; 21 | } 22 | 23 | enum Dimension { 24 | OVERRWORLD, 25 | NETHER, 26 | THE_END 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/nms/datapack/v1213/DataFixerV1213.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.core.nms.datapack.v1213; 2 | 3 | import com.volmit.iris.core.nms.datapack.v1206.DataFixerV1206; 4 | import com.volmit.iris.engine.object.IrisBiomeCustom; 5 | import com.volmit.iris.util.json.JSONArray; 6 | import com.volmit.iris.util.json.JSONObject; 7 | 8 | public class DataFixerV1213 extends DataFixerV1206 { 9 | 10 | @Override 11 | public JSONObject fixCustomBiome(IrisBiomeCustom biome, JSONObject json) { 12 | json = super.fixCustomBiome(biome, json); 13 | json.put("carvers", new JSONArray()); 14 | return json; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/pregenerator/cache/SynchronizedCache.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.core.pregenerator.cache; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | @AllArgsConstructor 6 | class SynchronizedCache implements PregenCache { 7 | private final PregenCache cache; 8 | 9 | @Override 10 | public boolean isThreadSafe() { 11 | return true; 12 | } 13 | 14 | @Override 15 | public boolean isChunkCached(int x, int z) { 16 | synchronized (cache) { 17 | return cache.isChunkCached(x, z); 18 | } 19 | } 20 | 21 | @Override 22 | public boolean isRegionCached(int x, int z) { 23 | synchronized (cache) { 24 | return cache.isRegionCached(x, z); 25 | } 26 | } 27 | 28 | @Override 29 | public void cacheChunk(int x, int z) { 30 | synchronized (cache) { 31 | cache.cacheChunk(x, z); 32 | } 33 | } 34 | 35 | @Override 36 | public void cacheRegion(int x, int z) { 37 | synchronized (cache) { 38 | cache.cacheRegion(x, z); 39 | } 40 | } 41 | 42 | @Override 43 | public void write() { 44 | synchronized (cache) { 45 | cache.write(); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/report/ReportType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.core.report; 20 | 21 | public enum ReportType { 22 | ERROR, 23 | SEVERE_WARNING, 24 | WARNING, 25 | NOTICE, 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/safeguard/IrisSafeguard.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.core.safeguard; 2 | 3 | import com.volmit.iris.Iris; 4 | import com.volmit.iris.core.IrisSettings; 5 | 6 | public class IrisSafeguard { 7 | public static boolean unstablemode = false; 8 | public static boolean warningmode = false; 9 | public static boolean stablemode = false; 10 | 11 | public static void IrisSafeguardSystem() { 12 | Iris.info("Enabled Iris SafeGuard"); 13 | ServerBootSFG.BootCheck(); 14 | } 15 | 16 | public static void earlySplash() { 17 | if (ServerBootSFG.safeguardPassed || IrisSettings.get().getGeneral().DoomsdayAnnihilationSelfDestructMode) 18 | return; 19 | 20 | Iris.instance.splash(); 21 | UtilsSFG.splash(); 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/core/safeguard/PerformanceSFG.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.core.safeguard; 2 | 3 | public class PerformanceSFG { 4 | public static void calculatePerformance() { 5 | 6 | 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/data/cache/Multicache.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.data.cache; 20 | 21 | public interface Multicache { 22 | Cache getCache(int id); 23 | 24 | Cache createCache(); 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/data/io/ExceptionBiFunction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.data.io; 20 | 21 | @FunctionalInterface 22 | public interface ExceptionBiFunction { 23 | 24 | R accept(T t, U u) throws E; 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/data/io/ExceptionTriConsumer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.data.io; 20 | 21 | @FunctionalInterface 22 | public interface ExceptionTriConsumer { 23 | 24 | void accept(T t, U u, V v) throws E; 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/data/io/MaxDepthReachedException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.data.io; 20 | 21 | /** 22 | * Exception indicating that the maximum (de-)serialization depth has been reached. 23 | */ 24 | @SuppressWarnings("serial") 25 | public class MaxDepthReachedException extends RuntimeException { 26 | 27 | public MaxDepthReachedException(String msg) { 28 | super(msg); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/BlockUpdater.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | import com.volmit.iris.util.math.RNG; 22 | import org.bukkit.Chunk; 23 | import org.bukkit.block.data.BlockData; 24 | 25 | public interface BlockUpdater { 26 | 27 | void catchBlockUpdates(int x, int y, int z, BlockData data); 28 | 29 | void updateChunk(Chunk c); 30 | 31 | void update(int x, int y, int z, Chunk c, RNG rf); 32 | } 33 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/EngineActuator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | import com.volmit.iris.util.context.ChunkContext; 22 | import com.volmit.iris.util.documentation.BlockCoordinates; 23 | import com.volmit.iris.util.hunk.Hunk; 24 | 25 | public interface EngineActuator extends EngineComponent { 26 | @BlockCoordinates 27 | void actuate(int x, int z, Hunk output, boolean multicore, ChunkContext context); 28 | } 29 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/EngineBiModifier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | 22 | import com.volmit.iris.util.hunk.Hunk; 23 | 24 | public interface EngineBiModifier extends EngineComponent { 25 | void modify(int x, int z, Hunk a, Hunk b); 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/EngineEffects.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | public interface EngineEffects extends EngineComponent { 22 | void updatePlayerMap(); 23 | 24 | void tickRandomPlayer(); 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/EngineModifier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | import com.volmit.iris.util.context.ChunkContext; 22 | import com.volmit.iris.util.documentation.BlockCoordinates; 23 | import com.volmit.iris.util.hunk.Hunk; 24 | 25 | public interface EngineModifier extends EngineComponent { 26 | @BlockCoordinates 27 | void modify(int x, int z, Hunk t, boolean multicore, ChunkContext context); 28 | } 29 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/Hotloadable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | public interface Hotloadable { 22 | void hotload(); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/ListFunction.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.framework; 2 | 3 | import com.volmit.iris.core.loader.IrisData; 4 | 5 | import java.util.function.Function; 6 | 7 | public interface ListFunction extends Function { 8 | String key(); 9 | String fancyName(); 10 | } 11 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/LocatorCanceller.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | public class LocatorCanceller { 22 | protected static Runnable cancel = null; 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/MeteredCache.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | import com.volmit.iris.util.data.KCache; 22 | 23 | public interface MeteredCache { 24 | long getSize(); 25 | 26 | KCache getRawCache(); 27 | 28 | long getMaxSize(); 29 | 30 | default double getUsage() { 31 | return (double) getSize() / (double) getMaxSize(); 32 | } 33 | 34 | boolean isClosed(); 35 | } 36 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/Staged.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | import com.volmit.iris.util.collection.KList; 22 | 23 | public interface Staged { 24 | KList getStages(); 25 | 26 | void registerStage(EngineStage stage); 27 | 28 | default void dump() { 29 | getStages().forEach(EngineStage::close); 30 | getStages().clear(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/framework/WrongEngineBroException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.framework; 20 | 21 | public class WrongEngineBroException extends Exception { 22 | } 23 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/mantle/MantleSized.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.mantle; 20 | 21 | public interface MantleSized { 22 | int getMaxChunkSize(); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/CarveResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object; 20 | 21 | import lombok.Value; 22 | 23 | @SuppressWarnings("ClassCanBeRecord") 24 | @Value 25 | public class CarveResult { 26 | @SuppressWarnings("RedundantModifiersValueLombok") 27 | private final int surface; 28 | @SuppressWarnings("RedundantModifiersValueLombok") 29 | private final int ceiling; 30 | 31 | public int getHeight() { 32 | return ceiling - surface; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/CaveResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object; 20 | 21 | import lombok.Data; 22 | 23 | @Data 24 | public class CaveResult { 25 | private int floor; 26 | private int ceiling; 27 | 28 | public CaveResult(int floor, int ceiling) { 29 | this.floor = floor; 30 | this.ceiling = ceiling; 31 | } 32 | 33 | public boolean isWithin(int v) { 34 | return v > floor || v < ceiling; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/IObjectLoot.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.object; 2 | 3 | import com.volmit.iris.core.loader.IrisData; 4 | import com.volmit.iris.util.collection.KList; 5 | import org.bukkit.block.data.BlockData; 6 | 7 | public interface IObjectLoot { 8 | KList getFilter(); 9 | KList getFilter(IrisData manager); 10 | boolean isExact(); 11 | String getName(); 12 | int getWeight(); 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object; 20 | 21 | import com.volmit.iris.engine.object.annotations.Desc; 22 | 23 | @Desc("Snow, rain, or nothing") 24 | public enum IrisBiomeCustomPrecipType { 25 | @Desc("No downfall") 26 | none, 27 | 28 | @Desc("Rain downfall") 29 | rain, 30 | 31 | @Desc("Snow downfall") 32 | snow 33 | } 34 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/IrisFontStyle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object; 20 | 21 | import com.volmit.iris.engine.object.annotations.Desc; 22 | 23 | @Desc("Represents a basic font style to apply to a font family") 24 | public enum IrisFontStyle { 25 | @Desc("Plain old text") 26 | PLAIN, 27 | 28 | @Desc("Italicized Text") 29 | ITALIC, 30 | 31 | @Desc("Bold Text") 32 | BOLD, 33 | } 34 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/IrisJigsawMinDistance.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.object; 2 | 3 | import com.volmit.iris.engine.object.annotations.Desc; 4 | import com.volmit.iris.engine.object.annotations.MinNumber; 5 | import com.volmit.iris.engine.object.annotations.RegistryListResource; 6 | import com.volmit.iris.engine.object.annotations.Required; 7 | import com.volmit.iris.engine.object.annotations.Snippet; 8 | import lombok.AllArgsConstructor; 9 | import lombok.Data; 10 | import lombok.NoArgsConstructor; 11 | import lombok.experimental.Accessors; 12 | 13 | @Snippet("jigsaw-structure-min-distance") 14 | @Accessors(chain = true) 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | @Desc("Represents the min distance between jigsaw structure placements") 18 | @Data 19 | public class IrisJigsawMinDistance { 20 | @Required 21 | @RegistryListResource(IrisJigsawStructure.class) 22 | @Desc("The structure to check against") 23 | private String structure; 24 | 25 | @Required 26 | @MinNumber(0) 27 | @Desc("The min distance in blocks to a placed structure\nWARNING: The performance impact scales exponentially!") 28 | private int distance; 29 | } 30 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/IrisSpawnerCooldowns.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.object; 2 | 3 | import com.volmit.iris.engine.framework.Engine; 4 | import com.volmit.iris.util.collection.KMap; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.NonNull; 7 | 8 | @EqualsAndHashCode 9 | public class IrisSpawnerCooldowns { 10 | private final KMap cooldowns = new KMap<>(); 11 | 12 | public IrisEngineSpawnerCooldown getCooldown(@NonNull IrisSpawner spawner) { 13 | return getCooldown(spawner.getLoadKey()); 14 | } 15 | 16 | public IrisEngineSpawnerCooldown getCooldown(@NonNull String loadKey) { 17 | return cooldowns.computeIfAbsent(loadKey, k -> { 18 | IrisEngineSpawnerCooldown cd = new IrisEngineSpawnerCooldown(); 19 | cd.setSpawner(loadKey); 20 | return cd; 21 | }); 22 | } 23 | 24 | public void cleanup(Engine engine) { 25 | cooldowns.values().removeIf(cd -> { 26 | IrisSpawner sp = engine.getData().getSpawnerLoader().load(cd.getSpawner()); 27 | return sp == null || cd.canSpawn(sp.getMaximumRate()); 28 | }); 29 | } 30 | 31 | public boolean isEmpty() { 32 | return cooldowns.isEmpty(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/IrisTreeModes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object; 20 | 21 | import com.volmit.iris.engine.object.annotations.Desc; 22 | 23 | @Desc("Sapling override object picking options") 24 | public enum IrisTreeModes { 25 | @Desc("Check biome, then region, then dimension, pick the first one that has options") 26 | FIRST, 27 | 28 | @Desc("Check biome, regions, and dimensions, and pick any option from the total list") 29 | ALL 30 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/ArrayType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.*; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({PARAMETER, TYPE, FIELD}) 29 | public @interface ArrayType { 30 | Class type(); 31 | 32 | int min() default 0; 33 | } 34 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/DependsOn.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.FIELD; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({FIELD}) 29 | public @interface DependsOn { 30 | String[] value(); 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/Desc.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.*; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({PARAMETER, TYPE, FIELD}) 29 | public @interface Desc { 30 | String value(); 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/MaxNumber.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.FIELD; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({FIELD}) 29 | public @interface MaxNumber { 30 | double value(); 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/MinNumber.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.FIELD; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({FIELD}) 29 | public @interface MinNumber { 30 | double value(); 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiomeDownfallType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.*; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({PARAMETER, TYPE, FIELD}) 29 | public @interface RegistryListBiomeDownfallType { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBlockType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.*; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({PARAMETER, TYPE, FIELD}) 29 | public @interface RegistryListBlockType { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListEnchantment.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.object.annotations; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.Target; 5 | 6 | import static java.lang.annotation.ElementType.*; 7 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 8 | 9 | @Retention(RUNTIME) 10 | @Target({PARAMETER, TYPE, FIELD}) 11 | public @interface RegistryListEnchantment { 12 | } 13 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListFont.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.*; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({PARAMETER, TYPE, FIELD}) 29 | public @interface RegistryListFont { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListFunction.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.object.annotations; 2 | 3 | import com.volmit.iris.engine.framework.ListFunction; 4 | import com.volmit.iris.util.collection.KList; 5 | 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.Target; 8 | 9 | import static java.lang.annotation.ElementType.*; 10 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 11 | 12 | @Retention(RUNTIME) 13 | @Target({PARAMETER, TYPE, FIELD}) 14 | public @interface RegistryListFunction { 15 | Class>> value(); 16 | } 17 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListItemType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.*; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({PARAMETER, TYPE, FIELD}) 29 | public @interface RegistryListItemType { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListSpecialEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.*; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({PARAMETER, TYPE, FIELD}) 29 | public @interface RegistryListSpecialEntity { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/Required.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.*; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({PARAMETER, TYPE, FIELD}) 29 | public @interface Required { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/Snippet.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.object.annotations; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.TYPE; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target({TYPE}) 29 | public @interface Snippet { 30 | String value(); 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/functions/LootTableKeyFunction.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.object.annotations.functions; 2 | 3 | import com.volmit.iris.core.loader.IrisData; 4 | import com.volmit.iris.engine.framework.ListFunction; 5 | import com.volmit.iris.util.collection.KList; 6 | import org.bukkit.NamespacedKey; 7 | import org.bukkit.Registry; 8 | import org.bukkit.loot.LootTable; 9 | import org.bukkit.loot.LootTables; 10 | 11 | import java.util.stream.Collectors; 12 | import java.util.stream.StreamSupport; 13 | 14 | public class LootTableKeyFunction implements ListFunction> { 15 | @Override 16 | public String key() { 17 | return "loot-table-key"; 18 | } 19 | 20 | @Override 21 | public String fancyName() { 22 | return "LootTable Key"; 23 | } 24 | 25 | @Override 26 | public KList apply(IrisData data) { 27 | return StreamSupport.stream(Registry.LOOT_TABLES.spliterator(), false) 28 | .map(LootTables::getLootTable) 29 | .map(LootTable::getKey) 30 | .map(NamespacedKey::toString) 31 | .collect(Collectors.toCollection(KList::new)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/annotations/functions/StructureKeyFunction.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.object.annotations.functions; 2 | 3 | import com.volmit.iris.core.loader.IrisData; 4 | import com.volmit.iris.core.nms.INMS; 5 | import com.volmit.iris.engine.framework.ListFunction; 6 | import com.volmit.iris.util.collection.KList; 7 | 8 | public class StructureKeyFunction implements ListFunction> { 9 | @Override 10 | public String key() { 11 | return "structure-key"; 12 | } 13 | 14 | @Override 15 | public String fancyName() { 16 | return "Structure Key"; 17 | } 18 | 19 | @Override 20 | public KList apply(IrisData irisData) { 21 | return INMS.get().getStructureKeys(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/object/matter/IrisMatterPlacementLocation.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.object.matter; 2 | 3 | import com.volmit.iris.engine.IrisEngine; 4 | import com.volmit.iris.engine.object.annotations.Desc; 5 | import com.volmit.iris.util.function.Function3; 6 | 7 | @Desc("WHERE THINGS PLACE") 8 | public enum IrisMatterPlacementLocation { 9 | SURFACE((e, x, z) -> e.getHeight(x, z, true)), 10 | SURFACE_ON_FLUID((e, x, z) -> e.getHeight(x, z, false)), 11 | BEDROCK((e, x, z) -> 0), 12 | SKY((e, x, z) -> e.getHeight()); 13 | 14 | private final Function3 computer; 15 | 16 | IrisMatterPlacementLocation(Function3 computer) { 17 | this.computer = computer; 18 | } 19 | 20 | public int at(IrisEngine engine, int x, int z) { 21 | return computer.apply(engine, x, z); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/platform/DummyBiomeGrid.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.platform; 2 | 3 | import org.bukkit.block.Biome; 4 | import org.bukkit.generator.ChunkGenerator; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public class DummyBiomeGrid implements ChunkGenerator.BiomeGrid { 8 | @NotNull 9 | @Override 10 | public Biome getBiome(int x, int z) { 11 | return null; 12 | } 13 | 14 | @NotNull 15 | @Override 16 | public Biome getBiome(int x, int y, int z) { 17 | return null; 18 | } 19 | 20 | @Override 21 | public void setBiome(int x, int z, @NotNull Biome bio) { 22 | 23 | } 24 | 25 | @Override 26 | public void setBiome(int x, int y, int z, @NotNull Biome bio) { 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.engine.platform; 2 | 3 | import com.volmit.iris.core.nms.INMS; 4 | import com.volmit.iris.util.collection.KList; 5 | import org.bukkit.block.Biome; 6 | import org.bukkit.generator.BiomeProvider; 7 | import org.bukkit.generator.WorldInfo; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | import java.util.List; 11 | 12 | public class DummyBiomeProvider extends BiomeProvider { 13 | private final List ALL = INMS.get().getBiomes(); 14 | 15 | @NotNull 16 | @Override 17 | public Biome getBiome(@NotNull WorldInfo worldInfo, int x, int y, int z) { 18 | return Biome.PLAINS; 19 | } 20 | 21 | @NotNull 22 | @Override 23 | public List getBiomes(@NotNull WorldInfo worldInfo) { 24 | return ALL; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/platform/DummyChunkGenerator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.platform; 20 | 21 | import org.bukkit.generator.ChunkGenerator; 22 | 23 | public class DummyChunkGenerator extends ChunkGenerator { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/engine/platform/studio/StudioGenerator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.engine.platform.studio; 20 | 21 | import com.volmit.iris.engine.data.chunk.TerrainChunk; 22 | import com.volmit.iris.engine.framework.Engine; 23 | import com.volmit.iris.engine.framework.WrongEngineBroException; 24 | 25 | public interface StudioGenerator { 26 | void generateChunk(Engine engine, TerrainChunk tc, int x, int z) throws WrongEngineBroException; 27 | } 28 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/api/APIAwareBlock.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.api; 20 | 21 | import org.bukkit.block.data.BlockData; 22 | 23 | @FunctionalInterface 24 | public interface APIAwareBlock { 25 | void onPlaced(BlockData block, String namespace, String key, int x, int y, int z); 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/api/APIWorldBlock.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.api; 20 | 21 | import org.bukkit.block.Block; 22 | 23 | @FunctionalInterface 24 | public interface APIWorldBlock { 25 | void onWorldPlaced(Block block, String namespace, String key); 26 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/board/BoardProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.board; 20 | 21 | import org.bukkit.entity.Player; 22 | 23 | import java.util.List; 24 | 25 | 26 | public interface BoardProvider { 27 | 28 | String getTitle(Player player); 29 | 30 | 31 | List getLines(Player player); 32 | } 33 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/board/BoardSettings.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.board; 20 | 21 | import lombok.Builder; 22 | import lombok.Getter; 23 | 24 | 25 | @SuppressWarnings("ClassCanBeRecord") 26 | @Getter 27 | @Builder 28 | public class BoardSettings { 29 | 30 | private final BoardProvider boardProvider; 31 | 32 | 33 | private final ScoreDirection scoreDirection; 34 | } 35 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/board/ScoreDirection.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.board; 20 | 21 | /** 22 | * @author Missionary (missionarymc@gmail.com) 23 | * @since 5/31/2018 24 | */ 25 | 26 | public enum ScoreDirection { 27 | 28 | UP, 29 | 30 | 31 | DOWN 32 | } 33 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/cache/ChunkCache2D.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.cache; 2 | 3 | import com.volmit.iris.util.function.Function2; 4 | 5 | import java.util.concurrent.atomic.AtomicReferenceArray; 6 | 7 | public class ChunkCache2D { 8 | private final AtomicReferenceArray cache; 9 | 10 | public ChunkCache2D() { 11 | this.cache = new AtomicReferenceArray<>(256); 12 | } 13 | 14 | public T get(int x, int z, Function2 resolver) { 15 | int key = ((z & 15) * 16) + (x & 15); 16 | T t = cache.get(key); 17 | 18 | if (t == null) { 19 | t = resolver.apply(x, z); 20 | cache.set(key, t); 21 | } 22 | 23 | return t; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/cache/WorldCache2D.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.cache; 2 | 3 | import com.volmit.iris.engine.data.cache.Cache; 4 | import com.volmit.iris.util.data.KCache; 5 | import com.volmit.iris.util.function.Function2; 6 | 7 | public class WorldCache2D { 8 | private final KCache> chunks; 9 | private final Function2 resolver; 10 | 11 | public WorldCache2D(Function2 resolver) { 12 | this.resolver = resolver; 13 | chunks = new KCache<>((x) -> new ChunkCache2D<>(), 1024); 14 | } 15 | 16 | public T get(int x, int z) { 17 | ChunkCache2D chunk = chunks.get(Cache.key(x >> 4, z >> 4)); 18 | return chunk.get(x, z, resolver); 19 | } 20 | 21 | public long getSize() { 22 | return chunks.getSize() * 256L; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/CuboidException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data; 20 | 21 | /** 22 | * Represents a cuboid exception 23 | * 24 | * @author cyberpwn 25 | */ 26 | public class CuboidException extends Exception { 27 | private static final long serialVersionUID = 1L; 28 | 29 | public CuboidException(String string) { 30 | super(string); 31 | } 32 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/DataProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data; 20 | 21 | import com.volmit.iris.core.loader.IrisData; 22 | 23 | public interface DataProvider { 24 | IrisData getData(); 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/DimensionFace.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data; 20 | 21 | /** 22 | * Represents a dimension (coordinates not worlds) 23 | * 24 | * @author cyberpwn 25 | */ 26 | public enum DimensionFace { 27 | /** 28 | * The X dimension (width) 29 | */ 30 | X, 31 | 32 | /** 33 | * The Y dimension (height) 34 | */ 35 | Y, 36 | 37 | /** 38 | * The Z dimension (depth) 39 | */ 40 | Z 41 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/Heafty.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data; 20 | 21 | @FunctionalInterface 22 | public interface Heafty { 23 | int getHeaft(); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/IOAdapter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data; 20 | 21 | import java.io.DataInputStream; 22 | import java.io.DataOutputStream; 23 | import java.io.IOException; 24 | 25 | public interface IOAdapter { 26 | void write(T t, DataOutputStream dos) throws IOException; 27 | 28 | T read(DataInputStream din) throws IOException; 29 | } 30 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/Shrinkwrap.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data; 20 | 21 | public class Shrinkwrap { 22 | private T t; 23 | 24 | public Shrinkwrap(T t) { 25 | set(t); 26 | } 27 | 28 | public Shrinkwrap() { 29 | this(null); 30 | } 31 | 32 | public T get() { 33 | return t; 34 | } 35 | 36 | public void set(T t) { 37 | this.t = t; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/Writable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data; 20 | 21 | import java.io.DataInputStream; 22 | import java.io.DataOutputStream; 23 | import java.io.IOException; 24 | 25 | public interface Writable { 26 | void write(DataOutputStream o) throws IOException; 27 | 28 | void read(DataInputStream i) throws IOException; 29 | } 30 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/palette/CountConsumer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data.palette; 20 | 21 | @FunctionalInterface 22 | public interface CountConsumer { 23 | void accept(T paramT, int paramInt); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/palette/IdMap.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data.palette; 20 | 21 | public interface IdMap extends Iterable { 22 | int getId(T paramT); 23 | 24 | T byId(int paramInt); 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/palette/Palette.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data.palette; 20 | 21 | import java.util.List; 22 | 23 | public interface Palette { 24 | int idFor(T paramT); 25 | 26 | T valueFor(int paramInt); 27 | 28 | int getSize(); 29 | 30 | void read(List fromList); 31 | 32 | void write(List toList); 33 | } 34 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/palette/PaletteAccess.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data.palette; 20 | 21 | import com.volmit.iris.util.nbt.tag.CompoundTag; 22 | 23 | public interface PaletteAccess { 24 | void setBlock(int x, int y, int z, CompoundTag data); 25 | 26 | CompoundTag getBlock(int x, int y, int z); 27 | 28 | void writeToSection(CompoundTag tag); 29 | 30 | void readFromSection(CompoundTag tag); 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/palette/PaletteResize.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.data.palette; 20 | 21 | interface PaletteResize { 22 | int onResize(int paramInt, T paramT); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/registry/Attributes.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.data.registry; 2 | 3 | import org.bukkit.attribute.Attribute; 4 | 5 | public class Attributes { 6 | public static final Attribute MAX_HEALTH = RegistryUtil.find(Attribute.class, "generic_max_health", "max_health"); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/registry/Materials.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.data.registry; 2 | 3 | import org.bukkit.Material; 4 | 5 | import static com.volmit.iris.util.data.registry.RegistryUtil.find; 6 | 7 | public class Materials { 8 | public static final Material GRASS = find(Material.class, "grass", "short_grass"); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/data/registry/Particles.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.data.registry; 2 | 3 | import org.bukkit.Particle; 4 | 5 | import static com.volmit.iris.util.data.registry.RegistryUtil.find; 6 | 7 | public class Particles { 8 | public static final Particle CRIT_MAGIC = find(Particle.class, "crit_magic", "crit"); 9 | public static final Particle REDSTONE = find(Particle.class, "redstone", "dust"); 10 | public static final Particle ITEM = find(Particle.class, "item_crack", "item"); 11 | } 12 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/decree/exceptions/DecreeParsingException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.decree.exceptions; 20 | 21 | /** 22 | * Thrown when a decree parameter is parsed, but parsing fails 23 | */ 24 | public class DecreeParsingException extends Exception { 25 | public DecreeParsingException(String message) { 26 | super(message); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/decree/specialhandlers/NullablePlayerHandler.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.decree.specialhandlers; 2 | 3 | import com.volmit.iris.util.decree.exceptions.DecreeParsingException; 4 | import com.volmit.iris.util.decree.handlers.PlayerHandler; 5 | import org.bukkit.entity.Player; 6 | 7 | public class NullablePlayerHandler extends PlayerHandler { 8 | 9 | @Override 10 | public Player parse(String in, boolean force) throws DecreeParsingException { 11 | return getPossibilities(in).stream().filter((i) -> toString(i).equalsIgnoreCase(in)).findFirst().orElse(null); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/documentation/BlockCoordinates.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.documentation; 20 | 21 | /** 22 | * This method expects coords in block 23 | */ 24 | public @interface BlockCoordinates { 25 | 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/documentation/ChunkCoordinates.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.documentation; 20 | 21 | /** 22 | * This method expects blocks in chunk coordinates 23 | */ 24 | public @interface ChunkCoordinates { 25 | 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/documentation/ChunkRelativeBlockCoordinates.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.documentation; 20 | 21 | /** 22 | * This method expects coords in block 23 | */ 24 | public @interface ChunkRelativeBlockCoordinates { 25 | 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/documentation/Exclusive.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.documentation; 2 | 3 | /** 4 | * This Argument is exclusive 5 | */ 6 | public @interface Exclusive { 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/documentation/Inclusive.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.documentation; 2 | 3 | /** 4 | * This Argument is inclusive 5 | */ 6 | public @interface Inclusive { 7 | } 8 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/documentation/RegionCoordinates.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.documentation; 20 | 21 | /** 22 | * This method expects coordinates in region coords 23 | */ 24 | public @interface RegionCoordinates { 25 | 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/exceptions/MissingDimensionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.exceptions; 20 | 21 | public class MissingDimensionException extends IrisException { 22 | public MissingDimensionException() { 23 | super(); 24 | } 25 | 26 | public MissingDimensionException(String message) { 27 | super(message); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Consumer2.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @SuppressWarnings({"hiding", "RedundantSuppression"}) 22 | @FunctionalInterface 23 | public interface Consumer2 { 24 | void accept(A a, B b); 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Consumer2IO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | import java.io.IOException; 22 | 23 | @SuppressWarnings({"hiding", "RedundantSuppression"}) 24 | @FunctionalInterface 25 | public interface Consumer2IO { 26 | void accept(A a, B b) throws IOException; 27 | } 28 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Consumer3.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @SuppressWarnings("ALL") 22 | @FunctionalInterface 23 | public interface Consumer3 { 24 | void accept(A a, B b, C c); 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Consumer4.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface Consumer4 { 23 | void accept(A a, B b, C c, D d); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Consumer4IO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | import java.io.IOException; 22 | 23 | @FunctionalInterface 24 | public interface Consumer4IO { 25 | void accept(A a, B b, C c, D d) throws IOException; 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Consumer5.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface Consumer5 { 23 | void accept(A a, B b, C c, D d, E e); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Consumer6.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface Consumer6 { 23 | void accept(A a, B b, C c, D d, E e, F f); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Consumer8.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface Consumer8 { 23 | void accept(A a, B b, C c, D d, E e, F f, G g, H h); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Function2.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface Function2 { 23 | R apply(A a, B b); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Function3.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface Function3 { 23 | R apply(A a, B b, C c); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Function4.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface Function4 { 23 | R apply(A a, B b, C c, D d); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/NastyFunction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | public interface NastyFunction { 22 | R run(T t); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/NastyFuture.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | public interface NastyFuture { 22 | R run(); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/NastyRunnable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | public interface NastyRunnable { 22 | void run() throws Throwable; 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/NastySupplier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | public interface NastySupplier { 22 | T get() throws Throwable; 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/NoiseInjector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface NoiseInjector { 23 | double[] combine(double src, double value); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/NoiseProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface NoiseProvider { 23 | double noise(double x, double z); 24 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/NoiseProvider3.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | @FunctionalInterface 22 | public interface NoiseProvider3 { 23 | double noise(double x, double y, double z); 24 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Supplier2.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | public interface Supplier2 { 22 | void get(T t, TT tt); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Supplier3.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | public interface Supplier3 { 22 | void get(T t, TT tt, TTT ttt); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/function/Supplier3R.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.function; 20 | 21 | public interface Supplier3R { 22 | TTTT get(T t, TT tt, TTT ttt); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/hunk/HunkFace.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.hunk; 20 | 21 | public enum HunkFace { 22 | TOP, 23 | BOTTOM, 24 | EAST, 25 | WEST, 26 | NORTH, 27 | SOUTH 28 | } 29 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/hunk/HunkFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.hunk; 20 | 21 | @FunctionalInterface 22 | public interface HunkFactory { 23 | Hunk create(int w, int h, int d); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/hunk/bits/Writable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.hunk.bits; 20 | 21 | import java.io.DataInputStream; 22 | import java.io.DataOutputStream; 23 | import java.io.IOException; 24 | 25 | public interface Writable { 26 | T readNodeData(DataInputStream din) throws IOException; 27 | 28 | void writeNodeData(DataOutputStream dos, T t) throws IOException; 29 | } 30 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/interpolation/InterpolationType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.interpolation; 20 | 21 | public enum InterpolationType { 22 | LINEAR, 23 | PARAMETRIC_2, 24 | PARAMETRIC_4, 25 | BEZIER, 26 | NONE 27 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/inventorygui/ElementEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.inventorygui; 20 | 21 | /** 22 | * Element Event. 23 | * 24 | * @author cyberpwn 25 | */ 26 | public enum ElementEvent { 27 | LEFT, 28 | RIGHT, 29 | SHIFT_LEFT, 30 | SHIFT_RIGHT, 31 | DRAG_INTO, 32 | OTHER_DRAG_INTO 33 | } 34 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/inventorygui/UIVoidDecorator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.inventorygui; 20 | 21 | public class UIVoidDecorator implements WindowDecorator { 22 | @Override 23 | public Element onDecorateBackground(Window window, int position, int row) { 24 | return null; 25 | } 26 | } 27 | 28 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/inventorygui/WindowDecorator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.inventorygui; 20 | 21 | public interface WindowDecorator { 22 | Element onDecorateBackground(Window window, int position, int row); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/io/Converter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.io; 20 | 21 | import java.io.File; 22 | 23 | public interface Converter { 24 | String getInExtension(); 25 | 26 | @SuppressWarnings("SameReturnValue") 27 | String getOutExtension(); 28 | 29 | void convert(File in, File out); 30 | } 31 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/io/CustomOutputStream.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.io; 20 | 21 | import java.io.IOException; 22 | import java.io.OutputStream; 23 | import java.util.zip.GZIPOutputStream; 24 | 25 | public class CustomOutputStream extends GZIPOutputStream { 26 | public CustomOutputStream(OutputStream out, int level) throws IOException { 27 | super(out); 28 | def.setLevel(level); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/io/IORunnable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.io; 20 | 21 | import java.io.IOException; 22 | 23 | public interface IORunnable { 24 | void run() throws IOException; 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/io/VoidOutputStream.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.io; 20 | 21 | import java.io.OutputStream; 22 | 23 | public class VoidOutputStream extends OutputStream { 24 | @Override 25 | public void write(int b) { 26 | // poof 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/math/AlignedPoint.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.math; 20 | 21 | public class AlignedPoint { 22 | private double x; 23 | private double y; 24 | private double z; 25 | 26 | public double getX() { 27 | return x; 28 | } 29 | 30 | public double getY() { 31 | return y; 32 | } 33 | 34 | public double getZ() { 35 | return z; 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/math/DOP.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.math; 20 | 21 | import org.bukkit.util.Vector; 22 | 23 | public abstract class DOP { 24 | private final String type; 25 | 26 | public DOP(String type) { 27 | this.type = type; 28 | } 29 | 30 | public abstract Vector op(Vector v); 31 | 32 | public String getType() { 33 | return type; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/math/Spiraled.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.math; 20 | 21 | @FunctionalInterface 22 | public interface Spiraled { 23 | void on(int x, int z); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterBiomeInject.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | import lombok.AllArgsConstructor; 22 | import lombok.Data; 23 | import org.bukkit.block.Biome; 24 | 25 | @Data 26 | @AllArgsConstructor 27 | public class MatterBiomeInject { 28 | private final boolean custom; 29 | private final Integer biomeId; 30 | private final Biome biome; 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | import com.volmit.iris.util.nbt.tag.CompoundTag; 22 | import lombok.AllArgsConstructor; 23 | import lombok.Data; 24 | 25 | @Data 26 | @AllArgsConstructor 27 | public class MatterEntity { 28 | private final double xOff; 29 | private final double yOff; 30 | private final double zOff; 31 | private final CompoundTag entityData; 32 | } 33 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterEntityGroup.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | import com.volmit.iris.util.collection.KList; 22 | import lombok.Data; 23 | 24 | @Data 25 | public class MatterEntityGroup { 26 | private final KList entities = new KList<>(); 27 | } 28 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterFilter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | @FunctionalInterface 22 | public interface MatterFilter { 23 | T update(int x, int y, int z, T t); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterFluidBody.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | import lombok.AllArgsConstructor; 22 | import lombok.Data; 23 | 24 | @Data 25 | @AllArgsConstructor 26 | public class MatterFluidBody { 27 | private final boolean body; 28 | private final String customBiome; 29 | private final boolean lava; 30 | } 31 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterMarker.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | import lombok.AllArgsConstructor; 22 | import lombok.Data; 23 | 24 | @Data 25 | @AllArgsConstructor 26 | public class MatterMarker { 27 | private final String tag; 28 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterReader.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | @FunctionalInterface 22 | public interface MatterReader { 23 | T readMatter(W w, int x, int y, int z); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterStructurePOI.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.matter; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.Map; 6 | 7 | @Data 8 | public class MatterStructurePOI { 9 | 10 | public static final MatterStructurePOI BURIED_TREASURE = new MatterStructurePOI("buried_treasure"); 11 | 12 | private static final MatterStructurePOI UNKNOWN = new MatterStructurePOI("unknown"); 13 | private static final Map VALUES = Map.of( 14 | "buried_treasure", BURIED_TREASURE 15 | ); 16 | 17 | private final String type; 18 | 19 | public static MatterStructurePOI get(String id) { 20 | MatterStructurePOI poi = VALUES.get(id); 21 | return poi != null ? poi : new MatterStructurePOI(id); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterUpdate.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | import lombok.AllArgsConstructor; 22 | import lombok.Data; 23 | 24 | @Data 25 | @AllArgsConstructor 26 | public class MatterUpdate { 27 | private final boolean update; 28 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/MatterWriter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | @FunctionalInterface 22 | public interface MatterWriter { 23 | void writeMatter(W w, T d, int x, int y, int z); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/Sliced.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.RetentionPolicy; 23 | 24 | @Retention(RetentionPolicy.RUNTIME) 25 | public @interface Sliced { 26 | 27 | } 28 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/TileWrapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2024 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.matter; 20 | 21 | import com.volmit.iris.engine.object.TileData; 22 | import lombok.Data; 23 | 24 | @Data 25 | public class TileWrapper { 26 | private final TileData data; 27 | } 28 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/slices/IdentifierMatter.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.matter.slices; 2 | 3 | import com.volmit.iris.core.link.Identifier; 4 | import com.volmit.iris.util.data.palette.Palette; 5 | import com.volmit.iris.util.matter.Sliced; 6 | 7 | import java.io.DataInputStream; 8 | import java.io.DataOutputStream; 9 | import java.io.IOException; 10 | 11 | @Sliced 12 | public class IdentifierMatter extends RawMatter { 13 | 14 | public IdentifierMatter() { 15 | this(1, 1, 1); 16 | } 17 | 18 | public IdentifierMatter(int width, int height, int depth) { 19 | super(width, height, depth, Identifier.class); 20 | } 21 | 22 | @Override 23 | public Palette getGlobalPalette() { 24 | return null; 25 | } 26 | 27 | @Override 28 | public void writeNode(Identifier b, DataOutputStream dos) throws IOException { 29 | dos.writeUTF(b.toString()); 30 | } 31 | 32 | @Override 33 | public Identifier readNode(DataInputStream din) throws IOException { 34 | return Identifier.fromString(din.readUTF()); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/slices/JigsawPieceMatter.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.matter.slices; 2 | 3 | import com.volmit.iris.util.data.palette.Palette; 4 | import com.volmit.iris.util.matter.Sliced; 5 | import com.volmit.iris.util.matter.slices.container.JigsawPieceContainer; 6 | 7 | import java.io.DataInputStream; 8 | import java.io.DataOutputStream; 9 | import java.io.IOException; 10 | 11 | @Sliced 12 | public class JigsawPieceMatter extends RawMatter { 13 | public JigsawPieceMatter() { 14 | this(1,1,1); 15 | } 16 | 17 | public JigsawPieceMatter(int width, int height, int depth) { 18 | super(width, height, depth, JigsawPieceContainer.class); 19 | } 20 | 21 | @Override 22 | public Palette getGlobalPalette() { 23 | return null; 24 | } 25 | 26 | @Override 27 | public void writeNode(JigsawPieceContainer b, DataOutputStream dos) throws IOException { 28 | dos.writeUTF(b.getLoadKey()); 29 | } 30 | 31 | @Override 32 | public JigsawPieceContainer readNode(DataInputStream din) throws IOException { 33 | return new JigsawPieceContainer(din.readUTF()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/slices/JigsawStructuresMatter.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.matter.slices; 2 | 3 | import com.volmit.iris.util.data.palette.Palette; 4 | import com.volmit.iris.util.matter.Sliced; 5 | import com.volmit.iris.util.matter.slices.container.JigsawStructuresContainer; 6 | 7 | import java.io.DataInputStream; 8 | import java.io.DataOutputStream; 9 | import java.io.IOException; 10 | 11 | @Sliced 12 | public class JigsawStructuresMatter extends RawMatter { 13 | public JigsawStructuresMatter() { 14 | this(1, 1, 1); 15 | } 16 | 17 | public JigsawStructuresMatter(int width, int height, int depth) { 18 | super(width, height, depth, JigsawStructuresContainer.class); 19 | } 20 | 21 | @Override 22 | public Palette getGlobalPalette() { 23 | return null; 24 | } 25 | 26 | @Override 27 | public void writeNode(JigsawStructuresContainer b, DataOutputStream dos) throws IOException { 28 | b.write(dos); 29 | } 30 | 31 | @Override 32 | public JigsawStructuresContainer readNode(DataInputStream din) throws IOException { 33 | return new JigsawStructuresContainer(din); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/slices/StructurePOIMatter.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.matter.slices; 2 | 3 | import com.volmit.iris.util.data.palette.Palette; 4 | import com.volmit.iris.util.matter.MatterStructurePOI; 5 | 6 | import java.io.DataInputStream; 7 | import java.io.DataOutputStream; 8 | import java.io.IOException; 9 | 10 | public class StructurePOIMatter extends RawMatter { 11 | 12 | public StructurePOIMatter() { 13 | super(1, 1, 1, MatterStructurePOI.class); 14 | } 15 | 16 | @Override 17 | public Palette getGlobalPalette() { 18 | return null; 19 | } 20 | 21 | @Override 22 | public void writeNode(MatterStructurePOI b, DataOutputStream dos) throws IOException { 23 | dos.writeUTF(b.getType()); 24 | } 25 | 26 | @Override 27 | public MatterStructurePOI readNode(DataInputStream din) throws IOException { 28 | return MatterStructurePOI.get(din.readUTF()); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/slices/container/JigsawPieceContainer.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.matter.slices.container; 2 | 3 | import com.volmit.iris.engine.object.IrisJigsawPiece; 4 | 5 | public class JigsawPieceContainer extends RegistrantContainer { 6 | public JigsawPieceContainer(String loadKey) { 7 | super(IrisJigsawPiece.class, loadKey); 8 | } 9 | 10 | public static JigsawPieceContainer toContainer(IrisJigsawPiece piece) { 11 | return new JigsawPieceContainer(piece.getLoadKey()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/matter/slices/container/RegistrantContainer.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.matter.slices.container; 2 | 3 | import com.volmit.iris.core.loader.IrisData; 4 | import com.volmit.iris.core.loader.IrisRegistrant; 5 | 6 | public abstract class RegistrantContainer { 7 | private final Class type; 8 | private final String loadKey; 9 | 10 | public RegistrantContainer(Class type, String loadKey) { 11 | this.type = type; 12 | this.loadKey = loadKey; 13 | } 14 | 15 | public T load(IrisData data) { 16 | return (T) data.getLoaders().get(type).load(loadKey); 17 | } 18 | 19 | public String getLoadKey() { 20 | return loadKey; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/nbt/mca/ExceptionFunction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.nbt.mca; 20 | 21 | @FunctionalInterface 22 | public interface ExceptionFunction { 23 | 24 | R accept(T t) throws E; 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCABiomeContainer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.nbt.mca.palette; 20 | 21 | public interface MCABiomeContainer { 22 | int[] getData(); 23 | 24 | void setBiome(int x, int y, int z, int id); 25 | 26 | int getBiome(int x, int y, int z); 27 | } 28 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCACountConsumer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.nbt.mca.palette; 20 | 21 | @FunctionalInterface 22 | public interface MCACountConsumer { 23 | void accept(T paramT, int paramInt); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAIdMap.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.nbt.mca.palette; 20 | 21 | public interface MCAIdMap extends Iterable { 22 | int getId(T paramT); 23 | 24 | T byId(int paramInt); 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPalette.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.nbt.mca.palette; 20 | 21 | import com.volmit.iris.util.nbt.tag.ListTag; 22 | 23 | import java.util.function.Predicate; 24 | 25 | public interface MCAPalette { 26 | int idFor(T paramT); 27 | 28 | boolean maybeHas(Predicate paramPredicate); 29 | 30 | T valueFor(int paramInt); 31 | 32 | int getSize(); 33 | 34 | void read(ListTag paramListTag); 35 | } 36 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteAccess.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.nbt.mca.palette; 20 | 21 | import com.volmit.iris.util.nbt.tag.CompoundTag; 22 | 23 | public interface MCAPaletteAccess { 24 | void setBlock(int x, int y, int z, CompoundTag data); 25 | 26 | CompoundTag getBlock(int x, int y, int z); 27 | 28 | void writeToSection(CompoundTag tag); 29 | 30 | void readFromSection(CompoundTag tag); 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/nbt/mca/palette/MCAPaletteResize.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.nbt.mca.palette; 20 | 21 | interface MCAPaletteResize { 22 | int onResize(int paramInt, T paramT); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/network/DownloadMonitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.network; 20 | 21 | @FunctionalInterface 22 | public interface DownloadMonitor { 23 | void onUpdate(DL.DownloadState state, double progress, long elapsed, long estimated, long bps, long iobps, long size, long downloaded, long buffer, double bufferuse); 24 | } -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/noise/CNGFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.noise; 20 | 21 | import com.volmit.iris.util.math.RNG; 22 | 23 | @FunctionalInterface 24 | public interface CNGFactory { 25 | CNG create(RNG seed); 26 | } 27 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/noise/NoiseFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.noise; 20 | 21 | @FunctionalInterface 22 | public interface NoiseFactory { 23 | NoiseGenerator create(long seed); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/noise/OctaveNoise.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.noise; 20 | 21 | public interface OctaveNoise { 22 | void setOctaves(int o); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/parallel/BurstedHunk.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.parallel; 20 | 21 | 22 | import com.volmit.iris.util.hunk.Hunk; 23 | 24 | public interface BurstedHunk extends Hunk { 25 | int getOffsetX(); 26 | 27 | int getOffsetY(); 28 | 29 | int getOffsetZ(); 30 | } 31 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/plugin/CancellableTask.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.plugin; 20 | 21 | public interface CancellableTask { 22 | void cancel(); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/plugin/Command.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.plugin; 20 | 21 | import com.volmit.iris.util.format.C; 22 | 23 | import java.lang.annotation.Retention; 24 | import java.lang.annotation.Target; 25 | 26 | import static java.lang.annotation.ElementType.FIELD; 27 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 28 | 29 | @Retention(RUNTIME) 30 | @Target(FIELD) 31 | public @interface Command { 32 | String value() default ""; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/plugin/Control.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.plugin; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.FIELD; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target(FIELD) 29 | public @interface Control { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/plugin/Instance.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.plugin; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.FIELD; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target(FIELD) 29 | public @interface Instance { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/plugin/IrisService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.plugin; 20 | 21 | import com.volmit.iris.Iris; 22 | import org.bukkit.event.Listener; 23 | 24 | public interface IrisService extends Listener { 25 | void onEnable(); 26 | 27 | void onDisable(); 28 | 29 | default void postShutdown(Runnable r) { 30 | Iris.instance.postShutdown(r); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/plugin/Permission.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.plugin; 20 | 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.FIELD; 25 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 26 | 27 | @Retention(RUNTIME) 28 | @Target(FIELD) 29 | public @interface Permission { 30 | 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/reflect/ShadeFix.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.reflect; 20 | 21 | public class ShadeFix { 22 | public static void fix(Class c) { 23 | c.getCanonicalName(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/reflect/W.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.reflect; 2 | 3 | import lombok.Getter; 4 | 5 | public class W { 6 | @Getter 7 | private static final StackWalker stack = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); 8 | } 9 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/scheduling/Callback.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.scheduling; 20 | 21 | /** 22 | * Callback for async workers 23 | * 24 | * @param the type of object to be returned in the runnable 25 | * @author cyberpwn 26 | */ 27 | @FunctionalInterface 28 | public interface Callback { 29 | /** 30 | * Called when the callback calls back... 31 | * 32 | * @param t the object to be called back 33 | */ 34 | void run(T t); 35 | } 36 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/scheduling/Contained.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.scheduling; 20 | 21 | import java.util.function.Function; 22 | 23 | public class Contained { 24 | private T t; 25 | 26 | public void mod(Function x) { 27 | set(x.apply(t)); 28 | } 29 | 30 | public T get() { 31 | return t; 32 | } 33 | 34 | public void set(T t) { 35 | this.t = t; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/scheduling/Observable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.scheduling; 20 | 21 | public interface Observable { 22 | T get(); 23 | 24 | Observable set(T t); 25 | 26 | boolean has(); 27 | 28 | Observable clearObservers(); 29 | 30 | Observable observe(Observer t); 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/scheduling/Observer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.scheduling; 20 | 21 | @FunctionalInterface 22 | public interface Observer { 23 | void onChanged(T from, T to); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/scheduling/S.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.scheduling; 20 | 21 | public abstract class S implements Runnable { 22 | public S() { 23 | J.s(this); 24 | } 25 | 26 | public S(int delay) { 27 | J.s(this, delay); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/stream/ProceduralLayer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.stream; 20 | 21 | public interface ProceduralLayer { 22 | long getSeed(); 23 | 24 | double getOffsetX(); 25 | 26 | double getOffsetY(); 27 | 28 | double getOffsetZ(); 29 | 30 | double getZoom(); 31 | } 32 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/stream/Significance.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Iris is a World Generator for Minecraft Bukkit Servers 3 | * Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.volmit.iris.util.stream; 20 | 21 | import com.volmit.iris.util.collection.KList; 22 | 23 | public interface Significance { 24 | KList getFactorTypes(); 25 | 26 | double getSignificance(T t); 27 | 28 | T getMostSignificantType(); 29 | } 30 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/uniques/U.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.uniques; 2 | 3 | import java.io.File; 4 | 5 | public class U { 6 | public static void main(String[] a) { 7 | UniqueRenderer r = new UniqueRenderer("helloworld", 2560, 1440); 8 | 9 | r.writeCollectionFrames(new File("collection"), 1, 1024); 10 | 11 | System.exit(0); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/uniques/UBufferedImage.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.uniques; 2 | 3 | import java.awt.*; 4 | import java.awt.image.BufferedImage; 5 | import java.awt.image.ColorModel; 6 | import java.awt.image.WritableRaster; 7 | 8 | public class UBufferedImage implements UImage { 9 | private final BufferedImage buf; 10 | 11 | public UBufferedImage(BufferedImage buf) { 12 | this.buf = buf; 13 | } 14 | 15 | @Override 16 | public int getWidth() { 17 | return buf.getWidth(); 18 | } 19 | 20 | @Override 21 | public int getHeight() { 22 | return buf.getHeight(); 23 | } 24 | 25 | @Override 26 | public UImage copy() { 27 | ColorModel cm = buf.getColorModel(); 28 | boolean isAlphaPremultiplied = cm.isAlphaPremultiplied(); 29 | WritableRaster raster = buf.copyData(null); 30 | return new UBufferedImage(new BufferedImage(cm, raster, isAlphaPremultiplied, null)); 31 | } 32 | 33 | @Override 34 | public Color get(int x, int y) { 35 | return new Color(buf.getRGB(x, y)); 36 | } 37 | 38 | @Override 39 | public void set(int x, int y, Color color) { 40 | try { 41 | buf.setRGB(x, y, color.getRGB()); 42 | } catch (Throwable e) { 43 | 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/uniques/UImage.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.uniques; 2 | 3 | import java.awt.*; 4 | 5 | public interface UImage { 6 | int getWidth(); 7 | 8 | int getHeight(); 9 | 10 | default boolean isInBounds(int x, int y) { 11 | return x >= 0 && x < getWidth() && y >= 0 && y < getHeight(); 12 | } 13 | 14 | UImage copy(); 15 | 16 | Color get(int x, int y); 17 | 18 | void set(int x, int y, Color color); 19 | } 20 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/uniques/features/UFNOOP.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.uniques.features; 2 | 3 | import com.volmit.iris.util.math.RNG; 4 | import com.volmit.iris.util.uniques.UFeature; 5 | import com.volmit.iris.util.uniques.UFeatureMeta; 6 | import com.volmit.iris.util.uniques.UImage; 7 | 8 | import java.util.function.Consumer; 9 | 10 | public class UFNOOP implements UFeature { 11 | @Override 12 | public void render(UImage image, RNG rng, double t, Consumer progressor, UFeatureMeta meta) { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/main/java/com/volmit/iris/util/uniques/features/UFWarpedBackground.java: -------------------------------------------------------------------------------- 1 | package com.volmit.iris.util.uniques.features; 2 | 3 | import com.volmit.iris.util.math.RNG; 4 | import com.volmit.iris.util.noise.CNG; 5 | import com.volmit.iris.util.uniques.UFeature; 6 | import com.volmit.iris.util.uniques.UFeatureMeta; 7 | import com.volmit.iris.util.uniques.UImage; 8 | 9 | import java.util.function.Consumer; 10 | 11 | public class UFWarpedBackground implements UFeature { 12 | @Override 13 | public void render(UImage image, RNG rng, double t, Consumer progressor, UFeatureMeta meta) { 14 | CNG hue = generator("color_hue", rng, rng.d(0.001, rng.d(2, 5)), rng.i(0, 3), rng.i(0, 3), 31007, meta); 15 | CNG sat = generator("color_sat", rng, rng.d(0.001, rng.d(2, 5)), rng.i(0, 2), rng.i(0, 2), 33004, meta); 16 | CNG bri = generator("color_bri", rng, rng.d(0.001, rng.d(2, 5)), rng.i(0, 1), rng.i(0, 1), 32005, meta).patch(0.145); 17 | double tcf = rng.d(0.15, 0.55); 18 | 19 | for (int i = 0; i < image.getWidth(); i++) { 20 | for (int j = 0; j < image.getHeight(); j++) { 21 | image.set(i, j, color(hue, sat, bri, i, j, tcf * t)); 22 | } 23 | 24 | progressor.accept(i / (double) image.getWidth()); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /core/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: ${name} 2 | version: ${version} 3 | main: ${main} 4 | load: STARTUP 5 | authors: [ cyberpwn, NextdoorPsycho, Vatuu ] 6 | website: volmit.com 7 | description: More than a Dimension! 8 | libraries: 9 | - com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 10 | - com.github.ben-manes.caffeine:caffeine:3.0.5 11 | - org.apache.commons:commons-lang3:3.12.0 12 | - commons-io:commons-io:2.13.0 13 | - io.timeandspace:smoothie-map:2.0.2 14 | - com.google.guava:guava:31.0.1-jre 15 | - com.google.code.gson:gson:2.10.1 16 | - org.zeroturnaround:zt-zip:1.14 17 | - it.unimi.dsi:fastutil:8.5.6 18 | - org.ow2.asm:asm:9.2 19 | - rhino:js:1.7R2 20 | - bsf:bsf:2.4.0 21 | - org.lz4:lz4-java:1.8.0 22 | - com.github.oshi:oshi-core:6.6.5 23 | commands: 24 | iris: 25 | aliases: [ ir, irs ] 26 | api-version: '${apiversion}' 27 | hotload-dependencies: false -------------------------------------------------------------------------------- /gource.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd gource 3 | gource -f -a 1 -s 0.01 -t 100000 --colour-images --max-file-lag 35 --title MyGuide --user-scale 1.67 --max-user-speed 725 --filename-time 11 -title Chimera --user-friction 2.5 --padding 1.2 --user-scale 1.25 --filename-time 2 --bloom-intensity 0.1 --bloom-multiplier 3 --hide filenames,dirnames -------------------------------------------------------------------------------- /gource/SDL2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/SDL2.dll -------------------------------------------------------------------------------- /gource/SDL2_image.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/SDL2_image.dll -------------------------------------------------------------------------------- /gource/THANKS.txt: -------------------------------------------------------------------------------- 1 | Cheers to everyone at Catalyst IT for their support and encouragement. 2 | -------------------------------------------------------------------------------- /gource/cmd/gource: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | GOURCE_CMD_DIR=`dirname "$0"` 3 | "$GOURCE_CMD_DIR/../gource.exe" "$@" 4 | -------------------------------------------------------------------------------- /gource/cmd/gource.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | "%~dp0\..\gource.exe" %* 3 | -------------------------------------------------------------------------------- /gource/data/beam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/data/beam.png -------------------------------------------------------------------------------- /gource/data/bloom.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/data/bloom.tga -------------------------------------------------------------------------------- /gource/data/bloom_alpha.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/data/bloom_alpha.tga -------------------------------------------------------------------------------- /gource/data/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/data/file.png -------------------------------------------------------------------------------- /gource/data/fonts/FreeSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/data/fonts/FreeSans.ttf -------------------------------------------------------------------------------- /gource/data/gource.style: -------------------------------------------------------------------------------- 1 | changeset = '{file_adds}{file_copies}{file_mods}{file_dels}' 2 | file_mod = "{date|hgdate}|{author|person}|M|{file_mod}\n" 3 | file_add = "{date|hgdate}|{author|person}|A|{file_add}\n" 4 | file_del = "{date|hgdate}|{author|person}|D|{file_del}\n" 5 | file_copy = "{date|hgdate}|{author|person}|A|{name}\n" 6 | -------------------------------------------------------------------------------- /gource/data/shaders/bloom.frag: -------------------------------------------------------------------------------- 1 | 2 | varying vec3 pos; 3 | 4 | void main() 5 | { 6 | float r = fract(sin(dot(pos.xy ,vec2(11.3713,67.3219))) * 2351.3718); 7 | 8 | float offset = (0.5 - r) * gl_TexCoord[0].x * 0.045; 9 | 10 | float intensity = min(1.0, cos((length(pos*2.0)+offset)/gl_TexCoord[0].x)); 11 | float gradient = intensity * smoothstep(0.0, 2.0, intensity); 12 | 13 | gradient *= smoothstep(1.0,0.67+r*0.33, 1.0-intensity); 14 | 15 | gl_FragColor = gl_Color * gradient; 16 | } 17 | -------------------------------------------------------------------------------- /gource/data/shaders/bloom.vert: -------------------------------------------------------------------------------- 1 | 2 | varying vec3 pos; 3 | 4 | void main() 5 | { 6 | pos = gl_Vertex.xyz - gl_MultiTexCoord0.yzw; 7 | gl_TexCoord[0] = gl_MultiTexCoord0; 8 | gl_FrontColor = gl_Color; 9 | gl_Position = ftransform(); 10 | } 11 | -------------------------------------------------------------------------------- /gource/data/shaders/shadow.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D tex; 2 | uniform float shadow_strength; 3 | 4 | void main(void) 5 | { 6 | vec4 colour = texture2D(tex,gl_TexCoord[0].st); 7 | 8 | gl_FragColor = vec4(0.0, 0.0, 0.0, gl_Color.w * colour.w * shadow_strength); 9 | } 10 | -------------------------------------------------------------------------------- /gource/data/shaders/shadow.vert: -------------------------------------------------------------------------------- 1 | void main(void) 2 | { 3 | gl_TexCoord[0] = gl_MultiTexCoord0; 4 | gl_FrontColor = gl_Color; 5 | gl_Position = ftransform(); 6 | } 7 | -------------------------------------------------------------------------------- /gource/data/shaders/text.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D tex; 2 | uniform float shadow_strength; 3 | uniform float texel_size; 4 | 5 | void main(void) 6 | { 7 | float colour_alpha = texture2D(tex,gl_TexCoord[0].xy).w; 8 | float shadow_alpha = texture2D(tex,gl_TexCoord[0].xy - vec2(texel_size)).w * shadow_strength; 9 | 10 | float combined_alpha = 1.0 - (1.0-shadow_alpha)*(1.0-colour_alpha); 11 | 12 | if(combined_alpha > 0.0) colour_alpha /= combined_alpha; 13 | 14 | gl_FragColor = gl_Color * vec4(vec3(colour_alpha), combined_alpha); 15 | } 16 | -------------------------------------------------------------------------------- /gource/data/shaders/text.vert: -------------------------------------------------------------------------------- 1 | void main(void) 2 | { 3 | gl_TexCoord[0] = gl_MultiTexCoord0; 4 | gl_FrontColor = gl_Color; 5 | gl_Position = ftransform(); 6 | } 7 | -------------------------------------------------------------------------------- /gource/data/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/data/user.png -------------------------------------------------------------------------------- /gource/glew32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/glew32.dll -------------------------------------------------------------------------------- /gource/gource.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/gource.exe -------------------------------------------------------------------------------- /gource/libboost_filesystem-mt.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libboost_filesystem-mt.dll -------------------------------------------------------------------------------- /gource/libbz2-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libbz2-1.dll -------------------------------------------------------------------------------- /gource/libfreetype-6.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libfreetype-6.dll -------------------------------------------------------------------------------- /gource/libgcc_s_seh-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libgcc_s_seh-1.dll -------------------------------------------------------------------------------- /gource/libglib-2.0-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libglib-2.0-0.dll -------------------------------------------------------------------------------- /gource/libgraphite2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libgraphite2.dll -------------------------------------------------------------------------------- /gource/libharfbuzz-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libharfbuzz-0.dll -------------------------------------------------------------------------------- /gource/libiconv-2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libiconv-2.dll -------------------------------------------------------------------------------- /gource/libintl-8.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libintl-8.dll -------------------------------------------------------------------------------- /gource/libjpeg-8.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libjpeg-8.dll -------------------------------------------------------------------------------- /gource/liblzma-5.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/liblzma-5.dll -------------------------------------------------------------------------------- /gource/libpcre-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libpcre-1.dll -------------------------------------------------------------------------------- /gource/libpng16-16.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libpng16-16.dll -------------------------------------------------------------------------------- /gource/libstdc++-6.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libstdc++-6.dll -------------------------------------------------------------------------------- /gource/libtiff-5.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libtiff-5.dll -------------------------------------------------------------------------------- /gource/libwebp-7.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libwebp-7.dll -------------------------------------------------------------------------------- /gource/libwinpthread-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libwinpthread-1.dll -------------------------------------------------------------------------------- /gource/libzstd.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/libzstd.dll -------------------------------------------------------------------------------- /gource/zlib1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gource/zlib1.dll -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Iris is a World Generator for Minecraft Bukkit Servers 3 | # Copyright (c) 2022 Arcane Arts (Volmit Software) 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | # 18 | org.gradle.daemon=true 19 | org.gradle.parallel=true 20 | org.gradle.jvmargs=-Xmx3072m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 21 | org.gradle.caching=true 22 | org.gradle.configureondemand=false 23 | 24 | nmsTools.useBuildTools=false 25 | nmsTools.repo-url=https://repo.codemc.org/repository/nms/ 26 | nmsTools.specialSourceVersion=1.11.4 -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/icon.png -------------------------------------------------------------------------------- /listing.json: -------------------------------------------------------------------------------- 1 | [ 2 | "overworld IrisDimensions/overworld", 3 | "vanilla IrisDimensions/vanilla", 4 | "flat IrisDimensions/flat", 5 | "redstone IrisDimensions/redstone", 6 | "mars IrisDimensions/mars", 7 | "example IrisDimensions/example", 8 | "newhorizons IrisDimensions/newhorizons", 9 | "theend IrisDimensions/theend" 10 | ] 11 | -------------------------------------------------------------------------------- /lombok.config: -------------------------------------------------------------------------------- 1 | # This file is generated by the 'io.freefair.lombok' Gradle plugin 2 | config.stopBubbling = true 3 | -------------------------------------------------------------------------------- /out/production/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: ${name} 2 | version: ${version} 3 | main: ${main} 4 | load: STARTUP 5 | authors: [ cyberpwn, NextdoorPsycho ] 6 | website: volmit.com 7 | description: More than a Dimension! 8 | libraries: 9 | - org.zeroturnaround:zt-zip:1.14 10 | - com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 11 | - org.ow2.asm:asm:9.2 12 | - com.google.code.gson:gson:2.8.7 13 | - it.unimi.dsi:fastutil:8.5.4 14 | - com.google.guava:guava:30.1.1-jre 15 | - bsf:bsf:2.4.0 16 | - rhino:js:1.7R2 17 | commands: 18 | iris: 19 | aliases: [ ir, irs ] 20 | api-version: ${apiversion} 21 | hotload-dependencies: false -------------------------------------------------------------------------------- /packignore.ignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.code-workspace 3 | *.txt -------------------------------------------------------------------------------- /storepage/Incredible-Tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/Incredible-Tools.png -------------------------------------------------------------------------------- /storepage/Performance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/Performance.png -------------------------------------------------------------------------------- /storepage/Real-Custom-Biomes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/Real-Custom-Biomes.png -------------------------------------------------------------------------------- /storepage/The-Dimension-Engine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/The-Dimension-Engine.png -------------------------------------------------------------------------------- /storepage/The-Overworld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/The-Overworld.png -------------------------------------------------------------------------------- /storepage/gg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/gg.png -------------------------------------------------------------------------------- /storepage/two/Footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/Footer.png -------------------------------------------------------------------------------- /storepage/two/Header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/Header.png -------------------------------------------------------------------------------- /storepage/two/Iris.xd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/Iris.xd -------------------------------------------------------------------------------- /storepage/two/NOTE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/NOTE.png -------------------------------------------------------------------------------- /storepage/two/NOTERED.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/NOTERED.png -------------------------------------------------------------------------------- /storepage/two/SUPERTHANKS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/SUPERTHANKS.png -------------------------------------------------------------------------------- /storepage/two/WhyChooseIris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/WhyChooseIris.png -------------------------------------------------------------------------------- /storepage/two/allnewfeatures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/allnewfeatures.png -------------------------------------------------------------------------------- /storepage/two/c1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/c1.png -------------------------------------------------------------------------------- /storepage/two/c2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/c2.png -------------------------------------------------------------------------------- /storepage/two/c3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/c3.png -------------------------------------------------------------------------------- /storepage/two/c4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/c4.png -------------------------------------------------------------------------------- /storepage/two/c5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/c5.png -------------------------------------------------------------------------------- /storepage/two/dlshare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/dlshare.png -------------------------------------------------------------------------------- /storepage/two/icard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/icard.png -------------------------------------------------------------------------------- /storepage/two/speed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/storepage/two/speed.png -------------------------------------------------------------------------------- /wad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VolmitSoftware/Iris/635ee024599952a6fa15615977c4e625e761e2cb/wad.png --------------------------------------------------------------------------------