├── .editorconfig
├── .gitattributes
├── .github
└── workflows
│ └── gradle.yml
├── .gitignore
├── .travis.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── ChangeLog.txt
├── LICENSE
├── README.md
├── build.gradle
├── chunky
├── .gitignore
├── build.gradle
├── res
│ ├── chunky-cfg.svg
│ ├── chunky-icon.svg
│ └── chunky.svg
└── src
│ ├── java
│ ├── .gitattributes
│ └── se
│ │ └── llbit
│ │ ├── chunky
│ │ ├── Plugin.java
│ │ ├── block
│ │ │ ├── AbstractModelBlock.java
│ │ │ ├── Block.java
│ │ │ ├── BlockFace.java
│ │ │ ├── BlockProvider.java
│ │ │ ├── BlockSpec.java
│ │ │ ├── FinalizationState.java
│ │ │ ├── FixedTopBottomRotatableTexturedBlock.java
│ │ │ ├── MinecraftBlock.java
│ │ │ ├── MinecraftBlockProvider.java
│ │ │ ├── MinecraftBlockTranslucent.java
│ │ │ ├── ModelBlock.java
│ │ │ ├── OctreeFinalizationState.java
│ │ │ ├── SolidNonOpaqueBlock.java
│ │ │ ├── TexturedBlock.java
│ │ │ ├── TopBottomOrientedTexturedBlock.java
│ │ │ ├── UntintedLeaves.java
│ │ │ ├── legacy
│ │ │ │ ├── LegacyBlockUtils.java
│ │ │ │ ├── LegacyBlocks.java
│ │ │ │ ├── LegacyBlocksFinalizer.java
│ │ │ │ ├── LegacyMinecraftBlockProvider.java
│ │ │ │ ├── UnfinalizedLegacyBlock.java
│ │ │ │ └── blocks
│ │ │ │ │ ├── LegacyBanner.java
│ │ │ │ │ ├── LegacyBed.java
│ │ │ │ │ ├── LegacyChest.java
│ │ │ │ │ ├── LegacyChorusPlant.java
│ │ │ │ │ ├── LegacyCobblestoneWall.java
│ │ │ │ │ ├── LegacyDoorPart.java
│ │ │ │ │ ├── LegacyFence.java
│ │ │ │ │ ├── LegacyFenceGate.java
│ │ │ │ │ ├── LegacyFire.java
│ │ │ │ │ ├── LegacyFlowerPot.java
│ │ │ │ │ ├── LegacyGlassPane.java
│ │ │ │ │ ├── LegacyIronBars.java
│ │ │ │ │ ├── LegacyLargeFlower.java
│ │ │ │ │ ├── LegacyMelonStem.java
│ │ │ │ │ ├── LegacyNetherPortal.java
│ │ │ │ │ ├── LegacyPumpkinStem.java
│ │ │ │ │ ├── LegacyRedstoneWire.java
│ │ │ │ │ ├── LegacySkull.java
│ │ │ │ │ ├── LegacySnowCoverableBlock.java
│ │ │ │ │ ├── LegacyStairs.java
│ │ │ │ │ ├── LegacyTripwire.java
│ │ │ │ │ ├── LegacyVine.java
│ │ │ │ │ └── LegacyWallBanner.java
│ │ │ └── minecraft
│ │ │ │ ├── Air.java
│ │ │ │ ├── AmethystCluster.java
│ │ │ │ ├── Anvil.java
│ │ │ │ ├── AttachedStem.java
│ │ │ │ ├── Azalea.java
│ │ │ │ ├── Bamboo.java
│ │ │ │ ├── Banner.java
│ │ │ │ ├── Barrel.java
│ │ │ │ ├── Beacon.java
│ │ │ │ ├── Bed.java
│ │ │ │ ├── Beetroots.java
│ │ │ │ ├── Bell.java
│ │ │ │ ├── BigDripleaf.java
│ │ │ │ ├── BigDripleafStem.java
│ │ │ │ ├── BlastFurnace.java
│ │ │ │ ├── BrewingStand.java
│ │ │ │ ├── Button.java
│ │ │ │ ├── Cactus.java
│ │ │ │ ├── Cake.java
│ │ │ │ ├── CakeWithCandle.java
│ │ │ │ ├── CalibratedSculkSensor.java
│ │ │ │ ├── Campfire.java
│ │ │ │ ├── Candle.java
│ │ │ │ ├── Carpet.java
│ │ │ │ ├── Carrots.java
│ │ │ │ ├── Cauldron.java
│ │ │ │ ├── CaveVines.java
│ │ │ │ ├── Chain.java
│ │ │ │ ├── ChainCommandBlock.java
│ │ │ │ ├── Chest.java
│ │ │ │ ├── ChiseledBookshelf.java
│ │ │ │ ├── ChorusFlower.java
│ │ │ │ ├── ChorusPlant.java
│ │ │ │ ├── Cocoa.java
│ │ │ │ ├── CommandBlock.java
│ │ │ │ ├── Comparator.java
│ │ │ │ ├── Composter.java
│ │ │ │ ├── Conduit.java
│ │ │ │ ├── CopperBulb.java
│ │ │ │ ├── CoralFan.java
│ │ │ │ ├── Crafter.java
│ │ │ │ ├── CreakingHeart.java
│ │ │ │ ├── DaylightDetector.java
│ │ │ │ ├── DecoratedPot.java
│ │ │ │ ├── Dispenser.java
│ │ │ │ ├── Door.java
│ │ │ │ ├── DragonEgg.java
│ │ │ │ ├── Dropper.java
│ │ │ │ ├── EnchantingTable.java
│ │ │ │ ├── EndPortal.java
│ │ │ │ ├── EndPortalFrame.java
│ │ │ │ ├── EndRod.java
│ │ │ │ ├── EnderChest.java
│ │ │ │ ├── Farmland.java
│ │ │ │ ├── Fence.java
│ │ │ │ ├── FenceGate.java
│ │ │ │ ├── Fern.java
│ │ │ │ ├── Fire.java
│ │ │ │ ├── FlowerPot.java
│ │ │ │ ├── Frogspawn.java
│ │ │ │ ├── FrostedIce.java
│ │ │ │ ├── Furnace.java
│ │ │ │ ├── Glass.java
│ │ │ │ ├── GlassPane.java
│ │ │ │ ├── GlazedTerracotta.java
│ │ │ │ ├── GlowLichen.java
│ │ │ │ ├── Grass.java
│ │ │ │ ├── GrassBlock.java
│ │ │ │ ├── GrassPath.java
│ │ │ │ ├── Grindstone.java
│ │ │ │ ├── HangingSign.java
│ │ │ │ ├── Head.java
│ │ │ │ ├── HeavyCore.java
│ │ │ │ ├── Honey.java
│ │ │ │ ├── Hopper.java
│ │ │ │ ├── IronBars.java
│ │ │ │ ├── JigsawBlock.java
│ │ │ │ ├── Ladder.java
│ │ │ │ ├── Lantern.java
│ │ │ │ ├── LargeFern.java
│ │ │ │ ├── Lava.java
│ │ │ │ ├── LavaCauldron.java
│ │ │ │ ├── Leaves.java
│ │ │ │ ├── Lectern.java
│ │ │ │ ├── Lever.java
│ │ │ │ ├── LightBlock.java
│ │ │ │ ├── LightningRod.java
│ │ │ │ ├── LilyPad.java
│ │ │ │ ├── Log.java
│ │ │ │ ├── MangrovePropagule.java
│ │ │ │ ├── MangroveRoots.java
│ │ │ │ ├── NetherPortal.java
│ │ │ │ ├── NetherWart.java
│ │ │ │ ├── Observer.java
│ │ │ │ ├── OpenEyeblossom.java
│ │ │ │ ├── OrientableTrapdoor.java
│ │ │ │ ├── PaleMossCarpet.java
│ │ │ │ ├── PinkPetals.java
│ │ │ │ ├── Piston.java
│ │ │ │ ├── PistonHead.java
│ │ │ │ ├── PitcherCrop.java
│ │ │ │ ├── PitcherPlant.java
│ │ │ │ ├── PointedDripstone.java
│ │ │ │ ├── Potatoes.java
│ │ │ │ ├── PowderSnowCauldron.java
│ │ │ │ ├── PressurePlate.java
│ │ │ │ ├── Rail.java
│ │ │ │ ├── RedstoneLamp.java
│ │ │ │ ├── RedstoneTorch.java
│ │ │ │ ├── RedstoneWallTorch.java
│ │ │ │ ├── RedstoneWire.java
│ │ │ │ ├── Repeater.java
│ │ │ │ ├── RepeatingCommandBlock.java
│ │ │ │ ├── ResinClump.java
│ │ │ │ ├── RespawnAnchor.java
│ │ │ │ ├── Scaffolding.java
│ │ │ │ ├── SculkCatalyst.java
│ │ │ │ ├── SculkSensor.java
│ │ │ │ ├── SculkShrieker.java
│ │ │ │ ├── SculkVein.java
│ │ │ │ ├── SeaPickle.java
│ │ │ │ ├── ShulkerBox.java
│ │ │ │ ├── Sign.java
│ │ │ │ ├── Slab.java
│ │ │ │ ├── Slime.java
│ │ │ │ ├── SmallDripleaf.java
│ │ │ │ ├── Smoker.java
│ │ │ │ ├── SnifferEgg.java
│ │ │ │ ├── Snow.java
│ │ │ │ ├── SoulFire.java
│ │ │ │ ├── SporeBlossom.java
│ │ │ │ ├── SpriteBlock.java
│ │ │ │ ├── Stairs.java
│ │ │ │ ├── Stem.java
│ │ │ │ ├── Stonecutter.java
│ │ │ │ ├── SugarCane.java
│ │ │ │ ├── Sunflower.java
│ │ │ │ ├── SweetBerryBush.java
│ │ │ │ ├── TallGrass.java
│ │ │ │ ├── TintedGlass.java
│ │ │ │ ├── Torch.java
│ │ │ │ ├── TorchflowerCrop.java
│ │ │ │ ├── Trapdoor.java
│ │ │ │ ├── TrialSpawner.java
│ │ │ │ ├── Tripwire.java
│ │ │ │ ├── TripwireHook.java
│ │ │ │ ├── TurtleEgg.java
│ │ │ │ ├── UnknownBlock.java
│ │ │ │ ├── Vault.java
│ │ │ │ ├── Vine.java
│ │ │ │ ├── Wall.java
│ │ │ │ ├── WallBanner.java
│ │ │ │ ├── WallCoralFan.java
│ │ │ │ ├── WallHangingSign.java
│ │ │ │ ├── WallHead.java
│ │ │ │ ├── WallSign.java
│ │ │ │ ├── WallTorch.java
│ │ │ │ ├── Water.java
│ │ │ │ └── Wheat.java
│ │ ├── chunk
│ │ │ ├── BlockPalette.java
│ │ │ ├── ChunkData.java
│ │ │ ├── ChunkLoadingException.java
│ │ │ ├── EmptyChunkData.java
│ │ │ ├── GenericChunkData.java
│ │ │ ├── SimpleChunkData.java
│ │ │ ├── TagBlockBuilder.java
│ │ │ └── biome
│ │ │ │ ├── BiomeData.java
│ │ │ │ ├── BiomeData2d.java
│ │ │ │ ├── BiomeDataFactory.java
│ │ │ │ ├── GenericQuartBiomeData3d.java
│ │ │ │ ├── QuartBiomeData3d.java
│ │ │ │ └── UnknownBiomeData.java
│ │ ├── entity
│ │ │ ├── ArmorStand.java
│ │ │ ├── Armored.java
│ │ │ ├── BannerDesign.java
│ │ │ ├── BeaconBeam.java
│ │ │ ├── Book.java
│ │ │ ├── CalibratedSculkSensorAmethyst.java
│ │ │ ├── Campfire.java
│ │ │ ├── CoralFanEntity.java
│ │ │ ├── Entity.java
│ │ │ ├── FlameParticles.java
│ │ │ ├── Geared.java
│ │ │ ├── HangingSignEntity.java
│ │ │ ├── HeadEntity.java
│ │ │ ├── Lectern.java
│ │ │ ├── LilyPadEntity.java
│ │ │ ├── PaintingEntity.java
│ │ │ ├── PlayerEntity.java
│ │ │ ├── Poseable.java
│ │ │ ├── SignEntity.java
│ │ │ ├── SkullEntity.java
│ │ │ ├── SporeBlossom.java
│ │ │ ├── StandingBanner.java
│ │ │ ├── UVMapHelper.java
│ │ │ ├── WallBanner.java
│ │ │ ├── WallCoralFanEntity.java
│ │ │ ├── WallHangingSignEntity.java
│ │ │ └── WallSignEntity.java
│ │ ├── main
│ │ │ ├── Chunky.java
│ │ │ ├── ChunkyOptions.java
│ │ │ ├── CommandLineOptions.java
│ │ │ ├── HeadlessErrorTrackingLogger.java
│ │ │ ├── Version.java
│ │ │ └── ZipExportJob.java
│ │ ├── map
│ │ │ ├── AbstractLayer.java
│ │ │ ├── BiomeLayer.java
│ │ │ ├── BitmapLayer.java
│ │ │ ├── IconLayer.java
│ │ │ ├── MapBuffer.java
│ │ │ ├── MapTile.java
│ │ │ ├── MapView.java
│ │ │ ├── SurfaceLayer.java
│ │ │ └── WorldMapLoader.java
│ │ ├── model
│ │ │ ├── AABBModel.java
│ │ │ ├── AnimatedQuadModel.java
│ │ │ ├── BlockModel.java
│ │ │ ├── DirectionalBlockModel.java
│ │ │ ├── FixedTopBottomRotatableTexturedBlockModel.java
│ │ │ ├── GrassTintedSpriteModel.java
│ │ │ ├── Model.java
│ │ │ ├── QuadModel.java
│ │ │ ├── RotatableBlockModel.java
│ │ │ ├── TexturedBlockModel.java
│ │ │ ├── Tint.java
│ │ │ ├── TopBottomOrientedTexturedBlockModel.java
│ │ │ └── minecraft
│ │ │ │ ├── AnvilModel.java
│ │ │ │ ├── AttachedStemModel.java
│ │ │ │ ├── AzaleaModel.java
│ │ │ │ ├── BambooModel.java
│ │ │ │ ├── BarrelModel.java
│ │ │ │ ├── BeaconModel.java
│ │ │ │ ├── BedModel.java
│ │ │ │ ├── BellModel.java
│ │ │ │ ├── BigDripleafModel.java
│ │ │ │ ├── BigDripleafStemModel.java
│ │ │ │ ├── BrewingStandModel.java
│ │ │ │ ├── ButtonModel.java
│ │ │ │ ├── CactusModel.java
│ │ │ │ ├── CakeModel.java
│ │ │ │ ├── CakeWithCandleModel.java
│ │ │ │ ├── CalibratedSculkSensorModel.java
│ │ │ │ ├── CandleModel.java
│ │ │ │ ├── CarpetModel.java
│ │ │ │ ├── CauldronModel.java
│ │ │ │ ├── ChainModel.java
│ │ │ │ ├── ChestModel.java
│ │ │ │ ├── ChorusFlowerModel.java
│ │ │ │ ├── ChorusPlantModel.java
│ │ │ │ ├── CocoaPlantModel.java
│ │ │ │ ├── CocoaPlantModel119.java
│ │ │ │ ├── ComparatorModel.java
│ │ │ │ ├── ComparatorModel1212.java
│ │ │ │ ├── ComposterModel.java
│ │ │ │ ├── ConduitModel.java
│ │ │ │ ├── CropsModel.java
│ │ │ │ ├── DaylightSensorModel.java
│ │ │ │ ├── DecoratedPotModel.java
│ │ │ │ ├── DispenserModel.java
│ │ │ │ ├── DoorModel.java
│ │ │ │ ├── DragonEggModel.java
│ │ │ │ ├── EnchantmentTableModel.java
│ │ │ │ ├── EndPortalFrameModel.java
│ │ │ │ ├── EndPortalModel.java
│ │ │ │ ├── EndRodModel.java
│ │ │ │ ├── FenceGateModel.java
│ │ │ │ ├── FenceModel.java
│ │ │ │ ├── FireModel.java
│ │ │ │ ├── FlowerPotModel.java
│ │ │ │ ├── Flowerbed.java
│ │ │ │ ├── FrogspawnModel.java
│ │ │ │ ├── GlassPaneModel.java
│ │ │ │ ├── GlowLichenModel.java
│ │ │ │ ├── GrassBlockModel.java
│ │ │ │ ├── GrassPathModel.java
│ │ │ │ ├── GrindstoneModel.java
│ │ │ │ ├── HeavyCoreModel.java
│ │ │ │ ├── HoneyBlockModel.java
│ │ │ │ ├── HopperModel.java
│ │ │ │ ├── IronBarsModel.java
│ │ │ │ ├── JigsawModel.java
│ │ │ │ ├── LadderModel.java
│ │ │ │ ├── LanternModel.java
│ │ │ │ ├── LeafModel.java
│ │ │ │ ├── LeverModel.java
│ │ │ │ ├── LightBlockModel.java
│ │ │ │ ├── LightningRodModel.java
│ │ │ │ ├── LogModel.java
│ │ │ │ ├── MangrovePropaguleModel.java
│ │ │ │ ├── MangroveRootsModel.java
│ │ │ │ ├── NetherPortalModel.java
│ │ │ │ ├── ObserverModel.java
│ │ │ │ ├── OpenEyeblossomModel.java
│ │ │ │ ├── OrientableTrapdoorModel.java
│ │ │ │ ├── PaleMossCarpetModel.java
│ │ │ │ ├── PistonExtensionModel.java
│ │ │ │ ├── PistonModel.java
│ │ │ │ ├── PitcherCropBottomModel.java
│ │ │ │ ├── PitcherCropTopModel.java
│ │ │ │ ├── PitcherPlantBottomModel.java
│ │ │ │ ├── PitcherPlantTopModel.java
│ │ │ │ ├── PressurePlateModel.java
│ │ │ │ ├── RailModel.java
│ │ │ │ ├── RedstoneRepeaterModel.java
│ │ │ │ ├── RedstoneRepeaterModel1212.java
│ │ │ │ ├── RedstoneTorchModel.java
│ │ │ │ ├── RedstoneWallTorchModel.java
│ │ │ │ ├── RedstoneWireModel.java
│ │ │ │ ├── ResinClumpModel.java
│ │ │ │ ├── ScaffoldingModel.java
│ │ │ │ ├── SculkSensorModel.java
│ │ │ │ ├── SculkShriekerModel.java
│ │ │ │ ├── SculkVeinModel.java
│ │ │ │ ├── SeaPickleModel.java
│ │ │ │ ├── SlabModel.java
│ │ │ │ ├── SlimeBlockModel.java
│ │ │ │ ├── SmallDripleafModel.java
│ │ │ │ ├── SnifferEggModel.java
│ │ │ │ ├── SnowModel.java
│ │ │ │ ├── SporeBlossomModel.java
│ │ │ │ ├── SpriteModel.java
│ │ │ │ ├── StairModel.java
│ │ │ │ ├── StemModel.java
│ │ │ │ ├── StonecutterModel.java
│ │ │ │ ├── SunFlowerModel.java
│ │ │ │ ├── TerracottaModel.java
│ │ │ │ ├── TorchModel.java
│ │ │ │ ├── TrapdoorModel.java
│ │ │ │ ├── TrialSpawnerModel.java
│ │ │ │ ├── TripwireHookModel.java
│ │ │ │ ├── TripwireModel.java
│ │ │ │ ├── TurtleEggModel.java
│ │ │ │ ├── VaultModel.java
│ │ │ │ ├── VineModel.java
│ │ │ │ ├── WallModel.java
│ │ │ │ └── WaterModel.java
│ │ ├── plugin
│ │ │ ├── ContextMenuTransformer.java
│ │ │ ├── PluginApi.java
│ │ │ ├── TabTransformer.java
│ │ │ ├── loader
│ │ │ │ ├── JarPluginLoader.java
│ │ │ │ ├── PluginLoader.java
│ │ │ │ ├── PluginManager.java
│ │ │ │ └── ResolvedPlugin.java
│ │ │ └── manifest
│ │ │ │ ├── PluginDependency.java
│ │ │ │ └── PluginManifest.java
│ │ ├── renderer
│ │ │ ├── ApertureShape.java
│ │ │ ├── CameraViewListener.java
│ │ │ ├── ChunkViewListener.java
│ │ │ ├── ConsoleProgressListener.java
│ │ │ ├── DefaultRenderManager.java
│ │ │ ├── EmitterSamplingStrategy.java
│ │ │ ├── PathTracingRenderer.java
│ │ │ ├── Postprocess.java
│ │ │ ├── PreviewRenderer.java
│ │ │ ├── RayTracerFactory.java
│ │ │ ├── Refreshable.java
│ │ │ ├── RenderContext.java
│ │ │ ├── RenderContextFactory.java
│ │ │ ├── RenderController.java
│ │ │ ├── RenderManager.java
│ │ │ ├── RenderManagerFactory.java
│ │ │ ├── RenderMode.java
│ │ │ ├── RenderStatus.java
│ │ │ ├── RenderStatusListener.java
│ │ │ ├── RenderWorkerPool.java
│ │ │ ├── Renderer.java
│ │ │ ├── Repaintable.java
│ │ │ ├── ResetReason.java
│ │ │ ├── SceneIOProvider.java
│ │ │ ├── SceneProvider.java
│ │ │ ├── SceneStatusListener.java
│ │ │ ├── SnapshotControl.java
│ │ │ ├── SunSamplingStrategy.java
│ │ │ ├── TileBasedRenderer.java
│ │ │ ├── WaterShadingStrategy.java
│ │ │ ├── WorkerState.java
│ │ │ ├── export
│ │ │ │ ├── PfmExportFormat.java
│ │ │ │ ├── PictureExportFormat.java
│ │ │ │ ├── PictureExportFormats.java
│ │ │ │ ├── PngExportFormat.java
│ │ │ │ └── Tiff32ExportFormat.java
│ │ │ ├── postprocessing
│ │ │ │ ├── ACESFilmicFilter.java
│ │ │ │ ├── GammaCorrectionFilter.java
│ │ │ │ ├── HableToneMappingFilter.java
│ │ │ │ ├── NoneFilter.java
│ │ │ │ ├── PixelPostProcessingFilter.java
│ │ │ │ ├── PostProcessingFilter.java
│ │ │ │ ├── PostProcessingFilters.java
│ │ │ │ ├── PreviewFilter.java
│ │ │ │ ├── SimplePixelPostProcessingFilter.java
│ │ │ │ ├── Tonemap1Filter.java
│ │ │ │ └── UE4ToneMappingFilter.java
│ │ │ ├── projection
│ │ │ │ ├── ApertureProjector.java
│ │ │ │ ├── FisheyeProjector.java
│ │ │ │ ├── ForwardDisplacementProjector.java
│ │ │ │ ├── PanoramicProjector.java
│ │ │ │ ├── PanoramicSlotProjector.java
│ │ │ │ ├── ParallelProjector.java
│ │ │ │ ├── PinholeProjector.java
│ │ │ │ ├── ProjectionMode.java
│ │ │ │ ├── Projector.java
│ │ │ │ ├── ShiftProjector.java
│ │ │ │ ├── SphericalApertureProjector.java
│ │ │ │ ├── StereographicProjector.java
│ │ │ │ └── stereo
│ │ │ │ │ ├── ODSSinglePerspectiveProjector.java
│ │ │ │ │ ├── ODSVerticalStackedProjector.java
│ │ │ │ │ └── OmniDirectionalStereoProjector.java
│ │ │ ├── renderdump
│ │ │ │ ├── AbstractDumpFormat.java
│ │ │ │ ├── ClassicDumpFormat.java
│ │ │ │ ├── DumpFormat.java
│ │ │ │ ├── FloatingPointCompressorDumpFormat.java
│ │ │ │ ├── GzipDumpFormat.java
│ │ │ │ ├── HuffmanDumpFormat.java
│ │ │ │ ├── PixelConsumer.java
│ │ │ │ ├── RenderDump.java
│ │ │ │ └── UncompressedDumpFormat.java
│ │ │ └── scene
│ │ │ │ ├── AlphaBuffer.java
│ │ │ │ ├── AsynchronousSceneManager.java
│ │ │ │ ├── Camera.java
│ │ │ │ ├── CameraPreset.java
│ │ │ │ ├── CanvasConfig.java
│ │ │ │ ├── ChunkFinalizer.java
│ │ │ │ ├── EntityLoadingPreferences.java
│ │ │ │ ├── Fog.java
│ │ │ │ ├── FogLayer.java
│ │ │ │ ├── FogMode.java
│ │ │ │ ├── LegacyWaterShader.java
│ │ │ │ ├── OctreeFinalizer.java
│ │ │ │ ├── PathTracer.java
│ │ │ │ ├── PlayerModel.java
│ │ │ │ ├── PreviewRayTracer.java
│ │ │ │ ├── RayTracer.java
│ │ │ │ ├── RenderResetHandler.java
│ │ │ │ ├── Scene.java
│ │ │ │ ├── SceneEntities.java
│ │ │ │ ├── SceneFactory.java
│ │ │ │ ├── SceneManager.java
│ │ │ │ ├── SimplexWaterShader.java
│ │ │ │ ├── StillWaterShader.java
│ │ │ │ ├── SynchronousSceneManager.java
│ │ │ │ ├── WaterShader.java
│ │ │ │ ├── biome
│ │ │ │ ├── BiomeBlendingUtility.java
│ │ │ │ ├── BiomeStructure.java
│ │ │ │ ├── ChunkBiomeBlendingHelper.java
│ │ │ │ ├── Trivial2dBiomeStructure.java
│ │ │ │ ├── Trivial3dBiomeStructure.java
│ │ │ │ └── worldtexture
│ │ │ │ │ ├── ChunkTexture.java
│ │ │ │ │ ├── ChunkTexture3d.java
│ │ │ │ │ ├── WorldTexture2dBiomeStructure.java
│ │ │ │ │ └── WorldTexture3dBiomeStructure.java
│ │ │ │ └── sky
│ │ │ │ ├── NishitaSky.java
│ │ │ │ ├── PreethamSky.java
│ │ │ │ ├── SimulatedSky.java
│ │ │ │ ├── Sky.java
│ │ │ │ ├── SkyCache.java
│ │ │ │ └── Sun.java
│ │ ├── resources
│ │ │ ├── AbstractHdriTexture.java
│ │ │ ├── AnimatedTexture.java
│ │ │ ├── BinaryBitmapImage.java
│ │ │ ├── BitmapImage.java
│ │ │ ├── ChiseledBookshelfTexture.java
│ │ │ ├── DataPackUtil.java
│ │ │ ├── EntityTexture.java
│ │ │ ├── HDRTexture.java
│ │ │ ├── LayeredResourcePacks.java
│ │ │ ├── OctreeFileFormat.java
│ │ │ ├── PFMTexture.java
│ │ │ ├── PalettizedBitmapImage.java
│ │ │ ├── PlayerTexture.java
│ │ │ ├── ResourcePackBannerPatternLoader.java
│ │ │ ├── ResourcePackBiomeLoader.java
│ │ │ ├── ResourcePackLoader.java
│ │ │ ├── ResourcePackPaintingLoader.java
│ │ │ ├── ResourcePackTextureLoader.java
│ │ │ ├── ShulkerTexture.java
│ │ │ ├── SignTexture.java
│ │ │ ├── SolidColorTexture.java
│ │ │ ├── Texture.java
│ │ │ ├── TextureCache.java
│ │ │ ├── TexturePackLoader.java
│ │ │ └── texturepack
│ │ │ │ ├── AllTextures.java
│ │ │ │ ├── AlternateTextures.java
│ │ │ │ ├── AnimatedTextureLoader.java
│ │ │ │ ├── AsciiFontTextureLoader.java
│ │ │ │ ├── BedTextureAdapter.java
│ │ │ │ ├── ChestTexture.java
│ │ │ │ ├── CloudsTexture.java
│ │ │ │ ├── ColoredTexture.java
│ │ │ │ ├── ConditionalTextures.java
│ │ │ │ ├── EntityTextureLoader.java
│ │ │ │ ├── FoliageColorTexture.java
│ │ │ │ ├── FontTexture.java
│ │ │ │ ├── GrassColorTexture.java
│ │ │ │ ├── IndexedTexture.java
│ │ │ │ ├── JsonFontTextureLoader.java
│ │ │ │ ├── LargeChestTexture.java
│ │ │ │ ├── LayeredTextureLoader.java
│ │ │ │ ├── PaintingBackTexture.java
│ │ │ │ ├── PaintingTexture.java
│ │ │ │ ├── PaintingTextureAdapter.java
│ │ │ │ ├── PlayerTextureLoader.java
│ │ │ │ ├── RotatedTextureLoader.java
│ │ │ │ ├── ShulkerTextureLoader.java
│ │ │ │ ├── SimpleTexture.java
│ │ │ │ ├── SplitLargeChestTexture.java
│ │ │ │ ├── TextureFormatError.java
│ │ │ │ ├── TextureLoader.java
│ │ │ │ └── TexturePath.java
│ │ ├── ui
│ │ │ ├── ChunkMap.java
│ │ │ ├── ChunkyFx.java
│ │ │ ├── HyperlinkMenuItem.java
│ │ │ ├── Icons.java
│ │ │ ├── ProgressTracker.java
│ │ │ ├── RenderCanvasFx.java
│ │ │ ├── TableSortConfigSerializer.java
│ │ │ ├── UILogReceiver.java
│ │ │ ├── controller
│ │ │ │ ├── ChunkyFxController.java
│ │ │ │ ├── CreditsController.java
│ │ │ │ ├── RenderControlsFxController.java
│ │ │ │ ├── ResourcePackChooserController.java
│ │ │ │ ├── SceneChooserController.java
│ │ │ │ └── WorldChooserController.java
│ │ │ ├── dialogs
│ │ │ │ ├── ChunkyErrorDialog.java
│ │ │ │ ├── Credits.java
│ │ │ │ ├── Poser.java
│ │ │ │ ├── ResourcePackChooser.java
│ │ │ │ ├── SceneChooser.java
│ │ │ │ ├── SelectChunksInRadiusDialog.java
│ │ │ │ ├── SettingsExport.java
│ │ │ │ ├── ShutdownAlert.java
│ │ │ │ ├── ValidatingTextInputDialog.java
│ │ │ │ └── WorldChooser.java
│ │ │ ├── elements
│ │ │ │ ├── AngleAdjuster.java
│ │ │ │ ├── GradientEditor.java
│ │ │ │ ├── SizeInput.java
│ │ │ │ └── TextFieldLabelWrapper.java
│ │ │ └── render
│ │ │ │ ├── RenderControlsTab.java
│ │ │ │ ├── RenderControlsTabTransformer.java
│ │ │ │ ├── settings
│ │ │ │ ├── LayeredFogSettings.java
│ │ │ │ ├── SkyboxSettings.java
│ │ │ │ ├── SkymapSettings.java
│ │ │ │ └── UniformFogSettings.java
│ │ │ │ └── tabs
│ │ │ │ ├── AdvancedTab.java
│ │ │ │ ├── CameraTab.java
│ │ │ │ ├── EntitiesTab.java
│ │ │ │ ├── GeneralTab.java
│ │ │ │ ├── HelpTab.java
│ │ │ │ ├── LightingTab.java
│ │ │ │ ├── MaterialsTab.java
│ │ │ │ ├── PostprocessingTab.java
│ │ │ │ ├── SkyTab.java
│ │ │ │ ├── TexturesTab.java
│ │ │ │ └── WaterTab.java
│ │ └── world
│ │ │ ├── BlockData.java
│ │ │ ├── Chunk.java
│ │ │ ├── ChunkDataSource.java
│ │ │ ├── ChunkHeightmap.java
│ │ │ ├── ChunkPosition.java
│ │ │ ├── ChunkSelectionListener.java
│ │ │ ├── ChunkSelectionTracker.java
│ │ │ ├── ChunkTopographyUpdater.java
│ │ │ ├── ChunkVersion.java
│ │ │ ├── ChunkView.java
│ │ │ ├── Clouds.java
│ │ │ ├── CubicDimension.java
│ │ │ ├── Dimension.java
│ │ │ ├── EmptyChunk.java
│ │ │ ├── EmptyDimension.java
│ │ │ ├── EmptyRegionChunk.java
│ │ │ ├── EmptyWorld.java
│ │ │ ├── ExtraMaterials.java
│ │ │ ├── Heightmap.java
│ │ │ ├── Icon.java
│ │ │ ├── ImposterCubicChunk.java
│ │ │ ├── Material.java
│ │ │ ├── MaterialStore.java
│ │ │ ├── PlayerEntityData.java
│ │ │ ├── RegionPosition.java
│ │ │ ├── SkymapTexture.java
│ │ │ ├── World.java
│ │ │ ├── WorldScanner.java
│ │ │ ├── biome
│ │ │ ├── ArrayBiomePalette.java
│ │ │ ├── Biome.java
│ │ │ ├── BiomeBuilder.java
│ │ │ ├── BiomePalette.java
│ │ │ ├── Biomes.java
│ │ │ └── MapBiomePalette.java
│ │ │ ├── listeners
│ │ │ ├── ChunkDeletionListener.java
│ │ │ ├── ChunkTopographyListener.java
│ │ │ └── ChunkUpdateListener.java
│ │ │ ├── material
│ │ │ ├── BeaconBeamMaterial.java
│ │ │ ├── CloudMaterial.java
│ │ │ ├── LilyPadMaterial.java
│ │ │ └── TextureMaterial.java
│ │ │ ├── model
│ │ │ ├── Cube.java
│ │ │ ├── CubeModel.java
│ │ │ ├── Face.java
│ │ │ └── JsonModel.java
│ │ │ └── region
│ │ │ ├── ChunkReadException.java
│ │ │ ├── EmptyRegion.java
│ │ │ ├── ImposterCubicRegion.java
│ │ │ ├── MCRegion.java
│ │ │ ├── MCRegionChangeWatcher.java
│ │ │ ├── Region.java
│ │ │ ├── RegionChangeWatcher.java
│ │ │ ├── RegionParser.java
│ │ │ └── RegionQueue.java
│ │ ├── fxutil
│ │ ├── ColumnsBoxBuilder.java
│ │ ├── Dialogs.java
│ │ ├── FxImageUtil.java
│ │ └── GroupedChangeListener.java
│ │ ├── imageformats
│ │ ├── pfm
│ │ │ └── PfmFileWriter.java
│ │ ├── png
│ │ │ ├── CrcOutputStream.java
│ │ │ ├── IDAT.java
│ │ │ ├── IEND.java
│ │ │ ├── IHDR.java
│ │ │ ├── ITXT.java
│ │ │ ├── PngChunk.java
│ │ │ └── PngFileWriter.java
│ │ └── tiff
│ │ │ ├── BasicIFD.java
│ │ │ ├── CompressionType.java
│ │ │ ├── FinalizableBFCOutputStream.java
│ │ │ ├── IFDTag.java
│ │ │ ├── ImageFileDirectory.java
│ │ │ └── TiffFileWriter.java
│ │ ├── math
│ │ ├── AABB.java
│ │ ├── BigPackedOctree.java
│ │ ├── ColorUtil.java
│ │ ├── Constants.java
│ │ ├── Grid.java
│ │ ├── Intersectable.java
│ │ ├── Matrix3.java
│ │ ├── NodeBasedOctree.java
│ │ ├── Octree.java
│ │ ├── OctreeVisitor.java
│ │ ├── PackedOctree.java
│ │ ├── Quad.java
│ │ ├── Ray.java
│ │ ├── SimplexNoise.java
│ │ ├── Transform.java
│ │ ├── Triangle.java
│ │ ├── Vector2.java
│ │ ├── Vector3.java
│ │ ├── Vector3i.java
│ │ ├── Vector4.java
│ │ ├── bvh
│ │ │ ├── BVH.java
│ │ │ ├── BinaryBVH.java
│ │ │ ├── MidpointBVH.java
│ │ │ ├── SahBVH.java
│ │ │ └── SahMaBVH.java
│ │ ├── primitive
│ │ │ ├── Box.java
│ │ │ ├── MutableAABB.java
│ │ │ ├── Primitive.java
│ │ │ └── TexturedTriangle.java
│ │ └── structures
│ │ │ ├── Position2IntStructure.java
│ │ │ ├── Position2ReferenceStructure.java
│ │ │ ├── Position2d2IntPackedArray.java
│ │ │ ├── Position2d2ReferencePackedArrayStructure.java
│ │ │ ├── Position3d2IntPackedArray.java
│ │ │ └── Position3d2ReferencePackedArrayStructure.java
│ │ ├── resources
│ │ └── ImageLoader.java
│ │ └── util
│ │ ├── BitBuffer.java
│ │ ├── Configurable.java
│ │ ├── ImageTools.java
│ │ ├── JsonSerializable.java
│ │ ├── JsonUtil.java
│ │ ├── MinecraftPRNG.java
│ │ ├── MinecraftText.java
│ │ ├── NbtUtil.java
│ │ ├── ProgressListener.java
│ │ ├── Registerable.java
│ │ ├── RingBuffer.java
│ │ ├── TaskTracker.java
│ │ ├── UuidUtil.java
│ │ ├── annotation
│ │ ├── NotNull.java
│ │ └── Nullable.java
│ │ ├── interner
│ │ ├── Interner.java
│ │ ├── StrongInterner.java
│ │ └── WeakInterner.java
│ │ ├── io
│ │ ├── BufferedFileChannelOutputStream.java
│ │ ├── IsolatedOutputStream.java
│ │ ├── PositionalInputStream.java
│ │ ├── PositionalOutputStream.java
│ │ ├── RepositionableMeasurableDataOutput.java
│ │ └── ZipExport.java
│ │ └── mojangapi
│ │ ├── MinecraftProfile.java
│ │ ├── MinecraftSkin.java
│ │ └── MojangApi.java
│ ├── res
│ ├── chunky-icon.png
│ ├── icons
│ │ ├── 1_12.png
│ │ ├── 1_13.png
│ │ ├── advanced.png
│ │ ├── bed.png
│ │ ├── cactus.png
│ │ ├── cake.png
│ │ ├── camera.png
│ │ ├── cauldron.png
│ │ ├── chunky.png
│ │ ├── clear.png
│ │ ├── clock.png
│ │ ├── colors.png
│ │ ├── disk.png
│ │ ├── dragon-egg.png
│ │ ├── eye.png
│ │ ├── face.png
│ │ ├── face_t.png
│ │ ├── failed.png
│ │ ├── fence.png
│ │ ├── gear.png
│ │ ├── home.png
│ │ ├── home_t.png
│ │ ├── iron-door.png
│ │ ├── iso-ne.png
│ │ ├── iso-nw.png
│ │ ├── iso-se.png
│ │ ├── iso-sw.png
│ │ ├── jack-o-lantern.png
│ │ ├── jukebox.png
│ │ ├── key.png
│ │ ├── lens.png
│ │ ├── lever.png
│ │ ├── light.png
│ │ ├── load.png
│ │ ├── lock.png
│ │ ├── magnify.png
│ │ ├── map-selected.png
│ │ ├── map.png
│ │ ├── minus.png
│ │ ├── note-block.png
│ │ ├── pause.png
│ │ ├── pencil.png
│ │ ├── photo.png
│ │ ├── play.png
│ │ ├── player.png
│ │ ├── plus.png
│ │ ├── pumpkin.png
│ │ ├── question.png
│ │ ├── redstone-torch-on.png
│ │ ├── reload.png
│ │ ├── save.png
│ │ ├── scale.png
│ │ ├── sign-post.png
│ │ ├── sky.png
│ │ ├── skybox-back.png
│ │ ├── skybox-down.png
│ │ ├── skybox-front.png
│ │ ├── skybox-left.png
│ │ ├── skybox-right.png
│ │ ├── skybox-up.png
│ │ ├── stone-brick-stairs.png
│ │ ├── stone-button.png
│ │ ├── stone-pressure-plate.png
│ │ ├── stone-stairs.png
│ │ ├── stop.png
│ │ ├── sun.png
│ │ ├── unknown.png
│ │ ├── wall-sign.png
│ │ ├── water.png
│ │ ├── wheat.png
│ │ ├── wooden-door.png
│ │ ├── wooden-pressure-plate.png
│ │ ├── wooden-stairs.png
│ │ └── wrench.png
│ ├── se
│ │ └── llbit
│ │ │ └── chunky
│ │ │ ├── main
│ │ │ └── Version.properties
│ │ │ ├── renderer
│ │ │ └── projection
│ │ │ │ ├── gaussian-aperture.png
│ │ │ │ ├── hexagon-aperture.png
│ │ │ │ ├── pentagon-aperture.png
│ │ │ │ └── star-aperture.png
│ │ │ └── ui
│ │ │ ├── Chunky.fxml
│ │ │ ├── chunky.png
│ │ │ ├── dialogs
│ │ │ ├── Credits.fxml
│ │ │ ├── ErrorDialog.fxml
│ │ │ ├── Poser.fxml
│ │ │ ├── ResourcePackChooser.fxml
│ │ │ ├── SceneChooser.fxml
│ │ │ ├── WarningDialog.fxml
│ │ │ └── WorldChooser.fxml
│ │ │ ├── elements
│ │ │ ├── GradientEditor.fxml
│ │ │ ├── jog_wheel.png
│ │ │ └── jog_wheel_dimple.png
│ │ │ └── render
│ │ │ ├── settings
│ │ │ ├── LayeredFogSettings.fxml
│ │ │ ├── SkyboxSettings.fxml
│ │ │ ├── SkymapSettings.fxml
│ │ │ └── UniformFogSettings.fxml
│ │ │ └── tabs
│ │ │ ├── AdvancedTab.fxml
│ │ │ ├── CameraTab.fxml
│ │ │ ├── EntitiesTab.fxml
│ │ │ ├── GeneralTab.fxml
│ │ │ ├── HelpTab.fxml
│ │ │ ├── LightingTab.fxml
│ │ │ ├── PostprocessingTab.fxml
│ │ │ ├── SkyTab.fxml
│ │ │ ├── TexturesTab.fxml
│ │ │ └── WaterTab.fxml
│ ├── style.css
│ └── textures
│ │ ├── air.png
│ │ ├── bedrock.png
│ │ ├── bookshelf.png
│ │ ├── bricks.png
│ │ ├── brown-mushroom.png
│ │ ├── chest.png
│ │ ├── clay.png
│ │ ├── coal-ore.png
│ │ ├── cobblestone.png
│ │ ├── cobweb.png
│ │ ├── dead-bush.png
│ │ ├── diamond-block.png
│ │ ├── diamond-ore.png
│ │ ├── dirt.png
│ │ ├── dispenser.png
│ │ ├── double-stone-slab.png
│ │ ├── east.png
│ │ ├── end-portal.png
│ │ ├── end-stone.png
│ │ ├── fire.png
│ │ ├── furnace-lit.png
│ │ ├── furnace.png
│ │ ├── glass.png
│ │ ├── glowstone.png
│ │ ├── gold-block.png
│ │ ├── gold-ore.png
│ │ ├── grass-side-saturated.png
│ │ ├── grass.png
│ │ ├── gravel.png
│ │ ├── ice.png
│ │ ├── iron-bars.png
│ │ ├── iron-block.png
│ │ ├── iron-ore.png
│ │ ├── ladder.png
│ │ ├── lapis-lazuli-block.png
│ │ ├── lapis-lazuli-ore.png
│ │ ├── lava.png
│ │ ├── leaves.png
│ │ ├── lily-pad.png
│ │ ├── melon.png
│ │ ├── minecart-track.png
│ │ ├── moss-stone.png
│ │ ├── nether-portal.png
│ │ ├── netherrack.png
│ │ ├── north.png
│ │ ├── obsidian.png
│ │ ├── piston-extension.png
│ │ ├── piston.png
│ │ ├── red-mushroom.png
│ │ ├── redstone-lamp-off.png
│ │ ├── redstone-lamp-on.png
│ │ ├── redstone-ore.png
│ │ ├── redstone-repeater-off.png
│ │ ├── redstone-repeater-on.png
│ │ ├── redstone-torch-off.png
│ │ ├── redstone-torch-on.png
│ │ ├── redstone-wire-off-intersect.png
│ │ ├── rose.png
│ │ ├── sand.png
│ │ ├── sandstone.png
│ │ ├── sapling.png
│ │ ├── snow.png
│ │ ├── soil.png
│ │ ├── soul-sand.png
│ │ ├── south.png
│ │ ├── spawner.png
│ │ ├── sponge.png
│ │ ├── stone-bricks.png
│ │ ├── stone-slab.png
│ │ ├── stone.png
│ │ ├── sugar-canes.png
│ │ ├── tall-grass.png
│ │ ├── tnt.png
│ │ ├── torch.png
│ │ ├── trapdoor.png
│ │ ├── unknown.png
│ │ ├── vines.png
│ │ ├── water-height.png
│ │ ├── water.png
│ │ ├── west.png
│ │ ├── wood-top.png
│ │ ├── wood.png
│ │ ├── wooden-planks.png
│ │ ├── wool.png
│ │ ├── workbench.png
│ │ └── yellow-flower.png
│ └── test
│ └── se
│ └── llbit
│ ├── chunky
│ ├── block
│ │ └── SkullTextureTest.java
│ ├── chunk
│ │ └── BlockPaletteTest.java
│ ├── entity
│ │ └── MarshallingTest.java
│ ├── main
│ │ ├── OptionHandlerTest.java
│ │ └── PluginApiTest.java
│ ├── nbt
│ │ └── NBTTest.java
│ ├── plugin
│ │ └── PluginManagerTest.java
│ ├── renderer
│ │ ├── BlankRenderTest.java
│ │ ├── MockSceneProvider.java
│ │ ├── renderdump
│ │ │ └── RenderDumpTest.java
│ │ └── scene
│ │ │ ├── SceneManagerTest.java
│ │ │ └── SceneTest.java
│ └── resources
│ │ └── AnimatedTextureTest.java
│ ├── fxutil
│ └── GroupedChangeListenerTest.java
│ ├── log
│ └── LogTest.java
│ ├── math
│ ├── ColorUtilTest.java
│ ├── MutableAABBTest.java
│ ├── OctreeTest.java
│ └── QuickMathTest.java
│ ├── testutil
│ └── TestUtils.java
│ └── util
│ ├── RingBufferTest.java
│ └── WeakInternerTest.java
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── launcher
├── .gitignore
├── build.gradle
├── src
│ └── se
│ │ └── llbit
│ │ └── chunky
│ │ └── launcher
│ │ ├── ChunkyDeployer.java
│ │ ├── ChunkyLauncher.java
│ │ ├── ConsoleLogger.java
│ │ ├── ConsoleUpdater.java
│ │ ├── Dialogs.java
│ │ ├── DownloadStatus.java
│ │ ├── JavaFxDownloads.java
│ │ ├── JavaFxInstaller.java
│ │ ├── JavaFxLocator.java
│ │ ├── JreUtil.java
│ │ ├── LaunchMode.java
│ │ ├── LauncherInfo.java
│ │ ├── LauncherInfoChecker.java
│ │ ├── Logger.java
│ │ ├── UpdateChecker.java
│ │ ├── UpdateListener.java
│ │ ├── VersionInfo.java
│ │ └── ui
│ │ ├── ChunkyLauncher.fxml
│ │ ├── ChunkyLauncherController.java
│ │ ├── ChunkyLauncherFx.java
│ │ ├── DebugConsole.java
│ │ ├── FirstTimeSetupDialog.java
│ │ ├── LaunchErrorDialog.java
│ │ ├── LauncherUpdateDialog.fxml
│ │ ├── LauncherUpdateDialog.java
│ │ ├── LauncherUpdateDialogController.java
│ │ ├── PluginManager.fxml
│ │ ├── PluginManager.java
│ │ ├── PluginManagerController.java
│ │ ├── UpdateDialog.fxml
│ │ ├── UpdateDialog.java
│ │ ├── UpdateDialogController.java
│ │ ├── cached.png
│ │ ├── chunky-cfg.png
│ │ ├── failed.png
│ │ └── refresh.png
└── test
│ └── se
│ └── llbit
│ └── chunky
│ └── launcher
│ └── ChunkyLauncherCliParseTest.java
├── lib
├── .gitignore
├── build.gradle
└── src
│ └── se
│ └── llbit
│ ├── chunky
│ ├── HelpCopyright.java
│ ├── JsonSettings.java
│ ├── PersistentSettings.java
│ ├── cli
│ │ └── CliUtil.java
│ ├── launcher
│ │ ├── LauncherSettings.java
│ │ └── ReleaseChannel.java
│ ├── renderer
│ │ └── RenderConstants.java
│ ├── resources
│ │ ├── MinecraftFinder.java
│ │ └── SettingsDirectory.java
│ └── ui
│ │ ├── Adjuster.java
│ │ ├── DoubleAdjuster.java
│ │ ├── DoubleTextField.java
│ │ ├── IntegerAdjuster.java
│ │ ├── IntegerTextField.java
│ │ ├── NumericTextField.java
│ │ ├── PositiveIntegerAdjuster.java
│ │ ├── SliderAdjuster.java
│ │ └── ValidatingNumberStringConverter.java
│ ├── fxutil
│ ├── CustomizedListCellFactory.java
│ └── WindowPosition.java
│ ├── log
│ ├── BufferingConsoleReceiver.java
│ ├── ConsoleReceiver.java
│ ├── Level.java
│ ├── Log.java
│ └── Receiver.java
│ ├── math
│ ├── ObservableSize2D.java
│ ├── QuickMath.java
│ ├── Size2D.java
│ └── WritableSize2D.java
│ └── util
│ ├── Mutable.java
│ ├── OSDetector.java
│ ├── Pair.java
│ └── Util.java
├── licenses
├── APACHE-2.0.txt
├── commons-math.txt
├── fast-util.txt
├── gson.txt
├── lz4-java.txt
├── lz4.txt
└── semver4j.txt
├── misc
├── animate.py
└── logo.png
├── releasetools
├── .gitignore
├── build.gradle
└── src
│ └── releasetools
│ └── ReleaseBuilder.java
├── settings.gradle
└── upload-snapshot.sh
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | end_of_line = lf
6 | indent_size = 2
7 | indent_style = space
8 | insert_final_newline = false
9 | max_line_length = 120
10 | tab_width = 2
11 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.properties eol=lf
2 | *.java eol=lf
3 | *.txt eol=crlf
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Eclipse files.
2 | /.metadata
3 | /.recommenders
4 | .settings
5 | .project
6 | .classpath
7 |
8 | # Vim swap and undo files.
9 | *.swp
10 | *.*~
11 |
12 | # Benchmarking & testing.
13 | /bench/x*
14 | /test
15 | /local
16 |
17 | # Build tool files.
18 | /.gradle/
19 |
20 | # Release artifacts.
21 | /lpcache/
22 | /bin/
23 | /latest.json
24 | /snapshot.json
25 | /snapshot
26 | /credentials.json
27 | /credentials.gpg
28 | /build/
29 | /Chunky.nsi
30 | /release_notes-*.txt
31 | /chunky.jar
32 |
33 |
34 | # IntelliJ IDEA Project files.
35 | .idea/*
36 | *.eml
37 | *.iml
38 | /*.ipr
39 | /*.iws
40 | /out/
41 | /chunky/out/
42 | /lib/out/
43 | /releasetools/out/
44 | /launcher/out/
45 |
46 | # Render snapshots from testing.
47 | /*.png
48 |
49 | # Private files.
50 | /TODO
51 | .DS_Store
52 | /tools/appbundler-*.jar
53 |
54 | # Python virtual environment.
55 | /venv/
56 | requirements.txt
57 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: java
2 |
3 | jdk:
4 | - oraclejdk8
5 |
6 | addons:
7 | apt:
8 | packages:
9 | - oracle-java8-installer
10 |
11 | # TODO Drop this when jdk 11 is supported
12 | # oraclejdk8 isn't available on more recent distributions
13 | dist: trusty
14 |
15 | after_success:
16 | - bash <(curl -s https://codecov.io/bash)
17 |
--------------------------------------------------------------------------------
/chunky/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 | /build/
3 | /src/gen-res/
4 |
--------------------------------------------------------------------------------
/chunky/src/java/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/FixedTopBottomRotatableTexturedBlock.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block;
2 |
3 | import se.llbit.chunky.model.FixedTopBottomRotatableTexturedBlockModel;
4 | import se.llbit.chunky.resources.Texture;
5 |
6 | /**
7 | * A textured block that can have one of four orientations but have a fixed top and bottom that does NOT rotate.
8 | * E.g. chiseled bookshelves.
9 | * If the top and bottom should rotate with the rest of the block, use TopBottomOrientedTexturedBlock.
10 | */
11 | public class FixedTopBottomRotatableTexturedBlock extends AbstractModelBlock {
12 | public FixedTopBottomRotatableTexturedBlock(String name, String facing, Texture front, Texture side, Texture top) {
13 | this(name, facing, front, side, side, side, top, top);
14 | }
15 |
16 | public FixedTopBottomRotatableTexturedBlock(String name, String facing, Texture front, Texture side, Texture top, Texture bottom) {
17 | this(name, facing, front, side, side, side, top, bottom);
18 | }
19 |
20 | public FixedTopBottomRotatableTexturedBlock(String name, String facing, Texture front, Texture south, Texture east, Texture west, Texture top, Texture bottom) {
21 | super(name, front);
22 | this.model = new FixedTopBottomRotatableTexturedBlockModel(facing, front, south, east, west, top, bottom);
23 | solid = true;
24 | opaque = true;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/MinecraftBlock.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block;
2 |
3 | import se.llbit.chunky.resources.Texture;
4 | import se.llbit.chunky.world.Material;
5 |
6 | /**
7 | * A simple opaque block with a single texture.
8 | */
9 | public class MinecraftBlock extends Block {
10 | public static final Material STONE = new MinecraftBlock("stone", Texture.stone);
11 |
12 | public MinecraftBlock(String name, Texture texture) {
13 | super("minecraft:" + name, texture);
14 | opaque = true;
15 | solid = true;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/MinecraftBlockTranslucent.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block;
2 |
3 | import se.llbit.chunky.resources.Texture;
4 |
5 | /**
6 | * Non-opaque block.
7 | */
8 | public class MinecraftBlockTranslucent extends MinecraftBlock {
9 | public MinecraftBlockTranslucent(String name, Texture texture) {
10 | super(name, texture);
11 | opaque = false;
12 | solid = false;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/ModelBlock.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block;
2 |
3 | import se.llbit.chunky.model.BlockModel;
4 | import se.llbit.chunky.plugin.PluginApi;
5 | import se.llbit.chunky.renderer.scene.Scene;
6 | import se.llbit.math.Ray;
7 |
8 | @PluginApi
9 | public interface ModelBlock {
10 |
11 | @PluginApi
12 | BlockModel getModel();
13 |
14 | default boolean intersect(Ray ray, Scene scene) {
15 | return getModel().intersect(ray, scene);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/SolidNonOpaqueBlock.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block;
2 |
3 | import se.llbit.chunky.resources.Texture;
4 |
5 | public class SolidNonOpaqueBlock extends Block {
6 |
7 | public SolidNonOpaqueBlock(String name, Texture texture) {
8 | super(name, texture);
9 | solid = true;
10 | opaque = false;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/TexturedBlock.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block;
2 |
3 | import se.llbit.chunky.model.TexturedBlockModel;
4 | import se.llbit.chunky.resources.Texture;
5 |
6 | public class TexturedBlock extends AbstractModelBlock {
7 |
8 | public TexturedBlock(String name, Texture side, Texture topBottom) {
9 | this(name, side, side, side, side, topBottom, topBottom);
10 | }
11 |
12 | public TexturedBlock(String name, Texture side, Texture top, Texture bottom) {
13 | this(name, side, side, side, side, top, bottom);
14 | }
15 |
16 | public TexturedBlock(String name,
17 | Texture north, Texture south, Texture east, Texture west,
18 | Texture top, Texture bottom) {
19 | super(name, north);
20 | this.model = new TexturedBlockModel(north, east, south, west, top, bottom);
21 | opaque = true;
22 | solid = true;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/TopBottomOrientedTexturedBlock.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block;
2 |
3 | import se.llbit.chunky.model.TopBottomOrientedTexturedBlockModel;
4 | import se.llbit.chunky.resources.Texture;
5 |
6 | /**
7 | * A textured block that can have one of four orientations but have a fixed top and bottom that rotates, too.
8 | * E.g. furnaces, pumpkins, looms.
9 | * If the top and bottom should NOT rotate with the rest of the block, use FixedTopBottomRotatableTexturedBlock.
10 | */
11 | public class TopBottomOrientedTexturedBlock extends AbstractModelBlock {
12 | public TopBottomOrientedTexturedBlock(String name, String facing, Texture front, Texture side, Texture top) {
13 | this(name, facing, front, side, side, side, top, top);
14 | }
15 |
16 | public TopBottomOrientedTexturedBlock(String name, String facing, Texture front, Texture side, Texture top, Texture bottom) {
17 | this(name, facing, front, side, side, side, top, bottom);
18 | }
19 |
20 | public TopBottomOrientedTexturedBlock(String name, String facing, Texture front, Texture south, Texture east, Texture west, Texture top, Texture bottom) {
21 | super(name, front);
22 | this.model = new TopBottomOrientedTexturedBlockModel(facing, front, south, east, west, top, bottom);
23 | solid = true;
24 | opaque = true;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/UntintedLeaves.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block;
2 |
3 | import se.llbit.chunky.resources.Texture;
4 |
5 | public class UntintedLeaves extends MinecraftBlockTranslucent {
6 | public UntintedLeaves(String name, Texture texture) {
7 | super(name, texture);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/legacy/blocks/LegacyMelonStem.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.legacy.blocks;
2 |
3 | import se.llbit.chunky.block.BlockFace;
4 | import se.llbit.chunky.block.FinalizationState;
5 | import se.llbit.chunky.block.legacy.LegacyBlocks;
6 | import se.llbit.chunky.block.legacy.UnfinalizedLegacyBlock;
7 | import se.llbit.nbt.CompoundTag;
8 |
9 | public class LegacyMelonStem extends UnfinalizedLegacyBlock {
10 |
11 | private static final BlockFace[] sides = new BlockFace[]{
12 | BlockFace.WEST, BlockFace.EAST, BlockFace.NORTH, BlockFace.SOUTH
13 | };
14 |
15 | public LegacyMelonStem(String name, CompoundTag tag) {
16 | super(name, tag);
17 | }
18 |
19 | @Override
20 | public void finalizeBlock(FinalizationState state) {
21 | // melon stem points to adjacent melon
22 | for (BlockFace side : sides) {
23 | if (state.getMaterial(side).name.equals("minecraft:melon")) {
24 | state.replaceCurrentBlock(
25 | LegacyBlocks.stringTag(
26 | LegacyBlocks.createTag("attached_melon_stem"), "facing", side.getName()
27 | ));
28 | return;
29 | }
30 | }
31 |
32 | // otherwise just unwrap the block
33 | state.replaceCurrentBlock(tag);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/legacy/blocks/LegacyPumpkinStem.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.legacy.blocks;
2 |
3 | import se.llbit.chunky.block.BlockFace;
4 | import se.llbit.chunky.block.FinalizationState;
5 | import se.llbit.chunky.block.legacy.LegacyBlocks;
6 | import se.llbit.chunky.block.legacy.UnfinalizedLegacyBlock;
7 | import se.llbit.nbt.CompoundTag;
8 |
9 | public class LegacyPumpkinStem extends UnfinalizedLegacyBlock {
10 |
11 | private static final BlockFace[] sides = new BlockFace[]{
12 | BlockFace.WEST, BlockFace.EAST, BlockFace.NORTH, BlockFace.SOUTH
13 | };
14 |
15 | public LegacyPumpkinStem(String name, CompoundTag tag) {
16 | super(name, tag);
17 | }
18 |
19 | @Override
20 | public void finalizeBlock(FinalizationState state) {
21 | // pumpkin stem points to adjacent pumpkin or carved pumpkin (but not jack-o-lantern)
22 | for (BlockFace side : sides) {
23 | if (state.getMaterial(side).name.endsWith("pumpkin")) {
24 | state.replaceCurrentBlock(
25 | LegacyBlocks.stringTag(
26 | LegacyBlocks.createTag("attached_pumpkin_stem"), "facing", side.getName()
27 | ));
28 | return;
29 | }
30 | }
31 |
32 | // otherwise just unwrap the block
33 | state.replaceCurrentBlock(tag);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/legacy/blocks/LegacyVine.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.legacy.blocks;
2 |
3 | import se.llbit.chunky.block.FinalizationState;
4 | import se.llbit.chunky.block.legacy.LegacyBlocks;
5 | import se.llbit.chunky.block.legacy.UnfinalizedLegacyBlock;
6 | import se.llbit.chunky.world.Material;
7 | import se.llbit.nbt.CompoundTag;
8 |
9 | public class LegacyVine extends UnfinalizedLegacyBlock {
10 |
11 | public LegacyVine(String name, CompoundTag tag) {
12 | super(name, tag);
13 | }
14 |
15 | @Override
16 | public void finalizeBlock(FinalizationState state) {
17 | // vines have an "up" part if the block above is solid
18 | if (state.getY() < state.getYMax() - 1) {
19 | Material above = state.getMaterial(0, 1, 0);
20 | if (above.solid) {
21 | state.replaceCurrentBlock(
22 | LegacyBlocks.vineTag(LegacyBlocks.createTag("vine"), data, true));
23 | return;
24 | }
25 | }
26 |
27 | // otherwise just unwrap the block
28 | state.replaceCurrentBlock(tag);
29 | }
30 |
31 | @Override
32 | public boolean isBiomeDependant() {
33 | return true;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Air.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.MinecraftBlock;
22 | import se.llbit.chunky.resources.Texture;
23 |
24 | public class Air extends MinecraftBlock {
25 | public static final Air INSTANCE = new Air();
26 |
27 | private Air() {
28 | super("air", Texture.air);
29 | solid = false;
30 | opaque = false;
31 | invisible = true;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/AmethystCluster.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.resources.Texture;
22 |
23 | public class AmethystCluster extends SpriteBlock {
24 |
25 | private final boolean lit;
26 |
27 | public AmethystCluster(String name, Texture texture, String facing, boolean lit) {
28 | super(name, texture, facing);
29 | this.lit = lit;
30 | }
31 |
32 | public boolean isLit() {
33 | return lit;
34 | }
35 |
36 | @Override
37 | public String description() {
38 | return "facing=" + facing + ", lit=" + lit;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Azalea.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.AzaleaModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class Azalea extends AbstractModelBlock {
26 |
27 | public Azalea(String name, Texture top, Texture side) {
28 | super(name, top);
29 | solid = false;
30 | model = new AzaleaModel(top, side);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Cactus.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.CactusModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class Cactus extends AbstractModelBlock {
26 |
27 | public Cactus() {
28 | super("cactus", Texture.cactusSide);
29 | localIntersect = true;
30 | opaque = false;
31 | this.model = new CactusModel();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Cake.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.CakeModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class Cake extends AbstractModelBlock {
26 |
27 | private final int bites;
28 |
29 | public Cake(int bites) {
30 | super("cake", Texture.cakeTop);
31 | this.model = new CakeModel(bites);
32 | this.bites = bites;
33 | }
34 |
35 | @Override
36 | public String description() {
37 | return "bites=" + bites;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Carpet.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.CarpetModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class Carpet extends AbstractModelBlock {
26 |
27 | public Carpet(String name, Texture texture) {
28 | super(name, texture);
29 | solid = false;
30 | this.model = new CarpetModel(texture);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Conduit.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.ConduitModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class Conduit extends AbstractModelBlock {
26 |
27 | public Conduit() {
28 | super("conduit", Texture.conduit);
29 | model = new ConduitModel();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/CreakingHeart.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.minecraft;
2 |
3 | import se.llbit.chunky.block.AbstractModelBlock;
4 | import se.llbit.chunky.model.minecraft.LogModel;
5 | import se.llbit.chunky.resources.Texture;
6 |
7 | public class CreakingHeart extends AbstractModelBlock {
8 | private final String description;
9 |
10 | public CreakingHeart(String name, String axis, boolean active) {
11 | super(name, Texture.creakingHeartTop);
12 | this.model = new LogModel(
13 | axis,
14 | active ? Texture.creakingHeartActive : Texture.creakingHeart,
15 | active ? Texture.creakingHeartTopActive : Texture.creakingHeartTop
16 | );
17 | this.description = String.format("active=%s, axis=%s", active, axis);
18 | }
19 |
20 | @Override
21 | public String description() {
22 | return description;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/DragonEgg.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.DragonEggModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class DragonEgg extends AbstractModelBlock {
26 |
27 | public DragonEgg() {
28 | super("dragon_egg", Texture.dragonEgg);
29 | model = new DragonEggModel();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Dropper.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.resources.Texture;
22 |
23 | public class Dropper extends Dispenser {
24 |
25 | public Dropper(String facing) {
26 | super("dropper", facing, Texture.dropperFront, Texture.dropperFrontVertical,
27 | Texture.furnaceSide, Texture.furnaceTop);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/EndPortal.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.EndPortalModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class EndPortal extends AbstractModelBlock {
26 |
27 | public EndPortal() {
28 | super("end_portal", Texture.endPortal);
29 | model = new EndPortalModel();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Fern.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.GrassTintedSpriteModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class Fern extends AbstractModelBlock {
26 |
27 | public Fern() {
28 | super("fern", Texture.fern);
29 | solid = false;
30 | model = new GrassTintedSpriteModel(Texture.fern);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Fire.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.FireModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class Fire extends AbstractModelBlock {
26 |
27 | public Fire() {
28 | super("fire", Texture.fire);
29 | model = new FireModel(Texture.fireLayer0, Texture.fireLayer1);
30 | solid = false;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/FlowerPot.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.FlowerPotModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class FlowerPot extends AbstractModelBlock {
26 | public FlowerPot(String name, FlowerPotModel.Kind kind) {
27 | super(name, Texture.flowerPot);
28 | this.model = FlowerPotModel.forKind(kind);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Frogspawn.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.FrogspawnModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class Frogspawn extends AbstractModelBlock {
26 | public Frogspawn() {
27 | super("frogspawn", Texture.frogspawn);
28 | this.model = new FrogspawnModel();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Glass.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.MinecraftBlockTranslucent;
22 | import se.llbit.chunky.resources.Texture;
23 | import se.llbit.chunky.world.Material;
24 |
25 | public class Glass extends MinecraftBlockTranslucent {
26 | public Glass(String name, Texture texture) {
27 | super(name, texture);
28 | ior = 1.52f;
29 | }
30 |
31 | @Override
32 | public boolean isSameMaterial(Material other) {
33 | return other instanceof Glass && other.name.equals(this.name); // same name means same color
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Grass.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.GrassTintedSpriteModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class Grass extends AbstractModelBlock {
26 |
27 | public Grass() {
28 | super("short_grass", Texture.tallGrass);
29 | solid = false;
30 | model = new GrassTintedSpriteModel(texture);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/GrassBlock.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.GrassBlockModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class GrassBlock extends AbstractModelBlock {
26 |
27 | public GrassBlock() {
28 | super("grass_block", Texture.grassTop);
29 | model = new GrassBlockModel();
30 | opaque = true;
31 | solid = true;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/GrassPath.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.GrassPathModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class GrassPath extends AbstractModelBlock {
26 |
27 | public GrassPath() {
28 | super("grass_path", Texture.grassPathTop);
29 | model = new GrassPathModel();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/HeavyCore.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.minecraft;
2 |
3 | import se.llbit.chunky.block.AbstractModelBlock;
4 | import se.llbit.chunky.model.minecraft.HeavyCoreModel;
5 | import se.llbit.chunky.resources.Texture;
6 |
7 | public class HeavyCore extends AbstractModelBlock {
8 | public HeavyCore() {
9 | super("heavy_core", Texture.heavyCore);
10 | this.model = new HeavyCoreModel();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/LargeFern.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.GrassTintedSpriteModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class LargeFern extends AbstractModelBlock {
26 |
27 | public LargeFern(String half) {
28 | super("large_fern",
29 | half.equals("upper")
30 | ? Texture.largeFernTop
31 | : Texture.largeFernBottom);
32 | solid = false;
33 | model = new GrassTintedSpriteModel(texture);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/MangroveRoots.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.MangroveRootsModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class MangroveRoots extends AbstractModelBlock {
26 | public MangroveRoots() {
27 | super("mangrove_roots", Texture.mangroveRootsTop);
28 | this.model = new MangroveRootsModel();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/OpenEyeblossom.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.minecraft;
2 |
3 | import se.llbit.chunky.block.AbstractModelBlock;
4 | import se.llbit.chunky.model.minecraft.OpenEyeblossomModel;
5 | import se.llbit.chunky.resources.Texture;
6 | import se.llbit.chunky.world.Material;
7 | import se.llbit.chunky.world.material.TextureMaterial;
8 |
9 | public class OpenEyeblossom extends AbstractModelBlock {
10 | public static final Material emissiveMaterial = new TextureMaterial(Texture.openEyeblossomEmissive);
11 |
12 | public OpenEyeblossom() {
13 | super("open_eyeblossom", Texture.openEyeblossom);
14 | model = new OpenEyeblossomModel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/PaleMossCarpet.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.minecraft;
2 |
3 | import se.llbit.chunky.block.AbstractModelBlock;
4 | import se.llbit.chunky.model.minecraft.PaleMossCarpetModel;
5 | import se.llbit.chunky.resources.Texture;
6 |
7 | public class PaleMossCarpet extends AbstractModelBlock {
8 | private final String description;
9 |
10 | public PaleMossCarpet(String name, boolean bottom, String north, String east, String south, String west) {
11 | super(name, Texture.paleMossCarpet);
12 | this.model = new PaleMossCarpetModel(bottom, north, east, south, west);
13 | this.description = String.format("bottom=%s, north=%s, east=%s, south=%s, west=%s", bottom, north, east, south, west);
14 | }
15 |
16 | @Override
17 | public String description() {
18 | return description;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/PowderSnowCauldron.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.model.minecraft.CauldronModel;
22 | import se.llbit.chunky.renderer.scene.Scene;
23 | import se.llbit.chunky.resources.Texture;
24 | import se.llbit.math.Ray;
25 |
26 | public class PowderSnowCauldron extends Cauldron {
27 |
28 | public PowderSnowCauldron(int level) {
29 | super("powder_snow_cauldron", level);
30 | }
31 |
32 | @Override
33 | public boolean intersect(Ray ray, Scene scene) {
34 | return CauldronModel.intersect(ray, getLevel(), Texture.powderSnow);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/PressurePlate.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.PressurePlateModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class PressurePlate extends AbstractModelBlock {
26 |
27 | public PressurePlate(String name, Texture texture) {
28 | super(name, texture);
29 | model = new PressurePlateModel(texture);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/RedstoneLamp.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.MinecraftBlock;
22 | import se.llbit.chunky.resources.Texture;
23 |
24 | public class RedstoneLamp extends MinecraftBlock {
25 | private final boolean lit;
26 |
27 | public RedstoneLamp(boolean lit) {
28 | super("redstone_lamp", lit ? Texture.redstoneLampOn : Texture.redstoneLampOff);
29 | this.lit = lit;
30 | }
31 |
32 | public boolean isLit() {
33 | return lit;
34 | }
35 |
36 | @Override public String description() {
37 | return "lit=" + lit;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/ResinClump.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.minecraft;
2 |
3 | import se.llbit.chunky.block.AbstractModelBlock;
4 | import se.llbit.chunky.model.minecraft.ResinClumpModel;
5 | import se.llbit.chunky.resources.Texture;
6 |
7 | public class ResinClump extends AbstractModelBlock {
8 | private final String description;
9 |
10 | public ResinClump(boolean north, boolean south, boolean east, boolean west, boolean up,
11 | boolean down) {
12 | super("resin_clump", Texture.resinClump);
13 | this.description = String.format("north=%s, south=%s, east=%s, west=%s, up=%s, down=%s",
14 | north, south, east, west, up, down);
15 | this.model = new ResinClumpModel(north, south, east, west, up, down);
16 | }
17 |
18 | @Override
19 | public String description() {
20 | return description;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/SoulFire.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.FireModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class SoulFire extends AbstractModelBlock {
26 |
27 | public SoulFire() {
28 | super("soul_fire", Texture.soulFire);
29 | solid = false;
30 | model = new FireModel(Texture.soulFireLayer0, Texture.soulFireLayer1);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/SugarCane.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.GrassTintedSpriteModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class SugarCane extends AbstractModelBlock {
26 | public SugarCane() {
27 | super("sugar_cane", Texture.sugarCane);
28 | solid = false;
29 | model = new GrassTintedSpriteModel(Texture.sugarCane);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/TallGrass.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.GrassTintedSpriteModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | public class TallGrass extends AbstractModelBlock {
26 |
27 | public TallGrass(String half) {
28 | super("tall_grass",
29 | half.equals("upper")
30 | ? Texture.doubleTallGrassTop
31 | : Texture.doubleTallGrassBottom);
32 | solid = false;
33 | model = new GrassTintedSpriteModel(texture);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/TintedGlass.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.MinecraftBlockTranslucent;
22 | import se.llbit.chunky.resources.Texture;
23 |
24 | public class TintedGlass extends MinecraftBlockTranslucent {
25 |
26 | public TintedGlass() {
27 | super("tinted_glass", Texture.tintedGlass);
28 | ior = 1.52f;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Torch.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.block.AbstractModelBlock;
22 | import se.llbit.chunky.model.minecraft.TorchModel;
23 | import se.llbit.chunky.resources.Texture;
24 |
25 | /**
26 | * A standing torch (on ground).
27 | */
28 | public class Torch extends AbstractModelBlock {
29 |
30 | public Torch(String name, Texture texture) {
31 | super(name, texture);
32 | solid = false;
33 | model = new TorchModel(texture, "none");
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/TorchflowerCrop.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2023 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.block.minecraft;
20 |
21 | import se.llbit.chunky.resources.Texture;
22 |
23 | public class TorchflowerCrop extends SpriteBlock {
24 | public TorchflowerCrop(int age) {
25 | super("torchflower_crop", getTextureByAge(age));
26 | }
27 |
28 | protected static Texture getTextureByAge(int age) {
29 | switch (age) {
30 | case 1:
31 | return Texture.torchflowerCropStage1;
32 | case 0:
33 | default:
34 | return Texture.torchflowerCropStage0;
35 | }
36 | }
37 | }
38 |
39 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/TrialSpawner.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.minecraft;
2 |
3 | import se.llbit.chunky.block.AbstractModelBlock;
4 | import se.llbit.chunky.model.minecraft.TrialSpawnerModel;
5 |
6 | public class TrialSpawner extends AbstractModelBlock {
7 | private final String description;
8 |
9 | public TrialSpawner(boolean ominous, String trialSpawnerState) {
10 | super("trial_spawner", TrialSpawnerModel.getTopTexture(ominous, trialSpawnerState));
11 | this.description = "ominous=" + ominous + ", trial_spawner_state=" + trialSpawnerState;
12 | this.model = new TrialSpawnerModel(ominous, trialSpawnerState);
13 | }
14 |
15 | @Override
16 | public String description() {
17 | return description;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/block/minecraft/Vault.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.block.minecraft;
2 |
3 | import se.llbit.chunky.block.AbstractModelBlock;
4 | import se.llbit.chunky.model.minecraft.VaultModel;
5 |
6 | public class Vault extends AbstractModelBlock {
7 | private final String description;
8 |
9 | public Vault(String facing, boolean ominous, String vaultState) {
10 | super("vault", VaultModel.getTopTexture(ominous, vaultState));
11 | this.description = "facing=" + facing + ", ominous=" + ominous + ", vault_state=" + vaultState;
12 | this.model = new VaultModel(facing, ominous, vaultState);
13 | }
14 |
15 | @Override
16 | public String description() {
17 | return description;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/chunk/ChunkLoadingException.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.chunk;
2 |
3 | public class ChunkLoadingException extends Exception {
4 | public ChunkLoadingException(String message) {
5 | super(message);
6 | }
7 | public ChunkLoadingException(String message, Throwable cause) {
8 | super(message, cause);
9 | }
10 | }
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/chunk/TagBlockBuilder.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.chunk;
2 |
3 | import se.llbit.chunky.block.Block;
4 | import se.llbit.nbt.Tag;
5 |
6 | /** Callback for constructing blocks from tag block specifications. */
7 | public interface TagBlockBuilder {
8 | Block buildBlock(Tag tag);
9 | }
10 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/chunk/biome/BiomeData.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.chunk.biome;
2 |
3 | import se.llbit.chunky.world.Chunk;
4 |
5 | /**
6 | * Interface designed to allow for any biome data structure behind it
7 | *
8 | * Implementations expected to handle x/z values from 0-15
9 | * Implementations expected to gracefully handle ANY y values, though it does not need to support all values
10 | *
11 | * If a given y coordinate is outside of supported bounds, the implementation should return 0
12 | */
13 | public interface BiomeData {
14 | int QUART = 4;
15 | int QUART_BITS = 0x7;
16 |
17 | int SECTION_DIAMETER_IN_QUARTS = Chunk.X_MAX / QUART;
18 |
19 | /**
20 | * All coordinates must be chunk local block coordinates.
21 | * x & z 0 - 15
22 | */
23 | int getBiome(int chunkLocalX, int chunkLocalY, int chunkLocalZ);
24 |
25 | /**
26 | * All coordinates must be chunk local block coordinates.
27 | * x & z 0 - 15
28 | */
29 | void setBiomeAt(int chunkLocalX, int chunkLocalY, int chunkLocalZ, int biome);
30 |
31 | /**
32 | * Reset the internal data to the initial state
33 | */
34 | void clear();
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/chunk/biome/UnknownBiomeData.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.chunk.biome;
2 |
3 | import se.llbit.chunky.world.biome.BiomePalette;
4 | import se.llbit.chunky.world.biome.Biomes;
5 |
6 | public final class UnknownBiomeData implements BiomeData {
7 | /**
8 | * Singleton instance
9 | */
10 | public static final BiomeData INSTANCE = new UnknownBiomeData(0);
11 |
12 | private final int unknownPaletteId;
13 |
14 | private UnknownBiomeData(int unknownPaletteId) {
15 | this.unknownPaletteId = unknownPaletteId;
16 | }
17 |
18 | public static BiomeData instanceFor(BiomePalette biomePalette) {
19 | if(biomePalette.size() == 0) {
20 | biomePalette.put(Biomes.unknown);
21 | return UnknownBiomeData.INSTANCE;
22 | } else {
23 | return new UnknownBiomeData(biomePalette.put(Biomes.unknown));
24 | }
25 | }
26 |
27 | @Override
28 | public int getBiome(int chunkLocalX, int chunkLocalY, int chunkLocalZ) {
29 | return unknownPaletteId;
30 | }
31 |
32 | @Override
33 | public void setBiomeAt(int chunkLocalX, int chunkLocalY, int chunkLocalZ, int biome) { }
34 |
35 | @Override
36 | public void clear() { }
37 | }
38 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/entity/Armored.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.entity;
19 |
20 | import se.llbit.json.JsonObject;
21 |
22 | /**
23 | * API describing an entity that can wear armor.
24 | */
25 | public interface Armored {
26 | JsonObject getArmor();
27 | }
28 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/entity/Geared.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.entity;
19 |
20 | import se.llbit.json.JsonObject;
21 |
22 | /**
23 | * Interface for entities that can equip armor and hold items.
24 | */
25 | public interface Geared {
26 |
27 | /**
28 | * @return an array of the names of gear slots for this entity.
29 | */
30 | String[] gearSlots();
31 |
32 | JsonObject getGear();
33 |
34 | /**
35 | * Get the pose for one body part.
36 | */
37 | default JsonObject getGear(String slot) {
38 | return getGear().get(slot).object();
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/model/BlockModel.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.model;
2 |
3 | import se.llbit.chunky.plugin.PluginApi;
4 | import se.llbit.chunky.renderer.scene.Scene;
5 | import se.llbit.math.Ray;
6 | import se.llbit.math.Vector3;
7 |
8 | import java.util.List;
9 | import java.util.Random;
10 |
11 | @PluginApi
12 | public interface BlockModel {
13 |
14 | boolean intersect(Ray ray, Scene scene);
15 |
16 | int faceCount();
17 |
18 | void sample(int face, Vector3 loc, Random rand);
19 |
20 | double faceSurfaceArea(int face);
21 |
22 | boolean isBiomeDependant();
23 | }
24 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/model/GrassTintedSpriteModel.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2012 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.model;
18 |
19 | import se.llbit.chunky.model.minecraft.SpriteModel;
20 | import se.llbit.chunky.resources.Texture;
21 |
22 | public class GrassTintedSpriteModel extends SpriteModel {
23 |
24 | private static final Tint[] tinting = new Tint[]{
25 | Tint.BIOME_GRASS, Tint.BIOME_GRASS, Tint.BIOME_GRASS, Tint.BIOME_GRASS
26 | };
27 |
28 | public GrassTintedSpriteModel(Texture texture) {
29 | super(texture);
30 | }
31 |
32 | @Override
33 | public Tint[] getTints() {
34 | return tinting;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/plugin/ContextMenuTransformer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2022 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky.plugin;
20 |
21 | import javafx.scene.control.ContextMenu;
22 |
23 | import java.util.function.Consumer;
24 |
25 | @FunctionalInterface
26 | public interface ContextMenuTransformer extends Consumer {
27 | }
28 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/plugin/PluginApi.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2021 Chunky contributors
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 |
18 | package se.llbit.chunky.plugin;
19 |
20 | /** Mark something that is only used by plugins. Check before removing/modifying anything marked with this. */
21 | public @interface PluginApi {
22 | }
23 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/plugin/TabTransformer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2017 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.plugin;
19 |
20 | import javafx.scene.control.Tab;
21 |
22 | import java.util.Collection;
23 | import java.util.function.Function;
24 |
25 | /**
26 | * Interface for plugins to transform the tabs of the main Chunky window.
27 | */
28 | public interface TabTransformer extends Function, Collection> {
29 | }
30 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/plugin/loader/PluginLoader.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.plugin.loader;
2 |
3 | import se.llbit.chunky.Plugin;
4 | import se.llbit.chunky.plugin.PluginApi;
5 | import se.llbit.chunky.plugin.manifest.PluginManifest;
6 |
7 | import java.util.function.BiConsumer;
8 |
9 | @PluginApi
10 | public interface PluginLoader {
11 | /**
12 | * Load the plugin specified in the manifest
13 | * @param onLoad The consumer to call with the loaded plugin
14 | * @param pluginManifest The plugin to load.
15 | */
16 | @PluginApi
17 | void load(BiConsumer onLoad, PluginManifest pluginManifest);
18 | }
19 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/plugin/manifest/PluginDependency.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.plugin.manifest;
2 |
3 | import org.apache.maven.artifact.versioning.VersionRange;
4 |
5 | /**
6 | * An unresolved plugin dependency within a plugin manifest.
7 | */
8 | public class PluginDependency {
9 | public final String name;
10 | public final VersionRange version;
11 |
12 | public PluginDependency(String name, VersionRange version) {
13 | this.name = name;
14 | this.version = version;
15 | }
16 |
17 | @Override
18 | public String toString() {
19 | return name + ":" + version;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/ApertureShape.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2022 Chunky contributors
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer;
18 |
19 | public enum ApertureShape {
20 | CIRCLE,
21 | HEXAGON("hexagon-aperture.png"),
22 | PENTAGON("pentagon-aperture.png"),
23 | STAR("star-aperture.png"),
24 | GAUSSIAN("gaussian-aperture.png"),
25 | CUSTOM;
26 |
27 | private final String resourceName;
28 |
29 | ApertureShape() {
30 | resourceName = null;
31 | }
32 |
33 | ApertureShape(String resourceName) {
34 | this.resourceName = resourceName;
35 | }
36 |
37 | public String getResourceName() {
38 | return resourceName;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/CameraViewListener.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2019 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer;
18 |
19 | /** Interface for listening to view changes for the current 3D camera. */
20 | public interface CameraViewListener {
21 | /** Callback for when the camera view has changed. */
22 | void cameraViewUpdated();
23 | }
24 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/ChunkViewListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2016 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.renderer;
19 |
20 | import se.llbit.chunky.world.ChunkView;
21 |
22 | /**
23 | * Interface for listening to 2D world map view changes.
24 | */
25 | public interface ChunkViewListener {
26 | /**
27 | * Callback for when the view has changed (moved or scaled).
28 | */
29 | void viewUpdated(ChunkView view);
30 | }
31 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/EmitterSamplingStrategy.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer;
2 |
3 | import se.llbit.util.Registerable;
4 |
5 | public enum EmitterSamplingStrategy implements Registerable {
6 | NONE("None", "No emitter sampling."),
7 | ONE("One", "Sample a single face."),
8 | ONE_BLOCK("One Block", "Sample all the faces on a single emitter block."),
9 | ALL("All", "Sample all faces on all emitter blocks.");
10 |
11 | private final String name;
12 | private final String description;
13 |
14 | EmitterSamplingStrategy(String name, String description) {
15 | this.name = name;
16 | this.description = description;
17 | }
18 |
19 | @Override
20 | public String getName() {
21 | return name;
22 | }
23 |
24 | @Override
25 | public String getDescription() {
26 | return description;
27 | }
28 |
29 | @Override
30 | public String getId() {
31 | return this.name();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/RayTracerFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2016 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.renderer;
19 |
20 | import se.llbit.chunky.renderer.scene.RayTracer;
21 |
22 | public interface RayTracerFactory {
23 | RayTracer newRayTracer();
24 | }
25 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/Refreshable.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2012 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer;
18 |
19 | /**
20 | * Refreshable interface.
21 | *
22 | * @author Jesper Öqvist
23 | */
24 | public interface Refreshable {
25 | /**
26 | * Refresh the refreshable object.
27 | */
28 | void refresh();
29 | }
30 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/RenderContextFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2016 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.renderer;
19 |
20 | import se.llbit.chunky.main.Chunky;
21 | import se.llbit.chunky.main.ChunkyOptions;
22 |
23 | public interface RenderContextFactory {
24 | RenderContext newRenderContext(Chunky chunky);
25 | }
26 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/RenderManagerFactory.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2016-2021 Jesper Öqvist
2 | * Copyright (c) 2016-2021 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.renderer;
19 |
20 | public interface RenderManagerFactory {
21 | RenderManager newRenderManager(RenderContext context, boolean headless);
22 | }
23 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/RenderMode.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2016 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer;
18 |
19 | public enum RenderMode {
20 | PREVIEW,
21 | RENDERING,
22 | PAUSED,
23 | }
24 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/RenderStatus.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2016 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.renderer;
19 |
20 | public class RenderStatus {
21 |
22 | private final long renderTime;
23 | private final int spp;
24 |
25 | public RenderStatus(long time, int spp) {
26 | this.renderTime = time;
27 | this.spp = spp;
28 | }
29 |
30 | /**
31 | * @return the total render time in milliseconds.
32 | */
33 | public long getRenderTime() {
34 | return renderTime;
35 | }
36 |
37 | /**
38 | * @return the current samples per pixel.
39 | */
40 | public int getSpp() {
41 | return spp;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/Repaintable.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2012-2016 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer;
18 |
19 | /**
20 | * Interface for render canvas which displays a rendered image.
21 | *
22 | * @author Jesper Öqvist
23 | */
24 | public interface Repaintable {
25 | /**
26 | * Trigger a repaint of the canvas.
27 | *
28 | * The canvas will try to repaint itself when feasible.
29 | */
30 | void repaint();
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/SceneStatusListener.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2015 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer;
18 |
19 | public interface SceneStatusListener {
20 | void sceneStatus(String status);
21 | }
22 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/WorkerState.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2014 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer;
18 |
19 | import se.llbit.math.Ray;
20 | import se.llbit.math.Vector4;
21 |
22 | import java.util.Random;
23 |
24 | /**
25 | * State for a render worker.
26 | */
27 | public class WorkerState {
28 | public Ray ray;
29 | public Vector4 attenuation = new Vector4();
30 | public Random random;
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/postprocessing/ACESFilmicFilter.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.postprocessing;
2 |
3 | import org.apache.commons.math3.util.FastMath;
4 | import se.llbit.chunky.renderer.scene.Scene;
5 | import se.llbit.math.QuickMath;
6 |
7 | /**
8 | * Implementation of ACES filmic tone mapping
9 | * @link https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/
10 | */
11 | public class ACESFilmicFilter extends SimplePixelPostProcessingFilter {
12 | private static final float aces_a = 2.51f;
13 | private static final float aces_b = 0.03f;
14 | private static final float aces_c = 2.43f;
15 | private static final float aces_d = 0.59f;
16 | private static final float aces_e = 0.14f;
17 |
18 | @Override
19 | public void processPixel(double[] pixel) {
20 | for(int i = 0; i < 3; ++i) {
21 | pixel[i] = QuickMath.max(QuickMath.min((pixel[i] * (aces_a * pixel[i] + aces_b)) / (pixel[i] * (aces_c * pixel[i] + aces_d) + aces_e), 1), 0);
22 | pixel[i] = FastMath.pow(pixel[i], 1 / Scene.DEFAULT_GAMMA);
23 | }
24 | }
25 |
26 | @Override
27 | public String getName() {
28 | return "ACES filmic tone mapping";
29 | }
30 |
31 | @Override
32 | public String getId() {
33 | return "TONEMAP2";
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/postprocessing/GammaCorrectionFilter.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.postprocessing;
2 |
3 | import org.apache.commons.math3.util.FastMath;
4 | import se.llbit.chunky.renderer.scene.Scene;
5 |
6 | public class GammaCorrectionFilter extends SimplePixelPostProcessingFilter {
7 | @Override
8 | public void processPixel(double[] pixel) {
9 | for(int i = 0; i < 3; ++i) {
10 | pixel[i] = FastMath.pow(pixel[i], 1 / Scene.DEFAULT_GAMMA);
11 | }
12 | }
13 |
14 | @Override
15 | public String getName() {
16 | return "Gamma correction";
17 | }
18 |
19 | @Override
20 | public String getId() {
21 | return "GAMMA";
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/postprocessing/NoneFilter.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.postprocessing;
2 |
3 | public class NoneFilter extends SimplePixelPostProcessingFilter {
4 | @Override
5 | public void processPixel(double[] pixel) {
6 | }
7 |
8 | @Override
9 | public String getName() {
10 | return "None";
11 | }
12 |
13 | @Override
14 | public String getId() {
15 | return "NONE";
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/postprocessing/PixelPostProcessingFilter.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.postprocessing;
2 |
3 | import se.llbit.chunky.plugin.PluginApi;
4 |
5 | /**
6 | * Post-processing filter that supports processing one pixel at a time.
7 | */
8 | @PluginApi
9 | public interface PixelPostProcessingFilter extends PostProcessingFilter {
10 | /**
11 | * Post process a single pixel
12 | * @param width The width of the image
13 | * @param height The height of the image
14 | * @param input The input linear image as double array
15 | * @param x The x position of the pixel to process
16 | * @param y The y position of the pixel to process
17 | * @param exposure The exposure value
18 | * @param output The output buffer for the processed pixel
19 | */
20 | void processPixel(int width, int height, double[] input, int x, int y, double exposure, double[] output);
21 | }
22 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/postprocessing/PreviewFilter.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.postprocessing;
2 |
3 | import org.apache.commons.math3.util.FastMath;
4 |
5 | public class PreviewFilter extends SimplePixelPostProcessingFilter {
6 | public static final PreviewFilter INSTANCE = new PreviewFilter();
7 |
8 | @Override
9 | public void processPixel(double[] pixel) {
10 | for(int i = 0; i < 3; ++i) {
11 | pixel[i] = FastMath.sqrt(pixel[i]);
12 | }
13 | }
14 |
15 | @Override
16 | public String getName() {
17 | return null;
18 | }
19 |
20 | @Override
21 | public String getId() {
22 | return null;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/postprocessing/Tonemap1Filter.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.postprocessing;
2 |
3 | import se.llbit.math.QuickMath;
4 |
5 | /**
6 | * Implementation of the tone mapping operator from Jim Hejl and Richard Burgess-Dawson
7 | * @link http://filmicworlds.com/blog/filmic-tonemapping-operators/
8 | */
9 | public class Tonemap1Filter extends SimplePixelPostProcessingFilter {
10 | @Override
11 | public void processPixel(double[] pixel) {
12 | for(int i = 0; i < 3; ++i) {
13 | pixel[i] = QuickMath.max(0, pixel[i] - 0.004);
14 | pixel[i] = (pixel[i] * (6.2 * pixel[i] + .5)) / (pixel[i] * (6.2 * pixel[i] + 1.7) + 0.06);
15 | }
16 | }
17 |
18 | @Override
19 | public String getName() {
20 | return "Tonemap operator 1";
21 | }
22 |
23 | @Override
24 | public String getId() {
25 | return "TONEMAP1";
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/projection/ShiftProjector.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.projection;
2 |
3 | import java.util.Random;
4 | import se.llbit.math.Vector3;
5 |
6 | public class ShiftProjector implements Projector {
7 | private final Projector wrapped;
8 | private final double shiftX;
9 | private final double shiftY;
10 |
11 | public ShiftProjector(Projector wrapped, double shiftX, double shiftY) {
12 | this.wrapped = wrapped;
13 | this.shiftX = shiftX;
14 | this.shiftY = shiftY;
15 | }
16 |
17 | @Override
18 | public void apply(double x, double y, Random random, Vector3 pos, Vector3 direction) {
19 | wrapped.apply(x + shiftX, y - shiftY, random, pos, direction);
20 | }
21 |
22 | @Override
23 | public void apply(double x, double y, Vector3 pos, Vector3 direction) {
24 | wrapped.apply(x + shiftX, y - shiftY, pos, direction);
25 | }
26 |
27 | @Override
28 | public double getMinRecommendedFoV() {
29 | return wrapped.getMinRecommendedFoV();
30 | }
31 |
32 | @Override
33 | public double getMaxRecommendedFoV() {
34 | return wrapped.getMaxRecommendedFoV();
35 | }
36 |
37 | @Override
38 | public double getDefaultFoV() {
39 | return wrapped.getDefaultFoV();
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/renderdump/PixelConsumer.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2021 Chunky contributors
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer.renderdump;
18 |
19 | @FunctionalInterface
20 | public interface PixelConsumer {
21 | /**
22 | * @param pixelIndex Index of pixel between 0 and canvas.width*canvas.height (* 3 for index in sampleBuffer)
23 | * @param r Red pixel value
24 | * @param g Green pixel value
25 | * @param b Blue pixel value
26 | */
27 | void consume(int pixelIndex, double r, double g, double b);
28 | }
29 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/scene/ChunkFinalizer.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.scene;
2 |
3 | public class ChunkFinalizer {
4 | }
5 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/scene/FogLayer.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.scene;
2 |
3 | public final class FogLayer {
4 | public static final double DEFAULT_Y = 62;
5 | public static final double DEFAULT_BREADTH = 5;
6 | public static final double DEFAULT_DENSITY = 1;
7 | public double yMin, y, yWithOrigin, breadth, breadthInv, density;
8 |
9 | public FogLayer(double y, double breadth, double density, Scene scene) {
10 | this(y, breadth, density, scene.yMin);
11 | }
12 |
13 | public FogLayer(Scene scene) {
14 | this(DEFAULT_Y, DEFAULT_BREADTH, DEFAULT_DENSITY, scene.yMin);
15 | }
16 |
17 | private FogLayer(double y, double breadth, double density, double yMin) {
18 | this.yMin = yMin;
19 | setY(y);
20 | setBreadth(breadth);
21 | setDensity(density);
22 | }
23 |
24 | public void setY(double y) {
25 | this.y = y;
26 | this.yWithOrigin = y - yMin;
27 | }
28 |
29 | public void setBreadth(double breadth) {
30 | this.breadth = breadth;
31 | this.breadthInv = 1 / breadth;
32 | }
33 |
34 | public void setDensity(double density) {
35 | this.density = density;
36 | }
37 |
38 | public FogLayer clone() {
39 | return new FogLayer(y, breadth, density, yMin);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/scene/FogMode.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.renderer.scene;
2 |
3 | public enum FogMode {
4 | NONE, UNIFORM, LAYERED;
5 |
6 | public static FogMode get(String name) {
7 | try {
8 | return valueOf(name);
9 | } catch (IllegalArgumentException e) {
10 | return NONE;
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/scene/PlayerModel.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2015 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer.scene;
18 |
19 | public enum PlayerModel {
20 | STEVE {
21 | @Override public String toString() {
22 | return "Steve";
23 | }
24 | },
25 | ALEX {
26 | @Override public String toString() {
27 | return "Alex";
28 | }
29 | };
30 |
31 | public static final PlayerModel DEFAULT = STEVE;
32 |
33 | public static PlayerModel get(String name) {
34 | for (PlayerModel mode : values()) {
35 | if (mode.name().equals(name)) {
36 | return mode;
37 | }
38 | }
39 | return DEFAULT;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/scene/RayTracer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2016 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.renderer.scene;
19 |
20 | import se.llbit.chunky.renderer.WorkerState;
21 |
22 | /**
23 | * Interface for stateless ray tracers.
24 | * Plugins that want to modify how the scene is rendered should
25 | * implement this interface and call {@code Chunky.setRayTracerFactory(Plugin::new)}.
26 | *
27 | *
The worker and scene state is passed to the ray tracer during rendering.
28 | */
29 | public interface RayTracer {
30 | void trace(Scene scene, WorkerState state);
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/scene/RenderResetHandler.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2016 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer.scene;
18 |
19 | /**
20 | * Functional interface for handling render reset requests.
21 | */
22 | public interface RenderResetHandler {
23 | boolean allowSceneRefresh();
24 | }
25 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/renderer/scene/WaterShader.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2012-2021 Chunky contributors
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.renderer.scene;
18 |
19 | import se.llbit.json.JsonObject;
20 | import se.llbit.math.Ray;
21 |
22 | public interface WaterShader {
23 | void doWaterShading(Ray ray, double animationTime);
24 |
25 | WaterShader clone();
26 | void save(JsonObject json);
27 | void load(JsonObject json);
28 | }
29 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/resources/ShulkerTexture.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2016 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.resources;
19 |
20 | public class ShulkerTexture {
21 | public Texture side = new Texture();
22 | public Texture top = new Texture();
23 | public Texture bottom = new Texture();
24 | }
25 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/resources/SolidColorTexture.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2019 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.resources;
18 |
19 | import se.llbit.math.ColorUtil;
20 | import se.llbit.math.Vector4;
21 |
22 | public class SolidColorTexture extends Texture {
23 |
24 | private final Vector4 color;
25 |
26 | public SolidColorTexture(Vector4 color) {
27 | this.color = color;
28 | this.avgColor = ColorUtil.getArgb(color);
29 | }
30 |
31 | @Override public void getColor(double u, double v, Vector4 c) {
32 | c.set(color);
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/resources/texturepack/TextureFormatError.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2013 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.resources.texturepack;
18 |
19 | /**
20 | * @author Jesper Öqvist
21 | */
22 | public class TextureFormatError extends Exception {
23 | public TextureFormatError(String message) {
24 | super(message);
25 | }
26 |
27 | @Override public String getMessage() {
28 | return "Texture format error: " + super.getMessage();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/resources/texturepack/TexturePath.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.resources.texturepack;
2 |
3 | import java.lang.annotation.Retention;
4 | import java.lang.annotation.RetentionPolicy;
5 |
6 | @Retention(RetentionPolicy.RUNTIME)
7 | public @interface TexturePath {
8 | String value();
9 | }
10 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/ui/HyperlinkMenuItem.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.ui;
2 |
3 | import javafx.scene.control.MenuItem;
4 |
5 | public class HyperlinkMenuItem extends MenuItem {
6 |
7 | private String link;
8 |
9 | public HyperlinkMenuItem() {
10 | setOnAction(e -> {
11 | ChunkyFx.openUrl(link);
12 | });
13 | }
14 |
15 | public String getLink() {
16 | return link;
17 | }
18 |
19 | public void setLink(String link) {
20 | this.link = link;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/ui/render/RenderControlsTabTransformer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2016 Jesper Öqvist
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.chunky.ui.render;
19 |
20 | import java.util.Collection;
21 | import java.util.function.Function;
22 |
23 | /**
24 | * Interface for plugins to transform the tabs in the Render Controls dialog.
25 | */
26 | @FunctionalInterface
27 | public interface RenderControlsTabTransformer extends
28 | Function, Collection> {
29 | }
30 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/ChunkSelectionListener.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2016 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.world;
18 |
19 | public interface ChunkSelectionListener {
20 | void chunkSelectionChanged();
21 | }
22 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/ChunkVersion.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.world;
2 |
3 | public enum ChunkVersion {
4 | /**
5 | * Unknown chunk version
6 | */
7 | UNKNOWN,
8 | /**
9 | * Pre-flattening chunk (1.12 or older).
10 | */
11 | PRE_FLATTENING,
12 | /**
13 | * Post-flattening chunk (1.13 or later).
14 | */
15 | POST_FLATTENING
16 | }
17 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/EmptyDimension.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.world;
2 |
3 | import java.util.Collections;
4 |
5 | public class EmptyDimension extends Dimension {
6 | public static final EmptyDimension INSTANCE = new EmptyDimension();
7 |
8 | private EmptyDimension() {
9 | super(EmptyWorld.INSTANCE, 0, null, Collections.emptySet(), -1);
10 | }
11 |
12 | @Override public String toString() {
13 | return "[empty dimension]";
14 | }
15 |
16 | }
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/MaterialStore.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2019 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.world;
18 |
19 | import java.util.Collection;
20 | import java.util.HashSet;
21 | import java.util.LinkedHashMap;
22 | import java.util.Map;
23 | import se.llbit.chunky.block.Block;
24 |
25 | // TODO: introduce block tags
26 | public class MaterialStore {
27 | public static final Map> collections = new LinkedHashMap<>();
28 | public static final Collection blockIds = new HashSet<>();
29 | }
30 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/biome/BiomePalette.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.world.biome;
2 |
3 | public interface BiomePalette {
4 | Biome get(int id);
5 |
6 | int put(Biome biome);
7 |
8 | int size();
9 | }
10 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/listeners/ChunkDeletionListener.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2012 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.world.listeners;
18 |
19 | import se.llbit.chunky.world.ChunkPosition;
20 |
21 | public interface ChunkDeletionListener {
22 | void chunkDeleted(ChunkPosition chunk);
23 | }
24 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/listeners/ChunkTopographyListener.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2014 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.world.listeners;
18 |
19 | import se.llbit.chunky.world.Chunk;
20 |
21 | public interface ChunkTopographyListener {
22 | void chunksTopographyUpdated(Chunk chunk);
23 | }
24 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/material/CloudMaterial.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2019 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.world.material;
18 |
19 | import se.llbit.chunky.resources.Texture;
20 | import se.llbit.chunky.world.Material;
21 |
22 | public class CloudMaterial extends Material {
23 | public static final CloudMaterial INSTANCE = new CloudMaterial();
24 | public static float[] color = {1, 1, 1, 1};
25 |
26 | private CloudMaterial() {
27 | super("cloud", Texture.air);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/material/TextureMaterial.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2015 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.world.material;
18 |
19 | import se.llbit.chunky.resources.Texture;
20 | import se.llbit.chunky.world.Material;
21 |
22 | public class TextureMaterial extends Material {
23 |
24 | public TextureMaterial(Texture texture) {
25 | super("texture", texture);
26 |
27 | if (texture == null) {
28 | throw new NullPointerException("Texture material may not have a null texture.");
29 | }
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/chunky/world/region/ChunkReadException.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.world.region;
2 |
3 | import se.llbit.chunky.world.ChunkPosition;
4 |
5 | import java.io.IOException;
6 |
7 | public class ChunkReadException extends IOException {
8 | private final ChunkPosition chunkPosition;
9 |
10 | public ChunkReadException(
11 | ChunkPosition chunkPosition,
12 | String message
13 | ) {
14 | this(chunkPosition, message, null);
15 | }
16 |
17 | public ChunkReadException(
18 | ChunkPosition chunkPosition,
19 | Throwable cause
20 | ) {
21 | this(chunkPosition, null, cause);
22 | }
23 |
24 | public ChunkReadException(
25 | ChunkPosition chunkPosition,
26 | String message,
27 | Throwable cause
28 | ) {
29 | super(message, cause);
30 | this.chunkPosition = chunkPosition;
31 | }
32 |
33 | public ChunkPosition getChunkPosition() {
34 | return chunkPosition;
35 | }
36 |
37 | @Override
38 | public String toString() {
39 | return (getMessage() == null)
40 | ? String.format(
41 | "Failed to read chunk %s",
42 | chunkPosition
43 | )
44 | : String.format(
45 | "Failed to read chunk %s - %s",
46 | chunkPosition,
47 | getMessage()
48 | );
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/fxutil/FxImageUtil.java:
--------------------------------------------------------------------------------
1 | package se.llbit.fxutil;
2 |
3 | import javafx.scene.image.Image;
4 | import javafx.scene.image.PixelFormat;
5 | import javafx.scene.image.WritableImage;
6 | import se.llbit.chunky.resources.BitmapImage;
7 |
8 | public class FxImageUtil {
9 |
10 | /**
11 | * @return a JavaFX version of a BitmapImage.
12 | */
13 | public static Image toFxImage(BitmapImage image) {
14 | WritableImage fxImage = new WritableImage(image.width, image.height);
15 | fxImage.getPixelWriter().setPixels(0, 0, image.width, image.height,
16 | PixelFormat.getIntArgbInstance(), image.data, 0, image.width);
17 | return fxImage;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/imageformats/png/IDAT.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2012 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.imageformats.png;
18 |
19 | /**
20 | * PNG IDAT chunk constants.
21 | *
22 | * @author Jesper Öqvist
23 | */
24 | public interface IDAT {
25 |
26 | /** PNG chunk type ID. */
27 | int CHUNK_TYPE = 0x49444154;
28 |
29 | /** The filter type for no filter. */
30 | int FILTER_TYPE_NONE = 0;
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/imageformats/tiff/CompressionType.java:
--------------------------------------------------------------------------------
1 | package se.llbit.imageformats.tiff;
2 |
3 | import java.io.DataOutputStream;
4 | import java.io.IOException;
5 | import java.util.zip.Deflater;
6 | import java.util.zip.DeflaterOutputStream;
7 |
8 | public enum CompressionType {
9 | NONE(0x0001),
10 | DEFLATE(0x80B2);
11 |
12 | final short id;
13 |
14 | CompressionType(int id) {
15 | this.id = (short) id;
16 | }
17 |
18 | void writePixelData(
19 | FinalizableBFCOutputStream out,
20 | ImageFileDirectory.PixelDataWriter writer
21 | ) throws IOException {
22 | switch (this) {
23 | case NONE:
24 | writer.writePixelData(out);
25 | out.flush();
26 | break;
27 |
28 | case DEFLATE:
29 | Deflater deflater = new Deflater(Deflater.BEST_COMPRESSION, false);
30 | DeflaterOutputStream deflOut = new DeflaterOutputStream(out, deflater, 16 * 1024, true);
31 | writer.writePixelData(new DataOutputStream(deflOut));
32 | deflOut.finish();
33 | deflater.end();
34 | break;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/math/Constants.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2014 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.math;
18 |
19 | public class Constants {
20 | public static final double HALF_PI = Math.PI / 2;
21 | // TODO INV_TAU
22 | public static final double TAU = Math.PI * 2;
23 | public static final double SQRT_HALF = Math.sqrt(0.5);
24 | public static final double INV_SQRT_HALF = 1 / Math.sqrt(0.5);
25 | }
26 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/math/Intersectable.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2014-2021 Jesper Öqvist
2 | * Copyright (c) 2014-2021 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 | package se.llbit.math;
19 |
20 | /**
21 | * Anything which can intersect a ray in space.
22 | */
23 | public interface Intersectable {
24 | /**
25 | * Find closest intersection between the ray and this.
26 | *
27 | * @return {@code true} if there exists any intersection
28 | */
29 | boolean closestIntersection(Ray ray);
30 | }
31 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/math/OctreeVisitor.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2014 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.math;
18 |
19 | /**
20 | * Visitor interface for Octrees.
21 | *
22 | * @author Jesper Öqvist
23 | */
24 | public interface OctreeVisitor {
25 | /**
26 | * This is called once for each leaf nod in the octree
27 | *
28 | * @param data the data of the octree node
29 | * @param x x prefix
30 | * @param y y prefix
31 | * @param z z prefix
32 | * @param size the bit size of the leaf node
33 | */
34 | void visit(int data, int x, int y, int z, int size);
35 | }
36 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/math/primitive/Primitive.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2014 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.math.primitive;
18 |
19 | import se.llbit.math.AABB;
20 | import se.llbit.math.Ray;
21 |
22 | /**
23 | * An intersectable primitive piece of geometry
24 | *
25 | * @author Jesper Öqvist
26 | */
27 | public interface Primitive {
28 |
29 | /**
30 | * Intersect the ray with this geometry.
31 | *
32 | * @return {@code true} if there was an intersection
33 | */
34 | boolean intersect(Ray ray);
35 |
36 | /**
37 | * @return axis-aligned bounding box for the primitive
38 | */
39 | AABB bounds();
40 | }
41 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/math/structures/Position2IntStructure.java:
--------------------------------------------------------------------------------
1 | package se.llbit.math.structures;
2 |
3 | public interface Position2IntStructure {
4 | /**
5 | * @param x World X.
6 | * @param y World Y.
7 | * @param z World Z.
8 | */
9 | void set(int x, int y, int z, int data);
10 |
11 | /**
12 | * @param x World X.
13 | * @param y World Y.
14 | * @param z World Z.
15 | */
16 | int get(int x, int y, int z);
17 | }
18 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/math/structures/Position2ReferenceStructure.java:
--------------------------------------------------------------------------------
1 | package se.llbit.math.structures;
2 |
3 | public interface Position2ReferenceStructure {
4 | void set(int x, int y, int z, T data);
5 |
6 | T get(int x, int y, int z);
7 | }
8 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/math/structures/Position2d2IntPackedArray.java:
--------------------------------------------------------------------------------
1 | package se.llbit.math.structures;
2 |
3 | import it.unimi.dsi.fastutil.longs.Long2ReferenceMap;
4 | import it.unimi.dsi.fastutil.longs.Long2ReferenceOpenHashMap;
5 |
6 | public class Position2d2IntPackedArray implements Position2IntStructure {
7 |
8 | protected final Long2ReferenceMap structure = new Long2ReferenceOpenHashMap<>();
9 |
10 | private long packedSectionPos(int cx, int cz) {
11 | return (cz & 0xFFFFFFFFL) | (cx & 0xFFFFFFFFL) << 32;
12 | }
13 |
14 | private int packedIndex(int x, int y, int z) {
15 | x &= 0xf;
16 | z &= 0xf;
17 | return x + 16 * z;
18 | }
19 |
20 | @Override
21 | public void set(int x, int y, int z, int data) {
22 | int cx = x >> 4;
23 | int cz = z >> 4;
24 | long sp = packedSectionPos(cx, cz);
25 | this.structure.computeIfAbsent(sp, sectionPos -> new int[16 * 16])[packedIndex(x, y, z)] = data;
26 | }
27 |
28 | @Override
29 | public int get(int x, int y, int z) {
30 | int cx = x >> 4;
31 | int cz = z >> 4;
32 | long sp = packedSectionPos(cx, cz);
33 | int[] ints = this.structure.get(sp);
34 | if(ints == null) {
35 | return 0;
36 | }
37 | return ints[packedIndex(x, y ,z)];
38 | }
39 | }
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/math/structures/Position2d2ReferencePackedArrayStructure.java:
--------------------------------------------------------------------------------
1 | package se.llbit.math.structures;
2 |
3 | import it.unimi.dsi.fastutil.longs.Long2ReferenceMap;
4 | import it.unimi.dsi.fastutil.longs.Long2ReferenceOpenHashMap;
5 |
6 | public class Position2d2ReferencePackedArrayStructure implements Position2ReferenceStructure {
7 |
8 | protected final Long2ReferenceMap map = new Long2ReferenceOpenHashMap<>();
9 |
10 | private long packedSectionPos(int cx, int cz) {
11 | return (cz & 0xFFFFFFFFL) | (cx & 0xFFFFFFFFL) << 32;
12 | }
13 |
14 | private int packedIndex(int x, int y, int z) {
15 | x &= 0xf;
16 | z &= 0xf;
17 | return x + 16 * z;
18 | }
19 |
20 | @Override
21 | public void set(int x, int y, int z, T data) {
22 | int cx = x >> 4;
23 | int cz = z >> 4;
24 | long sp = packedSectionPos(cx, cz);
25 | this.map.computeIfAbsent(sp, sectionPos -> (T[]) new Object[16 * 16])[packedIndex(x, y, z)] = data;
26 | }
27 |
28 | @Override
29 | public T get(int x, int y, int z) {
30 | int cx = x >> 4;
31 | int cz = z >> 4;
32 | long sp = packedSectionPos(cx, cz);
33 | T[] tArray = this.map.get(sp);
34 | if(tArray == null) {
35 | return null;
36 | }
37 | T t = tArray[packedIndex(x, y, z)];
38 | return t;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/Configurable.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util;
2 |
3 | import se.llbit.json.JsonObject;
4 |
5 | /**
6 | * This interface specifies an object that can be configured by the user.
7 | * This would be, for example, a post processing method.
8 | */
9 | public interface Configurable {
10 | /**
11 | * Load the configuration from the given JSON object that may have been created by {@link #storeConfiguration(JsonObject)}
12 | * but may as well have been created by external tools.
13 | *
14 | * @param json Source object
15 | */
16 | void loadConfiguration(JsonObject json);
17 |
18 | /**
19 | * Store the configuration in the given JSON object such that it can be loaded later with {@link #loadConfiguration(JsonObject)}.
20 | *
21 | * @param json Destination object
22 | */
23 | void storeConfiguration(JsonObject json);
24 |
25 | /**
26 | * Restore the default configuration.
27 | */
28 | void reset();
29 | }
30 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/JsonSerializable.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2013 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.util;
18 |
19 | import se.llbit.json.JsonObject;
20 |
21 | /**
22 | * Classes implementing this interface can be serialized to JSON.
23 | *
24 | * @author Jesper Öqvist
25 | */
26 | public interface JsonSerializable {
27 | /**
28 | * Serialize this object to a JSON object.
29 | *
30 | * @return JSON object
31 | */
32 | JsonObject toJson();
33 | }
34 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/MinecraftPRNG.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2019 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.util;
18 |
19 | /**
20 | * Pseudo-random number generator matching that used in Minecraft
21 | * for lilypad rotations.
22 | */
23 | public class MinecraftPRNG {
24 | /**
25 | * Get a random number based on a 3D world position.
26 | */
27 | public static long rand(long x, long y, long z) {
28 | long pr = (x * 3129871L) ^ (z * 116129781L) ^ y;
29 | return pr * pr * 42317861L + pr * 11L;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/MinecraftText.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util;
2 |
3 | public class MinecraftText {
4 | public static String removeFormatChars(String input) {
5 | return input.replaceAll("\\u00c2?§[0-9a-fklmnor]", "");
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/Registerable.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util;
2 |
3 | /**
4 | * This interface specifies a Registerable object that can be switched by the user.
5 | * This would be, for example, different Octree implementations.
6 | */
7 | public interface Registerable {
8 | enum DeprecationStatus {
9 | /**
10 | * Not deprecated.
11 | */
12 | ACTIVE,
13 | /**
14 | * Deprecated. Use is discouraged but not hidden.
15 | */
16 | DEPRECATED,
17 | /**
18 | * Deprecated. This option should be hidden.
19 | */
20 | HIDDEN,
21 | }
22 |
23 | /**
24 | * Get the pretty name of this object.
25 | * For example, "Chunky Path Tracer".
26 | */
27 | String getName();
28 |
29 | /**
30 | * Get the description of this object.
31 | * For example, "A photorealistic Path Tracing renderer."
32 | */
33 | String getDescription();
34 |
35 | /**
36 | * Get the unique identifier of this object.
37 | * For example, "PathTracingRenderer".
38 | */
39 | String getId();
40 |
41 | /**
42 | * Get the deprecation status of this object.
43 | */
44 | default DeprecationStatus getDeprecationStatus() {
45 | return DeprecationStatus.ACTIVE;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/UuidUtil.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util;
2 |
3 | import java.util.UUID;
4 |
5 | public class UuidUtil {
6 | /**
7 | * Converts four integers (ordered from MSB to LSB) to a UUID.
8 | *
9 | * @param ints Four integers, ordered from MSB to LSB
10 | * @return UUID
11 | */
12 | public static UUID intsToUuid(int[] ints) {
13 | return new UUID(
14 | ((long) ints[0]) << 32 | ((long) ints[1] & 0xFFFFFFFFL),
15 | ((long) ints[2]) << 32 | ((long) ints[3] & 0xFFFFFFFFL)
16 | );
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/annotation/NotNull.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util.annotation;
2 |
3 | /**
4 | * Indicates that the annotated element must not be null.
5 | */
6 | public @interface NotNull {
7 | }
8 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/annotation/Nullable.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util.annotation;
2 |
3 | /**
4 | * Indicates that the annotated element may be null.
5 | */
6 | public @interface Nullable {
7 | }
8 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/io/IsolatedOutputStream.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util.io;
2 |
3 | import java.io.FilterOutputStream;
4 | import java.io.IOException;
5 | import java.io.OutputStream;
6 |
7 | /**
8 | * Output stream that has no state and does not propagate the close.
9 | */
10 | public class IsolatedOutputStream extends FilterOutputStream {
11 | public IsolatedOutputStream(OutputStream out) {
12 | super(out);
13 | }
14 |
15 | @Override
16 | public void close() throws IOException {
17 | out.flush();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/io/RepositionableMeasurableDataOutput.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util.io;
2 |
3 | import it.unimi.dsi.fastutil.io.MeasurableStream;
4 | import it.unimi.dsi.fastutil.io.RepositionableStream;
5 |
6 | import java.io.DataOutput;
7 | import java.io.IOException;
8 |
9 | /**
10 | * A repositionable {@link DataOutput} stream whose size can be measured.
11 | */
12 | public interface RepositionableMeasurableDataOutput
13 | extends RepositionableStream, MeasurableStream, DataOutput {
14 |
15 | /**
16 | * Skips n bytes (should be equivalent to writing n 0x00 bytes).
17 | */
18 | void skip(int byteCount) throws IOException;
19 | }
20 |
--------------------------------------------------------------------------------
/chunky/src/java/se/llbit/util/mojangapi/MinecraftProfile.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util.mojangapi;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | import java.util.Optional;
6 |
7 | public class MinecraftProfile {
8 | public String id;
9 | public String name;
10 | public Property[] properties;
11 |
12 | public Optional getSkin() {
13 | return getProperty("textures").flatMap(MinecraftSkin::getSkinFromEncodedTextures);
14 | }
15 |
16 | public Optional getProperty(String name) {
17 | if (properties != null) {
18 | for (Property property : properties) {
19 | if (name.equals(property.name)) {
20 | return Optional.of(property.value);
21 | }
22 | }
23 | }
24 | return Optional.empty();
25 | }
26 |
27 | public static class Property {
28 | public String name;
29 | public String value;
30 | }
31 |
32 | public static class Textures {
33 | @SerializedName("SKIN")
34 | public SkinUrl skin;
35 |
36 | @SerializedName("CAPE")
37 | public CapeUrl cape;
38 |
39 | public static class SkinUrl {
40 | public String url;
41 |
42 | public Metadata metadata;
43 |
44 | public static class Metadata {
45 | public String model;
46 | }
47 | }
48 |
49 | public static class CapeUrl {
50 | public String url;
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/chunky/src/res/chunky-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/chunky-icon.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/1_12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/1_12.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/1_13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/1_13.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/advanced.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/advanced.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/bed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/bed.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/cactus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/cactus.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/cake.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/cake.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/camera.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/cauldron.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/cauldron.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/chunky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/chunky.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/clear.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/clock.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/colors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/colors.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/disk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/disk.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/dragon-egg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/dragon-egg.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/eye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/eye.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/face.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/face.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/face_t.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/face_t.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/failed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/failed.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/fence.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/fence.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/gear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/gear.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/home.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/home_t.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/home_t.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/iron-door.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/iron-door.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/iso-ne.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/iso-ne.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/iso-nw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/iso-nw.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/iso-se.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/iso-se.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/iso-sw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/iso-sw.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/jack-o-lantern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/jack-o-lantern.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/jukebox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/jukebox.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/key.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/lens.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/lens.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/lever.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/lever.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/light.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/load.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/lock.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/magnify.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/magnify.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/map-selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/map-selected.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/map.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/minus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/minus.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/note-block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/note-block.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/pause.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/pencil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/pencil.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/photo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/photo.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/play.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/player.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/player.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/plus.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/pumpkin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/pumpkin.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/question.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/question.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/redstone-torch-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/redstone-torch-on.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/reload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/reload.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/save.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/scale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/scale.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/sign-post.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/sign-post.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/sky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/sky.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/skybox-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/skybox-back.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/skybox-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/skybox-down.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/skybox-front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/skybox-front.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/skybox-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/skybox-left.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/skybox-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/skybox-right.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/skybox-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/skybox-up.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/stone-brick-stairs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/stone-brick-stairs.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/stone-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/stone-button.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/stone-pressure-plate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/stone-pressure-plate.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/stone-stairs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/stone-stairs.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/stop.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/sun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/sun.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/unknown.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/wall-sign.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/wall-sign.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/water.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/wheat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/wheat.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/wooden-door.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/wooden-door.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/wooden-pressure-plate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/wooden-pressure-plate.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/wooden-stairs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/wooden-stairs.png
--------------------------------------------------------------------------------
/chunky/src/res/icons/wrench.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/icons/wrench.png
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/main/Version.properties:
--------------------------------------------------------------------------------
1 | # 2021-12-12 03:37:09Z
2 | version=2.5.0
3 |
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/renderer/projection/gaussian-aperture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/se/llbit/chunky/renderer/projection/gaussian-aperture.png
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/renderer/projection/hexagon-aperture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/se/llbit/chunky/renderer/projection/hexagon-aperture.png
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/renderer/projection/pentagon-aperture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/se/llbit/chunky/renderer/projection/pentagon-aperture.png
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/renderer/projection/star-aperture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/se/llbit/chunky/renderer/projection/star-aperture.png
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/ui/chunky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/se/llbit/chunky/ui/chunky.png
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/ui/dialogs/ErrorDialog.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
14 |
15 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/ui/elements/jog_wheel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/se/llbit/chunky/ui/elements/jog_wheel.png
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/ui/elements/jog_wheel_dimple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/se/llbit/chunky/ui/elements/jog_wheel_dimple.png
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/ui/render/settings/SkymapSettings.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/ui/render/settings/UniformFogSettings.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/chunky/src/res/se/llbit/chunky/ui/render/tabs/TexturesTab.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/chunky/src/res/textures/air.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/air.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/bedrock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/bedrock.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/bookshelf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/bookshelf.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/bricks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/bricks.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/brown-mushroom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/brown-mushroom.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/chest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/chest.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/clay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/clay.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/coal-ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/coal-ore.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/cobblestone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/cobblestone.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/cobweb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/cobweb.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/dead-bush.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/dead-bush.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/diamond-block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/diamond-block.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/diamond-ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/diamond-ore.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/dirt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/dirt.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/dispenser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/dispenser.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/double-stone-slab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/double-stone-slab.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/east.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/east.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/end-portal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/end-portal.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/end-stone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/end-stone.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/fire.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/fire.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/furnace-lit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/furnace-lit.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/furnace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/furnace.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/glass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/glass.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/glowstone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/glowstone.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/gold-block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/gold-block.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/gold-ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/gold-ore.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/grass-side-saturated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/grass-side-saturated.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/grass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/grass.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/gravel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/gravel.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/ice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/ice.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/iron-bars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/iron-bars.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/iron-block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/iron-block.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/iron-ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/iron-ore.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/ladder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/ladder.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/lapis-lazuli-block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/lapis-lazuli-block.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/lapis-lazuli-ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/lapis-lazuli-ore.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/lava.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/lava.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/leaves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/leaves.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/lily-pad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/lily-pad.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/melon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/melon.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/minecart-track.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/minecart-track.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/moss-stone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/moss-stone.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/nether-portal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/nether-portal.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/netherrack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/netherrack.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/north.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/north.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/obsidian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/obsidian.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/piston-extension.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/piston-extension.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/piston.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/piston.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/red-mushroom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/red-mushroom.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/redstone-lamp-off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/redstone-lamp-off.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/redstone-lamp-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/redstone-lamp-on.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/redstone-ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/redstone-ore.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/redstone-repeater-off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/redstone-repeater-off.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/redstone-repeater-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/redstone-repeater-on.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/redstone-torch-off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/redstone-torch-off.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/redstone-torch-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/redstone-torch-on.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/redstone-wire-off-intersect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/redstone-wire-off-intersect.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/rose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/rose.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/sand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/sand.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/sandstone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/sandstone.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/sapling.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/sapling.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/snow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/snow.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/soil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/soil.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/soul-sand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/soul-sand.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/south.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/south.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/spawner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/spawner.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/sponge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/sponge.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/stone-bricks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/stone-bricks.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/stone-slab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/stone-slab.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/stone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/stone.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/sugar-canes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/sugar-canes.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/tall-grass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/tall-grass.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/tnt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/tnt.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/torch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/torch.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/trapdoor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/trapdoor.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/unknown.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/vines.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/vines.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/water-height.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/water-height.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/water.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/west.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/west.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/wood-top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/wood-top.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/wood.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/wood.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/wooden-planks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/wooden-planks.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/wool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/wool.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/workbench.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/workbench.png
--------------------------------------------------------------------------------
/chunky/src/res/textures/yellow-flower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/chunky/src/res/textures/yellow-flower.png
--------------------------------------------------------------------------------
/chunky/src/test/se/llbit/chunky/nbt/NBTTest.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.nbt;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import se.llbit.nbt.CompoundTag;
5 | import se.llbit.nbt.StringTag;
6 |
7 | import static org.junit.jupiter.api.Assertions.assertEquals;
8 |
9 | /**
10 | * Tests to ensure that the NBT library works.
11 | */
12 | public class NBTTest {
13 | @Test
14 | public void testEqualTags() {
15 | CompoundTag tag1 = new CompoundTag();
16 | tag1.add("Name", new StringTag("minecraft:stone"));
17 | CompoundTag tag2 = new CompoundTag();
18 | tag2.add("Name", new StringTag("minecraft:stone"));
19 | assertEquals(tag1.hashCode(), tag2.hashCode());
20 | assertEquals(tag1, tag2);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/chunky/src/test/se/llbit/chunky/resources/AnimatedTextureTest.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2015 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.resources;
18 |
19 | import org.junit.jupiter.api.Test;
20 |
21 | import static org.junit.jupiter.api.Assertions.assertEquals;
22 |
23 | public class AnimatedTextureTest {
24 |
25 | @Test
26 | public void testInitialization() {
27 | AnimatedTexture texture = new AnimatedTexture("fire");
28 | assertEquals(1, texture.numFrames);
29 | assertEquals(16, texture.frameHeight);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/chunky/src/test/se/llbit/testutil/TestUtils.java:
--------------------------------------------------------------------------------
1 | package se.llbit.testutil;
2 |
3 | import org.junit.jupiter.api.function.Executable;
4 |
5 | import static org.junit.jupiter.api.Assertions.assertEquals;
6 | import static org.junit.jupiter.api.Assertions.assertThrows;
7 |
8 | public class TestUtils {
9 | public static T assertThrowsWithExpectedMessage(Class expectedType, Executable executable, String expectedMessage) {
10 | T t = assertThrows(expectedType, executable);
11 | assertEquals(t.getMessage(), expectedMessage, "Error message differs from expected");
12 | return t;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/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.0.2-bin.zip
4 | networkTimeout=10000
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/launcher/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 | /build/
3 |
--------------------------------------------------------------------------------
/launcher/src/se/llbit/chunky/launcher/DownloadStatus.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2013 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.launcher;
18 |
19 | public enum DownloadStatus {
20 | SUCCESS,
21 | MALFORMED_URL,
22 | FILE_NOT_FOUND,
23 | DOWNLOAD_FAILED
24 | }
25 |
--------------------------------------------------------------------------------
/launcher/src/se/llbit/chunky/launcher/LaunchMode.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2014 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.launcher;
18 |
19 | /**
20 | * The mode to launch chunky in.
21 | *
22 | * @author Jesper Öqvist
23 | */
24 | public enum LaunchMode {
25 | GUI,
26 | HEADLESS
27 | }
28 |
--------------------------------------------------------------------------------
/launcher/src/se/llbit/chunky/launcher/UpdateListener.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2016 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.chunky.launcher;
18 |
19 | public interface UpdateListener {
20 |
21 | void updateError(String message);
22 |
23 | void updateAvailable(VersionInfo latest);
24 |
25 | void noUpdateAvailable();
26 | }
27 |
--------------------------------------------------------------------------------
/launcher/src/se/llbit/chunky/launcher/ui/cached.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/launcher/src/se/llbit/chunky/launcher/ui/cached.png
--------------------------------------------------------------------------------
/launcher/src/se/llbit/chunky/launcher/ui/chunky-cfg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/launcher/src/se/llbit/chunky/launcher/ui/chunky-cfg.png
--------------------------------------------------------------------------------
/launcher/src/se/llbit/chunky/launcher/ui/failed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/launcher/src/se/llbit/chunky/launcher/ui/failed.png
--------------------------------------------------------------------------------
/launcher/src/se/llbit/chunky/launcher/ui/refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/launcher/src/se/llbit/chunky/launcher/ui/refresh.png
--------------------------------------------------------------------------------
/lib/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 | /build/
3 |
--------------------------------------------------------------------------------
/lib/build.gradle:
--------------------------------------------------------------------------------
1 | sourceSets.main.java {
2 | srcDir 'src'
3 | }
4 |
5 | configurations {
6 | implementation.extendsFrom configurations.jsonlib
7 | }
8 |
9 | java {
10 | toolchain {
11 | languageVersion = JavaLanguageVersion.of(8) // pinned to java 8 for backwards compatibility
12 | vendor = JvmVendorSpec.AMAZON // using corretto as it's one of few jdks to include jfx (on windows+linux) and isn't oracle
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/chunky/HelpCopyright.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2024 Chunky contributors
3 | *
4 | * This file is part of Chunky.
5 | *
6 | * Chunky is free software: you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation, either version 3 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * Chunky is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | * You should have received a copy of the GNU General Public License
16 | * along with Chunky. If not, see .
17 | */
18 |
19 | package se.llbit.chunky;
20 |
21 | /**
22 | * This contains the proper copyright information for various messages
23 | */
24 | public class HelpCopyright {
25 | public static final String COPYRIGHT_LINE = "Copyright (c) 2010-2024 Jesper Öqvist and Chunky Contributors";
26 |
27 | public static final String COPYRIGHT_DISCLAIMER =
28 | "Chunky comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it " +
29 | "under certain conditions. See the GNU General Public License v3 for more details.";
30 | }
31 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/chunky/ui/DoubleTextField.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.ui;
2 |
3 | import javafx.beans.property.DoubleProperty;
4 | import javafx.beans.property.SimpleDoubleProperty;
5 |
6 | public class DoubleTextField extends NumericTextField {
7 |
8 | public DoubleTextField() {
9 | super(new SimpleDoubleProperty());
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/chunky/ui/IntegerTextField.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.ui;
2 |
3 | import javafx.beans.property.IntegerProperty;
4 | import javafx.beans.property.SimpleIntegerProperty;
5 |
6 | public class IntegerTextField extends NumericTextField {
7 |
8 | public IntegerTextField() {
9 | this(0);
10 | }
11 |
12 | public IntegerTextField(int initialValue) {
13 | super(new SimpleIntegerProperty(initialValue));
14 | getConverter().setParseIntegerOnly(true);
15 | triggerRefresh();
16 |
17 | setMaximumCharacterInputLength(10); // Integer.MAX_VALUE = 2147483647
18 | // warning: this setting will not prevent integer overflow!
19 | }
20 |
21 | public int getValue() {
22 | return valueProperty().get();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/chunky/ui/PositiveIntegerAdjuster.java:
--------------------------------------------------------------------------------
1 | package se.llbit.chunky.ui;
2 |
3 | import javafx.beans.property.SimpleIntegerProperty;
4 |
5 | /**
6 | * An integer adjuster stores integer values.
7 | */
8 | public class PositiveIntegerAdjuster extends SliderAdjuster {
9 | private int min = Integer.MIN_VALUE;
10 | private int max = Integer.MAX_VALUE;
11 |
12 | public PositiveIntegerAdjuster() {
13 | super(new SimpleIntegerProperty());
14 | this.valueField.getConverter().setParseIntegerOnly(true);
15 | this.valueField.getConverter().setParseNonNegativeOnly(true);
16 | this.valueField.triggerRefresh();
17 | }
18 |
19 | public void setRange(double min, double max) {
20 | super.setRange(min, max);
21 | this.min = (int) Math.max(0, min); // PositiveIntegerAdjuster can't have negative bounds
22 | this.max = (int) Math.max(0, max);
23 | }
24 |
25 | @Override protected Integer clamp(Number value) {
26 | int result = value.intValue();
27 | if (clampMax) {
28 | result = Math.min(result, max);
29 | }
30 | if (clampMin) {
31 | result = Math.max(result, min);
32 | }
33 | return result;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/log/BufferingConsoleReceiver.java:
--------------------------------------------------------------------------------
1 | package se.llbit.log;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | public class BufferingConsoleReceiver extends Receiver {
7 | public static final BufferingConsoleReceiver INSTANCE = new BufferingConsoleReceiver();
8 |
9 | private final List bufferedEvents = new ArrayList<>();
10 |
11 | protected BufferingConsoleReceiver() {
12 | }
13 |
14 | @Override
15 | public void logEvent(Level level, String message) {
16 | this.bufferedEvents.add(new Event(level, message));
17 | }
18 |
19 | @Override
20 | public boolean isBuffered() {
21 | return true;
22 | }
23 |
24 | @Override
25 | public List getBufferedEvents() {
26 | return this.bufferedEvents;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/log/ConsoleReceiver.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2014 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.log;
18 |
19 | public class ConsoleReceiver extends Receiver {
20 |
21 | public static final ConsoleReceiver INSTANCE = new ConsoleReceiver();
22 |
23 | private ConsoleReceiver() {
24 | }
25 |
26 | @Override public void logEvent(Level level, String message) {
27 | switch (level) {
28 | case INFO:
29 | case WARNING:
30 | System.out.println(message);
31 | break;
32 | case ERROR:
33 | System.err.println(message);
34 | break;
35 | }
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/log/Level.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2014 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.log;
18 |
19 | public enum Level {
20 | ERROR,
21 | WARNING,
22 | INFO
23 | }
24 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/math/ObservableSize2D.java:
--------------------------------------------------------------------------------
1 | package se.llbit.math;
2 |
3 | import javafx.beans.Observable;
4 | import javafx.beans.binding.IntegerBinding;
5 |
6 | public interface ObservableSize2D extends Size2D, Observable {
7 | IntegerBinding getWidthBinding();
8 | IntegerBinding getHeightBinding();
9 |
10 | void addListener(UpdateListener listener);
11 | void removeListener(UpdateListener listener);
12 |
13 | @FunctionalInterface
14 | interface UpdateListener {
15 | void update(int width, int height);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/math/Size2D.java:
--------------------------------------------------------------------------------
1 | package se.llbit.math;
2 |
3 | import javafx.beans.Observable;
4 |
5 | public interface Size2D {
6 | int getWidth();
7 | int getHeight();
8 | }
9 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/util/Mutable.java:
--------------------------------------------------------------------------------
1 | package se.llbit.util;
2 |
3 | public class Mutable {
4 | private T t;
5 |
6 | public Mutable(T t) {
7 | this.t = t;
8 | }
9 |
10 | public void set(T t) {
11 | this.t = t;
12 | }
13 |
14 | public T get() {
15 | return t;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/src/se/llbit/util/Pair.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2012 Jesper Öqvist
2 | *
3 | * This file is part of Chunky.
4 | *
5 | * Chunky 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 | * Chunky 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 | * You should have received a copy of the GNU General Public License
15 | * along with Chunky. If not, see .
16 | */
17 | package se.llbit.util;
18 |
19 | /**
20 | * Custom Pair class.
21 | *
22 | * @param
23 | * @param
24 | * @author Jesper Öqvist (jesper@llbit.se)
25 | */
26 | public class Pair {
27 | /** Thing one. */
28 | public U thing1;
29 |
30 | /** Thing two. */
31 | public V thing2;
32 |
33 | /**
34 | * Create a new tuple of two things.
35 | *
36 | * @param one Thing one
37 | * @param two Thing two
38 | */
39 | public Pair(U one, V two) {
40 | thing1 = one;
41 | thing2 = two;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/licenses/fast-util.txt:
--------------------------------------------------------------------------------
1 | Copyright (C) 2003-2020 Paolo Boldi and Sebastiano Vigna
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
--------------------------------------------------------------------------------
/licenses/gson.txt:
--------------------------------------------------------------------------------
1 | Copyright 2008 Google Inc.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
--------------------------------------------------------------------------------
/licenses/lz4-java.txt:
--------------------------------------------------------------------------------
1 | Copyright 2016-2020 Adrien Grand and the lz4-java contributors.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
--------------------------------------------------------------------------------
/licenses/semver4j.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015-present Vincent DURMONT
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/misc/animate.py:
--------------------------------------------------------------------------------
1 | # sample script for reating animations
2 |
3 | import json
4 | import os
5 | import math
6 | from os import path
7 | from subprocess import call
8 | from shutil import copyfile
9 |
10 | scene_dir = 'D:\\Users\\Jesper\\.chunky\\scenes\\'
11 | filename = path.join(scene_dir, 'skycompare.json')
12 | with open(filename, 'r') as fp:
13 | sdf = json.load(fp)
14 |
15 | dump_filename = path.join(scene_dir, 'skycompare.dump')
16 | num = 500
17 | num2 = float(2*500)
18 | azimuth = 3*math.pi/2
19 | for i in range(0, num):
20 | sdf['spp'] = 0
21 | sdf['sppTarget'] = 10
22 | sdf['sun']['altitude'] = math.pi * (500-i)/num2
23 | sdf['sun']['azimuth'] = azimuth
24 | with open(filename, 'w') as fp:
25 | json.dump(sdf, fp)
26 | if (path.isfile(dump_filename)):
27 | os.remove(dump_filename)
28 | call(['java', '-jar', 'chunky.jar', '-render', 'skycompare'])
29 | copyfile(path.join(scene_dir, 'skycompare-10.png'), 'frame%03d.png' % (i+501))
30 |
--------------------------------------------------------------------------------
/misc/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chunky-dev/chunky/91149909322b3ee2cc09e118eb3cb41c3db5518a/misc/logo.png
--------------------------------------------------------------------------------
/releasetools/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 | /build/
3 |
--------------------------------------------------------------------------------
/releasetools/build.gradle:
--------------------------------------------------------------------------------
1 | configurations {
2 | implementation.extendsFrom configurations.jsonlib
3 | }
4 |
5 | dependencies {
6 | implementation project(':lib')
7 | }
8 |
9 | sourceSets {
10 | main {
11 | java {
12 | srcDir 'src'
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' // java toolchain resolver
3 | }
4 |
5 | rootProject.name = 'chunky'
6 | include 'chunky', 'lib', 'launcher', 'releasetools'
7 |
--------------------------------------------------------------------------------
/upload-snapshot.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if gradle jar | grep 'Building snapshot'; then
4 | echo 'Uploading SNAPSHOT'
5 | gradle uploadArchives
6 | fi
7 |
--------------------------------------------------------------------------------