Compare commits

..

1675 Commits

Author SHA1 Message Date
s809 7cd1a37914 Restore ordering of session config entries 2024-09-08 21:21:38 +05:00
s809 8ca2052748 Refactor session config 2024-09-08 19:05:42 +05:00
s809 576d0f5666 Fix crash on F3 when commit hash was failed to retrieve 2024-09-07 21:47:43 +05:00
s809 877588ebed Fix rare NPE when receiving LODs 2024-09-07 21:47:02 +05:00
s809 875b5fffcc Fix client crashing 2024-09-05 23:45:04 +05:00
s809 6293cc8c27 Prefill levelKeyPrefix in new worlds 2024-09-05 14:22:00 +05:00
s809 0361e5c69b Fix compilation 2024-09-04 22:53:02 +05:00
s809 654355c991 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into serverside 2024-09-04 18:22:47 +05:00
James Seibel 4712a77d00 Up version number 2.2.1 -> 2.2.2-dev 2024-09-04 06:58:59 -05:00
James Seibel 57c5b2d5fc Up version 2.2.1-dev -> 2.2.1 and API 3.0.0 -> 3.0.1 2024-09-04 06:58:20 -05:00
s809 a2949b8124 Change some string & remove unused config item 2024-09-03 16:52:10 +05:00
James Seibel 50c5701836 Fix referencing unavailable GLFW methods for MC 1.18.2 and lower 2024-09-02 08:00:43 -05:00
s809 6fe0477ca7 Limit number of retries on request errors
Add a delay if rate limit is hit
2024-09-02 15:31:39 +05:00
James Seibel 18e075538d Fix LODs flashing when moving and improve LodQuadTree code 2024-09-01 21:10:22 -05:00
James Seibel b00e8a08e9 add annotations to QuadTree 2024-09-01 21:09:50 -05:00
James Seibel ac4ab11a74 Fix LodRenderSection and QuadNode toString methods 2024-09-01 21:09:17 -05:00
James Seibel c26631db57 Cull beacons based on X/Z distance instead of 3D distance 2024-09-01 17:28:08 -05:00
James Seibel 1daa06fff4 Disable instanced rendering on Mac when Sodium is present
Closes !793 (Generic Rendering crashes with Sodium on M1 Mac)
2024-09-01 17:02:43 -05:00
James Seibel f3ef6f25f4 Fix some beacon rendering/updating issues 2024-09-01 16:36:37 -05:00
James Seibel ec012d9fd6 Fix glass panes not affecting beacon colors 2024-09-01 15:04:24 -05:00
James Seibel fc90cf3377 add disableUnchangedChunkCheck config 2024-08-31 22:11:25 -05:00
James Seibel e1e42d1caf Fix cloud color not matching MC 2024-08-31 21:55:54 -05:00
James Seibel 95ce29e355 Update all pos objects to use getters to match with DhBlockPos
I'd prefer not to need getters/setters since it's cleaner to just call pos.x, but that doesn't allow for immutable/mutable distinction.
2024-08-31 20:50:22 -05:00
James Seibel 0fd818b077 Allow users to re-activate DH rendering if a rendering error is thrown 2024-08-31 20:20:51 -05:00
James Seibel ba59daf747 Add beacon nearby culling 2024-08-31 20:20:24 -05:00
James Seibel b7d94c2ed1 Fix RenderableBoxGroup not supporting clear() 2024-08-31 20:06:04 -05:00
James Seibel 7a057a8d53 fix Lod builder not showing the correct stacktrace in Intellij 2024-08-31 15:04:30 -05:00
James Seibel 49c6ab97a9 Remove unused threadpool 2024-08-31 15:04:12 -05:00
James Seibel ed0d80b37e Reduce deplayed LOD modified save from 2 sec -> 500 ms
This should make some LOD update operations appear faster
2024-08-31 15:01:37 -05:00
James Seibel 9768728c92 Add RollingAverage object 2024-08-31 14:58:08 -05:00
James Seibel 0c68544f2f Fix DhLightingEngine putting lights at relative (0,0) and add debug logic 2024-08-31 12:45:39 -05:00
s809 048b36f80d Add comment 2024-08-31 20:50:50 +05:00
s809 40f902e2f5 Delay loading first level when on server 2024-08-31 20:46:58 +05:00
James Seibel b1f154a0ea Add DhBlockPosMutable and make the original immutable
This is to prevent issues with some methods accidentally mutating shared positions
2024-08-30 07:35:59 -05:00
James Seibel 628c9b071f DhBlockPos cleanup 2024-08-29 20:05:26 -05:00
James Seibel ed39b6181f Fix DH beacon detection logic mutating input block pos
alternate title: Fix DH beacon detection logic breaking the lighting engine
2024-08-29 19:54:36 -05:00
James Seibel 1d6d712483 Fix LODs not updating in the nether or when blocks are changed underground 2024-08-29 07:32:55 -05:00
s809 62ddb46674 Restore LOD fetching by distance 2024-08-29 17:09:08 +05:00
James Seibel 73c4f0ffcd Add a quick DH cloud UI config 2024-08-28 07:16:20 -05:00
s809 375cd44cbd Do not start generator until server responds with config 2024-08-27 16:35:22 +05:00
s809 ce057525d3 Show incompatible protocol version in F3 2024-08-27 16:02:15 +05:00
s809 01c879951c Fix sync on login 2024-08-26 16:53:59 +05:00
s809 4f19f05f3b Change naming of rate limit related items 2024-08-26 00:39:28 +05:00
s809 47f68c7ed3 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into serverside 2024-08-24 02:58:17 +05:00
s809 39db421aa1 Remove mentions of generation task priorities 2024-08-23 17:28:15 +05:00
s809 f4b0c08822 Fix network compression pool not shutting down 2024-08-23 17:11:32 +05:00
s809 f17c3fa267 "Fix" buffer release errors in FullDataPayload 2024-08-23 14:16:20 +05:00
James Seibel 48d1005be6 Up version number 2.2.0 -> 2.2.1-dev 2024-08-20 19:16:18 -05:00
James Seibel e71e8d1966 Up version number 2.1.3-dev -> 2.2.0 2024-08-20 17:44:41 -05:00
James Seibel 489b3d3ae1 Fix Legacy GL causing fog to smear 2024-08-20 17:44:41 -05:00
s809 81e6f55dbf Use same packet resource for all versions 2024-08-19 17:55:59 +05:00
James Seibel 1b162f10e6 Add sharedApi.isChunkAtChunkPosAlreadyUpdating() 2024-08-18 14:46:12 -05:00
James Seibel 301cce3d11 Remove unused chunkUnloadEvent 2024-08-18 14:25:51 -05:00
James Seibel e68d0d5c45 Fix fog and SSAO being broken by some mods 2024-08-17 22:29:28 -05:00
s809 b5e2019d28 Add logging of request group lifecycle 2024-08-15 15:46:24 +05:00
James Seibel 2cf952fb76 Deprecate IDhApiWorldGenerator.isBusy(), task queuing is now handled internally 2024-08-12 22:20:06 -05:00
James Seibel c7c5ab17bc Add optional DhApiChunk validation for world gen 2024-08-12 21:47:48 -05:00
James Seibel a98955530f Allow adding empty lists to DhApiChunk 2024-08-11 22:01:24 -05:00
James Seibel c63a509f9e Fix DhApiChunk setDataPoints failing for empty lists 2024-08-11 21:55:11 -05:00
s809 84dca85447 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into serverside 2024-08-11 20:59:23 +05:00
James Seibel dac51a9eea Add mod compat warning message config 2024-08-11 09:54:54 -05:00
s809 8c3e8136be Do not clear keyed level on close event 2024-08-10 23:53:22 +05:00
s809 606c157958 Make encode/decode error handling work correctly 2024-08-10 23:26:04 +05:00
s809 ba3677b641 Make error handling somewhat work 2024-08-10 19:49:33 +05:00
James Seibel 8d78a1ad74 Rename BeaconBeamDTO.pos -> blockPos 2024-08-09 07:25:49 -05:00
James Seibel 7c11bb4258 Fix beacons not enabling/disabling correctly 2024-08-09 07:25:24 -05:00
James Seibel 0d6ec3d836 Fix frustum culling when the screen is warped 2024-08-07 18:55:02 -05:00
s809 dee13a4ec4 Merge branch 'serverside-experimental/prevent-disconnects' into serverside 2024-08-07 22:20:29 +05:00
James Seibel 9449433fe8 Fix deleting beacons 2024-08-07 07:47:11 -05:00
James Seibel 2c976c9fb1 Improve fast chunk hash to respect surface block heights 2024-08-07 07:47:02 -05:00
James Seibel 90fdfbbe61 Fix direct memory leak and remove config for GpuUpload 2024-08-07 07:29:52 -05:00
James Seibel a8df13fdd2 Fix LodRenderSection holding onto unnecessary memory 2024-08-06 21:47:03 -05:00
James Seibel f05eac2637 test 2024-08-06 20:47:23 -05:00
s809 71e4cd6272 Fix real-time updates 2024-08-06 23:12:13 +05:00
s809 82c5de7dfe Fix Neoforge not being able to connect to vanilla servers 2024-08-05 14:51:17 +05:00
James Seibel 4ae30b3d47 Improve LOD detail level detection and hole filling 2024-08-04 08:30:58 -05:00
James Seibel 8abefdcfd5 Attempt to improve LOD building speed and reduce broken lighting on servers 2024-08-03 17:11:18 -05:00
James Seibel 801a126de0 Fix chunk has being saved before LOD update 2024-08-03 16:50:12 -05:00
James Seibel 377d0fbe12 Allow DhApiChunk to accept top down or bottom up data point orders 2024-08-03 09:32:57 -05:00
James Seibel 1ecf968668 Remove unused ChunkToLodBuilder 2024-08-03 09:32:29 -05:00
s809 9d11733444 Fix dimension switching (untested) 2024-08-03 15:42:43 +05:00
James Seibel c43b985f4e Fix off by 1 error in Render data transformer 2024-08-02 18:30:55 -05:00
James Seibel b7fea64925 Fix out of bounds exception in Full Data Transformer 2024-08-02 17:56:25 -05:00
s809 e62c6a5c55 [skip ci] Prevent disconnects on encode/decode/handle errors 2024-08-01 22:19:10 +05:00
James Seibel 116d7f4a3f Fix incorrect comment in DhSectionPos 2024-08-01 06:52:05 -05:00
James Seibel 0c36dc03a5 Fix cave culling affecting floating islands and add LOD reload to some configs 2024-07-31 19:06:44 -05:00
James Seibel c658269eb7 Remove deprecated methods and move method to StringUtil 2024-07-30 17:06:55 -05:00
James Seibel defaea86f0 Remove unused sodium and McRenderWrapper methods
Removed methods were originally used to cull LODs if MC had loaded chunks, however this turned out to be more trouble than it was worth and caused more problems than it solved.
2024-07-30 17:00:59 -05:00
James Seibel f1564cc90b Fix presets only using "custom" after any value was changed 2024-07-30 15:47:48 -05:00
James Seibel 66feb0b9c2 Fix SSAO shader crashing when entering empty config values 2024-07-30 15:35:01 -05:00
s809 93b57ae2e1 Increase defaults for network compression threads 2024-07-30 10:52:27 +05:00
James Seibel 79bfa21115 Fix default logging debug to file 2024-07-29 20:40:23 -05:00
James Seibel 5588b0d2fa Add TODO to cleanup LodRenderSection futures 2024-07-29 07:29:48 -05:00
James Seibel e9788acb46 Fix rapidly changing dimensions causing the game to crash 2024-07-29 07:13:06 -05:00
James Seibel 8056a5b8bf Add Buffer Builder/Uploader thread pools to the F3 menu 2024-07-29 07:08:42 -05:00
s809 e5033a0c0f Use FullDataPayload instead of reusing messages 2024-07-29 13:10:04 +05:00
James Seibel e0ad956e34 Fix incorrect DhApiChunk create constructor parameter order (again) 2024-07-28 20:18:15 -05:00
s809 32abe15b09 Add build number on F3 screen 2024-07-28 20:19:38 +05:00
s809 2b65e33aa7 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into serverside 2024-07-28 19:44:25 +05:00
James Seibel 9546f9cbc8 Close !66 (fix incorrect positions being fed into biome color code) 2024-07-28 09:33:24 -05:00
s809 bc6ab6c840 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into serverside 2024-07-28 19:01:28 +05:00
James Seibel 9834b20a9f Revert and Deprecate DhApiChunk and DhApiTerrainDataPoint constructors 2024-07-28 08:56:18 -05:00
James Seibel 752008e8ac Re-add deprecated IDhApiLevelWrapper.getHeight() 2024-07-28 08:55:54 -05:00
James Seibel fbe81021c0 Update API javadocs 2024-07-28 08:55:35 -05:00
s809 ccbb071704 Reapply "Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into serverside"
This reverts commit d26cb41048.
2024-07-28 17:05:58 +05:00
James Seibel 882c5399bd Fix holes in LODs boarding different detail levels 2024-07-27 21:06:50 -05:00
James Seibel dbe0461d5f Fix LOD upload warning 2024-07-27 20:25:55 -05:00
James Seibel d3d166dd02 Undo experimental change to LOD reloading 2024-07-27 20:11:28 -05:00
James Seibel d0dd1f38ff Fix LODs flashing twice when changing configs 2024-07-27 20:11:00 -05:00
James Seibel 53300a3028 Update IDhApiRenderProxy.clearRenderDataCache() to also clear cached block colors 2024-07-27 17:36:40 -05:00
James Seibel 56303dd82a level wrapper renamings 2024-07-27 16:51:08 -05:00
s809 d26cb41048 Revert "Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into serverside"
This reverts commit a15aaa573d, reversing
changes made to 83c1a2fd63.
2024-07-27 23:06:34 +05:00
s809 a15aaa573d Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into serverside 2024-07-27 21:43:21 +05:00
James Seibel 19d8c89bd8 Fix ice/water vertical LOD lighting 2024-07-27 09:30:41 -05:00
James Seibel adba3e4c15 clear testing default debug config values 2024-07-27 08:40:59 -05:00
James Seibel 479ce8093e minor cleanup/refactor 2024-07-27 08:28:31 -05:00
James Seibel 1ed6c619d9 Add localization for new column builder debug options 2024-07-27 08:26:46 -05:00
Builderb0y 825f439ffb fix incorrect positions being fed into biome color code. 2024-07-27 02:32:31 +00:00
James Seibel b1b487e63f Improve RenderDataPointUtil toString() 2024-07-24 06:46:28 -05:00
James Seibel 2763a7ca75 add missing brackets 2024-07-23 20:41:22 -05:00
James Seibel b4b1a2a549 remove deprecated RenderDataPointUtil logic 2024-07-23 20:05:41 -05:00
James Seibel 5865317394 Remove deprecated LodQuadBuilder code 2024-07-23 19:53:13 -05:00
James Seibel b70c090e94 Refactor and cleanup buffer building 2024-07-23 19:39:44 -05:00
James Seibel a9f6b924c2 Move CubicLodTemplate to ColumnRenderBufferBuilder 2024-07-23 07:05:28 -05:00
James Seibel 9c25a6450a comment ColumnArrayView 2024-07-22 20:47:34 -05:00
James Seibel 448982fbaf refactor FullDataToRenderDataTransformer 2024-07-22 19:50:23 -05:00
James Seibel 2ee06c59f1 Add configs for testing the ColumnRenderBufferBuilder 2024-07-22 17:34:04 -05:00
James Seibel d38711ca4b Fix replay mod not showing LODs 2024-07-21 20:05:36 -05:00
James Seibel c9b650fb7f remove unused clientLevelWrapper.getGameDirectory() 2024-07-21 19:27:11 -05:00
James Seibel 3cef8b9a4f Improve cave culling and add config for ignored/cave blocks 2024-07-21 17:27:17 -05:00
James Seibel d9d9f3dad8 minor logging fixes 2024-07-21 17:06:58 -05:00
James Seibel 44fe1eafb1 Fix ConfigEntry String value saving 2024-07-21 16:09:46 -05:00
James Seibel 36fcc46445 Minor DataTransofmer refactor 2024-07-21 07:48:52 -05:00
James Seibel 64895ba521 Remove unnecessary suffix from SectionPos encode method 2024-07-21 07:42:40 -05:00
James Seibel 589340f2db Clean up SectionPos wording for chunk/block pos converters 2024-07-21 07:35:35 -05:00
James Seibel de7d22766a Fix RenderDataPointUtil.toString() ARGB order 2024-07-21 07:19:21 -05:00
James Seibel 568ff40df6 Fix API chunk world gen 2024-07-20 17:57:58 -05:00
s809 83c1a2fd63 Fix handler registration 2024-07-20 23:56:24 +05:00
James Seibel 17b5ba0ae1 Fix potential issues with WorldGenQueue not being marked as stopped
closes !61
2024-07-20 11:25:00 -05:00
James Seibel 4d4eeacbdd Add IDhApiWrapperFactory resourceLocation string methods for block/biomes 2024-07-20 11:20:48 -05:00
James Seibel 99dc644adf Add AbstractDhApiChunkWorldGenerator.generateApiChunk() 2024-07-20 10:45:43 -05:00
James Seibel f442ab56c0 Remove unnecessary glIsProgram() call 2024-07-18 07:40:04 -05:00
James Seibel 9147b139c7 Increase max VBO size 1 MB -> 10 MB 2024-07-18 07:39:52 -05:00
s809 0e904a388c Raise full data chunk size limit 2024-07-16 23:56:48 +05:00
s809 3723137fea Remove unused method 2024-07-16 23:52:28 +05:00
s809 71e54cc9ab Up protocol version 2024-07-16 23:51:30 +05:00
s809 b4cf962a85 Fix event handler registration 2024-07-16 23:40:20 +05:00
s809 1a30f240ef Client-side chunk handling 2024-07-16 17:49:09 +05:00
James Seibel 4f2b8e6d8d VBO handler commenting 2024-07-15 20:22:29 -05:00
s809 b3b5ac63c8 Server-side logic is pretty much finished 2024-07-16 00:27:22 +05:00
s809 16abc0faa1 [skip ci] Initial chunked full data message payloads 2024-07-15 07:57:20 +05:00
James Seibel 7165c086e4 Remove render param from DhApiAfterRenderEvent
This was causing confussion if deferred rendering (iris shaders) was enabled since the render parameters would change.
2024-07-14 09:30:56 -05:00
James Seibel fa22a4f27b Add a optional memory cache to the IDhApiTerrainDataRepo 2024-07-14 08:41:18 -05:00
James Seibel 9c0f5865f6 add missing genericRendering to IDhApiGraphicsConfig 2024-07-14 07:25:45 -05:00
James Seibel 1d0cb048cd Default logging to only write errors to chat 2024-07-13 12:54:21 -05:00
James Seibel 641d399a8e Merge branch 'distant-horizons-core-main' 2024-07-13 12:30:06 -05:00
James Seibel 32861e757d Add shader uniform "u" prefix 2024-07-13 12:04:05 -05:00
James Seibel 634738a1fc Remove minimum near fog distance and rename fog uniforms 2024-07-13 11:35:25 -05:00
James Seibel 859cbb6161 Fix fog reading/writing to the same buffer 2024-07-13 11:09:49 -05:00
James Seibel 6c960a81c0 testDisable beacon SSAO 2024-07-13 11:07:44 -05:00
James Seibel 1695c41ef2 Increase default fog start distance 2024-07-13 08:14:29 -05:00
James Seibel 8eabc6ad4c make clouds smaller and thinner 2024-07-12 21:47:06 -05:00
James Seibel a153ca1fe1 Fix repo connections not getting closed 2024-07-12 20:21:57 -05:00
James Seibel cab9f7c830 Clone API event parameters to reduce listener contamination 2024-07-12 19:22:20 -05:00
James Seibel 6bb832a488 Add renderEventParam to generic rendering shader binding by IMS request 2024-07-12 17:27:17 -05:00
s809 778c2f894e Fix level handling for real time updates 2024-07-12 23:11:36 +05:00
James Seibel e7dda9590a Add generic object setup/cleanup events 2024-07-12 07:15:57 -05:00
James Seibel 0483edd2f3 Fix material typo 2 2024-07-11 22:51:37 -05:00
James Seibel 122ef4dce0 Fix material typo 2024-07-11 22:07:09 -05:00
James Seibel e9d254f8c4 Add generic object materials 2024-07-11 18:12:58 -05:00
James Seibel 17aa85ad24 Add EDhApiBlockMaterial 2024-07-11 17:57:54 -05:00
James Seibel 8e1dfd688e Fix inverting gener rendering event cancling 2024-07-11 17:57:30 -05:00
James Seibel 691d5caded Add api for generic rendering config 2024-07-11 17:38:51 -05:00
James Seibel 31c089f82f Add DhApiBeforeGenericObjectRenderEvent 2024-07-11 17:32:17 -05:00
James Seibel 8eceeb0226 Add namespace/path to generic rendering (including F3 piechart) 2024-07-11 17:20:02 -05:00
James Seibel c178afa4b9 Minor refactoring/renaming 2024-07-11 16:40:32 -05:00
James Seibel 116df0d999 Add IDhApiGenericObjectShaderProgram 2024-07-11 16:35:38 -05:00
s809 2617cd294d Add cache for ignoring responses for cancelled requests 2024-07-11 23:06:23 +05:00
s809 43b421042d Add a comment to semaphores 2024-07-11 22:08:10 +05:00
s809 af69678545 Fix player tracking on server 2024-07-10 23:51:39 +05:00
James Seibel ef3cd4b43d Add "IP Only" to multiplayer tooltip 2024-07-10 07:45:07 -05:00
James Seibel 4b27f39a04 Fix generic rendering at extreme distances 2024-07-10 07:37:11 -05:00
James Seibel 53a2bf1748 mark ConfigLinkedEntry localization broken 2024-07-09 19:31:14 -05:00
James Seibel edec8bc0a2 Update localization 2024-07-09 19:30:59 -05:00
James Seibel 066b23c785 Add toggleable logging for GL Buffer garbage collection
Will need to be tested by someone who is experiencing issue #718, so far I've been unable to reproduce anything meaningful.
2024-07-09 17:40:21 -05:00
s809 85341f7a6d Add missing semaphore release 2024-07-09 18:06:16 +05:00
James Seibel 1f74f19cd9 minor cleanup 2024-07-09 07:49:56 -05:00
James Seibel 232c727b4f Move IBlockStateWrapper constants into LodUtil 2024-07-09 07:38:45 -05:00
James Seibel cd5da82d0c Add a TODO to LevelWrapper 2024-07-09 07:33:56 -05:00
James Seibel b762c0561d Add beacon colors 2024-07-09 07:33:17 -05:00
s809 9e0edd0cf3 Prevent request cancellation deadlock 2024-07-09 14:47:45 +05:00
James Seibel f144a9ebc1 Optimize beacon detection 2024-07-08 20:20:48 -05:00
James Seibel 29ef95387c Shrink cloud texture to improve performance 2024-07-08 19:56:20 -05:00
James Seibel 0d79a856b2 Add cloud greedy meshing 2024-07-08 18:45:42 -05:00
s809 84e90a7a9b Use dedicated thread pool for data compression 2024-07-08 23:07:58 +05:00
James Seibel bd5054e762 re-arrange the generic rendering config 2024-07-08 07:44:41 -05:00
James Seibel 63dea2515e Add generic rendering US localization 2024-07-08 07:42:56 -05:00
James Seibel baa89edd03 Add a few missing items from beacon render handler 2024-07-08 07:35:34 -05:00
James Seibel c45f9f442f Clean up beacon render handling logic 2024-07-08 07:32:29 -05:00
James Seibel 9e13b27197 Fix double unloading beacons 2024-07-07 19:54:17 -05:00
James Seibel 3c173685ea Fix beacons disappearing when unloading LODs 2024-07-07 19:45:27 -05:00
James Seibel 8eb70cbaed fix unloading chunks removing beacon beams 2024-07-07 19:18:40 -05:00
James Seibel 22167081f0 Fix generic render un-binding when moving between levels 2024-07-07 19:16:33 -05:00
James Seibel 23d07aa92d Disable cloud rendering if instanced rendering isn't available 2024-07-07 18:42:11 -05:00
James Seibel 578a9f9309 add directional shading to direct generic rendering 2024-07-07 18:31:43 -05:00
James Seibel bacdfa96e3 rename ILevelWrapper.getHeight -> getMaxHeight 2024-07-07 18:16:00 -05:00
James Seibel c73c3f8490 Add missing generic rendering config options 2024-07-07 18:11:18 -05:00
James Seibel f4a8bfeb0a Add cloud rendering 2024-07-07 18:02:43 -05:00
James Seibel 197e6e8178 add vec3f distance methods 2024-07-07 14:52:30 -05:00
s809 48a8cdc365 Disable parent update propagation 2024-07-07 19:46:47 +05:00
s809 171e6b9bcd Reset state of level detection on world exit 2024-07-07 01:49:44 +05:00
James Seibel c2c8bf8613 minor generic render refactor 2024-07-05 06:56:46 -05:00
James Seibel fce703579f Fix concurrent modification for GenericObjectRenderer 2024-07-04 21:41:57 -05:00
James Seibel e98f17f63b Remove useless IServerLevelWrapper.tryGetClientLevelWrapper() 2024-07-04 16:23:39 -05:00
James Seibel 120dddf844 Fix Api client level not containing the generic renderer 2024-07-04 16:14:32 -05:00
James Seibel ca711bbc72 Instance beacon rendering 2024-07-04 14:34:12 -05:00
James Seibel cc4cb10307 Fix uploading generic objects crashing 2024-07-04 14:34:01 -05:00
James Seibel 88db5c9594 re-add generic rendering to the API 2024-07-03 22:37:52 -05:00
James Seibel 81bfa9a02b Add generic rendering to the F3 menu 2024-07-03 20:46:11 -05:00
James Seibel ae72e627c5 Add a config to use pre-existing lighting 2024-07-03 20:30:49 -05:00
James Seibel 131b2835e5 Make generic renderer level dependent 2024-07-02 22:11:06 -05:00
James Seibel 5b905a9ab3 minor LodRenderer refactor 2024-07-02 19:23:02 -05:00
James Seibel e90c7cd8a0 Add beacon activation logic from merge 60
Closes !60
2024-07-02 17:50:25 -05:00
James Seibel 3b4a0ff4bc test 2024-07-02 17:08:55 -05:00
James Seibel 55cb4595bd Fix beacons un-loading incorrectly in some situations
Specifically neighboring chunks updating and in some cases flying away too fast
2024-07-02 07:50:21 -05:00
James Seibel e91afc17a3 Fix beacon beams for loaded chunks 2024-07-01 19:02:36 -05:00
James Seibel 6a398e6514 Start adding beacon beam repo handling 2024-07-01 07:51:08 -05:00
James Seibel 51de347bdd Add temporary proof-of-concept beacon rendering 2024-06-30 18:08:47 -05:00
James Seibel 72d6cb9697 Disable debug generic object rendering 2024-06-30 18:08:00 -05:00
James Seibel 4a025de9d6 Add generic object sky/block light 2024-06-30 17:45:50 -05:00
James Seibel 6c8060fa87 Up API version 2.1.0 -> 3.0.0 2024-06-30 16:33:54 -05:00
James Seibel 0c0987b66b Replace Vec3f and Mat4f in API with API versions 2024-06-30 16:33:38 -05:00
James Seibel 5a71e4015c Add javadocs to generic rendering objects 2024-06-30 15:28:00 -05:00
James Seibel f68edcbfea Add debug render code toggle 2024-06-30 14:38:35 -05:00
James Seibel aefa0d6797 generic renderable active flag and renaming cube -> box 2024-06-30 14:27:09 -05:00
s809 7e48c49e33 Make data source encoding lazy and move it off server thread 2024-07-01 00:15:54 +05:00
James Seibel 305a6bb459 Improve generic rendering pos objects 2024-06-30 14:02:44 -05:00
James Seibel 28c8614550 Store generic object instance VBOs if possible 2024-06-30 13:46:03 -05:00
s809 1b48d61d3f Rename CloseEvent 2024-06-30 22:35:41 +05:00
James Seibel f282d78fb9 minor generic obj cleanup 2024-06-30 09:31:45 -05:00
James Seibel 7f8b5579c5 Add generic rendering profilers and move some vertex attribs to uniforms 2024-06-30 09:25:12 -05:00
yeshi db786290e8 tell user to restart the game if the renderer dies 2024-06-29 21:56:38 +02:00
James Seibel 2c71d97c15 fix instanced generic duplicate rendering 2024-06-29 11:00:53 -06:00
James Seibel bf1361c7c3 GenericObjectRenderer forgot cached uniform location 2024-06-29 10:34:58 -06:00
James Seibel f2bba7f3df Add instanced and direct genericObject rendering 2024-06-29 10:29:30 -06:00
James Seibel 62e5183c54 Improve GLProxy creation validation/logging 2024-06-29 10:18:27 -06:00
James Seibel c1a90c9350 Add instanced generic object rendering 2024-06-29 09:11:49 -06:00
James Seibel 0d0826f319 Separate out Generic object rendering 2024-06-28 16:53:05 -06:00
s809 47541fa99c Move fixing the dimension name into even more correct place 2024-06-28 23:18:24 +05:00
s809 13638cedee Move fixing the dimension name into correct place 2024-06-28 19:28:36 +05:00
s809 4cdf31cfe8 Fix paths unable to be created on Windows 2024-06-28 17:25:09 +05:00
s809 3ff9a93066 Fix test compilation failing 2024-06-28 15:52:39 +05:00
s809 083a036666 Use level's ResourceLocation instead of dimension type's 2024-06-28 15:28:33 +05:00
James Seibel 6bfa3a422e Move generic cube rendering into it's own class 2024-06-27 06:36:30 -06:00
James Seibel 352abc40e6 Add proof-of-concept cube rendering 2024-06-27 06:22:15 -06:00
s809 a0efe44e8d Clean up package structure 2024-06-26 23:57:37 +05:00
James Seibel 58d26dedd6 Show overloaded message in chat and increase message timeout 5 -> 30 sec 2024-06-26 12:58:18 -05:00
s809 8d110e22dd Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into refactor/remove-tcp-connection 2024-06-26 15:13:03 +05:00
s809 4d6e11fdeb Fix compilation 2024-06-26 14:55:21 +05:00
s809 454b15ff60 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into refactor/remove-tcp-connection 2024-06-26 14:54:00 +05:00
James Seibel 321afa2a9e Up version 2.1.2 -> 2.1.3-dev 2024-06-25 19:25:30 -05:00
James Seibel 71ffbfb7b9 add "warning" to the low memory warning message 2024-06-25 19:24:07 -05:00
James Seibel 2ab7949ce5 Fix database file paths 2024-06-25 19:23:53 -05:00
James Seibel 28e1eaae77 Up version 2.1.1-dev -> 2.1.2 2024-06-24 20:53:36 -05:00
James Seibel 30dda058fe Throw an exception if the file handler can't read/write to the DB 2024-06-23 08:22:35 -05:00
James Seibel 0d16c037f5 Increase default world gen timeout to 3 minutes (from 60 sec) 2024-06-18 07:11:48 -05:00
James Seibel 7f50de17c0 Fix file handler tooltip 2024-06-17 07:40:49 -05:00
James Seibel 67819b30eb Improve F3 menu logic and visuals 2024-06-15 19:20:20 -05:00
s809 d2f4972693 Put messages received before player joining into queue 2024-06-16 00:45:16 +05:00
James Seibel ad38722304 add a todo to shared api 2024-06-15 11:26:46 -05:00
James Seibel 4da48c4c55 Lower the default CPU presets 2024-06-15 11:26:01 -05:00
James Seibel 6542e9e889 comment out unused showMigrationChatWarning 2024-06-15 11:04:56 -05:00
James Seibel 2f7e3d43d1 Add a startup low memory warning 2024-06-15 11:04:43 -05:00
James Seibel edaafb5cf0 Fix saving the chunk hash incorrectly 2024-06-15 10:37:59 -05:00
James Seibel 81d1ed419e Prevent creating LODs for already processed chunks 2024-06-15 09:42:43 -05:00
James Seibel 385e3dc964 Add ChunkWrapper BlockBiome HashCode 2024-06-15 08:11:16 -05:00
James Seibel 9592cd80f3 Improve position error logging 2024-06-15 07:20:38 -05:00
James Seibel 7b153a8aad Fix SelfUpdater list logging 2024-06-14 07:11:06 -05:00
s809 acb299530d Avoid reloading levels when unnecessary 2024-06-14 16:25:20 +05:00
James Seibel 54c2213eb6 Merge in JustALittleWolf's optimizations 2024-06-13 07:30:17 -05:00
s809 7c705015e6 Use level keys 2024-06-13 16:44:37 +05:00
JustAlittleWolf 1274a8e097 Directly access childNodes in LodQuadTree
This changes `LodQuadTree::recursivelyUpdateRenderSectionNode` to directly iterate on the children, instead of creating a childpositerator, and searching for the sectionpos. This lowers memory usage, as the iterators add quite a lot of object garbage (see https://i.imgur.com/r0qlxzc.png)
2024-06-13 13:15:39 +02:00
JustAlittleWolf bd1d0063e5 Change iterator Queue from LinkedList to ArrayDequeue
This improves performance and memory allocation, whenever the iterators are used. See https://docs.oracle.com/javase/8/docs/api/java/util/ArrayDeque.html
2024-06-13 13:14:30 +02:00
James Seibel af9b55ad6c Add lighting engine unit tests 2024-06-11 19:33:08 -05:00
James Seibel 97b86d69c4 Move shared ChunkWrapper code form Main to Core 2024-06-11 18:34:57 -05:00
James Seibel c6b4eacf03 Improve the overloaded chunk loading message 2024-06-11 07:35:28 -05:00
s809 bcb21be848 Show dimension names 2024-06-10 23:39:57 +05:00
s809 562594de2f Better error on invalid dimension 2024-06-09 22:01:30 +05:00
s809 03a00bb7ca Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into refactor/remove-tcp-connection 2024-06-09 21:18:08 +05:00
James Seibel e011ce3ee0 Remove OpenGL multithreading 2024-06-08 12:49:08 -05:00
James Seibel 1dd6359c89 Try changing LZMA preset from 4 -> 3 (faster, less compressed) 2024-06-08 11:06:26 -05:00
James Seibel e41abdd176 Improve config comment spacing 2024-06-08 08:33:32 -05:00
James Seibel b7a5bfd274 Add update branch config "auto" 2024-06-08 08:11:09 -05:00
James Seibel c3abfb123d Up the version number 2.1.0-a -> 2.1.1-a-dev 2024-06-07 17:42:36 -05:00
s809 dc3aa939db Fix logging errors 2024-06-08 00:07:24 +05:00
s809 39391b944f Add toString to messages & fix incorrect call 2024-06-06 21:25:19 +05:00
s809 a6fc8f1702 Fix compilation 2024-06-02 20:00:09 +05:00
s809 b0777789fd Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into refactor/remove-tcp-connection 2024-06-02 19:58:53 +05:00
s809 24a2a48deb Increase section reload delay 2024-06-01 19:49:23 +05:00
s809 e08faa7943 Fix requests breaking on rejoining 2024-06-01 12:17:04 +05:00
James Seibel 76f28e648c Up the version number 2.0.4-a-dev -> 2.1.0-a 2024-05-30 20:13:55 -05:00
s809 a000afbc60 Kinda works, rejoining is broken 2024-05-29 23:36:34 +05:00
James Seibel f49a79b54a remove unused lightmapBindingIndex in DhApiRenderParam 2024-05-27 17:57:45 -05:00
James Seibel 3cf385c2a2 Potentially fix memory leaks when rendering is disabled 2024-05-27 17:37:52 -05:00
s809 a3e34c9738 [skip ci] Still a mess 2024-05-27 22:01:57 +05:00
s809 1f63bdf124 [skip ci] Somewhere 2024-05-22 23:18:18 +05:00
s809 44205664b5 [skip ci] Incomplete 2024-05-21 22:54:57 +05:00
James Seibel 8c91a84795 Fix LZ4 in retail MC 2024-05-21 07:43:33 -05:00
James Seibel 4af63758f2 Add error logging to stream wrappers 2024-05-21 07:42:22 -05:00
James Seibel 969b02dc18 Put config button hide option only in file 2024-05-20 22:15:38 -05:00
Ran 2111ad64c4 Properly shade libraries when using Java version Ω 2024-05-21 02:09:04 +00:00
James Seibel e02deb2fb0 Merge branch 'main' into 'main'
thing part 2 (last mr didn't include core)

See merge request jeseibel/distant-horizons-core!57
2024-05-20 19:57:16 +00:00
Yeshi0 410e34b147 remove unnecessary reference to zstd 2024-05-20 17:53:02 +02:00
s809 40d019d7e8 Merge remote-tracking branch 'origin/main' 2024-05-18 22:14:19 +05:00
s809 96755e6174 Move overrides in LAN to config 2024-05-18 22:09:19 +05:00
James Seibel 9cebd7ee54 Add ConfigBasedLogger.errorAndThrow() 2024-05-18 08:07:41 -05:00
James Seibel cfec32746d Fix shading for MC 1.20.6 IE Java 21 2024-05-18 07:27:17 -05:00
s809 bd5866787f Update Config.java 2024-05-17 12:41:09 +00:00
s809 d9651bbd27 Merge branch 'main' into 'main'
rewrite config comments

See merge request s809/distant-horizons-core!1
2024-05-17 12:39:54 +00:00
James Seibel fabe5d77ea Merge branch 'SectionPosRewrite' 2024-05-16 22:15:03 -05:00
James Seibel 894a2dbe7d Fix incorrect DhSectionPos method var order 2024-05-16 22:14:34 -05:00
James Seibel 172e7560fd Replace DhSectionPos with long primitives to reduce GC 2024-05-16 22:07:57 -05:00
James Seibel c67712d973 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-05-15 18:57:53 -05:00
James Seibel cd5ff8ce35 Start adding new DhSectionPos and unit tests 2024-05-15 18:48:25 -05:00
James Seibel 6e717a383d Remove unused OldSectionPos methods and add serialize methods to V1 repo 2024-05-15 18:47:51 -05:00
James Seibel bef873b875 Add comments to EDhDirection 2024-05-15 18:47:09 -05:00
James Seibel 331d75a3bc Rename DhSectionPos -> OldDhSectionPos before rewrite 2024-05-15 07:50:52 -04:00
James Seibel cec6438602 Replace QuadTree iterator linked list with ArrayDeque
Thanks JustALittleWolf!
2024-05-15 07:36:32 -04:00
Yeshi0 a1f4442a53 rewrite config comments 2024-05-14 20:16:44 +02:00
s809 e6b140245b Fix awt dependency error 2024-05-12 17:34:58 +05:00
James Seibel f5e0c112e3 Revert max world gen tasks 2 -> 20
I was hoping it would fix LODs not appearing, although it appears there was a different problem which has since been fixed.
2024-05-11 16:23:20 -05:00
James Seibel 899c4aca91 Add Quad Tree Render Status debug wireframe 2024-05-11 16:21:53 -05:00
James Seibel a4ac483e5b Potentially fix LODs not loading in 2024-05-11 16:19:10 -05:00
s809 08336027b2 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into feature/2.0.4 2024-05-11 19:16:01 +05:00
James Seibel 723f67ea0c Attempt to prevent thread starvation due to world gen
Hopefully this should help prevent issues on low end machines not loading in LODs
2024-05-10 22:27:22 -05:00
s809 543b5ed49a Fix dimension switching (at cost of breaking immersive portals) 2024-05-10 23:56:07 +05:00
s809 3d86c5c5ee Fix generated sections not appearing 2024-05-10 21:13:40 +05:00
James Seibel 4575701bd4 disable sql timeout 2024-05-09 23:21:35 -05:00
James Seibel 7cfcfb0695 Handle missing/corrupted block/biome ID's in the full data 2024-05-09 19:45:54 -05:00
James Seibel f33bfa1d69 Fix monoliths due to duplicate IDs
This would specifically happen if moving from one MC version that has more blockstate attributes to one with fewer. If that was done then the both blockstates would act like they were the same, screwing up the ID map.
2024-05-09 19:44:33 -05:00
James Seibel a3c1f1563d minor FullDataToRenderDataTransformer reformat 2024-05-09 19:35:43 -05:00
James Seibel 361d197c5e Add DataCorruptedException(message, exception) constructor 2024-05-09 19:04:07 -05:00
James Seibel 04379691bc Potential fix for NaN multiverse similarity 2024-05-09 07:34:47 -05:00
s809 8e1009ab3f Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into feature/2.0.4 2024-05-05 19:51:21 +05:00
s809 551a5f1a72 Fix updates 2024-05-05 16:55:15 +05:00
James Seibel 7e45a98e8f Up the API version 1.1.0 -> 2.0.0
There were several breaking changes and I forgot to up the major version number appropriately.
2024-05-04 18:16:19 -05:00
James Seibel e1ca398b8f Fix updating chunk count not clearing on world close 2024-05-04 15:35:29 -05:00
James Seibel f34e67e6bb Fix F3 levels not closing with multiverse 2024-05-04 15:12:26 -05:00
James Seibel aad095ca1a Fix #670 Remove outdated world gen options from tooltip 2024-05-04 09:48:35 -05:00
s809 2664f96e0f Generation works, updates don't 2024-05-03 22:56:01 +05:00
James Seibel 950c951c2d minor ConfigBasedLogger cleanup 2024-05-02 17:31:53 -05:00
s809 dde2bcc947 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-05-02 21:47:35 +05:00
cola98765 37eaa2656a Update file FullDataToRenderDataTransformer.java 2024-05-01 10:31:43 +00:00
James Seibel 945853d014 Improve nightly build warning message 2024-04-30 21:53:00 -05:00
James Seibel 6bb38ad500 Improve migration queue messages 2024-04-30 21:52:13 -05:00
James Seibel 980086c533 Fix debug wireframes rendering on top of LODs 2024-04-30 21:23:54 -05:00
James Seibel c8f1154831 Remove ZStd compression option
Any ZStd data will be automatically deleted and re-generated
2024-04-30 21:17:26 -05:00
James Seibel 9196480e50 Remove references to FastUtil 8.5.13 2024-04-30 20:28:34 -05:00
James Seibel f0506d28e5 Fix incorrect refernce to fastutil in LzmaArrayCache 2024-04-30 20:26:34 -05:00
James Seibel 8ecd5dd9cb Fix optifine 1.16 support 2024-04-30 18:57:07 -05:00
James Seibel c83140a2d0 add IClientLevelWrapper.getPlainsBiomeWrapper() 2024-04-28 17:31:08 -05:00
James Seibel 3b600ce800 Add corrupt data read handling 2024-04-28 15:52:08 -05:00
James Seibel 7f874b4dc5 Revert a613540b 2024-04-27 12:56:08 -05:00
James Seibel 23e857a20d Fix some lib shading issues 2024-04-27 11:35:08 -05:00
James Seibel 2298ef0e0d up the version number 2.0.3 -> 2.0.4 2024-04-26 07:33:42 -05:00
James Seibel 7470455e50 Fix issues with compressors not appearing at runtime 2024-04-26 07:33:14 -05:00
James Seibel 614884c29e Merge Data_source_rewrite into main 2024-04-26 07:21:48 -05:00
James Seibel b41e54e6a6 shade in apache.logging for the standalone jar 2024-04-25 22:09:51 -05:00
James Seibel 2cc6c8d840 Change Initializer compressor test class 2024-04-25 21:52:44 -05:00
James Seibel a613540b6a Move most libraries from the main script to core 2024-04-25 21:51:48 -05:00
Cutiepie c89fcb094a Add core to gradle 2024-04-22 18:53:31 +10:00
James Seibel 10014d3729 Change default grass side rendering to fade_to_dirt 2024-04-20 19:00:33 -05:00
James Seibel 88ff9e7cde Drop high and extreme horizontal quality enums 2024-04-20 12:36:19 -05:00
James Seibel 459bc5fc0c Ops, forgot to remove this unused override in DataSourceProvider 2024-04-20 12:35:48 -05:00
James Seibel 3826c83d89 Remove "new" from AbstractDataSourceHandler's name 2024-04-20 11:41:02 -05:00
James Seibel 382917033a Fix a few warnings 2024-04-20 11:38:52 -05:00
James Seibel 37381896bc Fix warnings about updating empty maps 2024-04-20 11:38:31 -05:00
James Seibel 22f4757aae Fix rendering holes 2024-04-20 11:02:52 -05:00
James Seibel 57cd143009 Fix LodRenderSections not stopping load futures when closed 2024-04-20 08:49:44 -05:00
James Seibel 031742a951 speed up initial LOD loading 2024-04-18 21:06:25 -05:00
James Seibel a2e2559b26 Fix transparent blocks glowing (thanks IMS) 2024-04-18 07:47:42 -05:00
s809 3e3e97385b Fix 1.16.5 and 1.17.1 builds 2024-04-17 21:02:14 +05:00
s809 05fba12038 Prevent generation when config is not acknowledged by server 2024-04-16 21:55:02 +05:00
s809 c1f2803c56 Add missing newlines for override configs 2024-04-16 21:39:56 +05:00
s809 7006c669f0 More verbose invalid level error 2024-04-16 21:38:37 +05:00
s809 7cd0c956f6 Fix IPv6 addresses not being properly handled 2024-04-16 21:27:26 +05:00
s809 7c33dda11b Add FlushConsolidationHandler 2024-04-16 20:32:50 +05:00
James Seibel 6e0071a046 Fix migration chat message not appearing 2024-04-13 17:30:39 -05:00
James Seibel 352a59838d Fix double sending migration messages 2024-04-13 17:02:31 -05:00
James Seibel 63371e8111 improve migration deletion logic and add F3 logging 2024-04-13 16:58:52 -05:00
James Seibel 383ab1121d Fix migration getter SQL 2024-04-13 16:58:33 -05:00
James Seibel c9a7527bcb Improve migration message 2024-04-13 16:52:09 -05:00
James Seibel 7d4d899226 log migration status in F3 menu and chat 2024-04-13 14:25:28 -05:00
James Seibel 169429fe48 improve client level load logging 2024-04-13 13:35:04 -05:00
James Seibel 94304eb055 speed up initial loading when DB migration is necessary 2024-04-13 12:12:50 -05:00
James Seibel 4a40e19b34 suppress unchecked warning in LodRenderSection 2024-04-13 09:45:49 -05:00
James Seibel 22422321ab Remove unhelpful data source pooling in LodRenderSection 2024-04-13 08:22:36 -05:00
James Seibel eafaf2b4cd Fix compiler error in FullDataSourceV2 and minor reformat 2024-04-13 07:42:32 -05:00
James Seibel 281c85c283 Merge branch 'Data_Source_Rewrite' of https://gitlab.com/jeseibel/distant-horizons-core into Data_Source_Rewrite 2024-04-13 07:40:17 -05:00
James Seibel 8cecdebc05 Disable cave culling for any detail level above 0 2024-04-13 07:40:15 -05:00
James Seibel cba55aa643 Improve LOD load order 2024-04-12 22:40:08 -05:00
James Seibel f7c5b5725f Fix LodRenderSection adjacent source indicies 2024-04-12 22:39:32 -05:00
James Seibel 07b495d48c Increase file handler thread pool default runtime ratio 2024-04-12 22:19:44 -05:00
James Seibel b5d938475a Optimize LodRenderSection loading and data caching 2024-04-12 22:19:28 -05:00
s809 5f9f0f23b8 Fix integer overflows 2024-04-12 23:14:58 +05:00
s809 284191a904 Fix Neoforge 2024-04-12 22:36:04 +05:00
cola98765 f8b127a85d I may not be smart 2024-04-11 09:45:30 +00:00
cola98765 a216ba364d hopefully make old file conversion a bit faster. 2024-04-11 09:43:05 +00:00
James Seibel 6d0ec33316 fix minor line spacing 2024-04-10 18:51:14 -05:00
James Seibel 35681fe9a5 Fix Z-fighting at very high heights 2024-04-10 07:11:23 -05:00
James Seibel e560ddf3dc Fix sqlite database files not being unlocked 2024-04-09 21:29:12 -05:00
James Seibel 77fffb1a9b add a TODO to FullDataSourceProviderV2 2024-04-09 19:31:20 -05:00
James Seibel cf74d17e1b Fix world gen tasks being incorrectly removed from the queue at long distances 2024-04-09 19:27:57 -05:00
James Seibel a0e7bb94c6 Add a ApplyToParent DB index to improve file handling speed 2024-04-09 07:48:31 -05:00
James Seibel e10617ac19 increase update populator thread default run time ratio 2024-04-09 07:13:01 -05:00
James Seibel cd2b5fd668 Speed up world gen queue initial loading 2024-04-09 07:11:59 -05:00
James Seibel 336e8b99ec Reduce update thread pool default counts 2024-04-08 07:43:21 -05:00
James Seibel d8bac9df8c Remove deprecated DhApiScreenResizeEvent 2024-04-08 07:17:17 -05:00
James Seibel 1ff4a56e2d Improve grass side rendering and add a config 2024-04-07 21:42:31 -05:00
James Seibel 7bdafa28cc Fix debug detail render mode 2024-04-07 20:38:59 -05:00
James Seibel 03e11fbe3e Improve migration update timeout message and increase the time 2024-04-07 14:19:55 -05:00
James Seibel 74d193d294 Add a couple full data source null checks 2024-04-07 14:00:03 -05:00
James Seibel 46e3b98b62 Remove near fog option 2024-04-07 13:50:05 -05:00
James Seibel 2d323cef39 remove missed unlimited horizontal quality reference 2024-04-06 18:18:57 -05:00
James Seibel 8846ca5b5e Improve shutdown thread pool handling 2024-04-06 18:18:41 -05:00
James Seibel f310f1b316 Remove Unlimited horizontal quality setting
The setting was un-maintainable and would cause major issues for anything but the smallest render distances.
2024-04-06 18:03:54 -05:00
James Seibel 10d9282df7 Fix a couple FullDataPointUtilV2 references 2024-04-06 12:37:31 -05:00
James Seibel a751507f19 Have grass fade to dirt for walls 2024-04-06 12:37:18 -05:00
James Seibel b4b7738aa6 Fix API enums missing "DhApi" prefix and remove unused Enums/code 2024-04-06 10:06:03 -05:00
James Seibel 8fd37d72c7 Add Sqlite Write Ahead Log to Sqlite 2024-04-06 09:53:28 -05:00
James Seibel f09818e564 Update ELodShading names and descriptions 2024-04-06 08:42:29 -05:00
James Seibel bdd0fbe5ae Merge branch 'change_shading_lang' into Data_Source_Rewrite 2024-04-06 08:30:22 -05:00
James Seibel ddbad36d8a Remove FullDataPointUtilV2
Not sure what happened to make me think we needed to change the data point format, but luckily we don't have to deal with it any more and can just stick with the single file.
2024-04-06 08:17:09 -05:00
James Seibel ae829cbe3e Fix legacy migration conversion column order 2024-04-06 07:54:47 -05:00
James Seibel 5ef6cb2e0d Fix wrong data source Version ref in SubDim Matcher 2024-04-06 07:53:52 -05:00
James Seibel a1a45f50bf Change Sqlite Journaling to WAL to potentially improve concurrent performance 2024-04-04 07:50:02 -05:00
James Seibel 42675abef1 Comment out LodRenderSection neighbor collection 2024-04-04 07:09:17 -05:00
James Seibel 08f0f8ee17 Add a constant for LodRenderSection cache expiration 2024-04-04 07:08:51 -05:00
James Seibel 4e1155f8a7 Improve initial LOD loading speed 2024-04-03 22:07:25 -05:00
James Seibel 4bc7cf1e86 Fix LodRenderSections not disabling rendering 2024-04-03 21:26:05 -05:00
James Seibel 1491487328 Remove unneeded V1 -> V2 data migration validation 2024-04-03 07:28:59 -05:00
James Seibel 750d8b7bc3 Fix crash in 1.16 due to buffer upload happening before rendering is setup 2024-04-03 07:19:34 -05:00
s809 0ad60cd5d9 Merge branch 'feature/plugin-channel' 2024-04-02 22:34:45 +05:00
s809 8485d1585a Remove localhost from check 2024-04-02 22:27:36 +05:00
James Seibel b59d505725 Add IP only server folder mode 2024-04-02 07:17:31 -05:00
James Seibel 2cce71cf28 Add non-magic max pooled data source number 2024-04-01 20:26:13 -05:00
James Seibel 964f5feb4b Remove unused data source properties 2024-04-01 20:21:56 -05:00
James Seibel 9835af0845 remove unused ColumnRenderSource.worldGenStep 2024-04-01 20:19:31 -05:00
James Seibel 81f921623e rename IDataSource getSectionPos -> getPos 2024-04-01 20:18:44 -05:00
James Seibel dc5968b0b5 pool columnRenderSources 2024-04-01 20:16:07 -05:00
s809 1cd2f75dd2 Fix compilation 2024-04-01 21:52:20 +05:00
James Seibel 43392ca0e4 Have LodRenderSection cancel loading on render distance change 2024-03-31 18:57:23 -05:00
James Seibel 88d6092153 Clean up LodRenderSection and fix massive memory use at long render distances 2024-03-31 18:42:46 -05:00
s809 bdc4fa4477 Fix errors when on vanilla server 2024-04-01 00:55:15 +05:00
s809 ff7720a8d6 Adjust server port change behavior 2024-04-01 00:07:32 +05:00
James Seibel 0ddf1dd640 Remove ColumnRenderSourceLoader 2024-03-30 22:07:08 -05:00
s809 6829709123 Fix reconnection logic 2024-03-30 23:40:05 +05:00
James Seibel ddd475d537 Remove AbstractRenderBuffer 2024-03-30 08:07:53 -05:00
James Seibel 543c3ffc54 Fix compiler bugs 2024-03-28 17:14:08 -05:00
cola98765 cf97c08aaf @James check if it doesn't explote; This should help with rendering, and fix the issue with stacking water with 2block resolution 2024-03-28 21:27:01 +00:00
cola98765 ea0a62b6a3 panic fix 2024-03-28 20:14:19 +00:00
cola98765 57f3d44326 Update file FullDataToRenderDataTransformer.java 2024-03-28 19:01:42 +00:00
James Seibel e7eb2ff9cc Remove the DhRenderData DB table 2024-03-28 07:47:07 -05:00
James Seibel 6a3261394f Add compression mode config documentation and missing LodDataBuilder lines 2024-03-28 07:42:53 -05:00
James Seibel d41af88494 Add ColumnWorldCompressionMode to the database 2024-03-28 07:36:02 -05:00
James Seibel e83864fd02 Add world compression config 2024-03-27 19:09:09 -05:00
James Seibel 5722a92dc1 Add broken lossy chunk compression 2024-03-27 15:54:24 -06:00
s809 0d355f675a Incomplete 2024-03-26 00:30:57 +05:00
James Seibel 5249377199 Add data caching to Lzma data compression 2024-03-24 15:11:42 -05:00
James Seibel b3a20fb938 Use native bindings for LZ4 output compression to reduce GC load 2024-03-24 12:17:48 -05:00
James Seibel 74627fdf90 Use automatica Zstd buffer pooling 2024-03-24 12:00:51 -05:00
James Seibel bbe5ae9b7c Fix potential issues when java.awt.headless is true 2024-03-24 11:52:32 -05:00
James Seibel 63b6365128 Add swing headless setup to Initializer 2024-03-24 11:50:45 -05:00
James Seibel ed9cf526cd rename example unit tests to prevent naming issues 2024-03-24 11:38:30 -05:00
coolGi cb0c294df6 Removed test code being included in main repo code 2024-03-24 12:26:10 +10:30
James Seibel 661f286b77 Fix accidentally marking DTOs to update past the max parent detail level 2024-03-23 18:08:35 -05:00
James Seibel 8c5cd7f11f Remove render data file handling and related code 2024-03-23 17:55:59 -05:00
James Seibel b64df318ce Improve error handling in DebugRenderer 2024-03-23 17:18:05 -05:00
James Seibel a1c85d91fc Comment out trace logs
These logs aren't printed and will just increase GC pressure for strings
2024-03-23 16:18:21 -05:00
James Seibel ce95dfb3d1 Reduce some GC pressure in FullDataSourceV2.mergeInputTwoByTwoDataColumn 2024-03-23 16:14:34 -05:00
James Seibel cbfd4f9de3 Pool FullDataPointIdMap Entries and improve hash logic 2024-03-23 15:49:40 -05:00
James Seibel 5d50775932 re-implement data source pooling 2024-03-21 22:07:35 -05:00
James Seibel 18ad241025 Replace datasource v2 long[][] with LongArrayList[] and fix previous implementation 2024-03-21 21:53:15 -05:00
James Seibel 4b98882b41 Revert "Add FullDataSourceV2 pooling and replace long[][] arrays with LongArrayList[]"
This reverts commit f11e9a142f.
2024-03-21 20:12:47 -05:00
James Seibel 3ec9bfca1b comment out potenially unused world gen logic 2024-03-21 20:11:14 -05:00
James Seibel 6f7c46e086 Remove unnecessary async render source updates 2024-03-21 20:09:10 -05:00
James Seibel 7726335413 Fix FullDataSourceV2Repo.getColumnGenerationStepForPos ignoring compression 2024-03-21 19:59:12 -05:00
James Seibel f3d8a749fd Improve DhLodPos.getWidthAtDetail assertion 2024-03-21 18:12:37 -05:00
James Seibel f11e9a142f Add FullDataSourceV2 pooling and replace long[][] arrays with LongArrayList[] 2024-03-21 17:25:37 -05:00
James Seibel 72c601b2db change en_us "Horizontal Quality" -> "LOD Dropoff Distance" 2024-03-21 17:11:04 -05:00
James Seibel 4cdc6c9632 Compress the column gen step in the database 2024-03-20 07:25:38 -05:00
James Seibel 3b9962d7dc Fix transactionScript auto update variable flipped 2024-03-19 21:10:27 -05:00
James Seibel d926d11d3c Reduce string concatenations in assertions 2024-03-19 20:53:07 -05:00
James Seibel 9fb5182b78 Change the SQLite journal mode DELETE -> TRUNCATE 2024-03-19 20:07:21 -05:00
James Seibel a1950ebccc prevent world gen queue until half of the update tasks have finished 2024-03-19 07:28:14 -05:00
James Seibel 8f9caa5d9a Remove vacuum call in createFullDataSourceV2Tables SQL script 2024-03-19 07:27:57 -05:00
cola98765 c537084d07 potential fix to bright blocks when they reach build height limit 2024-03-19 12:27:05 +00:00
James Seibel 9f195231db up the version number 2.0.2 -> 2.0.3 2024-03-19 06:48:26 -05:00
James Seibel 805429722f Fix an issue where downsampling would sometimes corrupt the data souce 2024-03-18 21:14:35 -05:00
James Seibel 5b67f60e6f Fix black block lighting for super flat worlds 2024-03-18 20:05:12 -05:00
James Seibel 6557a1a7bd rename FullDataSourceV2.createFromCompleteDataSource 2024-03-18 20:01:39 -05:00
s809 af2f0e8582 Fix Forge 2024-03-18 21:37:58 +05:00
James Seibel a62ee8b3cf Merge !50 2024-03-17 19:09:01 -05:00
cola98765 7714569251 Merge branch 'blending_change' into 'main'
Update LodRenderer.java

See merge request jeseibel/distant-horizons-core!53
2024-03-17 23:47:26 +00:00
cola98765 8b9e48d4d3 Update LodRenderer.java 2024-03-17 23:47:25 +00:00
James Seibel 94e3426779 Remove ISourceProvider 2024-03-17 17:36:28 -05:00
James Seibel 6b13e9141c rename FullDataFileHandler -> FullDataSourceProvider and Remove IFullDataSourceProvider
IFullDataSourceProvider was removed so legacy providers don't have to implement methods they don't need
2024-03-17 17:32:41 -05:00
James Seibel bf00a23499 Rename IWorldGenerationQueue -> IFullDataSourceRetrievalQueue 2024-03-17 16:46:56 -05:00
James Seibel 569a4b16b4 Improve the nightly build warning text 2024-03-17 16:29:49 -05:00
James Seibel 8ec22189fd remove unneeded casting in RenderSourceFileHandler 2024-03-17 16:24:46 -05:00
James Seibel 9d539c4766 Update several todo comments 2024-03-17 16:15:06 -05:00
James Seibel fada27257c Write FullDataSourceV2 column length as a short instead of a int 2024-03-17 16:14:24 -05:00
James Seibel c55880bcb9 Fix empty data sources not updating and being regenerated 2024-03-16 22:43:22 -05:00
James Seibel cbadfab62a disable cave culling in the end 2024-03-16 22:43:07 -05:00
James Seibel c435b55576 Fix updating empty LODs (IE in the end) 2024-03-16 22:27:11 -05:00
James Seibel 69e3e2bca3 Add a config to render overlapping quad errors 2024-03-16 22:23:20 -05:00
James Seibel b20cbab012 Remove Seamless Overdraw Test
The result wasn't very good due to rendering issues with entities
2024-03-16 21:03:15 -05:00
James Seibel ce4c5db5df Fix incorrect FullDataSourceV2 downsampling for worldGenStep 2024-03-16 20:54:12 -05:00
James Seibel 6d2912e320 Add created and last modified unix time to FullDataSourceV2 2024-03-16 20:32:01 -05:00
James Seibel e14e122b6c Refactor FullDataSourceV2 variables 2024-03-16 20:19:24 -05:00
James Seibel dcd16cb84b rename NewFullDataSource -> FullDataSourceV2 and supporting objects 2024-03-16 19:53:01 -05:00
James Seibel 98183a4e75 Rename CompleteFullDataSource -> FullDataSourceV1 2024-03-16 19:40:36 -05:00
James Seibel 4ec1dea1ba merge CompleteFullDataSource and FullDataArrayAccessor 2024-03-16 19:34:36 -05:00
James Seibel 031bf754e8 Remove SingleColumnFullDataAccessor and IFullDataAccessor 2024-03-16 19:16:50 -05:00
James Seibel c081b6c57c Remove unusused AbstractDhRepo.get(TDTO) 2024-03-16 17:47:06 -05:00
James Seibel 6413e17e4b Add multiple compression options and unit tests 2024-03-16 17:25:15 -05:00
s809 3362570123 Add thread pool task buildup limiter 2024-03-16 12:28:38 +05:00
cola98765 01c1dbb146 Update en_us.json 2024-03-15 09:13:24 +00:00
cola98765 9e0046ba83 Update en_us.json 2024-03-15 09:07:24 +00:00
cola98765 150d929a45 Update EVerticalQuality.java 2024-03-15 08:58:26 +00:00
James Seibel d5074feda2 Add aggregate getters to NewFullDataSourceRepo for unit testing 2024-03-14 21:40:36 -05:00
James Seibel 4741e25349 Add NewFullDataSourceDTO.createUnitTestDataSource() 2024-03-14 21:35:52 -05:00
s809 e008eb8a13 Server side plugin networking
Untested port for Forge
2024-03-14 21:46:23 +05:00
James Seibel c3f99835db Multithread full data migration 2024-03-12 22:00:36 -05:00
James Seibel 996621887c Prevent world gen while migration is running 2024-03-12 21:43:26 -05:00
James Seibel 6f931c66bf Add migration fail capture 2024-03-12 21:42:53 -05:00
James Seibel 024176f97c Fix migrated downsampling light looking weird 2024-03-12 21:15:15 -05:00
James Seibel 968bc9addc Fix incorrect parent updating lock logic 2024-03-12 21:05:45 -05:00
James Seibel e83f7bd62e Add FullDataPointUtilV1 for use with CompleteFullDataSource 2024-03-12 21:00:50 -05:00
James Seibel c5787d0ff2 Add Legacy data source migration 2024-03-12 20:24:57 -05:00
James Seibel 30076f1b60 Minor comments and refactoring 2024-03-12 07:21:56 -05:00
James Seibel 34fdae1c78 remove debug code in NewFullDataSource 2024-03-10 21:50:13 -05:00
James Seibel dd7d7733f0 Rename and remove debug wireframe configs 2024-03-10 21:47:27 -05:00
James Seibel fd1944eb26 Remove unnecessary legacy debug rendering 2024-03-10 21:46:52 -05:00
James Seibel 64fce77a0a Fix repo castring for AbstractNewDataSourceHandler 2024-03-10 21:38:41 -05:00
James Seibel d569ae4052 Deprecate EHorizontalQuality.UNLIMITED 2024-03-10 21:30:59 -05:00
James Seibel 5f8eceee8d Remove unused override in RenderSourceFileHandler 2024-03-10 21:16:03 -05:00
James Seibel b49988af9e Remove an unused method added by Iris 2024-03-10 21:15:45 -05:00
James Seibel 46ba2630f1 Fix LodQuadTree clear render cache not working at extreme distances 2024-03-10 21:15:37 -05:00
James Seibel 02a1445732 Fix render data not regenerating on config change 2024-03-10 21:14:59 -05:00
James Seibel 8bdc4fe779 Add missing changed for 28de6f93 2024-03-10 21:05:13 -05:00
James Seibel 28de6f93af Fix world gen for extreme render distances 2024-03-10 20:44:12 -05:00
s809 1f438d8f87 Fix world setting 2024-03-10 21:09:52 +05:00
James Seibel 20394068b2 Add additional F3 lines for file updating 2024-03-09 17:06:17 -06:00
James Seibel 599340c4e8 Reduce data source update locking and add some data update batching 2024-03-09 17:05:54 -06:00
James Seibel e6c985a189 Add hash code and equals to NewFullDataSource 2024-03-09 09:06:39 -06:00
s809 278ae04532 Initial buggy plugin channel support 2024-03-05 22:09:30 +05:00
James Seibel 244d960ec0 minor render data bugfix 2024-03-04 21:34:00 -06:00
James Seibel eea2155e20 Temp fix for 0020 auto update script 2024-03-04 21:25:02 -06:00
James Seibel 8f6ff8c943 Fix data sources not saving correctly 2024-03-04 20:56:48 -06:00
James Seibel 97554ccae6 Increase Vertical Quality settings to hopefully reduce issues with floating islands 2024-03-04 07:13:43 -06:00
James Seibel c866fbfbfd Add update propagator thread pool 2024-03-04 07:10:20 -06:00
James Seibel 0c5c4f3a74 Fix multithreaded save calls to AbstractDhRepo 2024-03-04 07:08:32 -06:00
James Seibel 0f04453134 Make down sampling average values instead of grabbing the value closest to -inf 2024-03-03 19:17:24 -06:00
James Seibel a734bb6a69 Increase AbstractNewDataSourceHandler update lock count 2x -> 4x
Trying to reduce lock collisions.
2024-03-03 19:08:23 -06:00
James Seibel dc687f70ae Add LodUtil light constants 2024-03-03 14:53:10 -06:00
James Seibel e15ffe10c9 Improve FullDataPointUtil parameter names 2024-03-02 21:36:54 -06:00
James Seibel 3d999a1749 Change FullDataPointUtil to get/set sky and block lighting separately
The binary format is identical the only difference is the getter/setter methods
2024-03-02 21:31:21 -06:00
James Seibel 47391028d8 Prevent re-saving unmodified full data 2024-03-02 16:21:32 -06:00
James Seibel b8e03a2144 Deprecate DhApiScreenResizeEvent, replace with DhApiColorDepthTextureCreatedEvent 2024-03-02 15:21:22 -06:00
James Seibel 2a39a4cdc4 Add several TODO comments and minor reformatting 2024-03-02 15:20:51 -06:00
James Seibel 89012711ce rename ThreadPools -> ThreadPoolUtil 2024-03-02 14:02:54 -06:00
James Seibel 9b93125936 Add first draft of the new full data system 2024-03-02 11:44:50 -06:00
James Seibel 113c0f227f Improve debugging for FullDataPointUtil.remap() 2024-03-02 08:05:54 -06:00
James Seibel 28e230a2db Fix DhApiScreenResizeEvent incorrect description 2024-02-25 08:14:25 -06:00
s809 2d4f033891 Do not wait for world gen tasks to stop while shutting down queue 2024-02-25 18:05:45 +05:00
s809 1fd85f2249 Show server side messages in F3 on disconnect 2024-02-24 22:48:24 +05:00
s809 d966697ecb Change some wording 2024-02-24 21:37:54 +05:00
James Seibel bb5dd248d8 Add compound key repo support 2024-02-24 09:04:46 -06:00
s809 2e6c0ba356 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-02-22 23:06:21 +05:00
James Seibel 9b46613355 temporary multiverse null pointer fix 2024-02-22 07:05:07 -06:00
James Seibel a44469eac4 Add a temporary debug renderer to FullDataFileHandler for unsaved positions 2024-02-20 07:42:46 -06:00
coolGi 87e5647379 Refactored logos into assets/distanthorizons 2024-02-18 19:02:56 +10:30
James Seibel 045c9f46d2 Add resource (sql script) validation in Initializer.java 2024-02-17 22:27:23 -06:00
James Seibel 7826d756d0 Add stackoverflow source link to RenderUtil.getNearClipPlaneDistanceInBlocks() 2024-02-15 21:59:21 -06:00
James Seibel f37ed0cccf Revert Fog near end/far start distance to pre-RenderUtil fix 2024-02-15 21:54:21 -06:00
James Seibel 6fcdde8a9f Fix fog rendering 2024-02-15 20:36:34 -06:00
s809 ebb47990f4 Fix immersive portals 2024-02-15 23:15:01 +05:00
s809 15fe39c1bb Fix connection exception handling 2024-02-13 22:03:55 +05:00
James Seibel cd20fb1e34 Temp fix for near clip plane going too far in some cases 2024-02-13 07:53:01 -06:00
s809 7bb0ec3148 Fix compilation 2024-02-12 21:39:30 +05:00
s809 6fcfacd346 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-02-12 21:38:58 +05:00
James Seibel d7c96bbba4 Fix ocean floors showing at very low detail levels 2024-02-11 21:31:24 -06:00
James Seibel 5c30d077dd Add comments about corrupted data in full data transformer 2024-02-11 20:16:23 -06:00
James Seibel 7df442878d Fix NeverCullFrustum casting error 2024-02-11 18:29:47 -06:00
James Seibel b8f90ddc55 Add SharedApi.isChunkAtBlockPosAlreadyUpdating() 2024-02-11 16:39:03 -06:00
James Seibel cc134092ed Default to no culling for the shadow pass 2024-02-11 14:56:12 -06:00
s809 48212ba746 Add another config option
Fix rate limiting issues (kinda)
2024-02-11 19:39:35 +05:00
James Seibel 5d4268e902 Minor IDhLevel refactor and rename DhLevel -> AbstractDhLevel 2024-02-10 22:05:46 -06:00
James Seibel c718733104 Fix the API seeing the wrong far clip plane 2024-02-10 22:02:15 -06:00
James Seibel 97e7f05636 Fix using the wrong near clip plane 2024-02-10 21:58:20 -06:00
James Seibel b4269afc9f Add IDhApiShadowCullingFrustum and a config for shadow culling 2024-02-10 21:37:59 -06:00
James Seibel 46740f51a7 Merge branch 'distant-horizons-core-shadow.cull.fix' 2024-02-10 18:13:14 -06:00
James Seibel 9ccbc792b4 Minor file handler refactor 2024-02-10 18:08:08 -06:00
James Seibel 89ea4c5172 potentially fix world gen getting stuck 2024-02-10 18:06:37 -06:00
James Seibel 61c83e4c10 GeneratedFullDataFileHandler refactor 2024-02-10 18:06:24 -06:00
James Seibel 65e053db0d Add ColumnRenderBufferBuilder debug config options 2024-02-10 17:30:42 -06:00
NULL511 a9ccc6fa34 alter frustum culling api usage 2024-02-10 18:06:34 -05:00
James Seibel 3f5622debf Add "database has been closed" to DbConnectionClosedException 2024-02-10 12:10:10 -06:00
s809 7bf9ce141a Avoid doing requests on join 2024-02-10 17:06:49 +05:00
s809 2353bd7545 Fix compilation 2024-02-07 21:03:37 +05:00
s809 02ddf5773c Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-02-07 20:49:49 +05:00
NULL511 bddf9c85e8 lava ID fix 2024-02-07 10:01:25 -05:00
NULL511 cb6d4a1471 separate camera and shadow frustum culling 2024-02-07 09:44:33 -05:00
James Seibel 2651e3d435 Attempt to reduce queuing duplicate world gen tasks 2024-02-07 07:34:43 -06:00
coolGi 2f4c398852 Removed a forgotten debug log from a previous commit 2024-02-07 23:36:59 +10:30
James Seibel b255e0ac68 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-02-07 07:06:03 -06:00
James Seibel 848b75ad7d Add Lod Shading to the api config 2024-02-07 07:06:00 -06:00
coolGi 556550fea8 Fixed mod auto-updating on quilt 2024-02-07 23:23:07 +10:30
James Seibel 223326afe2 Add frustum culling config control to the API 2024-02-06 21:44:42 -06:00
James Seibel 0cfdf8f57e rename DhLodPos .getX/Z -> getMinX/Z 2024-02-06 21:44:30 -06:00
James Seibel 1859d0ea96 Add IDhApiCullingFrustum 2024-02-06 21:39:42 -06:00
James Seibel 9392decd35 Merge branch 'distant-horizons-core-shadow.frustum.culling' 2024-02-06 19:23:53 -06:00
James Seibel f6e2f2f52a Remove unnecessary warning log and broken asssertions 2024-02-06 17:48:55 -06:00
James Seibel bc1a4ec138 Add Joml Matrix constructor to Mat4f 2024-02-06 07:17:10 -06:00
James Seibel 06b43d6627 Merge branch 'minecraft-lod-mod-frustum.culling' 2024-02-05 21:38:28 -06:00
James Seibel 30055805d8 Fix Render Buffer count F3 menu not closing 2024-02-05 19:21:46 -06:00
s809 3e37e9ee08 Remove unused packets 2024-02-04 21:57:57 +05:00
s809 b1b907bfe5 Silence a warning 2024-02-04 21:33:21 +05:00
s809 d347dbd222 Fix typo 2024-02-04 21:29:21 +05:00
s809 44527630da Fix queue not filled when generation is toggled 2024-02-04 21:00:02 +05:00
s809 df6ac6d740 Add connection state on F3 screen
Hide refresh queue from debug when disabled
2024-02-04 20:20:57 +05:00
James Seibel a07e43ad5c Swap javax nullable annotations with jetbrains for unimined 2024-02-03 19:45:15 -06:00
s809 2ce08f8957 Merge remote-tracking branch 'origin/main' 2024-02-04 02:36:04 +05:00
s809 1baa666d23 Add priority distance limiting by ratio 2024-02-04 02:34:53 +05:00
s809 e5e4551038 Some logging changes 2024-02-03 23:02:31 +05:00
s809 0cfbe09558 Use ConfigBasedLogger
Add sub-sectioning to server networking section
2024-02-03 22:24:34 +05:00
s809 7d72e82325 Change a comment in Config 2024-02-03 20:17:21 +05:00
s809 3f823c58cc Fix exception while saving new data 2024-02-02 05:48:36 +00:00
James Seibel cbc34fad82 Add comment about potential Iris file handling 2024-02-01 21:05:27 -06:00
James Seibel 35af4eaed3 Fix debug renderer 2024-02-01 20:48:06 -06:00
James Seibel 15ee6a9512 Add render events for Iris 2024-01-31 21:48:50 -06:00
James Seibel ab88d06cff Remove fog config from LodRenderProgram 2024-01-30 19:50:23 -06:00
James Seibel b622095883 Add and fix OverrideInjector unbinding 2024-01-30 19:43:37 -06:00
James Seibel 4ab2fef1ac reword a couple comments and minor reformatting 2024-01-30 19:33:04 -06:00
James Seibel a27593149a Fix AbstractShaderRenderer free() null pointer 2024-01-30 19:29:51 -06:00
James Seibel 8a4172dda1 Improve DhApi readme string 2024-01-30 19:28:32 -06:00
s809 3932ea21c2 Limit rate+concurrency instead of only concurrency
Rename post-relog update to Login sync
2024-01-29 22:36:13 +05:00
s809 c9d426e581 Refactor ILevelRelatedMessage and RemotePlayerConnectionHandler 2024-01-28 22:37:50 +05:00
s809 61c516df1d Post-relog updates 2024-01-27 19:45:30 +05:00
NULL511 0e0f5ec3ea cleanup 2024-01-26 16:17:51 -05:00
NULL511 d0822213d5 make frustum culling 1.19.4+ only 2024-01-26 16:10:50 -05:00
NULL511 5e924a00b1 final 2024-01-26 16:10:50 -05:00
NULL511 71536230b6 fix view matrix 2024-01-26 16:10:50 -05:00
NULL511 08483d02c6 re-enable aabb 2024-01-26 16:10:50 -05:00
NULL511 e771f8a53c fix frustum check 2024-01-26 16:10:50 -05:00
NULL511 23b9f16747 aabb only 2024-01-26 16:10:50 -05:00
NULL511 7e287dab71 add frustum culling 2024-01-26 16:10:49 -05:00
James Seibel 4cb2bb97a8 Fix wireframe rendering 2024-01-21 22:00:21 -06:00
James Seibel d7eb8d9416 Add try-catches to F3Screen suppliers 2024-01-21 21:41:33 -06:00
James Seibel 9c8d77a4f3 Add showBlockMaterial debug rendering and fix a couple block materials 2024-01-21 21:35:05 -06:00
James Seibel 779431b123 deprecate SHOW_GENMODE 2024-01-21 21:33:56 -06:00
James Seibel d106a79532 Remove unnecessary warnings 2024-01-21 19:46:14 -06:00
James Seibel 0efa4c3de3 Merge branch 'distant-horizons-core-main' 2024-01-21 19:24:17 -06:00
s809 7e2019abd4 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-01-21 17:20:49 +05:00
James Seibel 1c90270eb6 Fix GLProxy concurrent modification 2024-01-20 11:53:39 -06:00
James Seibel a8bee52159 remove unused code 2024-01-20 09:37:43 -06:00
James Seibel 3adc37c63f Fix fullDataHandler createFromExistingDtos not using detail 0 data 2024-01-18 19:56:28 -06:00
James Seibel 9268a43446 Fix compiling in 3c4e57cf 2024-01-18 19:17:14 -06:00
James Seibel 3c4e57cff5 Move async GL calls to the render thread
Hopefully to fix potential crashes on non-Nvidia or less stable GPU drivers
2024-01-18 19:11:33 -06:00
James Seibel ac0eacb721 Add buffer count to the F3 menu 2024-01-18 07:25:04 -06:00
James Seibel b0c2874e71 Fixes #613 (multiplayer failing due to folder not existing) 2024-01-17 07:44:58 -06:00
James Seibel e61f6bb802 Fix render data holes due to async data update 2024-01-17 07:15:16 -06:00
s809 f0f3614b9d Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-01-16 20:17:43 +05:00
James Seibel 69a2c18452 Confirm world gen for generated render sources 2024-01-16 07:44:16 -06:00
James Seibel 146dd85920 Fix infinitely growing timer task map in AbstractDataSourceHandler 2024-01-16 07:36:34 -06:00
James Seibel 163c0bf1fa Fix another repo closed issue 2024-01-14 15:52:36 -06:00
James Seibel 45c47533c2 Fix file handlers saving after repo shutdown 2024-01-14 15:07:15 -06:00
James Seibel 22c11b3eeb Fix repo connection closed not thrown/handled correctly 2024-01-14 15:05:47 -06:00
James Seibel 8a9f63ab25 Replace ThreadUtil relative priority with Thread.Priority 2024-01-14 14:27:37 -06:00
James Seibel 79b0b3dc0a Minor ThreadUtil reformat 2024-01-14 13:49:39 -06:00
James Seibel fe9695e889 Fix timers not being Daemonized, preventing MC shutdown 2024-01-14 13:49:27 -06:00
James Seibel d878e464f6 Attempt to fix database connections closing early 2024-01-13 23:12:02 -06:00
James Seibel 2667101453 Fix fog referencing a null texture with Optifine 2024-01-13 22:54:29 -06:00
James Seibel 7507cf98a7 Fix debug renderer rendering on top of LODs 2024-01-13 22:14:10 -06:00
James Seibel 9e63f7ed4d Attempt to fix re-queuing world gen tasks on handler.get() 2024-01-13 21:55:52 -06:00
James Seibel 0f5cf77f23 Attempt to fix AbstractDataSourceHandler queue canceled saves 2024-01-13 21:55:22 -06:00
James Seibel d52323ff44 Hide AbstractDataSourceHandler shutdown errors 2024-01-13 21:54:11 -06:00
s809 573a284580 Fix generation 2024-01-13 19:44:48 +05:00
s809 310c890474 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-01-13 16:51:12 +05:00
s809 8a309b56d9 Fix crash when changing config while disconnected 2024-01-13 16:08:49 +05:00
James Seibel 7549543268 attempt to fix Opifine fog rendering incorrectly 2024-01-12 22:54:14 -06:00
s809 adc3f15c97 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2024-01-08 17:50:00 +05:00
James Seibel 43366e1f6e Add JarUtil/SelfUpdater error handling 2024-01-07 20:32:05 -06:00
James Seibel 19aedc14cd Overhaul RenderFileHandler/FullFileHandler and remove metaData objects 2024-01-07 16:06:01 -06:00
James Seibel ec29ea8cc1 Overhaul and simplify FullDataFileHandler 2024-01-06 14:02:45 -06:00
James Seibel ab031d2961 Fix a couple full data source null pointers 2024-01-05 19:38:22 -06:00
s809 962f523af9 Fix 1.16.5 and 1.17.1 builds 2024-01-05 22:37:27 +05:00
s809 0da306225d Daemonize timers 2024-01-05 22:13:30 +05:00
s809 dbc1ad4cb7 Add names to network threads 2024-01-05 22:08:37 +05:00
s809 8b0f6a4414 Daemonize timers 2024-01-05 22:08:16 +05:00
James Seibel 51190efc66 Add missing Lod fog profiler call 2024-01-05 07:48:06 -06:00
s809 502aaf6a8a Add a config to delay generation requests, for cases when gen tasks are not filled properly yet 2023-12-28 18:58:50 +05:00
s809 5c644fbf5b Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-12-24 19:16:03 +05:00
coolGi 1b8ee5cd48 Renamed api's fabric.mod.json to not.fabric.mod.json 2023-12-23 05:28:31 +10:30
James Seibel fa12443cb1 Fix null pointers in DhApiChunk 2023-12-22 07:19:20 -06:00
James Seibel 798a5c6c96 Merge branch 'distant-horizons-core-datapoint-gen' 2023-12-21 22:14:21 -06:00
James Seibel 51c76fe5fb Refactor and rename DhApiChunkOfDataPoints -> DhApiChunk 2023-12-21 22:14:13 -06:00
James Seibel 9e8ca25a71 Improve error handling in WorldGenQueue 2023-12-21 21:24:29 -06:00
James Seibel 8299955a55 Add concurrent instructions for Gitlab runner 2023-12-21 21:12:57 -06:00
Builderb0y a691b27b4f expand API to allow world generator to generate chunks of data points in addition to actual chunks. 2023-12-22 01:15:25 +00:00
s809 da60ca7560 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-12-21 19:17:51 +05:00
James Seibel 47b6730f63 disable full data file pooling (temporary fix) 2023-12-21 07:48:18 -06:00
James Seibel c6ff1b60bb Improve fullData logging 2023-12-21 07:36:27 -06:00
James Seibel 796e8652a8 Revert "Potential fix for world gen lockup if files system fails"
This reverts commit f65b4205c3.
2023-12-21 07:28:41 -06:00
s809 a5a56c7eb7 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-12-21 11:47:51 +05:00
James Seibel f65b4205c3 Potential fix for world gen lockup if files system fails 2023-12-20 22:05:58 -06:00
s809 ff8b1f24d0 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-12-20 23:18:57 +05:00
James Seibel 0caf164e06 Fix EConfigEntryAppearance.ONLY_IN_FILE 2023-12-20 07:47:45 -06:00
s809 904c1a7d71 Add protection against hang on shutdown 2023-12-19 23:20:23 +05:00
s809 02aca6f044 Allow section state requests to be controlled separately 2023-12-19 22:52:19 +05:00
James Seibel 8dbeb16f33 update several comments 2023-12-19 07:18:23 -06:00
s809 b4ea632b93 Add kick trigger on repeated rate limit hitting
Remove some unused code
2023-12-18 23:10:39 +05:00
s809 a2cc1c2913 Revert "Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core"
This reverts commit 522a799516, reversing
changes made to 04e43ebec8.
2023-12-18 22:15:34 +05:00
s809 522a799516 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-12-18 19:17:14 +05:00
s809 04e43ebec8 Remove current post-relog update feature 2023-12-18 19:13:57 +05:00
James Seibel 1d88d12632 Fix RenderUtil deprecated warning 2023-12-16 17:49:28 -06:00
James Seibel c1309eb4e8 Add IDhApiWrapperFactory 2023-12-16 15:44:29 -06:00
James Seibel 7c678a4a41 Add DhApi.isDhThread() 2023-12-16 09:50:34 -06:00
James Seibel 25d51842a7 Increase max queued chunk updates and add a overload warning 2023-12-16 09:09:43 -06:00
James Seibel 532271ab10 Fix full data source downsample not overlapping errors 2023-12-16 08:51:05 -06:00
James Seibel b984345ca0 Improve IIncompleteFullDataSource.sampleFrom() assertion messages 2023-12-16 07:52:20 -06:00
s809 077d72c23b Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-12-15 20:29:15 +05:00
James Seibel ebebc5566e Optimize DH lighting for chunks with populated sections
Specifically improves lighting speed for BigGlobe worlds
2023-12-14 07:50:23 -06:00
James Seibel 77d8f413e6 Fix ThreadPool null pointers before world startup 2023-12-13 22:08:25 -06:00
coolGi 19d20f5591 Updated to new git url 2023-12-12 19:28:41 +10:30
James Seibel 706a423c5f Start world gen refactoring 2023-12-09 17:46:12 -06:00
James Seibel 88d78c53fd Fix 595 (crash on save and exit) 2023-12-09 16:18:52 -06:00
James Seibel 0c30c72d26 Fix SSAO and Fog not applying when Optifine shaders are enabled 2023-12-09 10:05:14 -06:00
James Seibel d0805ea775 Minor shader reformatting 2023-12-09 10:00:21 -06:00
James Seibel 2c154613a0 Add Config API methods getApiValue() and clearValue() 2023-12-07 07:13:37 -06:00
s809 cb95c45d76 Fix compilation 2023-12-06 22:06:37 +05:00
s809 a9de079132 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-12-06 21:09:19 +05:00
James Seibel 070b52da5e Up the api version number 1.0.0 -> 1.1.0 2023-12-06 07:49:38 -06:00
James Seibel 20452ceb76 change overdraw to a number config 2023-12-06 07:49:19 -06:00
James Seibel 1880c65078 Fix config handling failing for Doubles and add additional logging 2023-12-06 07:29:42 -06:00
James Seibel 104be7804c Add RenderDataPointUtil method renames and fast path for single target size 2023-12-05 07:15:09 -06:00
James Seibel 9460fc9b04 reformat 2023-12-04 07:46:18 -06:00
James Seibel e8bce52ead Merge branch 'distant-horizons-core-datapoint-reducer' 2023-12-04 07:19:56 -06:00
coolGi 614e1e027f Added version number to updated jar 2023-12-04 23:34:37 +10:30
James Seibel b999a321c7 up the version number 2.0.1-a -> 2.0.2-a 2023-12-03 19:13:06 -06:00
James Seibel f32e25f52f Remove "-dev" from the version number 2023-12-03 17:18:53 -06:00
James Seibel 5e413cfe93 Add a config to enable/disable using MC's lighting engine 2023-12-02 12:37:27 -06:00
James Seibel b5853d20ee Add a limit to the number of queued update chunks 2023-12-02 12:24:12 -06:00
James Seibel 39e477f8ca Fix Powdered Snow not rendering as a full block 2023-12-02 12:03:36 -06:00
James Seibel 22e91d62b6 Fix near clip plane on Lod only mode 2023-12-02 09:15:52 -06:00
Builderb0y ca9dfed516 use higher Y level instead of higher opacity when forcing the lowest segment to merge. 2023-12-01 15:50:38 +00:00
James Seibel 466ebe0503 Fix seeing the near clip plane on low render distances 2023-11-29 07:43:54 -06:00
s809 166cc55e3c Abstract away ChannelHandlerContext from user code 2023-11-27 23:46:05 +05:00
Builderb0y d21244ce23 handle edge case where there are many segments to merge but all of them are invisible. 2023-11-27 01:52:22 +00:00
NULL511 eee52c8f55 cleanup 2023-11-26 15:57:22 -05:00
NULL511 ddc3291bf7 fix shader near plane; remove dh near 2023-11-26 15:18:45 -05:00
NULL511 0dc267f038 add shader near clip using distance 2023-11-26 14:53:50 -05:00
s809 f36bffa4b7 Add missing config entries in chat commands 2023-11-26 21:32:50 +05:00
James Seibel efc2ce84e4 Fix null pointer when joining some multiverse servers 2023-11-25 11:39:39 -06:00
James Seibel bd3592ee5b Fix lighting on some servers 2023-11-25 11:08:36 -06:00
James Seibel e693e2f9e0 Add transparency constants to IBlockStateWrapper 2023-11-25 08:45:40 -06:00
James Seibel ab60df6240 Add out of bounds handling for LodDataBuilder 2023-11-25 08:44:41 -06:00
James Seibel 124dbe700f Attempt to prevent threadPool null pointers 2023-11-25 07:39:31 -06:00
James Seibel d1d7cc4dd2 catch unexpected ClientTick exceptions to prevent crashing MC 2023-11-25 07:39:06 -06:00
s809 6da1e75dad Fix server side generation setting being ignored 2023-11-25 18:04:25 +05:00
s809 82d66ca392 Basic chat commands 2023-11-25 17:44:51 +05:00
Builderb0y 42135636af add and make use of RenderDataPointReducingList. 2023-11-25 05:05:55 +00:00
James Seibel fc248d0956 Fix merging for transparent LODs over the void 2023-11-24 14:02:26 -06:00
James Seibel b641436d80 Add ColulmnRenderBufferBuilder TODOs 2023-11-24 13:35:48 -06:00
James Seibel 7959097fe3 Fix a potential concurrent error on DhClientServerWorld shutdown 2023-11-24 09:46:45 -06:00
s809 e98cf1f2b5 Hide all unrelated config entries 2023-11-23 20:58:09 +05:00
James Seibel e73e3a5587 add possible comments to IColumnDataView 2023-11-21 07:44:18 -06:00
James Seibel 9c918c7bbb Improve multiverse similarity logic and fix incorrect log 2023-11-21 07:43:46 -06:00
James Seibel 7e869105cb Fix null pointers when moving between multiverse levels 2023-11-20 07:35:10 -06:00
s809 77bd333fff Fix RejectedExecutionException when leaving server 2023-11-20 17:18:05 +05:00
s809 b791a185a2 Deduplicate code in MultiplayerConfigChangeListener 2023-11-20 16:54:17 +05:00
coolGi 8af14ad3e7 Added logging for % downloaded 2023-11-20 21:59:01 +10:30
s809 c64d7fedd2 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-11-19 22:56:56 +05:00
coolGi 1ebbd9f7e4 Fixed <br/> not being parsed correctly 2023-11-20 00:40:07 +10:30
coolGi f9b544cc11 Fixed updater's back up method deleting the wrong jar 2023-11-19 22:48:39 +10:30
coolGi 04b961b164 Fixed updater crashing without network 2023-11-19 20:06:05 +10:30
coolGi 09aa607a48 Added temporary solution to file update from 1.6 2023-11-18 23:52:20 +10:30
coolGi 5ee6141d3f Added backup file deletion method 2023-11-18 21:52:35 +10:30
coolGi 73facf1f35 Added dev comment about iris compat 2023-11-18 21:38:51 +10:30
coolGi f01001726a Bumped version number to 2.0.1-a-dev 2023-11-18 20:34:22 +10:30
James Seibel 3356af9cca re-add "-dev" to the version number
For future releases the version number should be changed immediately beforehand.
2023-11-16 19:09:23 -06:00
James Seibel 773f17ddfe Remove "-dev" from the version number 2023-11-16 18:54:29 -06:00
James Seibel 836332959c Fix Optifine rendering a blank screen until resized 2023-11-14 07:36:41 -06:00
James Seibel de514b1d1d reformat DhColorTexture, DhFramebuffer, and LodRenderer 2023-11-14 07:36:28 -06:00
s809 d2f5c02238 Bandaid fix to prevent duplicate section requests 2023-11-12 17:17:15 +05:00
s809 9cfcf37fb3 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-11-11 19:20:33 +05:00
James Seibel 8e46ce07e0 Merge branch 'fix/dimension-switch-sql-errors' into 'main'
Ignore input and return empty data when database connection is closed

See merge request jeseibel/distant-horizons-core!35
2023-11-10 13:02:28 +00:00
James Seibel d5b929f7a7 Merge branch 'fog-config-api-additions' into 'main'
Add far and height fog to the fog config API

See merge request jeseibel/distant-horizons-core!36
2023-11-10 13:01:13 +00:00
James Seibel 2eae46271b Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-11-08 19:41:05 -06:00
James Seibel 2d7e0d8b21 cleanup DhApplyShader 2023-11-08 19:38:01 -06:00
Steveplays28 ebc5f30863 feat: Add far and height fog to the fog config API 2023-11-07 20:23:07 +01:00
coolGi e90daa8e5b Added key detection through the new test screen 2023-11-08 01:26:32 +10:30
James Seibel 0a8847cdc0 Fix transparent water when transparency is disabled 2023-11-06 07:48:57 -06:00
James Seibel 3daa0eb6ce Fix ThreadPools not setting workerThreadSemaphoreCount at bootup 2023-11-05 15:53:57 -06:00
s809 7ba3fc0dda Ignore input and return empty data when connection is closed 2023-11-04 23:03:30 +05:00
James Seibel d07a285323 move the russian lang file to (hopefully) disable it
Apparently the previous renaming didn't work
2023-11-04 11:34:53 -05:00
James Seibel 5610d9bc0a fix a typo in LodRenderer 2023-11-04 10:01:24 -05:00
s809 84d36df388 Do not clean up rendering on a dedicated server 2023-11-04 16:56:15 +05:00
James Seibel 4b8f27ed78 Add invalid fullData ID handling 2023-11-03 19:42:47 -05:00
James Seibel b3a09a12fa fix null pointer in ThreadPools shutdown 2023-11-03 17:51:16 -05:00
s809 880abd0124 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-11-03 21:05:27 +05:00
James Seibel 0b3958eb58 Fix Optifine shaders not rendering 2023-11-02 21:44:57 -05:00
James Seibel 528499215a re-add CPU option I_PAID_FOR_THE_WHOLE_CPU 2023-11-01 21:13:38 -05:00
James Seibel ad2e3e738e Add try-finally for FullDataPointIdMap locks 2023-11-01 21:05:13 -05:00
coolGi e3eb08a983 Refactor of GitInfo. Removed core commit, and added Build Source 2023-10-31 19:35:07 +10:30
James Seibel 4c5204172e fix server shutdown null pointer 2023-10-30 18:43:04 -05:00
s809 72274bfd7d Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-10-30 15:26:29 +05:00
James Seibel 645567c474 Merge branch 'distant-horizons-core-refactor/client-world-close' 2023-10-29 16:09:54 -05:00
James Seibel 446c274094 Reduce CPU load when moving around the world
Should've made this multiple commits, but too late now

- Create ConfigThreadPool to remove duplicate thread setup/config code
- Move configurable thread pools into their own ThreadPools class
- Add a semaphore to limit how many LOD builder/lighting/bufferBuilder threads can be active at once
2023-10-29 15:04:32 -05:00
James Seibel 23ebfcb9bf Remove duplicate "DH" name for world ticker threads 2023-10-28 17:42:59 -05:00
James Seibel 643112953e Replace GeneratedFullDataFileHandler wait threads with a timer
It's still a bad solution, but now it won't create several hundred threads, so that's nice
2023-10-28 12:19:43 -05:00
James Seibel 488b598d97 Close #447 Add the ability to limit LOD chunk update rate 2023-10-28 12:18:55 -05:00
James Seibel fecefc8bdf Remove broken chunkSaveEvent, was actually chunkUnloadEvent 2023-10-28 11:52:53 -05:00
James Seibel 30dd5f5d59 Remove deprecated DhBlockPos getters 2023-10-28 11:10:50 -05:00
James Seibel b9896d3020 comment out GL message logging for MC 1.20.2 2023-10-28 10:23:23 -05:00
James Seibel 1d0a979e5c Fix GLBuffer not clearing some phantom references 2023-10-28 10:18:32 -05:00
James Seibel 8b47c3ea5b Fix GPU buffer uploading options 2023-10-28 10:18:20 -05:00
James Seibel 79340dd9f2 GLBuffer reformat 2023-10-28 10:16:45 -05:00
James Seibel 117bfb7f31 Add commented out LodRenderer VBO validation 2023-10-28 10:13:12 -05:00
s809 5e2accadca Move closing of client world to a proper place 2023-10-28 19:43:10 +05:00
James Seibel f746f8b4ec temp 2023-10-28 08:56:27 -05:00
James Seibel b3c4ea47d7 Fix ColumnRenderBuffer never finishing when synced 2023-10-28 08:44:33 -05:00
James Seibel b244a17358 GLBuffer reformat 2023-10-27 21:23:39 -05:00
James Seibel ca425eae6d Fix index out of bounds 2023-10-27 20:01:44 -05:00
James Seibel 2cd1dc6e92 Fix GLVertexBuffer memory leak 2023-10-27 19:42:12 -05:00
James Seibel 0942f0f1a3 Attempt to reduce memory leaking when flying 2023-10-25 07:52:13 -05:00
James Seibel 135b950db1 Add stubbed out AbstractOptifineAccessor.getIsShaderActive() 2023-10-24 20:16:11 -05:00
James Seibel 917e532408 Fix Optifine shader rendering 2023-10-24 20:12:50 -05:00
James Seibel 0d76a8edfe Reformat GL objects 2023-10-24 07:30:17 -05:00
James Seibel b1e97214ec Fix a null pointer in LodRenderer cleanup 2023-10-24 07:22:28 -05:00
James Seibel 639c24dd8e Merge branch 'distant-horizons-core-render' 2023-10-24 07:16:20 -05:00
James Seibel 5b6836d184 Add Sqlite to the readme 2023-10-23 20:29:36 -05:00
s809 9640169be9 Make post-relog update independent from generation toggle 2023-10-23 23:18:52 +05:00
IMS212 fa1527243f Add framebuffer 2023-10-21 16:16:30 -07:00
IMS212 cbd404913f Rewrite framebuffers to look more decent 2023-10-21 15:55:03 -07:00
James Seibel b57d7c13df Fix outdated world gen thread tooltip 2023-10-21 11:26:03 -05:00
James Seibel bf2c36369e Fix localization renamings 2023-10-21 11:23:28 -05:00
James Seibel 41b313943b Fix an error when double-closing a GLBuffer 2023-10-21 11:14:20 -05:00
James Seibel c4d0b693eb Fix LodRenderSection memory leak 2023-10-21 09:34:35 -05:00
James Seibel 611aae667c Fix missing localization for noiseSteps.@tooltip 2023-10-20 20:11:08 -05:00
James Seibel 2900417a3a Add a config to change the number of light baking threads 2023-10-20 20:09:16 -05:00
James Seibel 146d9da417 Fix memory leaks when moving between dimensions 2023-10-20 19:23:07 -05:00
Steveplays28 9daf0c7317 chore: Add missing language entries for the server networking config 2023-10-20 14:07:42 +02:00
Steveplays28 a4df5a8ed8 style: Rename renderDistance to renderDistanceRadius to stay in sync with the main config 2023-10-20 14:03:19 +02:00
Steveplays28 df3d20f94e fix: Fix getting LOD render distance radius from the config
This config option was renamed recently, to fix LODs not rendering out to the LOD render distance border. Also removed an unused import.
2023-10-20 13:49:55 +02:00
Steveplays28 f3b40f51a2 Merge branch 'main-upstream'
# Conflicts:
#	core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataFileHandler.java
#	core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java
#	core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java
2023-10-20 13:41:33 +02:00
James Seibel 2d4f057eb0 Merge branch 'fix/close-db-file' into 'main'
Fix database file not being closed when leaving the world

See merge request jeseibel/distant-horizons-core!31
2023-10-20 03:15:22 +00:00
James Seibel 9ef25bdee0 bandaid fix for World gen holes 2023-10-19 22:13:38 -05:00
James Seibel 363a1aea4d Add an assert to world gen and minor reformat FullDataMetaFile 2023-10-19 21:45:05 -05:00
James Seibel fa03336a5d Fix never ending world gen tasks 2023-10-19 20:45:47 -05:00
James Seibel b38b33e87e Fix Sqlite memory leak
All Sqlite statements must be in a try-resource block otherwise a native memory leak will occur
2023-10-19 20:11:39 -05:00
s809 96074c2f50 Merge branch distant-horizons-core:main into fix/close-db-file 2023-10-19 18:01:52 +00:00
s809 5f7e9c16f4 Fix database file not closed when leaving the world 2023-10-19 22:57:07 +05:00
coolGi b1ed91af2a Re-Enabled the updater by default on windows 2023-10-20 00:57:39 +10:30
James Seibel 416c0db163 Fix Render Distance localization 2023-10-19 07:25:30 -05:00
James Seibel f387a2ca1b Fix LOD renderer setup for MC 1.16 2023-10-19 07:16:31 -05:00
James Seibel ad24cbebe3 Fix Forge not rendering 2023-10-19 07:04:19 -05:00
James Seibel 8eb4afef68 temporarily comment out GL message building
the message generation was changed in MC 1.20.2 and needs to be changed. However for a release build it isn't necessary.
2023-10-18 22:04:24 -05:00
James Seibel b0ad8fa637 Fix LOD render distance measured as the diameter instead of radius 2023-10-18 07:50:59 -05:00
James Seibel b014317e1a remove DhApplyShader commented out code 2023-10-18 07:24:13 -05:00
James Seibel 50257c6b94 Fix transparent fog rendering 2023-10-18 07:24:02 -05:00
James Seibel 29fabe1849 Fix DH auto update jar deletion and add more logging 2023-10-17 21:42:54 -05:00
James Seibel 201c0c3e3e Add GLStates around the DhApplyShader 2023-10-16 21:57:56 -05:00
James Seibel bafbbf225e Fix transparent LODs overwriting opaque LOD alpha values 2023-10-16 21:33:38 -05:00
James Seibel 451b3cfdbe Refactor/rename VertexAttribute -> AbstractVertexAttribute 2023-10-16 20:44:50 -05:00
James Seibel c6104e2dd9 minor VertexAttributePreGL43 and ScreenQuad reformatting 2023-10-16 20:38:39 -05:00
James Seibel 70b3460928 Fix ScreenQuad rendering on Mac or OpenGL 4.3 and lower 2023-10-16 20:35:39 -05:00
James Seibel 35d2d638d4 Refactor VertexAttribute Pre/Post GL43 2023-10-16 07:19:39 -05:00
James Seibel c40067359f Fix incorrect texture RGB values -> RGBA8
Thanks IMS
2023-10-15 20:10:29 -05:00
James Seibel d69e6b7d8d Add (mac broken) FrameBuffer application 2023-10-15 18:05:13 -05:00
James Seibel 5921dfa749 Add the ability to manually choose OpenGL version 2023-10-15 18:04:42 -05:00
s809 e3d7598501 Fix compilation 2023-10-14 22:13:01 +05:00
s809 596b822a5d Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-10-14 22:09:15 +05:00
coolGi 62bf59f098 Disabled updater on windows by default 2023-10-14 22:47:58 +10:30
coolGi 06478a56bb Lod's are now enabled with special fog 2023-10-14 22:45:58 +10:30
coolGi 6c915c571a Merge branch 'fog-fixes' into 'main'
fix: Fix fog rendering

See merge request jeseibel/distant-horizons-core!30
2023-10-14 12:13:14 +00:00
Steveplays28 80ed8127f5 fix: Fix fog rendering 2023-10-14 14:05:44 +02:00
James Seibel 1e5a4d43f7 Have GLProxy attempt creating contexts with all supported GL versions 2023-10-13 21:56:06 -05:00
James Seibel 78e2b4ff3f Rename Platform -> EPlatform 2023-10-13 20:22:56 -05:00
James Seibel c45ed9aa70 Refactor GLProxy 2023-10-13 20:22:36 -05:00
James Seibel 4c2c89de57 Add IDhApiRenderProxy for getting/setting framebuffers and textures 2023-10-13 19:58:03 -05:00
James Seibel c724c6211e Remove DhApiResult.createFail() to prevent empty error messages 2023-10-13 19:56:55 -05:00
coolGi 4b14fe82e7 Fixed lod's being rendered underwater 2023-10-13 23:25:03 +10:30
James Seibel 31971e03db Fix missing MC sky 2023-10-12 21:35:04 -05:00
James Seibel 6e87a31e2e Disable the russian translation 2023-10-12 19:47:16 -05:00
James Seibel df097b9425 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-10-12 19:42:27 -05:00
James Seibel d3a575542d Improve SSAO class readability 2023-10-12 19:42:21 -05:00
coolGi 7ce89e9903 Fixed yet another issue relating to spaces in the path 2023-10-12 18:38:56 +00:00
coolGi 7f4e5d9e58 Surrounded the Java location with quotations so paths with spaces work 2023-10-13 02:54:29 +10:30
coolGi ae65fb8e93 Attempt to find Java's binary to use for the self updater on Windows 2023-10-13 02:00:12 +10:30
coolGi 2bf997e882 Updater now works with spaces in file paths 2023-10-13 00:06:57 +10:30
James Seibel f4e7eb6a38 Fix SSAO rendering 2023-10-12 07:49:01 -05:00
James Seibel 229e042994 Re-add OpenGL debug config options, also remove debug LOD update configs 2023-10-10 20:40:45 -05:00
James Seibel fb5b16e557 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-10-10 19:34:56 -05:00
James Seibel ff90dc04b7 Fix Light map flickering when multiple client levels are active 2023-10-10 19:32:08 -05:00
coolGi 21b5470863 Changed self updater location to use the class' path 2023-10-10 23:05:33 +10:30
coolGi 05c523ffdf Set the update timeout from a minute to an hour 2023-10-10 22:56:49 +10:30
James Seibel 82b2bf1434 Merge branch 'distant-horizons-core-depth-buffer' 2023-10-10 06:53:43 -05:00
James Seibel 83999fd516 Fix render cache clearing deleting the database instead of removing the cache data 2023-10-08 21:17:35 -05:00
James Seibel 9caad6ee41 Fix forge (and fabric) not updating LODs when placing/breaking blocks 2023-10-08 20:56:08 -05:00
James Seibel f3a83addd4 Add a todo comment to ClientApi 2023-10-07 21:29:32 -05:00
James Seibel 28649f4287 Replace Insert/Update SQL scripts with preparedStatements
necessary for inserting large BLOB data
2023-10-07 20:16:11 -05:00
James Seibel 1a5bd288c8 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-10-07 18:50:59 -05:00
James Seibel 94f1d99672 minor FullDataMetaFile comment update 2023-10-07 18:50:30 -05:00
James Seibel bf62ecff0b Improve metaDataFile saving logic 2023-10-07 17:00:01 -05:00
James Seibel 974cd95867 revert accidental GLProxy PROFILE change 2023-10-07 16:21:47 -05:00
James Seibel edaee7edd2 Add missing Full Data error logging 2023-10-07 16:11:06 -05:00
James Seibel 526f483bfb Move data source meta data from the compressed binary into DB columns 2023-10-07 16:10:16 -05:00
James Seibel 444090ed39 Convert DataSource ID from an int to a string
Since everything will be stored in a database binary space constraints aren't as big of a concern
2023-10-07 16:07:15 -05:00
James Seibel e0d25fdd88 Improve logging for failed DB queries 2023-10-07 15:53:07 -05:00
James Seibel 4ddfb8342d Fix a DB issue with parsing short, byte, and long values 2023-10-07 15:51:27 -05:00
James Seibel 8f0c820c09 Rename BaseMetaData.dataLevel -> dataDetailLevel 2023-10-06 22:23:40 -05:00
James Seibel bbcf1d0071 Fix abstractDhRepo on Forge 2023-10-06 22:12:37 -05:00
James Seibel ece2fc5e6a Fix DatabaseUpdater on Forge 2023-10-06 22:12:26 -05:00
James Seibel 513fc4c686 fix incorrect DhRepo closing 2023-10-06 07:25:30 -05:00
coolGi 417cf0a891 Used .renameTo instead of .canWrite to check if file is unlocked 2023-10-06 18:02:28 +10:30
coolGi 820683783b Changed name to DeleteOnUnlock 2023-10-06 17:24:31 +10:30
coolGi ffb1ce4355 Fixed (hopefully) updater on Windows 2023-10-06 17:23:14 +10:30
coolGi 1bea96b050 Temporary fix for windows file locking 2023-10-06 16:26:39 +10:30
James Seibel 3231a2df3e update Schema table and allow for multiple statements in update scripts 2023-10-05 20:52:16 -05:00
James Seibel 756af2bec4 save AbstractMetaDataRepo byte arrays to the database as binary 2023-10-05 19:10:42 -05:00
James Seibel bbaea5e614 Remove unneeded code from AbstractDhRepo and refactor 2023-10-05 19:07:48 -05:00
Steveplays28 6409cbad09 fix: Fix depth test and GL state restoration 2023-10-05 20:18:09 +02:00
coolGi 18ed2e7eee Disabled updating to the same commit 2023-10-05 13:12:35 +10:30
coolGi f45a4b8d62 Seeing if this will fix DH auto-updates on windows 2023-10-05 13:09:42 +10:30
James Seibel f0238dc4ea Remove references to old DH files and allow sub-dim matching to work with the database 2023-10-04 18:18:09 -05:00
James Seibel 6011a16e11 rename and comment GeneratedFullDataFileHandler variable 2023-10-04 07:49:43 -05:00
James Seibel 5c6302edbd re-enable genFullDataFileHandler.fireOnGenPosSuccessListeners() 2023-10-04 07:41:56 -05:00
James Seibel 0e57870ba9 Fix world gen not allowing down sampling 2023-10-04 07:41:36 -05:00
James Seibel cd55659331 remove "lod" from ILodRenderSourceProvider
to bring it inline with IFullDataSourceProvider
2023-10-03 18:23:24 -05:00
James Seibel 2516ba5524 Replace the loose file system with Sqlite 2023-10-03 18:21:35 -05:00
Steveplays28 45045de794 feat: Add renderbuffer for depth 2023-10-03 15:12:59 +02:00
coolGi f81b453c39 Removed test main function 2023-10-03 23:01:25 +10:30
coolGi e966d40ae2 Fixed jar reference with spaces in path 2023-10-03 22:48:04 +10:30
James Seibel 57c5c618f9 Add DhRepo.deleteByPrimaryKey() 2023-10-03 07:08:36 -05:00
James Seibel 30cf937539 Add Repo.exists() 2023-10-02 21:43:36 -05:00
James Seibel d1df845e79 Replace repo query with queryDictionary and improve auto update error checking 2023-10-02 21:24:41 -05:00
coolGi 877b0dae25 Revert "Fix option and changelog button missing backgrounds"
This reverts commit 5fb79325ce.
2023-10-03 12:44:36 +10:30
James Seibel 1ec06fa94e Add database auto updating 2023-10-02 19:54:43 -05:00
James Seibel 94b2b63767 git ignore sqlite databases 2023-10-02 19:37:54 -05:00
James Seibel 65751b0abd Temporary fix for world gen queue concurrency null pointer 2023-10-02 07:39:07 -05:00
James Seibel df859bd9fc Add automatic sql scripts to AbstractRepo 2023-10-02 07:35:23 -05:00
James Seibel 05349beb8d Add Sqlite delete DTO 2023-10-02 07:16:42 -05:00
coolGi b18fcb5815 Fixed updater on 1.20.2 2023-10-02 14:16:08 +10:30
coolGi 9b183aba93 Fixed strings not using string's "equals" function 2023-10-02 13:19:20 +10:30
coolGi d9e3293cf3 Added extra safety checks to nightly updater 2023-10-02 11:35:06 +10:30
Steveplays28 e1b448dd39 fix: Fix framebuffer blitting
The framebuffer and color texture are now recreated every frame, blitted, and deleted after rendering.
2023-10-01 00:07:21 +02:00
James Seibel ebef91601e add basic sqlite and unit tests 2023-09-30 15:25:35 -05:00
James Seibel fb424aadb6 Add commented out LodQuadTree debug code 2023-09-30 09:34:57 -05:00
James Seibel d15eba1185 Fix multiplayer similarity percent 2023-09-29 23:17:32 -05:00
James Seibel 03d2d0c3a2 move IChunkWrapper.setUseDhLighting into DhLightingEngine 2023-09-29 23:17:10 -05:00
James Seibel b0f1a6e70d Refactor and comment 2023-09-29 22:42:01 -05:00
Steveplays28 adae64f42c feat: Blit LOD framebuffer to MC's rendertarget framebuffer
Currently non-functional, since it renders black.
2023-09-28 20:42:02 +02:00
s809 e9e7ac48b1 Fix compilation 2023-09-28 23:28:18 +05:00
s809 2e2254fbbd Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-09-28 22:54:35 +05:00
Steveplays28 d12d132e4c fix: Fix framebuffer state not being restored properly 2023-09-28 16:39:56 +02:00
Steveplays28 a36b231ce8 feat: Implement basic framebuffer for LODs 2023-09-28 15:58:16 +02:00
James Seibel ee24bd0881 minor worldGenQueue method rename 2023-09-28 07:24:25 -05:00
James Seibel 1be2d24f42 Move IFullDataSource getUngeneratedPosList() into a separate class 2023-09-28 07:23:20 -05:00
James Seibel e6a5a65f21 minor world gen refactoring 2023-09-28 07:11:24 -05:00
s809 8bda3351b8 Make worldGenLoopingQueue lock free 2023-09-27 21:40:59 +05:00
James Seibel 42d80cbe34 minor world gen method renaming 2023-09-27 07:54:05 -05:00
James Seibel 2c6f2717f0 Fix partially generated sections not queuing world gen tasks
(Most of the time)
2023-09-27 07:53:32 -05:00
Steveplays28 532f3adba8 Merge branch 'main-upstream' 2023-09-27 14:09:04 +02:00
James Seibel bf17a72a7a Fix some holes when flying around in multiplayer 2023-09-26 18:55:10 -05:00
s809 cc8b97f2fe Improve management of frequent real time updates 2023-09-26 22:03:04 +05:00
coolGi f0575d0bc2 Close IO steams when done using them 2023-09-27 00:02:10 +09:30
coolGi 42a875ed8d Fixed problem when attempting to delete the temporary update directory 2023-09-26 23:59:27 +09:30
coolGi 312b32cd63 Merge remote-tracking branch 'origin/main' 2023-09-26 23:00:33 +09:30
coolGi 181232c18e Merge branch 'tmp' 2023-09-26 22:57:31 +09:30
coolGi cbf84639ca Added missing lang 2023-09-26 22:56:52 +09:30
coolGi 2142799fab Added nightly to be auto-updated 2023-09-26 22:53:12 +09:30
coolGi db218adcf4 Added ability for downloading nightly builds 2023-09-26 21:16:27 +09:30
s809 db31c54309 Fix Enable Distant Generation config being ignored 2023-09-26 13:21:37 +05:00
s809 375e81b17d Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-09-26 11:40:38 +05:00
James Seibel da692ab928 Minor ColumnRenderBuffer refactor 2023-09-25 18:52:48 -05:00
James Seibel 9bbb861b4e Fix AbstractFullDataSourceLoader locking issue
Both locations should've been write locks
2023-09-25 07:16:07 -05:00
James Seibel 37acd4a130 Add a todo comment to LodQuadTree 2023-09-24 21:22:07 -05:00
James Seibel 3004685235 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-09-24 21:08:49 -05:00
James Seibel 1b094576d7 Fix sampling source pooling 2023-09-24 21:03:11 -05:00
James Seibel 4333cf65a2 Fix a null pointer in FullDataArrayAccessor 2023-09-24 20:47:53 -05:00
James Seibel a4b7e3e021 Move all data sampling logic into IIncompleteFullDataSource 2023-09-24 20:37:41 -05:00
James Seibel e7021dff2b Merge branch 'main' into 'main'
Deleting comments

See merge request jeseibel/distant-horizons-core!28
2023-09-24 19:06:42 +00:00
James Seibel a91c6e7e9e Merge branch 'NoName24Gitlab-main-patch-00777' into 'main'
Fixed "multiplayer.serverFolderNameMode.@tooltip"

See merge request jeseibel/distant-horizons-core!27
2023-09-24 19:06:00 +00:00
NoName 24 26c86b4059 Deleting comments 2023-09-24 19:01:07 +00:00
NoName 24 14bc64ea6d Update en_us.json. Fixed "distant horizons.config.client.advanced.multiplayer.serverFolderNameMode.@tooltip" by adding "advanced." (it didn't exist before) 2023-09-24 14:17:12 +00:00
s809 4fb9126d49 Fix unloaded file check 2023-09-24 18:48:14 +05:00
coolGi a2ed27c1d3 Merge branch 'main' into 'main'
Update ru_ru.json (minor fixes + Description).

See merge request jeseibel/distant-horizons-core!26
2023-09-24 10:00:03 +00:00
Steveplays28 ed2fca240e fix: Fix compiling after merge 2023-09-24 11:33:49 +02:00
Steveplays28 f5549f2ebe Merge remote-tracking branch 'origin-core/main' 2023-09-24 11:28:38 +02:00
Steveplays28 18e9cfe2a5 Merge branch 'main-upstream' 2023-09-24 11:24:55 +02:00
NoName 24 ebbeb02489 Update ru_ru.json (небольшие исправления + добавлены комментарии от меня: "unused_comment_..." / google en. small corrections + added comments from me: "unused_comment_...") 2023-09-24 09:24:51 +00:00
s809 e4e6753a02 Add gen task rate display 2023-09-24 14:24:31 +05:00
James Seibel c46e12fb7a remove unused commented out code in FullDataMetaFile 2023-09-23 22:32:44 -05:00
James Seibel 752c4af676 Add a todo comment 2023-09-23 22:31:30 -05:00
James Seibel b5bd50f789 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-09-23 22:17:50 -05:00
James Seibel a5d0035f81 refactor and optimize full/render file handlers 2023-09-23 22:05:14 -05:00
coolGi 72e396bbcd Added Russian language file (Thx noname24_, pixsym (sym), and pshsh (пшш)) 2023-09-24 11:20:30 +09:30
James Seibel 7d7202950e Improve initial level loading time 2023-09-23 20:40:43 -05:00
coolGi cb0b610812 Made config use our lang for everything 2023-09-24 11:09:08 +09:30
James Seibel 19cde1bbd4 Add a config for synchronous GPU uploading
hopefully to help with Sodium/AMD issues
2023-09-23 16:05:56 -05:00
James Seibel 1fe209d72a Add some additional logging to GLProxy around GLFW context creation 2023-09-23 12:13:41 -05:00
James Seibel a61317aa57 Remove unhelpful GLProxy test configs 2023-09-23 11:53:44 -05:00
James Seibel 05a16e00ad Remove ReflectionHandler since it was only used by AbstractOptifineAccessor 2023-09-23 11:51:42 -05:00
James Seibel 03efa3c191 GLProxy reformat 2023-09-23 11:25:12 -05:00
James Seibel 9d5bfc4f16 Remove unimplemented IDhLevel.dumpRamUsage() 2023-09-23 11:21:29 -05:00
Steveplays28 8e7855405d Merge remote-tracking branch 'origin-core/main' 2023-09-23 16:34:07 +02:00
Steveplays28 381cae7307 feat: Add config option for server port 2023-09-23 16:33:43 +02:00
James Seibel 1aa45bd9d6 DhClientServerLevel reformat 2023-09-23 08:44:16 -05:00
James Seibel 04e8a99320 Improve World Gen tick method names and put queue work on queue thread 2023-09-23 08:44:01 -05:00
James Seibel 5b8649630c WorldGenerationQueue remove unused code and cleanup 2023-09-23 08:32:22 -05:00
James Seibel 89e92504e4 Fix null pointer in RenderDataMetaFile 2023-09-23 08:20:02 -05:00
s809 e94d67916d Fix compiling
Remove unused config category
Use pooling when receiving sections
Fix use of real time update config
Fix debug renderer not unregistered on queue close
2023-09-23 15:32:24 +05:00
Steveplays28 c98f9476cb Merge remote-tracking branch 'upstream-core/main'
# Conflicts:
#	core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiDebuggingConfig.java
#	core/src/main/java/com/seibel/distanthorizons/core/config/Config.java
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/CompleteFullDataSource.java
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/HighDetailIncompleteFullDataSource.java
#	core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataFileHandler.java
#	core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderDataMetaFile.java
#	core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java
#	core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java
#	core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java
#	core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java
2023-09-22 15:40:31 +02:00
James Seibel 6fa0c802dc fix merge for commit 5ae27310 2023-09-21 22:01:21 -05:00
James Seibel 10b3c94782 Fix some LodRenderSections not rendering when populated by the world generator 2023-09-21 21:56:36 -05:00
James Seibel cdb0ce63b8 Improve FullDataMetaFile debug colors 2023-09-21 19:40:32 -05:00
James Seibel 29d474c577 Improve full data sample pooling logic 2023-09-21 19:29:52 -05:00
James Seibel 74cac0c263 Restructure and optimize the debug wireframe renderer 2023-09-21 19:19:38 -05:00
s809 6c36f3c7e9 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-09-21 21:04:58 +05:00
s809 877a89d17a Add config for a few slow features 2023-09-21 21:00:23 +05:00
James Seibel 9a82b718a5 refactor DebugRenderer 2023-09-21 07:31:29 -05:00
James Seibel cd7463728f Add full Data source pooling for certain sampling operations
May cause some concurrency issues
2023-09-21 07:11:41 -05:00
s809 d325a69e3f Move context levels to requests 2023-09-21 10:16:34 +05:00
James Seibel f5fd27d513 Fix RenderDataMetaFile not updating if debug rendering wireframes were disabled 2023-09-20 21:23:57 -05:00
James Seibel 568a4b0a2e Improve FileUtil.renameCorruptedFile() messages 2023-09-19 22:05:19 -05:00
James Seibel 2c01b29dad Merge branch 'deadlock-fix' into 'main'
Fixed deadlock when drawLODs returns early because Iris is rendering shadow pass

See merge request jeseibel/distant-horizons-core!25
2023-09-19 23:12:31 +00:00
alex-huff 5ae2731008 Fixed deadlock when drawLODs returns early because Iris is rendering shadow pass 2023-09-19 17:44:39 -05:00
s809 08704aad2c Allow selecting specific IDebugRenderable's for rendering 2023-09-19 21:32:59 +05:00
s809 a80bb082b3 Validate response types 2023-09-19 20:19:25 +05:00
s809 fccd197cd5 Fix chunk updates sent to incomplete connections
Hide useless warns, for cases when listener is not configured yet
2023-09-19 18:53:10 +05:00
s809 2cfc2c81c8 Fix future id collisions between c<->s
(cause of occasional hangs on disconnection)
Add packet trace logging
2023-09-19 17:28:26 +05:00
James Seibel b096183388 Attempt to use existing arrays in CompleteFullDataSource if possible 2023-09-18 22:26:58 -05:00
James Seibel ae4fe153ed remove todo from FullDataArrayAccessor 2023-09-18 22:24:30 -05:00
James Seibel f92fc89073 Add sample error handling to FullDataFileHandler 2023-09-18 22:18:24 -05:00
James Seibel 15e03e03e9 add FullDataPointIdMap.clear() and minor reformat 2023-09-18 22:17:51 -05:00
James Seibel 4cddc9efe4 remove future parameter from FullDataToRenderDataTransformer 2023-09-18 22:14:49 -05:00
James Seibel 4a4a3bf297 Fix LowDetailIncompleteFullDataSource divide by zero 2023-09-18 22:08:20 -05:00
James Seibel 704da8cfc1 Minor SingleColumnFullDataAccessor optimization 2023-09-18 22:04:54 -05:00
s809 6f4e105542 Fix compiling 2023-09-18 13:44:19 +05:00
s809 633b3f2033 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-09-18 13:24:43 +05:00
James Seibel cd9f8a5f9b Fix low detail sampling from complete render sources 2023-09-17 19:56:04 -05:00
James Seibel 3555a9aa01 Minor optimization and refactor of FullDataFileHandler.sampleFromFileArray() 2023-09-17 16:15:12 -05:00
James Seibel f41552b760 minor FullDataToRenderDataTransformer refactor 2023-09-17 16:11:17 -05:00
James Seibel 064853c6ff minor FullDataArrayAccessor.downsampleFrom() reformat 2023-09-17 16:10:06 -05:00
James Seibel bc0437f78a Fix FullDataMetaFile load not returning if an error occured 2023-09-17 16:08:16 -05:00
James Seibel b4fe07643e Add config options for debug wireframe rendering 2023-09-16 10:10:11 -05:00
James Seibel b1c07c6204 DebugRenderer refactor 2023-09-16 08:53:14 -05:00
James Seibel 8a0e3a710c Add GL Context creation debug configs
In an attempt to fix Steam Deck crashing due to being unable to create the GL Context
2023-09-16 08:03:39 -05:00
James Seibel 1ae1f1f36f Add a mutable DhSectionPos 2023-09-15 07:34:37 -05:00
James Seibel 2cee805645 Optimize some DhSectionPos via mutating the pos and removing duplicate DhLodPos allocations 2023-09-14 22:04:52 -05:00
James Seibel db58aa117a Minor QuadTree refactor 2023-09-14 20:19:02 -05:00
James Seibel 1c247e0da2 Rename DhSectionPos.getMinCornerLodPos() 2023-09-14 20:11:09 -05:00
James Seibel 4d863adac5 replace DhSectionPos getCenter() with getCenterBlockPos() 2023-09-14 20:07:25 -05:00
James Seibel 96a39bce69 reformat DhBlockPos2D 2023-09-14 19:56:48 -05:00
James Seibel 9a89731a59 Add DhSectionPos getBlockWidth() and getWidthCountForLowerDetailedSection() 2023-09-14 19:16:05 -05:00
James Seibel 269b763b73 Add DhSectionPos.getNumberOfLodSectionsWide() 2023-09-14 07:52:04 -05:00
James Seibel 00806933e0 Optimize DhSectionPos constructors and add convertSelfToDetailLevel() 2023-09-14 07:21:01 -05:00
James Seibel 84236e7a31 Add additional DhSectionPos unit tests 2023-09-13 21:52:56 -05:00
James Seibel 5ee1bea7c0 reformat DhSectionPos 2023-09-13 21:37:31 -05:00
James Seibel a5178cecea Rename RenderMetaDataFile -> RenderDataMetaFile 2023-09-13 18:29:56 -05:00
James Seibel cc933b6bd0 comment out DataSourceReferenceTracker GC logic 2023-09-13 07:45:01 -05:00
James Seibel 03f50b168d Add DataSourceReferenceTracker to automatically free unused data sources 2023-09-12 20:16:32 -05:00
Steveplays28 f0a62c813a Merge remote-tracking branch 'upstream-core/main' 2023-09-12 17:35:29 +02:00
James Seibel 13b7a20ff6 DhLightingEngine reformat 2023-09-11 20:35:33 -05:00
Builderb0y 62e8bea246 I forgot a line of code. 2023-09-12 01:05:27 +00:00
Builderb0y a51bb760d0 inline LightPos, effectively preventing tens of thousands of them from being allocated. 2023-09-11 17:04:17 +00:00
Builderb0y a28eddc1d5 remove iteration over chunkArray, calculate index directly instead. 2023-09-11 16:55:52 +00:00
James Seibel 61564d8914 Merge branch 'distant-horizons-core-iris.shadow.fix' 2023-09-11 07:36:24 -05:00
James Seibel 378ea5599b Merge branch 'distant-horizons-core-abstract.shader.refactor' 2023-09-11 07:29:43 -05:00
James Seibel 5ec874d4a0 Improve LOD Building and Lighting speed for BigGlobe worlds
Thanks Builderb0y!
2023-09-11 07:25:58 -05:00
James Seibel d3865551a5 Minor Lighting Engine GC optimizations 2023-09-10 17:09:33 -05:00
NULL511 8f42acbd65 simplify matrix usage; uniform cleanup 2023-09-10 04:15:35 -04:00
NULL511 25f4ef3224 default viewport 2023-09-10 03:38:47 -04:00
NULL511 a37b0abd18 use init render events 2023-09-10 03:14:03 -04:00
s809 21f03526f8 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-09-10 12:03:29 +05:00
NULL511 22281d477c fix shader init; remove GL11 2023-09-10 01:37:55 -04:00
NULL511 0b2284e258 refactor abstract shader base class and ssao renderer 2023-09-10 00:47:04 -04:00
James Seibel 7d84e05b1f Move framebuffer unbinding to GLState 2023-09-09 18:26:00 -05:00
James Seibel 2d1729d325 Revert "Use MC's projection matrix in SSAO instead of creating a new one"
This reverts commit 5735599569.
2023-09-09 18:22:33 -05:00
James Seibel e415d1cb72 Fix shadow static rendering 2023-09-09 17:03:33 -05:00
James Seibel 5735599569 Use MC's projection matrix in SSAO instead of creating a new one 2023-09-09 16:45:20 -05:00
NULL511 d73c0b9531 cleanup 2023-09-09 16:33:27 -04:00
NULL511 faf51a57e7 fix ssao frame buffer binding 2023-09-09 16:33:27 -04:00
NULL511 d6d94804a0 cleanup 2023-09-09 16:33:27 -04:00
NULL511 a21edfeed6 remove unused frame buffer 2023-09-09 16:33:27 -04:00
NULL511 36092008ef fix fog texture bind + shaders 2023-09-09 16:33:27 -04:00
Steveplays28 0e7a96d308 fix: Fix missing IServerKeyedClientLevel import 2023-09-09 21:03:17 +02:00
Steveplays28 87572246a6 Merge remote-tracking branch 'upstream-core/main' 2023-09-09 20:53:44 +02:00
James Seibel ae8c95250c Reduce duplicate Client Chunk update calls 2023-09-09 13:36:59 -05:00
James Seibel e484926f62 Temporarily disable clientApi neighbor chunk updating 2023-09-09 12:47:23 -05:00
James Seibel 8ae78dbf60 Fix inconsistent QuadTree detail level variable names 2023-09-09 10:45:17 -05:00
James Seibel ac1beb732d Fix LodQuadTree corner sections rendering outside the square render distance 2023-09-09 10:43:23 -05:00
Steveplays28 025484d5b4 Merge remote-tracking branch 'upstream-core/main' 2023-09-09 14:47:07 +02:00
James Seibel 1e7b459b6a Add debug options to skip some full data update events 2023-09-08 22:32:19 -05:00
James Seibel b234c3e57e Merge branch 'distant-horizons-core-alpha.blend.state' 2023-09-08 19:57:08 -05:00
James Seibel e8dc6f12e0 Add LodQuadBuilder timing to the build log 2023-09-08 19:56:13 -05:00
James Seibel e8a7ec1cf8 Remove LodQuadBuilder transparent void fix
The fix was causing a lot of lag and I wasn't able to reproduce the problem after removal so it probably isn't worth it for the time being.
2023-09-08 19:54:28 -05:00
NULL511 c199cd60ec add blend-alpha to GLState 2023-09-08 18:36:07 -04:00
Steveplays28 15e4b1316e Merge remote-tracking branch 'upstream-core/main' 2023-09-08 19:54:43 +02:00
James Seibel 8c19fc60f8 Improve LodQuadBuilder speed and reduce GC pressure 2023-09-08 07:50:47 -05:00
James Seibel 3290ba3b34 minor refactors 2023-09-08 07:47:37 -05:00
James Seibel ea7f199c9b Clear the debug wireframes after leaving the current world. 2023-09-07 20:20:11 -05:00
s809 e02eddc60e Fix compiling 2023-09-07 21:07:16 +05:00
s809 1e1ddd505b Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-09-07 20:07:30 +05:00
James Seibel 36fc6aaea3 Reorganize SSAO config 2023-09-06 21:25:13 -05:00
James Seibel ea05ef3d3d Merge branch 'distant-horizons-core-ssao.improvements' 2023-09-06 17:54:20 -05:00
James Seibel 72ee854655 Overhaul FullDataMetaFile async completion stages and write queue application 2023-09-06 17:36:52 -05:00
James Seibel 65e6aa1aa0 Refactor AbstractFullDataSourceLoader phantom check/logging 2023-09-04 18:32:58 -05:00
James Seibel cc16e21352 Fix interface naming convention in MetaFileScanUtil 2023-09-04 18:12:09 -05:00
James Seibel 2cf798ed4c Remove CacheQueryResult from FullDataMetaFile 2023-09-04 18:11:02 -05:00
James Seibel 8c7d640f37 temp 2023-09-04 18:02:43 -05:00
James Seibel d98c052d0d RenderMetaDataFile null pointer fix 2023-09-04 17:55:57 -05:00
James Seibel 31faa9925a refactor AbstractMetaDataContainerFile and FullDataMetaFile 2023-09-04 17:17:44 -05:00
James Seibel ceda768f2b Fix allowUnsafeValues localization typo 2023-09-04 11:05:02 -05:00
James Seibel 4da4666aec Add named FullDataMetaFile constructors 2023-09-04 09:51:35 -05:00
James Seibel 08359b1b31 Move meta file scanning into FileScanUtil (now MetaFileScanUtil) 2023-09-04 09:46:32 -05:00
NULL511 1da2b3558e add sample count 2023-09-04 03:09:25 -04:00
NULL511 4cd6bc06f1 reset default ssao settings 2023-09-04 00:12:45 -04:00
NULL511 4f1f11e769 add debug ssao settings; improve vanilla matching 2023-09-03 23:33:30 -04:00
James Seibel f21545a3af RenderMetaDataFile refactor cleanup 2023-09-03 22:09:52 -05:00
James Seibel 33cb8c02e8 Move code from RenderSourceFileHandler to RenderMetaDataFile and refactor 2023-09-03 21:59:55 -05:00
James Seibel ed596955f7 Remove CacheQueryResult from RenderMetaDataFile 2023-09-03 17:42:47 -05:00
James Seibel 800ffc5611 Move RenderSourceFileHandler code into RenderMetaDataFile 2023-09-03 16:55:52 -05:00
James Seibel 89c6dc0333 rename ColumnRenderSource fastWrite() -> updateWithChunkData() 2023-09-02 21:05:45 -05:00
James Seibel 2e49bf299e Merge DataRenderTransformer and FullDataToRenderDataTransformer 2023-09-02 20:41:58 -05:00
James Seibel 2c71a2a63a Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-09-02 20:18:05 -05:00
James Seibel 3d62ca361d Refactor RenderSourceFileHandler and DataRenderTransformer 2023-09-02 20:17:56 -05:00
James Seibel dc1ce86cc3 Remove commented out code in FullDataToRenderDataTransformer 2023-09-02 20:17:08 -05:00
James Seibel a60f91ad00 refactor FileScanUtil 2023-09-02 11:53:12 -05:00
James Seibel 6976cb9bb0 Remove useless file lock from AbstractMetaDataContainerFile 2023-09-02 07:32:54 -05:00
coolGi d71ab1138b Fixed deep dark not blackening lods 2023-09-02 20:59:31 +09:30
coolGi a3a41c44a9 Fixed crash ran on version not on Modrinth 2023-09-02 20:10:56 +09:30
James Seibel 1af6e83086 Add missing licensing headers 2023-09-01 20:43:26 -05:00
NULL511 8c7937f9a2 cleanup 2023-09-01 18:25:37 -04:00
NULL511 f692ddaf93 dither fog 2023-09-01 17:56:59 -04:00
NULL511 3ee3b9c98c vanilla-matched ssao 2023-09-01 17:18:29 -04:00
s809 415f16507b Add post-rejoin updates 2023-09-02 01:23:56 +05:00
NULL511 88b02ef2f7 revert ssao tuning 2023-09-01 12:11:26 -04:00
James Seibel 7a0a217822 Update existing licensing headers 2023-09-01 07:44:15 -05:00
James Seibel 983703479f Remove unused IDE files and move Gitlab docker setup instructions 2023-09-01 07:41:44 -05:00
NULL511 e29974282e faster ssao 2023-09-01 03:22:40 -04:00
James Seibel aee6407941 Add file write locking to AbstractMetaDataContainerFile
Done to try preventing a rare bug where multiple threads would write the same file
2023-08-31 22:01:43 -05:00
James Seibel 9ba1b18fac Remove debug disable lighting engine configs 2023-08-31 21:43:17 -05:00
James Seibel c28ec12983 Improve a couple data update comments 2023-08-31 21:42:57 -05:00
James Seibel b894cc8836 Move Fog matrix inversion to the CPU 2023-08-31 21:15:49 -05:00
James Seibel 08f78c22f0 Move SSAO gInvProj to the CPU instead of GPU
Also make Mat4f.invert() return void instead of boolean to prevent confusion about trying to pass the result into shader uniforms.
2023-08-31 21:06:41 -05:00
James Seibel 751eb75c50 Fix GLProxy null pointer 2023-08-31 19:08:31 -05:00
James Seibel 7ac562c5e9 Fix DhBlockPos mutable methods 2023-08-31 19:01:57 -05:00
James Seibel 3148991667 Make light propagation mutate instead of create BlockPos to reduce GC pressure 2023-08-31 07:55:43 -05:00
James Seibel d4a75eb73c Rename StableLightPosArray -> StableLightPosStack and add cache reusing 2023-08-31 07:21:15 -05:00
James Seibel 9f46dd13a6 Create StableLightPosArrayList for DhLightingEngine 2023-08-30 18:32:40 -05:00
James Seibel f6df6e83a5 make DhBlockPos mutable 2023-08-30 18:31:58 -05:00
James Seibel 58378ffcba Fix disappearing LOD sections
Its still a bit of a duck tape solution, but should be good enough for now
2023-08-30 07:43:59 -05:00
James Seibel d3a7bb7b9d Add debug methods to ColRender Buffer/Source 2023-08-30 07:43:19 -05:00
James Seibel 5c03d7446b Add a temp debug option that disables the lighting engine and light baking 2023-08-30 07:07:25 -05:00
James Seibel fa93a22ab2 temp 2023-08-28 21:14:19 -05:00
s809 cb95978502 Fix compilation 2023-08-27 19:56:12 +05:00
s809 1b729f3fe7 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-27 19:10:25 +05:00
s809 d84e097fa2 Merge branch 'client-level-error' of https://gitlab.com/s809/distant-horizons-core into client-level-error 2023-08-27 18:43:06 +05:00
s809 51ad901206 Fix loading ClientLevel on server 2023-08-27 18:41:47 +05:00
James Seibel 93cfea4c84 Convert WorldGenQueue to use SectionPos instead of LodPos 2023-08-27 07:53:37 -05:00
James Seibel ee93122254 fix render source null pointer 2023-08-26 21:52:58 -05:00
James Seibel 44691f38f1 fix quality preset cache reset firing too often 2023-08-26 17:57:36 -05:00
James Seibel 4439983ace Fix some api:javadoc warnings and suppress future ones
I don't like suppressing warnings, but in this case they want the javadocs to be a bit more verbose then necessary.
2023-08-26 17:32:39 -05:00
James Seibel 0978f4a4d8 Fix API javadoc compiling 2023-08-26 15:29:44 -05:00
James Seibel 2cd2941cbe Add IDhApiConfigValue.addChangeListener() 2023-08-26 13:11:16 -05:00
James Seibel 2cb1e32817 Minor DhApi rename and comment cleanup 2023-08-26 12:04:00 -05:00
s809 517925a207 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-26 21:33:44 +05:00
James Seibel c6ee61777c Add a ReadMe to DhApi
Hey You. You're finally awake...
2023-08-26 11:19:49 -05:00
coolGi 781bcd318c Merge remote-tracking branch 'origin/main' 2023-08-27 01:38:15 +09:30
coolGi b3591066bd Fixed compiling 2023-08-27 01:36:42 +09:30
James Seibel 7a3f63040d Remove unused IDhApiConfigValue.getApiValue() 2023-08-26 10:56:31 -05:00
James Seibel f8857d2a1d Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-26 10:43:26 -05:00
James Seibel cfa00010d9 Cache SSAO uniforms 2023-08-26 10:43:10 -05:00
coolGi 0979d75a5d Disabled SVG from being included in the jar 2023-08-27 01:02:05 +09:30
coolGi 53e8519aab Removed flatlaf 2023-08-27 00:59:36 +09:30
James Seibel 8871b893c1 Reduce SSAO artifacting 2023-08-26 10:15:17 -05:00
James Seibel 2216eed449 Remove unused SSAOShader (use SSAORenderer instead) 2023-08-26 08:57:40 -05:00
James Seibel 9e43076853 Add OpenGL error log config 2023-08-26 08:51:20 -05:00
coolGi 7470552576 Fixed up how file handling works in the config 2023-08-26 17:29:27 +09:30
coolGi a0bc44ca06 Proper fix for checking if the config is loaded 2023-08-26 15:21:04 +09:30
James Seibel 2e647b5781 Remove deprecated getX() and getZ() from DhChunkPos 2023-08-25 21:17:42 -05:00
James Seibel cdc6635a76 Refactor 2023-08-25 21:05:47 -05:00
James Seibel 89724e4a74 Merge branch 'distant-horizons-core-refactor/world-gen-module' 2023-08-25 20:09:53 -05:00
James Seibel d5922900b5 Attempt to fix LodRenderer freeing GL objects while they are in use 2023-08-25 07:52:16 -05:00
James Seibel 269cbf8355 Require a ILevelWrapper when deserializing BiomeWrappers 2023-08-24 21:37:55 -05:00
James Seibel 1fba04132b Revert "Fixed config system only working with dh"
This reverts commit f1b31a4cfe.
2023-08-24 21:16:13 -05:00
James Seibel e62ddc302b Require a ILevelWrapper when deserializing BlockStateWrappers 2023-08-24 20:05:54 -05:00
s809 2ab48e0a8b Decouple world generation parts from DhLevel's 2023-08-24 21:09:39 +05:00
coolGi 697abb520b Fixed javadocs reference, and updated core 2023-08-25 00:10:34 +09:30
coolGi f1b31a4cfe Fixed config system only working with dh 2023-08-24 22:56:19 +09:30
coolGi d553965f28 Refactored and fixed several config related things (javadocs, and warnings) 2023-08-24 22:56:03 +09:30
coolGi 089f887035 Merge remote-tracking branch 'origin/main' 2023-08-24 22:30:24 +09:30
coolGi 1d637668c6 Removed running button pressed process by default 2023-08-24 22:30:05 +09:30
James Seibel 3361ba2fab Fix config presets rewriting the config file before it loads 2023-08-24 07:41:08 -05:00
James Seibel 971caca9c9 Improve config render cache invalidation logic and add missing config listeners 2023-08-24 07:20:49 -05:00
James Seibel 48a3675eec Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-24 07:06:15 -05:00
coolGi c8f9c83935 Merge branch 'main' into 'main'
feat: Update rendering block ignores

See merge request jeseibel/distant-horizons-core!17
2023-08-24 11:49:46 +00:00
coolGi 81992f6a87 Formatted some resource files 2023-08-24 20:28:25 +09:30
James Seibel f8814e3a11 Merge branch 'steve-ignore-blocks' 2023-08-23 21:28:35 -05:00
James Seibel f6ee8048eb Have getRendererIgnoredBlocks()'s require a level and return a hashset 2023-08-23 21:23:58 -05:00
s809 c5abc22c58 Merge branch 'feat/server-updates' 2023-08-24 00:01:07 +05:00
s809 2330377212 Send updates at chunk level instead of sections 2023-08-23 23:55:16 +05:00
s809 9db56bbf87 test 2023-08-22 20:41:42 +05:00
s809 52a90fec6c Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core into feat/server-updates 2023-08-22 19:12:43 +05:00
James Seibel 794e9afc10 Fix file saving 2023-08-22 07:45:25 -05:00
Steveplays28 ed6a4573eb feat: Update rendering block ignores
Barrier blocks, structure void blocks, light blocks, and air blocks now share 2 `HashMap`s that define blocks that should be ignored by the LOD builder.
2023-08-22 11:36:46 +02:00
Steveplays28 3630dc724d fix: Add null check to config GUI when adding a screen change listener 2023-08-22 10:52:19 +02:00
James Seibel 4ec4b2f8dd Reduce SSAO noise 2023-08-21 22:06:33 -05:00
s809 627bfbc007 Incomplete 2023-08-21 22:08:35 +05:00
James Seibel 1e05972e3c Fix potential null pointers in DhWorld shutdown 2023-08-21 07:46:51 -05:00
Steveplays28 d9283e938b feat: Update rendering block ignores
Barrier blocks, structure void blocks, light blocks, and air blocks now share 2 `HashMap`s that define blocks that should be ignored by the LOD builder.
2023-08-21 03:41:27 +02:00
James Seibel 786c445a91 Add a profiler section for debug wireframe rendering 2023-08-20 18:38:21 -05:00
James Seibel 3b14bd655c Add a world curvature listener and limiter 2023-08-20 18:22:10 -05:00
James Seibel d5f3ac9fb8 Fix renderer crash when enabling earth curvature 2023-08-20 18:11:12 -05:00
James Seibel 35f5bce149 Clean up World Gen Threads after termination 2023-08-20 17:59:58 -05:00
James Seibel 2964acfc8c Hide unused multiplayer settings 2023-08-20 15:06:59 -05:00
James Seibel 6babf730dc Merge branch 'distant-horizons-core-fix/incorrect-checksum' 2023-08-20 14:49:37 -05:00
James Seibel f57c52b2d0 add ILevelWrapper.onUnload() 2023-08-20 14:47:22 -05:00
James Seibel 3113263012 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-20 14:14:56 -05:00
James Seibel c0e0412de9 Add world gen task count to the F3 menu 2023-08-20 14:14:44 -05:00
s809 283f4c9782 Fix incorrect use of checksum stream
(for some reason each section goes twice through this method)
2023-08-20 20:23:28 +05:00
s809 ce4d50654d Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-19 22:28:13 +05:00
coolGi 461302d290 Merge remote-tracking branch 'origin/main' 2023-08-20 02:54:40 +09:30
s809 7568ab56f6 Fix hang when near completion of loading from server
Replace total value with sum of pending+finished requests
2023-08-19 22:21:01 +05:00
coolGi d6352b9ea6 Fixed ui modify, and made file handeler use its own set function 2023-08-20 02:36:48 +09:30
s809 bf58654a10 Fix prioritization not working properly 2023-08-19 21:22:51 +05:00
James Seibel 4bf12c7fc4 Fix lighting and LOD generation for snow layers 2023-08-19 11:01:52 -05:00
coolGi 8431256b2c Re-arranged the git info 2023-08-20 01:31:04 +09:30
James Seibel 0e1c4c49c2 Change RenderSourceFileHandler cache log from info -> debug 2023-08-19 08:50:20 -05:00
Steveplays28 e4576c7d51 Merge remote-tracking branch 'upstream-core/main' 2023-08-19 11:41:38 +02:00
tom lee a30bfdf397 Implement cache invalidation, and have render cache be used. Can expect faster load times. 2023-08-19 16:49:09 +08:00
James Seibel 158a614482 Potentially fix custom world generator snow lighting 2023-08-18 20:51:29 -05:00
James Seibel 974953ae9d Remove height map optimization in LodDataBuilder 2023-08-18 18:44:37 -05:00
James Seibel 02449a909a Fix snow rendering take 2 2023-08-18 18:15:03 -05:00
James Seibel 42841fe2a1 Preventive fix for LodDataBuilder going outside the world 2023-08-18 17:44:16 -05:00
James Seibel 70989a9369 Attempt to fix snow lighting 2023-08-18 17:22:27 -05:00
James Seibel ef21987817 remove unimplemented world generator modes
specifically: BIOME_ONLY, BIOME_ONLY_SIMULATE_HEIGHT, and FULL
2023-08-18 15:55:32 -05:00
James Seibel 56c8441daf add a heightmap check/warning to DhLightingEngine 2023-08-18 15:54:53 -05:00
James Seibel b229d928c1 Have DhLightingEngine set centerChunk.setIsDhLightCorrect = true when done 2023-08-18 11:49:52 -05:00
James Seibel 3db7ffeb01 Remove world gen lighting engine config 2023-08-18 11:19:45 -05:00
James Seibel ec2382372e Fix DH lighting not being baked in correctly for loaded chunks 2023-08-18 11:19:15 -05:00
James Seibel 4c081fcf26 Tweak world gen threading presets 2023-08-18 10:30:54 -05:00
James Seibel 61b5ec1d70 Attempt to prevent OpenGL errors when teleporting 2023-08-18 10:13:40 -05:00
James Seibel 859fcaf1b8 Improve ThreadUtil logging and prefix handling 2023-08-18 09:10:18 -05:00
James Seibel 91f67cac9b Fix WorldGen ThreadFactory not being used 2023-08-18 08:25:15 -05:00
Steveplays28 a1f07c075e Merge remote-tracking branch 'upstream-core/main' 2023-08-18 15:12:11 +02:00
s809 84c4ad6cdd Add missing level wrapper argument (and a bunch of null checks) 2023-08-18 15:04:59 +02:00
James Seibel c7ac9faccd Fix preset configs not applying after the UI screen changes 2023-08-18 07:51:05 -05:00
James Seibel 123f17288c Temporary config file permission exception suppression 2023-08-18 07:47:51 -05:00
James Seibel 11ec8b1eaa Fix Render data attempting to recreate files on setting change 2023-08-18 07:47:18 -05:00
James Seibel c80136719d Temporary fix to ConfigFileHandling crashing when creating the file 2023-08-17 22:17:50 -05:00
James Seibel ff3949f353 Merge branch 'main' into 'main'
Fix wrong position being calculated and used for block colors (and possibly other things).

See merge request jeseibel/distant-horizons-core!14
2023-08-18 03:05:11 +00:00
James Seibel 8809fa88ce Fix incorrect vPos in curve.vert, thanks Null! 2023-08-17 21:21:49 -05:00
James Seibel 97d5429b34 Merge branch 'shader.cleanup' into 'main'
Shader Cleanup

See merge request jeseibel/distant-horizons-core!13
2023-08-18 01:59:07 +00:00
Builderb0y 3784458cba Fix wrong position being calculated and used for block colors (and possibly other things). 2023-08-18 01:58:11 +00:00
James Seibel 155648035b fix SSAO rendering 2023-08-17 20:56:35 -05:00
NULL511 c75c830ab2 revert cpu projection inverse fog 2023-08-17 13:06:37 -04:00
NULL511 ea5b19b4e7 cpu projection inverse fog 2023-08-17 12:35:16 -04:00
NULL511 be1d13e6ad cpu projection inverse 2023-08-17 12:08:45 -04:00
NULL511 4563e4872e shader syntax fix 2023-08-17 11:19:38 -04:00
NULL511 ceb0c215c5 shader cleanup initial 2023-08-17 10:34:54 -04:00
coolGi d239defb94 Merge remote-tracking branch 'origin/main' 2023-08-17 23:27:26 +09:30
coolGi ff7e945b07 Changed config file deletion error message, to info 2023-08-17 23:25:18 +09:30
coolGi 26b6e19753 Temporary "fix" for ant water 2023-08-17 23:21:55 +09:30
coolGi 4969d2362d Removed if statement for deleting config file 2023-08-17 23:16:51 +09:30
James Seibel 7dc054c1dd potentially reduce OpenGL errors when restoring GLStates 2023-08-17 07:23:08 -05:00
James Seibel e488cb8a4c Add some additional error checking to ConfigFileHandling 2023-08-17 07:12:07 -05:00
James Seibel 7aa432951c Add Javadoc "since API 1.0.0" to API methods and objects 2023-08-16 07:42:12 -05:00
James Seibel 468c8b134c Remove unused EDhApiWorldGenThreadMode 2023-08-16 07:42:01 -05:00
James Seibel 1139a6eec7 Disable cave culling for dimensions with a ceiling 2023-08-16 07:23:42 -05:00
Steveplays28 47aef1f349 Merge remote-tracking branch 'upstream-core/main'
# Conflicts:
#	core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java
#	core/src/main/java/com/seibel/distanthorizons/core/api/internal/SharedApi.java
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/CompleteFullDataSource.java
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/HighDetailIncompleteFullDataSource.java
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/LowDetailIncompleteFullDataSource.java
#	core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataFileHandler.java
#	core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/RemoteFullDataFileHandler.java
#	core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java
#	core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java
#	core/src/main/java/com/seibel/distanthorizons/core/level/DhClientServerLevel.java
#	core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java
#	core/src/main/java/com/seibel/distanthorizons/core/level/IDhServerLevel.java
#	core/src/main/java/com/seibel/distanthorizons/core/level/ServerLevelModule.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/NetworkEventSource.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/messages/AckMessage.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/messages/CloseReasonMessage.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/messages/HelloMessage.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/messages/PlayerUUIDMessage.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/messages/RemotePlayerConfigMessage.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/objects/RemotePlayer.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/protocol/EMessageHandlerSide.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/protocol/INetworkMessage.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/protocol/MessageRegistry.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/protocol/NetworkChannelInitializer.java
#	core/src/main/java/com/seibel/distanthorizons/core/network/protocol/NetworkExceptionHandler.java
#	core/src/main/java/com/seibel/distanthorizons/core/world/DhClientWorld.java
#	core/src/main/java/com/seibel/distanthorizons/core/world/DhServerWorld.java
#	core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/block/IBlockStateWrapper.java
#	core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/misc/IServerPlayerWrapper.java
#	core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/world/IBiomeWrapper.java
2023-08-16 11:36:00 +02:00
James Seibel d4bc5bbc82 Fix default chunkLodConverter ratio config value 2023-08-15 22:04:26 -05:00
James Seibel e5ab12ef3e Create .editorconfig 2023-08-15 20:50:42 -05:00
James Seibel 55bf122bc1 Potentially fix lag when moving across chunk borders 2023-08-15 20:49:22 -05:00
coolGi 300834f582 Removed unused accessors 2023-08-15 13:00:41 +09:30
coolGi bde1c860b9 Merge remote-tracking branch 'origin/main' 2023-08-15 12:47:57 +09:30
coolGi 858bf3e99b Fix to sodium, now no longer requiring Mixins 2023-08-15 12:47:13 +09:30
James Seibel 8489003e0c Apply editorconfig auto formatting 2023-08-14 21:16:08 -05:00
Steveplays28 1e7a25046a fix: Fix BlockStateWrapper and Biome serializing to empty strings 2023-08-15 00:03:13 +02:00
Steveplays28 87a9e93278 fix: Fix server trying to access client instance 2023-08-14 19:23:39 +02:00
Steveplays28 2d3062008e Merge remote-tracking branch 'upstream-core/main' 2023-08-14 15:40:41 +02:00
James Seibel 56959094ae Fix ModGitInfo crashing on release MC
It won't show the commits or branches, but it won't crash either
2023-08-14 07:30:41 -05:00
James Seibel 2914ddd121 Cache the DhChunkPos hashCode to improve DhLightingEngine speed 2023-08-13 17:10:27 -05:00
James Seibel f67949dbc4 Fix DhLightingEngine for light positions outside the chunk(s) 2023-08-13 17:09:03 -05:00
Steveplays28 8dcec7a1bd refactor: Re-add old serialization method
This is used by some override methods that don't have access to the level.
These old serialization methods have `FIXME`s so they're easy to find in the future.
2023-08-13 23:18:55 +02:00
Steveplays28 d839b6e4bd Merge remote-tracking branch 'upstream-core/main'
# Conflicts:
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/CompleteFullDataSource.java
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/HighDetailIncompleteFullDataSource.java
#	core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/LowDetailIncompleteFullDataSource.java
#	core/src/main/java/com/seibel/distanthorizons/core/pos/DhSectionPos.java
2023-08-13 22:59:43 +02:00
James Seibel 8df8ed4a02 Request a garbage collection after closing the DH world 2023-08-13 13:36:47 -05:00
James Seibel 470c9ff5b5 Fix DhLightingEngine overwhelming the GC 2023-08-13 13:36:32 -05:00
s809 0c155ac8cd Generation task prioritization (loaded > unloaded > ungenerated) 2023-08-13 18:59:08 +05:00
James Seibel d3cf47ccd7 Fix FullDataPointIdMap (de)serialization duplicate Entries
Also increase DATA_FORMAT_VERSION 2 -> 3
2023-08-12 16:17:34 -05:00
s809 271b193543 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-13 01:53:06 +05:00
James Seibel 2b97fa639a Fix SSAO shading being applied to the sky 2023-08-11 21:04:47 -05:00
James Seibel 91a6f4468a improve fog shader depth culling logic 2023-08-11 21:00:58 -05:00
James Seibel 27c5f308a8 Remove the outer profiler to LOD rendering 2023-08-11 21:00:09 -05:00
James Seibel c56cbb20c4 Fix DH fog rendering over the sun and sky 2023-08-11 18:43:09 -05:00
James Seibel e6f673783b reformat LodRenderer 2023-08-11 18:32:02 -05:00
James Seibel fe05594d45 remove some unneeded fog code in the main shader program 2023-08-11 18:02:35 -05:00
James Seibel a97d8bb8ee Fix a crash after changing the DH render distance 2023-08-11 17:52:00 -05:00
James Seibel 766ee0975e Fix disabling fog crashing the renderer 2023-08-11 07:45:44 -05:00
James Seibel a3efc652dc Fix Fog shader corrupted rendering 2023-08-11 07:26:11 -05:00
James Seibel 4df9c1ca01 reformat GLState 2023-08-11 07:21:46 -05:00
James Seibel d1ecec9ee9 reformat AbstractShaderRenderer 2023-08-11 07:08:43 -05:00
James Seibel 857979b7f2 Remove fog code from the flat_shaded (LodRenderProgram) shader 2023-08-10 07:49:18 -05:00
James Seibel 72e1e29a0b Minor reformat to FogShader 2023-08-10 07:25:33 -05:00
James Seibel 59c62aa6f0 Fix DH fog not rendering, but also corrupt vanilla rendering 2023-08-10 07:24:20 -05:00
s809 e4ac25f4ce Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-08 20:57:30 +05:00
James Seibel 510dc47943 Renderer reformatting 2023-08-08 07:25:48 -05:00
coolGi c2f7ca8f38 Temporary fix for sodium 0.5's fog occlusion 2023-08-08 21:23:25 +09:30
s809 52f9e3e9e4 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-08 12:35:21 +05:00
coolGi dc88c46dc9 Added a warning if value doesn't have a way to display it 2023-08-07 22:05:04 +09:30
coolGi fc54e0f893 Fixed crashing with forge-config-api-port-fabric 2023-08-07 21:54:41 +09:30
coolGi 9f9c542a6c DH Jar now knows git version that it was built from 2023-08-07 21:10:45 +09:30
James Seibel 2930a899d8 Remove IMinecraftRenderWrapper.tryDisableVanillaFog()
They are now handled via mixins
2023-08-06 19:21:46 -05:00
James Seibel 38a7a837e7 Fix incorrect unloaded chunk lighting 2023-08-06 19:18:31 -05:00
James Seibel df63dd1370 Add a FullDataMetaFile TODO comment 2023-08-06 17:47:07 -05:00
James Seibel 4de8812861 update the seamless overdraw config to state it only works on fabric 2023-08-06 17:39:34 -05:00
coolGi f8f6c9f877 Added a ui button option + debug menu option 2023-08-06 18:59:39 +09:30
coolGi 260358be93 Added pop-up notification on update success 2023-08-06 18:57:38 +09:30
coolGi e5dcc4189d Fixed bug with updater giving invalid update checksum 2023-08-06 18:56:16 +09:30
coolGi 475e4da4a7 Removed config entries from checking their own types as its already done in the config base 2023-08-06 17:30:27 +09:30
coolGi 7ccb5c1806 Added white world option 2023-08-06 17:15:17 +09:30
James Seibel ba0de99948 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-05 22:35:42 -05:00
James Seibel b53739a112 Comment out a couple missed Netty lines 2023-08-05 22:33:30 -05:00
James Seibel 8bcfe3e35d Increment Full Data Source version 1 -> 2
Done due to serialization changes
2023-08-05 22:25:06 -05:00
James Seibel 1345982795 Comment out all Netty related files
Done to allow 1.16 to compile
2023-08-05 22:22:51 -05:00
James Seibel ff1a1d5164 minor FullDataToRenderDataTransformer refactor 2023-08-05 22:21:58 -05:00
s809 6bf32ff85c Add debug renderer for remote generation queue 2023-08-05 22:30:33 +05:00
coolGi 783ceeb633 Some general fixes 2023-08-05 16:53:41 +09:30
coolGi 42f45f05c3 Merge remote-tracking branch 'origin/main' 2023-08-05 15:04:37 +09:30
coolGi 5800029206 Reverted previous removing fog from main shader 2023-08-05 15:03:26 +09:30
coolGi 146c2e6f1c Final save commit for another attempt to fix fog, before revert. 2023-08-05 14:58:03 +09:30
s809 9bd432ad7f Fix memory leak related to requests 2023-08-04 22:12:09 +05:00
s809 04fc4aa676 Remove unnecessary logging 2023-08-04 21:51:53 +05:00
s809 8ee4b8b4c9 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-08-04 21:10:41 +05:00
s809 5767668efa Somewhat proper request cancellation 2023-08-04 21:04:34 +05:00
s809 76b226b865 Fix switching dimensions (request cancellation is broken) 2023-08-04 13:06:56 +05:00
coolGi 76bc81233a Removed old fog 2023-08-02 23:29:30 +09:30
coolGi 3ea55065b3 Fog shader should be working 2023-08-02 23:23:06 +09:30
coolGi a724938f71 Shader save commit 2023-08-02 23:04:34 +09:30
James Seibel fc1bbd2f91 Add missing Lod Shading localization items 2023-08-02 07:04:30 -05:00
James Seibel 622a1633fa Add config for Lod Shading so Old Lighting can be enabled for shaders 2023-08-01 20:11:21 -05:00
s809 1788c18d59 Everything I've done so far (not working/finished) 2023-08-01 22:31:16 +05:00
James Seibel 66d3fc8151 Add a note to DhSectionPos about why a section is 2x2 chunks 2023-08-01 07:51:42 -05:00
James Seibel 5f68122336 temporarily comment out LodQuadTree concurrency warning
The warning doesn't appear to be causing any ill effects for now, but it will still need to be fixed in the future
2023-08-01 07:44:48 -05:00
James Seibel 8daa52f36e Add a 1 sec timeout before applying config presets 2023-08-01 07:42:12 -05:00
James Seibel 61c8288b99 Remove thread preset "paid for whole cpu" and tweak CPU preset options 2023-08-01 07:27:25 -05:00
s809 2251cd4c25 Attempt to fix dimension switching 2023-08-01 17:04:40 +05:00
s809 781b588980 Implement server-side rate limiting 2023-08-01 12:55:36 +05:00
James Seibel d9ef3670fa Slightly increase the default world gen thread count and activities 2023-07-31 21:44:16 -05:00
James Seibel 8f6ee82fc7 temporary fix for LodRenderSections not appearing 2023-07-31 20:51:40 -05:00
James Seibel 3179ba0db8 refactor and comment 2023-07-31 20:43:35 -05:00
s809 74ac4fe64f Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-07-31 17:43:16 +05:00
s809 6d1f9803ce Avoid losing requests due to concurrency 2023-07-31 17:42:14 +05:00
s809 95d721e1a3 World generation 2023-07-31 15:23:56 +05:00
James Seibel e58b1fffed Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-07-30 21:12:36 -05:00
James Seibel 84b50761bd Fix LOD Bias Effect -> Affect 2023-07-30 21:12:31 -05:00
coolGi b17f19efb3 Changed JSON format for hash map to use minimalInstance instead of fancyInstance 2023-07-30 14:43:07 +00:00
James Seibel 3f25472437 Remove HashMap from Config and add runtime Config type checking
HashMap isn't supported by NightConfig and can cause the game to crash in some situations
2023-07-29 17:33:11 -05:00
James Seibel 3415db58a6 Fix multiplayer networking configs and add missing localizations 2023-07-29 10:01:22 -05:00
James Seibel 9be69863ae Improve networked multiverse support
Also change "WorldChanged" -> "LevelChanged"
2023-07-29 09:04:02 -05:00
James Seibel 65ef693cb5 Fix null player in ClientTick when unloading a level 2023-07-28 07:24:13 -05:00
James Seibel d5fc8b760a band-aid solution to a temporary 2023-07-27 21:38:03 -05:00
James Seibel 895a0db542 Fix Forge client-side multiplayer 2023-07-27 21:35:03 -05:00
James Seibel 3062c29230 ClientOnlySaveStructure minor refactor for debugging 2023-07-25 22:10:29 -05:00
James Seibel fa8f7b2a37 Reduce NetworkClient reconnect attempts from 5 -> 3 2023-07-25 22:10:01 -05:00
s809 d2f2a3b8aa Attempt to use GeneratedFullDataFileHandler 2023-07-24 19:59:16 +05:00
s809 768ce5b8fd something 2023-07-24 19:16:05 +05:00
s809 3e9f741d62 Implement transferring of missing full data source types 2023-07-24 14:15:03 +05:00
s809 133f007bde Fix mistake 2023-07-24 11:01:10 +05:00
s809 a623a3bfab Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-07-24 10:41:17 +05:00
James Seibel af5bb351e8 Add a config to disable multiverse networking 2023-07-23 17:35:05 -05:00
s809 4157a39589 Somewhat working generation 2023-07-24 01:46:09 +05:00
s809 10e2873497 Downloads already visited chunks 2023-07-23 23:48:42 +05:00
s809 d7ef6c8a72 Got chunks to generate on server 2023-07-23 20:34:40 +05:00
s809 d29ba9d423 Requests now work properly
Merge request tracker into event source
2023-07-23 14:39:29 +05:00
s809 0c60395426 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-07-23 11:08:31 +05:00
James Seibel a00cfbb7de Fix lighting propagation when connected to a server 2023-07-22 21:02:50 -05:00
James Seibel 86683d85c8 Increase FullDataSource version numbers from 0 -> 1
This was done to prevent errors with the BlockStateWrapper (de)serialization change
2023-07-22 18:18:38 -05:00
James Seibel 30b6600b7d Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-07-22 12:40:03 -05:00
James Seibel 860374fd1b Add a config for world gen timeout 2023-07-22 12:34:15 -05:00
James Seibel 4df1bd10a9 Rename DLodDirection -> EDhDirection and rename several methods 2023-07-22 12:20:35 -05:00
James Seibel f24bc112c3 Create a new lighting engine 2023-07-22 11:50:08 -05:00
James Seibel 57664ff1f1 LodDataBuilder reformat 2023-07-22 09:34:52 -05:00
coolGi c8e6a56467 Changed noiseDropoff to an int, and changed the order of noise and fog 2023-07-21 19:51:15 +09:30
coolGi 8401353e4d Another save commit for fog fix 2023-07-21 19:13:08 +09:30
coolGi 675682d631 Another save commit for fog fix 2023-07-20 21:06:07 +09:30
s809 4ac1c0d4b3 Sending some responses
Rejoin is horribly broken
2023-07-19 22:29:33 +05:00
Steveplays28 9a0c9e9b7d feat: Implement syncing of DhSectionPos for chunk requests/responses 2023-07-19 16:48:43 +02:00
coolGi 7f51aef384 Merge remote-tracking branch 'origin/main' 2023-07-19 22:19:38 +09:30
coolGi fdb470b5b3 Save commit for fog fix 2023-07-19 22:19:01 +09:30
s809 79408c081a Close network request tacker properly 2023-07-19 17:40:38 +05:00
s809 218411902e Incomplete something 2023-07-19 15:54:17 +05:00
s809 a42f8367a4 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-07-19 12:20:11 +05:00
s809 02acfaa3ed Finer control over message handling (untested) 2023-07-19 12:19:39 +05:00
James Seibel b71b9e13a6 Fix lang for debug menu and allowUnsafeValues 2023-07-17 21:43:59 -05:00
James Seibel 5db5bce308 rename runTimeRatioForDataConverterThreads -> ...TransformerThreads 2023-07-17 21:43:38 -05:00
TomTheFurry 6a87a87597 Merge remote-tracking branch 'origin/main' 2023-07-17 18:46:19 +08:00
TomTheFurry 388ea9050f Fixed the mem leak issue by nuking the whole save-when-exit 2023-07-17 18:44:42 +08:00
James Seibel 9d518a5fd6 fully remove band-aid fix for missing low detail LODs 2023-07-16 22:07:59 -05:00
James Seibel 6acb1a2e9f Fix missing low detail LODs if the file didn't exist 2023-07-16 21:56:05 -05:00
James Seibel f0d3ece345 Full Data source refactoring 2 2023-07-16 21:52:20 -05:00
James Seibel a00e1c22c3 Full Data source refactoring 2023-07-16 20:56:34 -05:00
James Seibel a7a54598b2 Add Thread runTime to the thread presets 2023-07-16 17:41:32 -05:00
James Seibel c3ed5f98a5 Add and use Rate Limited thread pools 2023-07-16 17:05:45 -05:00
James Seibel fe16c5a9ca Fix old thread pools not being shutdown when resized 2023-07-16 13:38:00 -05:00
coolGi dbcc15e185 Merge remote-tracking branch 'origin/main' 2023-07-17 02:14:43 +09:30
coolGi f6e68082b7 Added checking for the checksum of the update 2023-07-17 02:14:17 +09:30
coolGi 3190d60729 Slight fix to the reliability of the auto updater 2023-07-17 02:08:34 +09:30
TomTheFurry 3283a250ed Merge remote-tracking branch 'origin/main' 2023-07-17 00:06:35 +08:00
TomTheFurry 2444d7068f Tried and failed to fix a bug. But hey, better loading time...? 2023-07-17 00:05:51 +08:00
coolGi 24b32ad6c9 Slight changes to the api fabric.mod.json to make it look like a library in modmenu 2023-07-17 01:32:38 +09:30
coolGi 5a74249f8a Merge branch 'tmp' 2023-07-17 00:28:29 +09:30
coolGi 66f4595b7b Fixed values being able to go over number limit 2023-07-17 00:27:32 +09:30
coolGi ce3a06e410 fix to commit c5041de5 2023-07-16 23:57:27 +09:30
James Seibel 76b464d5d7 Revert LOD hole bandaid fix due to performance issues
reverts main change in 4a069b42d8
2023-07-16 09:25:44 -05:00
coolGi 8727cd09af Allowd option for values to go out of range 2023-07-16 23:40:35 +09:30
coolGi c5041de5d4 Added proper clamping so values don't get out of range 2023-07-16 23:07:14 +09:30
TomTheFurry 51bb3eec3d Fix f3 msg causing mem leaks & render file throwing (harmless) exceptions on shutdown 2023-07-16 17:23:31 +08:00
s809 9a2799e83b Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-07-16 12:47:44 +05:00
s809 73e6ce75b0 Replace "tell version to client" part with simple ack because YAGNI 2023-07-16 12:38:32 +05:00
James Seibel 060dca1574 Fix infinitely writing/creating FullDatafiles 2023-07-15 18:21:40 -05:00
James Seibel cb23b1ee55 Fix RenderSourceFileHandler thread pools not closing if files don't need saving 2023-07-15 12:31:34 -05:00
James Seibel fce04b419d Fix ChunkToLodBuilder creating multiple thread pools 2023-07-15 12:30:43 -05:00
James Seibel 7a5e1b5726 Fix RenderSourceFileHandler threadPools not closing
Closes #543 (slowdown when moving between dimensions)
2023-07-15 11:50:46 -05:00
James Seibel 2ead289ade Make ThreadUtil return ThreadPoolExecutor's instead of ExecutorService's
This was what was already being done by the Executors.newFixedThreadPool() method we were using; but this change means we don't have to cast the executors if we need additional functionality and we don't have to worry about Java changing Executors.newFixedThreadPool()'s implementation.
2023-07-15 11:34:55 -05:00
James Seibel f3414ed73d Abstract file and File handler refactor 2023-07-15 10:26:46 -05:00
James Seibel 693df3f88a Make render data saves async 2023-07-15 10:25:11 -05:00
James Seibel 187c15ddb4 Fix ChunkToLodBuilder never clearing impossible tasks 2023-07-15 08:51:23 -05:00
James Seibel 4a069b42d8 Bandaid fix to holes in previously generated LOD sections 2023-07-15 08:48:33 -05:00
James Seibel 80f9bcb148 Fix debug Renderer Mode localization 2023-07-14 07:03:06 -05:00
James Seibel 973e106882 Merge branch 'distant-horizons-core-main' 2023-07-11 18:50:47 -05:00
James Seibel ed9cccccea refactoring 2023-07-11 08:49:08 -05:00
James Seibel 5fb79325ce Fix option and changelog button missing backgrounds 2023-07-10 20:43:15 -05:00
James Seibel 96edfcb065 Add a shadowed library check 2023-07-08 11:54:57 -05:00
James Seibel 581ac02472 remove unused imports 2023-07-08 11:32:44 -05:00
s809 730216b761 Fix log string 2023-07-08 16:22:54 +05:00
s809 7d5b3c8917 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-07-08 12:26:12 +05:00
s809 83ab7e46b3 Base is pretty much finished 2023-07-08 12:25:20 +05:00
James Seibel 5a014f163d Add experimental Seamless Overdraw option 2023-07-06 22:16:59 -05:00
s809 62ff9606c1 Outline what interaction should somewhat look like
(not an actual interaction)
Fix client repeatedly registering handlers on reconnects
2023-07-06 21:57:02 +05:00
James Seibel f07973a1ce Refactor, remove unused class, add API docs 2023-07-04 15:41:08 -05:00
James Seibel 2fc74914b4 Merge branch 'distant-horizons-core-serverSupport' 2023-07-04 13:39:49 -05:00
James Seibel 2b0ee29a8c refactor and rename 2023-07-04 10:29:32 -05:00
James Seibel b50c2cf9a9 Add missing API Config javadocs 2023-07-03 06:50:12 -05:00
Cailin Smith 55f39996cb Rename class 2023-07-02 22:34:47 +02:00
Cailin Smith 44a66a3d93 Add ability for servers to communicate with the client to set the world.
This prevents the client from accidentally selected the wrong world
folder to load LODs from, since levels of the same dimension can't
naturally be distinguished from each other. With level similarity
detection, this can sometimes work, but in general is not reliable. This
mechanism instead allows servers to send a packet to the client on load,
enabling the override system, and then a second packet on world change,
which specifically sets the world key, based on knowledge that only the
server has, leading to a reliable way of detecting the correct world.
2023-07-02 21:44:54 +02:00
Cailin Smith 649cd5bbe8 Add ability for servers to communicate with the client to set the world.
This prevents the client from accidentally selected the wrong world
folder to load LODs from, since levels of the same dimension can't
naturally be distinguished from each other. With level similarity
detection, this can sometimes work, but in general is not reliable. This
mechanism instead allows servers to send a packet to the client on load,
enabling the override system, and then a second packet on world change,
which specifically sets the world key, based on knowledge that only the
server has, leading to a reliable way of detecting the correct world.
2023-07-02 21:41:14 +02:00
s809 748b484377 The real server side
(not tested)
2023-06-30 22:05:02 +05:00
James Seibel ea40006023 Add SSAO to the quick quality presets 2023-06-30 07:47:29 -05:00
James Seibel 52edbd7c18 Update javadocs for API enums
and move one core enum out of the API
2023-06-30 07:46:00 -05:00
James Seibel 10b9161188 update DhApiWorldGen javadoc 2023-06-30 07:30:40 -05:00
James Seibel 77b8b973dc Fix API fabric.mod.json crashing the game 2023-06-30 07:30:18 -05:00
James Seibel b9cfe535d1 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-06-29 20:56:45 -05:00
James Seibel 77bc3bd3c2 add package-info files for api and coreapi package documentation 2023-06-29 20:56:14 -05:00
James Seibel 81ac90feb4 Add a build.gradle for API building with source files 2023-06-29 20:52:30 -05:00
James Seibel 48ef896e06 set the api version in ModInfo to 1.0.0 and add patch version to the API 2023-06-29 20:46:33 -05:00
s809 e288302bfa Merge branch 'main' of https://gitlab.com/s809/distant-horizons-core 2023-06-29 21:21:09 +05:00
s809 2fc76e2842 Minimal ping-pong but less rigid impl
DhClientWorld#close is never fired smh
2023-06-29 20:58:43 +05:00
s809 e660c466f8 Remove unused param 2023-06-29 20:43:37 +05:00
s809 1f9aa2f70b Minimal working client-server
No cleanup logic yet
2023-06-29 20:41:08 +05:00
s809 8378b1f09a Add encoder 2023-06-29 20:38:50 +05:00
s809 8bae038612 Move everything to core 2023-06-29 20:38:38 +05:00
TomTheFurry 114d3210fb Prob fix the gl error? (might add mem leak tho.) & fix 1.18.2 build 2023-06-29 16:27:42 +08:00
James Seibel e2a3f23e91 Merge branch 'main' into 'main'
Fix small bugs + make level map concurrent to prevent exceptions

See merge request jeseibel/distant-horizons-core!9
2023-06-28 23:18:26 +00:00
Cailin Smith 98634e2a0b Fix small bugs + make level map concurrent to prevent exceptions 2023-06-28 18:16:33 -05:00
s809 2358797a82 Minimal working client-server
No cleanup logic yet
2023-06-28 22:46:49 +05:00
James Seibel d91cde2319 Remove unused GitLab CI file 2023-06-26 19:23:30 -05:00
s809 aee752a112 Add encoder 2023-06-26 21:56:44 +05:00
s809 cc35e50edc Move everything to core 2023-06-26 21:14:38 +05:00
TomTheFurry 007749c9ef Optimization on load time, fix gl bug, and improve transparency 2023-06-26 23:20:02 +08:00
James Seibel e3ae9126bf API CI include all files 2 2023-06-26 07:45:38 -05:00
James Seibel 88e2482068 API CI include all files 2023-06-26 07:42:51 -05:00
James Seibel 76dfff013f try exposing javadoc CI 2023-06-26 07:41:48 -05:00
James Seibel 88fbd76952 Add an API javadoc CI/CD script 2023-06-26 07:34:27 -05:00
James Seibel 7c9301745a Fix a couple API javadoc compiler errors 2023-06-26 07:26:50 -05:00
James Seibel 048b745be0 re-add horizontal micro-offset in vertex shader
It caused gaps on the edge of some LODs
2023-06-25 22:00:47 -05:00
James Seibel 35f239693d re-add quad.hasError red color
accidentally removed it
2023-06-25 19:01:10 -05:00
James Seibel 9789b5be12 Fix some black sky lighting, refactor ColumnBox and RenderDataPoint 2023-06-25 18:44:54 -05:00
James Seibel 89f0d719c8 refactor ColumnBox.makeAdjQuads -> makeAdjVerticalQuad 2023-06-25 18:44:46 -05:00
Cailin Smith 368541b09c Fix small bugs + make level map concurrent to prevent exceptions 2023-06-25 22:22:23 +02:00
coolGi d04b4c0d55 Moved SSAO to the new AbstractShader thing 2023-06-24 23:17:58 +09:30
James Seibel 1dad6fd83f Overhaul Dh API event definition system
Whether an event is a one time event or a cancelable event is now defined via their interface.
Also replace DhApiLevelSaveEvent with DhApiChunkModifiedEvent
2023-06-23 23:07:41 -05:00
TomTheFurry be38d82b26 Greatly improve Gen queue stability & improve loading times and performance 2023-06-24 00:24:11 +08:00
James Seibel b0f9122599 DhApiTerrainDataRepo reformat 2023-06-22 19:49:43 -05:00
James Seibel feb03efafa Add AbstractDhApiChunkWorldGenerator 2023-06-22 07:56:43 -05:00
James Seibel 6066b98a9b Remove micro vertical vertex offset
remove to attempt fixing a SSAO bug where some blocks have black borders.
Also the vertical offset shouldn't be necessary since all vertical LODs should be the same size.
2023-06-21 07:30:31 -05:00
James Seibel cf60322be6 Add a comment from leetom explaining granularity 2023-06-21 07:14:36 -05:00
James Seibel 5dcb73b30a Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-06-21 07:03:41 -05:00
James Seibel a3c991d769 Remove unimplemented IDhApiWorldGen.getThreadingMode() 2023-06-21 07:03:28 -05:00
coolGi 31a563ee90 Copied noise to its own shader, and maybe fixed fog fragment 2023-06-21 19:40:24 +09:30
coolGi 5bc9ce7c8a Moved SSAORenderer to shaders folder 2023-06-21 19:27:06 +09:30
James Seibel 56e4454e41 Fix Api runtime error and add comments on how to fix in future 2023-06-20 20:55:06 -05:00
TomTheFurry d5c1b7669d Fixed up last of the bugs 2023-06-20 19:04:23 +08:00
TomTheFurry 2f249c39d4 fixed and optimize a lot of stuff. 2023-06-20 15:47:52 +08:00
James Seibel 173e216fa3 Add (untested) DhApiTerrainDataRepo.overwriteChunkDataAsync() 2023-06-19 22:04:10 -05:00
James Seibel e760c6a4e3 Add an API event for modified render and full data files 2023-06-19 21:41:42 -05:00
James Seibel 419323bedb Fix config default thread counts being 0 2023-06-19 20:40:54 -05:00
coolGi 71f8bccb7d Forgot to turn down default noise intensity 2023-06-20 00:03:53 +09:30
coolGi 40225cb13f Started work on putting fog in its own shader 2023-06-20 00:01:54 +09:30
coolGi 1568f73c40 Edited some stuff so noise is less on transparent, bright, or dark objects 2023-06-20 00:01:37 +09:30
TomTheFurry 6127ca192d Fix the issues. (Tho now render buffer would need constant refresh. Todo: Add buffer dirty flag.) 2023-06-19 14:39:37 +08:00
TomTheFurry 64b7e2ef33 Continue on impl the gen queue re-queueing. (Might have broke buffer updates tho...) 2023-06-19 14:25:38 +08:00
James Seibel 808380b461 improve FileHandler directory creation logic 2023-06-18 08:51:12 -05:00
James Seibel 773cd3aaef Allow API override for configs by default 2023-06-17 21:53:05 -05:00
James Seibel 55019c51ed Fix Config setApi not firing listeners 2023-06-17 21:52:52 -05:00
James Seibel f5784c07b1 Fix some config setup not running if the UI isn't opened 2023-06-17 21:52:38 -05:00
James Seibel ac73b52b23 remove fixme in DhApiTerrainRepo 2023-06-17 21:01:14 -05:00
James Seibel 122e24ad6d Add validation to FullDataArray and SingleColumnData 2023-06-17 21:00:35 -05:00
James Seibel b7ca6dbd87 Fix DhLodPos.getDhSectionRelativePositionForDetailLevel()
It had an off by 1 error
2023-06-17 20:57:41 -05:00
James Seibel 594f42a889 rename namespace lod -> distanthorizons 2023-06-17 17:45:21 -05:00
James Seibel 5c2f89a0a5 uncomment debug code in DhApiTerrainDataRepo
Might as well keep the debug code up to date in case it is needed
2023-06-17 16:51:42 -05:00
James Seibel a5db19cfc9 Add a logger and fixme note to DhApiTerrainDataRepo 2023-06-17 16:44:51 -05:00
James Seibel fa8a62b8a9 rename IDhApiUnsafeWrapper method 2023-06-17 16:36:01 -05:00
James Seibel d0819fb6c1 rename DhApiMain -> DhApi
I missed a file
2023-06-17 16:12:06 -05:00
James Seibel d335e10057 rename DhApiMain -> DhApi 2023-06-17 12:01:37 -05:00
James Seibel f5a0789321 Fix DhApiWorldProxy.getSinglePlayerLevel() 2023-06-17 12:01:23 -05:00
TomTheFurry fb77c766a6 Refactor the DhLevel class structure.
Note: Known issue where sections need reload before gen is queued up. Will fix next
2023-06-18 00:23:51 +08:00
TomTheFurry 1c65d030b1 First baby step towards a pre-lod-loader. 2023-06-17 01:00:34 +08:00
TomTheFurry f98ab8a56b Merge remote-tracking branch 'origin/main' 2023-06-15 21:55:26 +08:00
TomTheFurry 175581ca76 Refactor and cleanup render buffer management 2023-06-15 21:55:18 +08:00
James Seibel ed61354ec0 Fix lines on screen from SSAO (thanks notalpha) 2023-06-15 07:42:29 -05:00
TomTheFurry 0631f7adf7 Ops. 2023-06-15 16:46:23 +08:00
TomTheFurry 9f81194d21 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	core/src/main/java/com/seibel/lod/core/render/glObject/GLProxy.java
2023-06-15 16:41:57 +08:00
TomTheFurry 419af81523 Fix lighting issues in both client-only and single player world 2023-06-15 16:41:17 +08:00
James Seibel 6832d21a3b config renaming and add new configs to DhApi 2023-06-14 21:32:10 -05:00
James Seibel 6db6c69983 Add LZ4 to the readme 2023-06-14 20:17:43 -05:00
James Seibel d502fd4daa Add a thread config for ChunkToLodBuilder 2023-06-14 19:42:34 -05:00
James Seibel b2196448f7 Improve thread pool names 2023-06-14 19:42:16 -05:00
James Seibel 2ab16b1fe5 reduce the render cache clear timeout ms 1000 -> 400 2023-06-13 20:05:08 -05:00
James Seibel d99d34683c Merge DetailDistanceUtil into LodQuadTree 2023-06-13 20:04:44 -05:00
James Seibel 500d3cde57 refactor DetailDistanceUtil 2023-06-13 19:26:56 -05:00
James Seibel 98ee3f9e5f Fix errors when rapidly changing config options 2023-06-13 19:26:40 -05:00
James Seibel 24a335565e Implement the Quick enable render toggle
Also improve the logic for setting UI only config values
2023-06-12 22:18:52 -05:00
James Seibel 12d5d9e32b Add an annotation to skip config enums 2023-06-12 20:24:49 -05:00
coolGi a00671c2e5 Merge branch 'ssao' into 'main'
SSAO

See merge request jeseibel/distant-horizons-core!8
2023-06-12 10:47:50 +00:00
coolGi 8ae03af7c2 Fixed up the merge 2023-06-12 10:47:16 +00:00
notalpha 2ea75821a1 feat: SSAO 2023-06-12 11:37:18 +02:00
TomTheFurry bb491f5de1 Merge remote-tracking branch 'origin/main' 2023-06-12 13:25:47 +08:00
TomTheFurry 082f7597b2 FIx misc bugs and issues, and polish, simplify and remove no-longer needed logic 2023-06-12 13:25:37 +08:00
James Seibel 758ff8a527 rename config extendedNearClip -> overdrawPrevention
Also add a few new options for it
2023-06-11 22:16:40 -05:00
James Seibel f785e75622 Fix BlockToAvoid and TintWithAvoidedBlocks 2023-06-11 21:24:34 -05:00
James Seibel 5a33a4511b hide ResetConfirmation config menu
I couldn't easily implement a reset button since I can't control the config UI from Core.
2023-06-11 18:25:19 -05:00
James Seibel 531af72173 move config preset handlers into a package 2023-06-11 18:03:49 -05:00
James Seibel 190a55e98b Add threading config presets 2023-06-11 18:02:53 -05:00
James Seibel 79a2e52e30 Fix multiThreading config value naming 2023-06-11 17:49:41 -05:00
James Seibel a1ca634891 add AbstractPresetConfigEventHandler 2023-06-11 16:39:05 -05:00
James Seibel 9829173928 add missing lang for debugWireframeRendering 2023-06-11 16:01:52 -05:00
James Seibel 19593d4ea7 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-06-11 15:53:53 -05:00
James Seibel cd53cd8ffa rename a few configs Ultra -> Extreme 2023-06-11 15:46:06 -05:00
James Seibel 72b89814b6 Merge Horizontal Quality and Scale
The separation was confusing most of the time
2023-06-11 15:10:16 -05:00
James Seibel 0179f10166 Improve the fog config option organization 2023-06-11 14:46:04 -05:00
James Seibel b3a36e4f1f Fix some quality settings not applying to the LodQuadTree 2023-06-11 13:27:03 -05:00
James Seibel b1d6429225 swap ConfigEntryWithPresetOptions generic params 2023-06-11 13:11:24 -05:00
James Seibel c9aa7553af Add config quality preset handler 2023-06-11 13:09:52 -05:00
TomTheFurry 0e6f294ad7 no longer gen stuff that is explored by players again 2023-06-11 20:42:07 +08:00
TomTheFurry 25ba274a36 Fix bug in DhLodPos & impl debug visuals for world gen tasks (very early) 2023-06-11 19:51:41 +08:00
TomTheFurry d2bb99fb4b Merge remote-tracking branch 'origin/main' 2023-06-11 18:31:08 +08:00
TomTheFurry 9902fbb424 Fix debug render leaking memories, clean up lod render section, fix concurrency bugs with sectionToReload 2023-06-11 18:30:55 +08:00
James Seibel 10b0cf9d8c Prefix "E" to a couple config enums 2023-06-10 09:12:05 -05:00
James Seibel 8f499d7320 Add a reset all settings button 2023-06-10 09:09:23 -05:00
James Seibel c9e2864c88 Update the config lang file
Also rename a few items
2023-06-09 22:10:27 -05:00
TomTheFurry a003ecf378 Add debug wireframe renderer config for toggling the debug renderer 2023-06-09 18:41:11 +08:00
TomTheFurry 46432e772c Add a debug renderer system for easy visual debugging 2023-06-09 18:08:16 +08:00
coolGi 7ba43286d9 Updated lang generator to whitelist linked options 2023-06-08 23:06:43 +09:30
James Seibel f4ece1816d Overhaul the config and start adding summary options
also:
- add DH vs MC lighting engine option
- add a toggle for wireframe rendering
2023-06-07 22:59:26 -05:00
coolGi add6ee6f11 Update ConfigEntryAppearance to better document things 2023-06-07 14:07:51 +00:00
coolGi 3b4054c3c7 Added linking config options 2023-06-06 19:06:04 +09:30
coolGi a67cbf3435 Fixed up short and long not saving properly 2023-06-06 18:38:02 +09:30
coolGi 3930641fb6 Added short to the debug config screen 2023-06-06 18:19:24 +09:30
coolGi a8682ec164 Added debug config type screen for checking support 2023-06-06 18:02:25 +09:30
coolGi 1ee254f38b Fixed and checked support for all available config types 2023-06-06 18:01:49 +09:30
coolGi fd42a94430 Refracted Config Internal Enums to its own package 2023-06-06 18:01:07 +09:30
James Seibel 6124f5cb4f update ThreadingConfig Api 2023-06-05 20:16:33 -05:00
James Seibel 5cb70b5e76 rename LodThreadFactory -> DhThreadFactory 2023-06-05 20:02:46 -05:00
James Seibel 8f6109768c Move the world gen thread pool into the WorldGenQueue
We want Core to handle the world gen threads, not the individual world generators.
2023-06-05 19:50:21 -05:00
James Seibel d64446ecda add thread config listeners 2023-06-05 09:10:33 -05:00
James Seibel 05d4e4bf61 fix config listener onValueSet and add ConfigChangeListener 2023-06-04 22:03:59 -05:00
James Seibel 4b29e96686 Revert "remove IConfigEntry.setWithoutSaving()"
This reverts commit d992bd05f4.
2023-06-04 21:45:21 -05:00
James Seibel a49a81be14 add thread config listener for FileHandler 2023-06-04 21:12:47 -05:00
James Seibel d992bd05f4 remove IConfigEntry.setWithoutSaving()
It wasn't implemented and was causing confusion since the listeners weren't being fired
2023-06-04 21:07:25 -05:00
James Seibel ed935f6a0f Add data transformer and file handler thread configs 2023-06-03 22:29:45 -05:00
James Seibel f58ac4b647 Attempt to fix world generator holes (take 2) 2023-06-03 21:36:43 -05:00
James Seibel dbfc434fa7 reduce batch generator max queue tasks 5 -> 3 2023-06-03 21:35:57 -05:00
James Seibel d16f763df0 reduce QuadTree warning to debug 2023-06-03 21:04:12 -05:00
coolGi e00d1c95e3 Added a comment to add DimensionWrapper (maybe to replace DimensionTypeWrapper) 2023-06-03 21:39:47 +09:30
James Seibel dc5086a29f Rename IChunkWrapper heightmap methods 2023-05-29 18:13:01 -05:00
James Seibel b46e85b542 Potentially fix duplicate world generator issue? 2023-05-29 13:19:43 -05:00
James Seibel 1dc3bc2889 LodQuadTree reloadPos out of bounds chnage 2023-05-29 12:51:43 -05:00
James Seibel 09eea400eb Full data source and WorldGen refactoring 2023-05-29 10:43:06 -05:00
James Seibel ea24d619e2 revert DataFileHandler and data transformer threads to 4 2023-05-28 18:07:07 -05:00
James Seibel 013a293052 Fix a crash when stopping the world generator 2023-05-27 12:28:59 -05:00
James Seibel 0cd04df689 Fix LodQuadTree not updating for low detail world gen 2023-05-27 10:30:29 -05:00
James Seibel 3d9f21df25 WorldGenQueue minor refactor 2023-05-27 09:29:37 -05:00
James Seibel f2ae458e7c columnRenderBufferBuilder reformatting 2023-05-27 09:28:51 -05:00
James Seibel 749491b520 drop the Transformer and File handler threads to 1 for testing 2023-05-22 07:49:25 -05:00
James Seibel 42fc173ae2 Fix crash if transparency is disabled 2023-05-22 07:18:08 -05:00
James Seibel c539a3f3be Improve how quickly world generation responds to changed location 2023-05-21 18:41:34 -05:00
James Seibel 041c2ad5d7 Fix quadTree unit tests failing 2023-05-21 17:47:37 -05:00
James Seibel 920ca5ec40 Add XZ compression for full and render data files
Any old files people may have will probably throw errors and need to be regenerated.
2023-05-21 17:35:33 -05:00
James Seibel 5986069eb9 comment out Compression Unit tests 2023-05-21 17:33:48 -05:00
coolGi 9eb0f18a52 Added changelog button to the config menu 2023-05-21 20:39:23 +09:30
James Seibel b38827a8de Add compression unit tests with results 2023-05-20 11:44:28 -05:00
James Seibel 7a723bdf14 rename the "cache" folder to "renderCache"
Just to make the folder's purpose a bit more obvious
2023-05-19 22:45:25 -05:00
James Seibel 7444670189 Fix exceptions when leaving a loading world 2023-05-19 22:41:49 -05:00
James Seibel f22be2b42c add commented out debug code for ColumnRenderBufferBuilder 2023-05-19 07:31:32 -05:00
James Seibel 762e099bf1 add an incomplete quadTree test 2023-05-19 07:31:16 -05:00
James Seibel 562b0a8da2 Fix worldGenQueue outOfBoundExceptions when moving quickly
Not a perfect solution, long term a fix should be done in the tree, but that can be done another time
2023-05-19 07:20:18 -05:00
James Seibel 95db633e09 update unit tests for QuadTree refactoring 2023-05-18 22:07:02 -05:00
James Seibel 6a6ea845ea QuadTree refactoring 2023-05-18 22:06:00 -05:00
James Seibel f8df9cd4e2 remove duplicate log filtering for ServerAPI 2023-05-18 21:58:55 -05:00
James Seibel 428a0cd10b Fix level F3 loggers not being removed 2023-05-18 07:56:17 -05:00
James Seibel aee6c84dae Fix transparent wall edge cases
Specifically transparent walls being rendered in oceans, and transparent walls incorrectly allowing users to see the void
2023-05-16 21:13:55 -05:00
James Seibel 98e55bb1a3 Fix RenderSource Building ignoring adjacent sections
The sections were never being passed in, only the initial section
2023-05-16 20:03:23 -05:00
James Seibel a3f2cdc72f fix minor ColumnBox equality 2023-05-16 07:56:11 -05:00
James Seibel 824a8f835c Fix seeing void through height map oceans 2023-05-16 07:55:24 -05:00
James Seibel b4eda2fc46 Add ColumnBox comments 2023-05-16 07:30:54 -05:00
James Seibel 3a80639538 Only limit greedy meshing size when earth curvature is enabled 2023-05-16 07:11:45 -05:00
James Seibel 84727148a8 add HeightMap EVerticalQuality 2023-05-15 18:28:34 -05:00
James Seibel 537f7164c7 Fix transparent LODs over the void 2023-05-15 18:28:14 -05:00
James Seibel 3bed312499 minor EVerticalQuality refactor 2023-05-15 18:24:46 -05:00
James Seibel ea76c29c23 ColorUtil add setter methods 2023-05-15 07:11:27 -05:00
James Seibel a2f0ff89ac cubicLodTemplate refactor 2023-05-15 07:04:36 -05:00
James Seibel 123c259831 Log updateQuadTreeRenderSources errors 2023-05-15 07:02:25 -05:00
James Seibel a7e64e7188 Fix null pointer when transparency is disabled 2023-05-13 15:36:36 -05:00
James Seibel 5894af6eca Add render cache listener to draw resolution config 2023-05-13 12:09:54 -05:00
James Seibel d87cf40b22 Fix harmless error messages when changing render distance 2023-05-13 11:18:30 -05:00
James Seibel edca69b789 Log QuadTree concurrency issues instead of throwing assertions 2023-05-13 11:08:22 -05:00
James Seibel fe16c34b6f minor refactoring and commenting 2023-05-12 22:14:41 -05:00
James Seibel 47c0cef4df Implement LowDetailIncompleteFullDataSource sampleFrom() 2023-05-12 22:11:35 -05:00
James Seibel e543f1ce73 rename FullToColumnTransformer -> FullDataToRenderDataTransformer 2023-05-12 20:43:27 -05:00
James Seibel 8b580c51d6 Have RenderSourceFileHandler update all detail levels 2023-05-12 20:34:18 -05:00
James Seibel b1b71ad021 Fix LowDetailIncompleteFullDataSource reading from stream 2023-05-09 21:29:07 -05:00
James Seibel 62c78b133d minor FullDataMetaFile write future fix 2023-05-09 21:14:24 -05:00
James Seibel ed6790458d Refactor RenderMetaDataFile 2023-05-09 21:13:54 -05:00
James Seibel d592f87d62 minor reformatting for AtomicsUtil 2023-05-08 19:23:12 -05:00
James Seibel 4470cea9b2 make FullDataMetaFile's data strongly typed 2023-05-07 18:45:24 -05:00
James Seibel 2400d999a3 Refactor FullDataMetaFile 2023-05-07 17:54:54 -05:00
James Seibel a2afe4de5f add ChunkSizedFullDataAccessor toString() 2023-05-07 17:53:41 -05:00
James Seibel 64ebadea65 move buffer building logic out of ColumnRenderBuffer 2023-05-06 19:40:01 -05:00
James Seibel 7bcef43ef9 Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-05-06 19:06:20 -05:00
James Seibel 1fee51f344 GenFullDataFileHandler fix checkIfSectionNeedsGen for null dataSources 2023-05-06 19:02:55 -05:00
James Seibel d4712732ec fix LowDetailIncompleteFullDataSource.update not changing isColumnNotEmpty 2023-05-06 18:58:03 -05:00
coolGi dfd8818fe7 Merge remote-tracking branch 'origin/main' 2023-05-07 08:55:29 +09:30
coolGi 1c366bb75b Removed getFogColor from the BCLibAccessor 2023-05-07 08:55:10 +09:30
James Seibel c6a6e6c14d fix SingleColumnFullDataAccessor.doesColumnExist null pointer 2023-05-06 17:16:21 -05:00
James Seibel de6c8af95f reduce ColumnRenderSource timeout 10 -> 2 sec 2023-05-06 08:35:27 -05:00
James Seibel 2cb044f4b5 Create new world gen tasks when moving into new areas 2023-05-04 07:31:35 -05:00
James Seibel 05ca9bca15 partially fix WorldGenQueue's index out of bounds issue 2023-05-03 07:48:21 -05:00
James Seibel 2a8e4cec23 fix worldGenQueue skipping certain generation requests 2023-05-03 07:47:59 -05:00
James Seibel 03a36a80ff Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-05-02 19:46:04 -05:00
James Seibel 84d998e847 Fix render section flickering 2023-05-02 19:46:01 -05:00
coolGi 299742a4da Started work on adding immersive portal support 2023-05-02 23:21:09 +09:30
James Seibel 250ace6f28 rename lod.core.api -> lod.coreapi.api to file compiler issues 2023-05-02 07:33:22 -05:00
James Seibel 09dfa5477d Merge branch 'main' of https://gitlab.com/jeseibel/distant-horizons-core 2023-05-01 22:16:44 -05:00
James Seibel 3aa097ab82 Add IFullDataSource.getUngeneratedPosList() 2023-05-01 22:16:35 -05:00
James Seibel bd3b263f1b minor data source method rearranging 2023-05-01 20:41:30 -05:00
James Seibel 6404216f9d Fix compiling for IStreamableFullDataSource 2023-05-01 07:34:22 -05:00
coolGi 7a715ff313 Made IStreamableFullDataSource.FullDataSourceSummaryData.worldGenStep public to fix building 2023-05-01 14:17:39 +09:30
James Seibel cf18554646 put full data source interfaces into their own package 2023-04-30 21:52:33 -05:00
James Seibel 99f94d8be0 Full Data source constant renaming
and remove an unneeded TODO comment
2023-04-30 21:51:21 -05:00
James Seibel ec1393ee85 Separate out FullDataSource stream handling into its own interface
This was done to both make sure all data source formats are similar and to prevent accidental datatype and content mismatches when modifying said data sources.
2023-04-30 21:29:41 -05:00
James Seibel c8c927d8f8 add a FIXME to LodQuadTree for worldGen in worlds without DH data 2023-04-30 20:34:05 -05:00
786 changed files with 63265 additions and 32169 deletions
+700
View File
@@ -0,0 +1,700 @@
# DH Core
# Note: please keep this and the main .editorconfig in sync
[*]
charset = utf-8
end_of_line = crlf
indent_size = 4
indent_style = space
insert_final_newline = false
max_line_length = 1000
tab_width = 4
trim_trailing_whitespace = false
ij_continuation_indent_size = 8
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = true
ij_smart_tabs = false
ij_visual_guides = none
ij_wrap_on_typing = false
[*.java]
indent_style = tab
ij_smart_tabs = true
ij_java_align_consecutive_assignments = false
ij_java_align_consecutive_variable_declarations = false
ij_java_align_group_field_declarations = false
ij_java_align_multiline_annotation_parameters = false
ij_java_align_multiline_array_initializer_expression = false
ij_java_align_multiline_assignment = false
ij_java_align_multiline_binary_operation = false
ij_java_align_multiline_chained_methods = false
ij_java_align_multiline_deconstruction_list_components = false
ij_java_align_multiline_extends_list = false
ij_java_align_multiline_for = false
ij_java_align_multiline_method_parentheses = false
ij_java_align_multiline_parameters = false
ij_java_align_multiline_parameters_in_calls = false
ij_java_align_multiline_parenthesized_expression = false
ij_java_align_multiline_records = false
ij_java_align_multiline_resources = false
ij_java_align_multiline_ternary_operation = false
ij_java_align_multiline_text_blocks = false
ij_java_align_multiline_throws_list = false
ij_java_align_subsequent_simple_methods = false
ij_java_align_throws_keyword = false
ij_java_align_types_in_multi_catch = false
ij_java_annotation_parameter_wrap = off
ij_java_array_initializer_new_line_after_left_brace = false
ij_java_array_initializer_right_brace_on_new_line = false
ij_java_array_initializer_wrap = normal
ij_java_assert_statement_colon_on_next_line = false
ij_java_assert_statement_wrap = off
ij_java_assignment_wrap = off
ij_java_binary_operation_sign_on_next_line = false
ij_java_binary_operation_wrap = off
ij_java_blank_lines_after_anonymous_class_header = 0
ij_java_blank_lines_after_class_header = 0
ij_java_blank_lines_after_imports = 1
ij_java_blank_lines_after_package = 1
ij_java_blank_lines_around_class = 1
ij_java_blank_lines_around_field = 0
ij_java_blank_lines_around_field_in_interface = 0
ij_java_blank_lines_around_initializer = 0
ij_java_blank_lines_around_method = 0
ij_java_blank_lines_around_method_in_interface = 0
ij_java_blank_lines_before_class_end = 1
ij_java_blank_lines_before_imports = 1
ij_java_blank_lines_before_method_body = 0
ij_java_blank_lines_before_package = 1
ij_java_block_brace_style = next_line
ij_java_block_comment_add_space = false
ij_java_block_comment_at_first_column = true
ij_java_builder_methods = none
ij_java_call_parameters_new_line_after_left_paren = false
ij_java_call_parameters_right_paren_on_new_line = false
ij_java_call_parameters_wrap = normal
ij_java_case_statement_on_separate_line = true
ij_java_catch_on_new_line = true
ij_java_class_annotation_wrap = off
ij_java_class_brace_style = next_line
ij_java_class_count_to_use_import_on_demand = 5
ij_java_class_names_in_javadoc = 1
ij_java_deconstruction_list_wrap = normal
ij_java_do_not_indent_top_level_class_members = false
ij_java_do_not_wrap_after_single_annotation = false
ij_java_do_not_wrap_after_single_annotation_in_parameter = false
ij_java_do_while_brace_force = never
ij_java_doc_add_blank_line_after_description = true
ij_java_doc_add_blank_line_after_param_comments = false
ij_java_doc_add_blank_line_after_return = false
ij_java_doc_add_p_tag_on_empty_lines = false
ij_java_doc_align_exception_comments = false
ij_java_doc_align_param_comments = false
ij_java_doc_do_not_wrap_if_one_line = true
ij_java_doc_enable_formatting = true
ij_java_doc_enable_leading_asterisks = true
ij_java_doc_indent_on_continuation = false
ij_java_doc_keep_empty_lines = true
ij_java_doc_keep_empty_parameter_tag = true
ij_java_doc_keep_empty_return_tag = false
ij_java_doc_keep_empty_throws_tag = true
ij_java_doc_keep_invalid_tags = true
ij_java_doc_param_description_on_new_line = false
ij_java_doc_preserve_line_breaks = false
ij_java_doc_use_throws_not_exception_tag = true
ij_java_else_on_new_line = true
ij_java_enum_constants_wrap = off
ij_java_extends_keyword_wrap = normal
ij_java_extends_list_wrap = normal
ij_java_field_annotation_wrap = off
ij_java_finally_on_new_line = true
ij_java_for_brace_force = always
ij_java_for_statement_new_line_after_left_paren = false
ij_java_for_statement_right_paren_on_new_line = false
ij_java_for_statement_wrap = off
ij_java_generate_final_locals = false
ij_java_generate_final_parameters = false
ij_java_if_brace_force = never
ij_java_imports_layout = *,|,javax.**,java.**,|,$*
ij_java_indent_case_from_switch = true
ij_java_insert_inner_class_imports = false
ij_java_insert_override_annotation = true
ij_java_keep_blank_lines_before_right_brace = 10
ij_java_keep_blank_lines_between_package_declaration_and_header = 2
ij_java_keep_blank_lines_in_code = 10
ij_java_keep_blank_lines_in_declarations = 10
ij_java_keep_builder_methods_indents = false
ij_java_keep_control_statement_in_one_line = true
ij_java_keep_first_column_comment = true
ij_java_keep_indents_on_empty_lines = true
ij_java_keep_line_breaks = true
ij_java_keep_multiple_expressions_in_one_line = true
ij_java_keep_simple_blocks_in_one_line = false
ij_java_keep_simple_classes_in_one_line = true
ij_java_keep_simple_lambdas_in_one_line = true
ij_java_keep_simple_methods_in_one_line = true
ij_java_label_indent_absolute = false
ij_java_label_indent_size = 0
ij_java_lambda_brace_style = end_of_line
ij_java_layout_static_imports_separately = true
ij_java_line_comment_add_space = false
ij_java_line_comment_add_space_on_reformat = false
ij_java_line_comment_at_first_column = false
ij_java_method_annotation_wrap = off
ij_java_method_brace_style = next_line
ij_java_method_call_chain_wrap = normal
ij_java_method_parameters_new_line_after_left_paren = true
ij_java_method_parameters_right_paren_on_new_line = false
ij_java_method_parameters_wrap = normal
ij_java_modifier_list_wrap = false
ij_java_multi_catch_types_wrap = normal
ij_java_names_count_to_use_import_on_demand = 3
ij_java_new_line_after_lparen_in_annotation = false
ij_java_new_line_after_lparen_in_deconstruction_pattern = true
ij_java_new_line_after_lparen_in_record_header = false
ij_java_packages_to_use_import_on_demand = java.awt.*,javax.swing.*
ij_java_parameter_annotation_wrap = off
ij_java_parentheses_expression_new_line_after_left_paren = false
ij_java_parentheses_expression_right_paren_on_new_line = false
ij_java_place_assignment_sign_on_next_line = false
ij_java_prefer_longer_names = true
ij_java_prefer_parameters_wrap = false
ij_java_record_components_wrap = normal
ij_java_repeat_synchronized = true
ij_java_replace_instanceof_and_cast = false
ij_java_replace_null_check = false
ij_java_replace_sum_lambda_with_method_ref = false
ij_java_resource_list_new_line_after_left_paren = false
ij_java_resource_list_right_paren_on_new_line = false
ij_java_resource_list_wrap = on_every_item
ij_java_rparen_on_new_line_in_annotation = false
ij_java_rparen_on_new_line_in_deconstruction_pattern = true
ij_java_rparen_on_new_line_in_record_header = false
ij_java_space_after_closing_angle_bracket_in_type_argument = false
ij_java_space_after_colon = true
ij_java_space_after_comma = true
ij_java_space_after_comma_in_type_arguments = true
ij_java_space_after_for_semicolon = true
ij_java_space_after_quest = true
ij_java_space_after_type_cast = true
ij_java_space_before_annotation_array_initializer_left_brace = false
ij_java_space_before_annotation_parameter_list = false
ij_java_space_before_array_initializer_left_brace = false
ij_java_space_before_catch_keyword = true
ij_java_space_before_catch_left_brace = true
ij_java_space_before_catch_parentheses = true
ij_java_space_before_class_left_brace = true
ij_java_space_before_colon = true
ij_java_space_before_colon_in_foreach = true
ij_java_space_before_comma = false
ij_java_space_before_deconstruction_list = false
ij_java_space_before_do_left_brace = true
ij_java_space_before_else_keyword = true
ij_java_space_before_else_left_brace = true
ij_java_space_before_finally_keyword = true
ij_java_space_before_finally_left_brace = true
ij_java_space_before_for_left_brace = true
ij_java_space_before_for_parentheses = true
ij_java_space_before_for_semicolon = false
ij_java_space_before_if_left_brace = true
ij_java_space_before_if_parentheses = true
ij_java_space_before_method_call_parentheses = false
ij_java_space_before_method_left_brace = true
ij_java_space_before_method_parentheses = false
ij_java_space_before_opening_angle_bracket_in_type_parameter = false
ij_java_space_before_quest = true
ij_java_space_before_switch_left_brace = true
ij_java_space_before_switch_parentheses = true
ij_java_space_before_synchronized_left_brace = false
ij_java_space_before_synchronized_parentheses = true
ij_java_space_before_try_left_brace = true
ij_java_space_before_try_parentheses = true
ij_java_space_before_type_parameter_list = false
ij_java_space_before_while_keyword = true
ij_java_space_before_while_left_brace = true
ij_java_space_before_while_parentheses = true
ij_java_space_inside_one_line_enum_braces = false
ij_java_space_within_empty_array_initializer_braces = true
ij_java_space_within_empty_method_call_parentheses = false
ij_java_space_within_empty_method_parentheses = false
ij_java_spaces_around_additive_operators = true
ij_java_spaces_around_annotation_eq = true
ij_java_spaces_around_assignment_operators = true
ij_java_spaces_around_bitwise_operators = true
ij_java_spaces_around_equality_operators = true
ij_java_spaces_around_lambda_arrow = true
ij_java_spaces_around_logical_operators = true
ij_java_spaces_around_method_ref_dbl_colon = false
ij_java_spaces_around_multiplicative_operators = true
ij_java_spaces_around_relational_operators = true
ij_java_spaces_around_shift_operators = true
ij_java_spaces_around_type_bounds_in_type_parameters = true
ij_java_spaces_around_unary_operator = false
ij_java_spaces_within_angle_brackets = false
ij_java_spaces_within_annotation_parentheses = false
ij_java_spaces_within_array_initializer_braces = false
ij_java_spaces_within_braces = true
ij_java_spaces_within_brackets = false
ij_java_spaces_within_cast_parentheses = false
ij_java_spaces_within_catch_parentheses = false
ij_java_spaces_within_deconstruction_list = false
ij_java_spaces_within_for_parentheses = false
ij_java_spaces_within_if_parentheses = false
ij_java_spaces_within_method_call_parentheses = false
ij_java_spaces_within_method_parentheses = false
ij_java_spaces_within_parentheses = false
ij_java_spaces_within_record_header = false
ij_java_spaces_within_switch_parentheses = false
ij_java_spaces_within_synchronized_parentheses = false
ij_java_spaces_within_try_parentheses = false
ij_java_spaces_within_while_parentheses = false
ij_java_special_else_if_treatment = true
ij_java_subclass_name_suffix = Impl
ij_java_ternary_operation_signs_on_next_line = false
ij_java_ternary_operation_wrap = on_every_item
ij_java_test_name_suffix = Test
ij_java_throws_keyword_wrap = normal
ij_java_throws_list_wrap = normal
ij_java_use_external_annotations = false
ij_java_use_fq_class_names = false
ij_java_use_relative_indents = false
ij_java_use_single_class_imports = true
ij_java_variable_annotation_wrap = off
ij_java_visibility = public
ij_java_while_brace_force = always
ij_java_while_on_new_line = true
ij_java_wrap_comments = false
ij_java_wrap_first_method_in_call_chain = false
ij_java_wrap_long_lines = false
[*.nbtt]
indent_style = tab
max_line_length = 150
ij_continuation_indent_size = 4
ij_nbtt_keep_indents_on_empty_lines = false
ij_nbtt_space_after_colon = true
ij_nbtt_space_after_comma = true
ij_nbtt_space_before_colon = true
ij_nbtt_space_before_comma = false
ij_nbtt_spaces_within_brackets = false
ij_nbtt_spaces_within_parentheses = false
[*.properties]
ij_properties_align_group_field_declarations = false
ij_properties_keep_blank_lines = false
ij_properties_key_value_delimiter = equals
ij_properties_spaces_around_key_value_delimiter = false
[.editorconfig]
ij_editorconfig_align_group_field_declarations = false
ij_editorconfig_space_after_colon = false
ij_editorconfig_space_after_comma = true
ij_editorconfig_space_before_colon = false
ij_editorconfig_space_before_comma = false
ij_editorconfig_spaces_around_assignment_operators = true
[{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.jspx,*.pom,*.rng,*.tagx,*.tld,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul}]
ij_xml_align_attributes = true
ij_xml_align_text = false
ij_xml_attribute_wrap = normal
ij_xml_block_comment_add_space = false
ij_xml_block_comment_at_first_column = true
ij_xml_keep_blank_lines = 2
ij_xml_keep_indents_on_empty_lines = false
ij_xml_keep_line_breaks = true
ij_xml_keep_line_breaks_in_text = true
ij_xml_keep_whitespaces = false
ij_xml_keep_whitespaces_around_cdata = preserve
ij_xml_keep_whitespaces_inside_cdata = false
ij_xml_line_comment_at_first_column = true
ij_xml_space_after_tag_name = false
ij_xml_space_around_equals_in_attribute = false
ij_xml_space_inside_empty_tag = false
ij_xml_text_wrap = normal
ij_xml_use_custom_settings = false
[{*.bash,*.sh,*.zsh}]
indent_size = 4
tab_width = 4
ij_shell_binary_ops_start_line = false
ij_shell_keep_column_alignment_padding = false
ij_shell_minify_program = false
ij_shell_redirect_followed_by_space = false
ij_shell_switch_cases_indented = false
ij_shell_use_unix_line_separator = true
[{*.comp,*.frag,*.fsh,*.geom,*.glsl,*.gsh,*.tesc,*.tese,*.vert,*.vsh}]
ij_glsl_space_after_colon = true
ij_glsl_space_after_comma = true
ij_glsl_space_after_for_semicolon = true
ij_glsl_space_after_quest = true
ij_glsl_space_before_colon = false
ij_glsl_space_before_comma = false
ij_glsl_space_before_for_semicolon = false
ij_glsl_space_before_quest = true
ij_glsl_spaces_around_additive_operators = true
ij_glsl_spaces_around_assignment_operators = true
ij_glsl_spaces_around_bitwise_operators = true
ij_glsl_spaces_around_equality_operators = true
ij_glsl_spaces_around_logical_operators = true
ij_glsl_spaces_around_multiplicative_operators = true
ij_glsl_spaces_around_relational_operators = true
ij_glsl_spaces_around_shift_operators = true
ij_glsl_spaces_within_brackets = false
ij_glsl_spaces_within_parentheses = false
[{*.gant,*.groovy,*.gy}]
ij_groovy_align_group_field_declarations = false
ij_groovy_align_multiline_array_initializer_expression = false
ij_groovy_align_multiline_assignment = false
ij_groovy_align_multiline_binary_operation = false
ij_groovy_align_multiline_chained_methods = false
ij_groovy_align_multiline_extends_list = false
ij_groovy_align_multiline_for = true
ij_groovy_align_multiline_list_or_map = true
ij_groovy_align_multiline_method_parentheses = false
ij_groovy_align_multiline_parameters = true
ij_groovy_align_multiline_parameters_in_calls = false
ij_groovy_align_multiline_resources = true
ij_groovy_align_multiline_ternary_operation = false
ij_groovy_align_multiline_throws_list = false
ij_groovy_align_named_args_in_map = true
ij_groovy_align_throws_keyword = false
ij_groovy_array_initializer_new_line_after_left_brace = false
ij_groovy_array_initializer_right_brace_on_new_line = false
ij_groovy_array_initializer_wrap = off
ij_groovy_assert_statement_wrap = off
ij_groovy_assignment_wrap = off
ij_groovy_binary_operation_wrap = off
ij_groovy_blank_lines_after_class_header = 0
ij_groovy_blank_lines_after_imports = 1
ij_groovy_blank_lines_after_package = 1
ij_groovy_blank_lines_around_class = 1
ij_groovy_blank_lines_around_field = 0
ij_groovy_blank_lines_around_field_in_interface = 0
ij_groovy_blank_lines_around_method = 1
ij_groovy_blank_lines_around_method_in_interface = 1
ij_groovy_blank_lines_before_imports = 1
ij_groovy_blank_lines_before_method_body = 0
ij_groovy_blank_lines_before_package = 0
ij_groovy_block_brace_style = end_of_line
ij_groovy_block_comment_add_space = false
ij_groovy_block_comment_at_first_column = true
ij_groovy_call_parameters_new_line_after_left_paren = false
ij_groovy_call_parameters_right_paren_on_new_line = false
ij_groovy_call_parameters_wrap = off
ij_groovy_catch_on_new_line = false
ij_groovy_class_annotation_wrap = split_into_lines
ij_groovy_class_brace_style = end_of_line
ij_groovy_class_count_to_use_import_on_demand = 5
ij_groovy_do_while_brace_force = never
ij_groovy_else_on_new_line = false
ij_groovy_enable_groovydoc_formatting = true
ij_groovy_enum_constants_wrap = off
ij_groovy_extends_keyword_wrap = off
ij_groovy_extends_list_wrap = off
ij_groovy_field_annotation_wrap = split_into_lines
ij_groovy_finally_on_new_line = false
ij_groovy_for_brace_force = never
ij_groovy_for_statement_new_line_after_left_paren = false
ij_groovy_for_statement_right_paren_on_new_line = false
ij_groovy_for_statement_wrap = off
ij_groovy_ginq_general_clause_wrap_policy = 2
ij_groovy_ginq_having_wrap_policy = 1
ij_groovy_ginq_indent_having_clause = true
ij_groovy_ginq_indent_on_clause = true
ij_groovy_ginq_on_wrap_policy = 1
ij_groovy_ginq_space_after_keyword = true
ij_groovy_if_brace_force = never
ij_groovy_import_annotation_wrap = 2
ij_groovy_imports_layout = *,|,javax.**,java.**,|,$*
ij_groovy_indent_case_from_switch = true
ij_groovy_indent_label_blocks = true
ij_groovy_insert_inner_class_imports = false
ij_groovy_keep_blank_lines_before_right_brace = 2
ij_groovy_keep_blank_lines_in_code = 2
ij_groovy_keep_blank_lines_in_declarations = 2
ij_groovy_keep_control_statement_in_one_line = true
ij_groovy_keep_first_column_comment = true
ij_groovy_keep_indents_on_empty_lines = false
ij_groovy_keep_line_breaks = true
ij_groovy_keep_multiple_expressions_in_one_line = false
ij_groovy_keep_simple_blocks_in_one_line = false
ij_groovy_keep_simple_classes_in_one_line = true
ij_groovy_keep_simple_lambdas_in_one_line = true
ij_groovy_keep_simple_methods_in_one_line = true
ij_groovy_label_indent_absolute = false
ij_groovy_label_indent_size = 0
ij_groovy_lambda_brace_style = end_of_line
ij_groovy_layout_static_imports_separately = true
ij_groovy_line_comment_add_space = false
ij_groovy_line_comment_add_space_on_reformat = false
ij_groovy_line_comment_at_first_column = true
ij_groovy_method_annotation_wrap = split_into_lines
ij_groovy_method_brace_style = end_of_line
ij_groovy_method_call_chain_wrap = off
ij_groovy_method_parameters_new_line_after_left_paren = false
ij_groovy_method_parameters_right_paren_on_new_line = false
ij_groovy_method_parameters_wrap = off
ij_groovy_modifier_list_wrap = false
ij_groovy_names_count_to_use_import_on_demand = 3
ij_groovy_packages_to_use_import_on_demand = java.awt.*,javax.swing.*
ij_groovy_parameter_annotation_wrap = off
ij_groovy_parentheses_expression_new_line_after_left_paren = false
ij_groovy_parentheses_expression_right_paren_on_new_line = false
ij_groovy_prefer_parameters_wrap = false
ij_groovy_resource_list_new_line_after_left_paren = false
ij_groovy_resource_list_right_paren_on_new_line = false
ij_groovy_resource_list_wrap = off
ij_groovy_space_after_assert_separator = true
ij_groovy_space_after_colon = true
ij_groovy_space_after_comma = true
ij_groovy_space_after_comma_in_type_arguments = true
ij_groovy_space_after_for_semicolon = true
ij_groovy_space_after_quest = true
ij_groovy_space_after_type_cast = true
ij_groovy_space_before_annotation_parameter_list = false
ij_groovy_space_before_array_initializer_left_brace = false
ij_groovy_space_before_assert_separator = false
ij_groovy_space_before_catch_keyword = true
ij_groovy_space_before_catch_left_brace = true
ij_groovy_space_before_catch_parentheses = true
ij_groovy_space_before_class_left_brace = true
ij_groovy_space_before_closure_left_brace = true
ij_groovy_space_before_colon = true
ij_groovy_space_before_comma = false
ij_groovy_space_before_do_left_brace = true
ij_groovy_space_before_else_keyword = true
ij_groovy_space_before_else_left_brace = true
ij_groovy_space_before_finally_keyword = true
ij_groovy_space_before_finally_left_brace = true
ij_groovy_space_before_for_left_brace = true
ij_groovy_space_before_for_parentheses = true
ij_groovy_space_before_for_semicolon = false
ij_groovy_space_before_if_left_brace = true
ij_groovy_space_before_if_parentheses = true
ij_groovy_space_before_method_call_parentheses = false
ij_groovy_space_before_method_left_brace = true
ij_groovy_space_before_method_parentheses = false
ij_groovy_space_before_quest = true
ij_groovy_space_before_record_parentheses = false
ij_groovy_space_before_switch_left_brace = true
ij_groovy_space_before_switch_parentheses = true
ij_groovy_space_before_synchronized_left_brace = true
ij_groovy_space_before_synchronized_parentheses = true
ij_groovy_space_before_try_left_brace = true
ij_groovy_space_before_try_parentheses = true
ij_groovy_space_before_while_keyword = true
ij_groovy_space_before_while_left_brace = true
ij_groovy_space_before_while_parentheses = true
ij_groovy_space_in_named_argument = true
ij_groovy_space_in_named_argument_before_colon = false
ij_groovy_space_within_empty_array_initializer_braces = false
ij_groovy_space_within_empty_method_call_parentheses = false
ij_groovy_spaces_around_additive_operators = true
ij_groovy_spaces_around_assignment_operators = true
ij_groovy_spaces_around_bitwise_operators = true
ij_groovy_spaces_around_equality_operators = true
ij_groovy_spaces_around_lambda_arrow = true
ij_groovy_spaces_around_logical_operators = true
ij_groovy_spaces_around_multiplicative_operators = true
ij_groovy_spaces_around_regex_operators = true
ij_groovy_spaces_around_relational_operators = true
ij_groovy_spaces_around_shift_operators = true
ij_groovy_spaces_within_annotation_parentheses = false
ij_groovy_spaces_within_array_initializer_braces = false
ij_groovy_spaces_within_braces = true
ij_groovy_spaces_within_brackets = false
ij_groovy_spaces_within_cast_parentheses = false
ij_groovy_spaces_within_catch_parentheses = false
ij_groovy_spaces_within_for_parentheses = false
ij_groovy_spaces_within_gstring_injection_braces = false
ij_groovy_spaces_within_if_parentheses = false
ij_groovy_spaces_within_list_or_map = false
ij_groovy_spaces_within_method_call_parentheses = false
ij_groovy_spaces_within_method_parentheses = false
ij_groovy_spaces_within_parentheses = false
ij_groovy_spaces_within_switch_parentheses = false
ij_groovy_spaces_within_synchronized_parentheses = false
ij_groovy_spaces_within_try_parentheses = false
ij_groovy_spaces_within_tuple_expression = false
ij_groovy_spaces_within_while_parentheses = false
ij_groovy_special_else_if_treatment = true
ij_groovy_ternary_operation_wrap = off
ij_groovy_throws_keyword_wrap = off
ij_groovy_throws_list_wrap = off
ij_groovy_use_flying_geese_braces = false
ij_groovy_use_fq_class_names = false
ij_groovy_use_fq_class_names_in_javadoc = true
ij_groovy_use_relative_indents = false
ij_groovy_use_single_class_imports = true
ij_groovy_variable_annotation_wrap = off
ij_groovy_while_brace_force = never
ij_groovy_while_on_new_line = false
ij_groovy_wrap_chain_calls_after_dot = false
ij_groovy_wrap_long_lines = false
[{*.har,*.json,*.png.mcmeta,mcmod.info,pack.mcmeta}]
indent_size = 2
ij_json_array_wrapping = split_into_lines
ij_json_keep_blank_lines_in_code = 0
ij_json_keep_indents_on_empty_lines = false
ij_json_keep_line_breaks = true
ij_json_keep_trailing_comma = false
ij_json_object_wrapping = split_into_lines
ij_json_property_alignment = do_not_align
ij_json_space_after_colon = true
ij_json_space_after_comma = true
ij_json_space_before_colon = false
ij_json_space_before_comma = false
ij_json_spaces_within_braces = false
ij_json_spaces_within_brackets = false
ij_json_wrap_long_lines = false
[{*.htm,*.html,*.sht,*.shtm,*.shtml}]
ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3
ij_html_align_attributes = true
ij_html_align_text = false
ij_html_attribute_wrap = normal
ij_html_block_comment_add_space = false
ij_html_block_comment_at_first_column = true
ij_html_do_not_align_children_of_min_lines = 0
ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p
ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot
ij_html_enforce_quotes = false
ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var
ij_html_keep_blank_lines = 2
ij_html_keep_indents_on_empty_lines = false
ij_html_keep_line_breaks = true
ij_html_keep_line_breaks_in_text = true
ij_html_keep_whitespaces = false
ij_html_keep_whitespaces_inside = span,pre,textarea
ij_html_line_comment_at_first_column = true
ij_html_new_line_after_last_attribute = never
ij_html_new_line_before_first_attribute = never
ij_html_quote_style = double
ij_html_remove_new_line_before_tags = br
ij_html_space_after_tag_name = false
ij_html_space_around_equality_in_attribute = false
ij_html_space_inside_empty_tag = false
ij_html_text_wrap = normal
[{*.kt,*.kts}]
ij_kotlin_align_in_columns_case_branch = false
ij_kotlin_align_multiline_binary_operation = false
ij_kotlin_align_multiline_extends_list = false
ij_kotlin_align_multiline_method_parentheses = false
ij_kotlin_align_multiline_parameters = true
ij_kotlin_align_multiline_parameters_in_calls = false
ij_kotlin_allow_trailing_comma = false
ij_kotlin_allow_trailing_comma_on_call_site = false
ij_kotlin_assignment_wrap = off
ij_kotlin_blank_lines_after_class_header = 0
ij_kotlin_blank_lines_around_block_when_branches = 0
ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1
ij_kotlin_block_comment_add_space = false
ij_kotlin_block_comment_at_first_column = true
ij_kotlin_call_parameters_new_line_after_left_paren = false
ij_kotlin_call_parameters_right_paren_on_new_line = false
ij_kotlin_call_parameters_wrap = off
ij_kotlin_catch_on_new_line = false
ij_kotlin_class_annotation_wrap = split_into_lines
ij_kotlin_continuation_indent_for_chained_calls = true
ij_kotlin_continuation_indent_for_expression_bodies = true
ij_kotlin_continuation_indent_in_argument_lists = true
ij_kotlin_continuation_indent_in_elvis = true
ij_kotlin_continuation_indent_in_if_conditions = true
ij_kotlin_continuation_indent_in_parameter_lists = true
ij_kotlin_continuation_indent_in_supertype_lists = true
ij_kotlin_else_on_new_line = false
ij_kotlin_enum_constants_wrap = off
ij_kotlin_extends_list_wrap = off
ij_kotlin_field_annotation_wrap = split_into_lines
ij_kotlin_finally_on_new_line = false
ij_kotlin_if_rparen_on_new_line = false
ij_kotlin_import_nested_classes = false
ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^
ij_kotlin_insert_whitespaces_in_simple_one_line_method = true
ij_kotlin_keep_blank_lines_before_right_brace = 2
ij_kotlin_keep_blank_lines_in_code = 2
ij_kotlin_keep_blank_lines_in_declarations = 2
ij_kotlin_keep_first_column_comment = true
ij_kotlin_keep_indents_on_empty_lines = false
ij_kotlin_keep_line_breaks = true
ij_kotlin_lbrace_on_next_line = false
ij_kotlin_line_break_after_multiline_when_entry = true
ij_kotlin_line_comment_add_space = false
ij_kotlin_line_comment_add_space_on_reformat = false
ij_kotlin_line_comment_at_first_column = true
ij_kotlin_method_annotation_wrap = split_into_lines
ij_kotlin_method_call_chain_wrap = off
ij_kotlin_method_parameters_new_line_after_left_paren = false
ij_kotlin_method_parameters_right_paren_on_new_line = false
ij_kotlin_method_parameters_wrap = off
ij_kotlin_name_count_to_use_star_import = 5
ij_kotlin_name_count_to_use_star_import_for_members = 3
ij_kotlin_packages_to_use_import_on_demand = java.util.*,kotlinx.android.synthetic.**,io.ktor.**
ij_kotlin_parameter_annotation_wrap = off
ij_kotlin_space_after_comma = true
ij_kotlin_space_after_extend_colon = true
ij_kotlin_space_after_type_colon = true
ij_kotlin_space_before_catch_parentheses = true
ij_kotlin_space_before_comma = false
ij_kotlin_space_before_extend_colon = true
ij_kotlin_space_before_for_parentheses = true
ij_kotlin_space_before_if_parentheses = true
ij_kotlin_space_before_lambda_arrow = true
ij_kotlin_space_before_type_colon = false
ij_kotlin_space_before_when_parentheses = true
ij_kotlin_space_before_while_parentheses = true
ij_kotlin_spaces_around_additive_operators = true
ij_kotlin_spaces_around_assignment_operators = true
ij_kotlin_spaces_around_equality_operators = true
ij_kotlin_spaces_around_function_type_arrow = true
ij_kotlin_spaces_around_logical_operators = true
ij_kotlin_spaces_around_multiplicative_operators = true
ij_kotlin_spaces_around_range = false
ij_kotlin_spaces_around_relational_operators = true
ij_kotlin_spaces_around_unary_operator = false
ij_kotlin_spaces_around_when_arrow = true
ij_kotlin_variable_annotation_wrap = off
ij_kotlin_while_on_new_line = false
ij_kotlin_wrap_elvis_expressions = 1
ij_kotlin_wrap_expression_body_functions = 0
ij_kotlin_wrap_first_method_in_call_chain = false
[{*.markdown,*.md}]
ij_markdown_force_one_space_after_blockquote_symbol = true
ij_markdown_force_one_space_after_header_symbol = true
ij_markdown_force_one_space_after_list_bullet = true
ij_markdown_force_one_space_between_words = true
ij_markdown_format_tables = true
ij_markdown_insert_quote_arrows_on_wrap = true
ij_markdown_keep_indents_on_empty_lines = false
ij_markdown_keep_line_breaks_inside_text_blocks = true
ij_markdown_max_lines_around_block_elements = 1
ij_markdown_max_lines_around_header = 1
ij_markdown_max_lines_between_paragraphs = 1
ij_markdown_min_lines_around_block_elements = 1
ij_markdown_min_lines_around_header = 1
ij_markdown_min_lines_between_paragraphs = 1
ij_markdown_wrap_text_if_long = true
ij_markdown_wrap_text_inside_blockquotes = true
[{*.toml,Cargo.lock,Cargo.toml.orig,Gopkg.lock,Pipfile,poetry.lock}]
ij_toml_keep_indents_on_empty_lines = false
[{*.yaml,*.yml}]
indent_size = 4
ij_yaml_align_values_properties = do_not_align
ij_yaml_autoinsert_sequence_marker = true
ij_yaml_block_mapping_on_new_line = false
ij_yaml_indent_sequence_value = true
ij_yaml_keep_indents_on_empty_lines = false
ij_yaml_keep_line_breaks = true
ij_yaml_sequence_on_new_line = false
ij_yaml_space_before_colon = false
ij_yaml_spaces_within_braces = true
ij_yaml_spaces_within_brackets = true
+6
View File
@@ -24,3 +24,9 @@ run
# Files from Forge MDK # Files from Forge MDK
logs logs
forge*changelog.txt forge*changelog.txt
# Sqlite databases
*.sqlite
*.sqlite-journal
*.sqlite-shm
*.sqlite-wal
+7 -7
View File
@@ -4,7 +4,7 @@ This repo is for the Distant Horizons mod.
The purpose of this submodule is to isolate code that isn't tied to a specific version of minecraft. This prevents us from having duplicate code; reducing errors and potentially helping us port to different versions faster and easier. The purpose of this submodule is to isolate code that isn't tied to a specific version of minecraft. This prevents us from having duplicate code; reducing errors and potentially helping us port to different versions faster and easier.
Check out the mod's main GitLab page here: Check out the mod's main GitLab page here:
https://gitlab.com/jeseibel/minecraft-lod-mod https://gitlab.com/jeseibel/distant-horizons
## source code installation ## source code installation
@@ -14,14 +14,14 @@ It should be automatically included when pulling the full mod.
## Open Source Acknowledgements ## Open Source Acknowledgements
XZ for Java (data compression)\ LZ4 for Java (data compression)\
https://tukaani.org/xz/java.html https://github.com/lz4/lz4-java
Json & Toml for Java (config handling)\ NightConfig for Json & Toml (config handling)\
https://github.com/TheElectronWill/night-config https://github.com/TheElectronWill/night-config
SVG Salamander for SVG's\ SVG Salamander for SVG support (not being used atm)\
https://github.com/blackears/svgSalamander https://github.com/blackears/svgSalamander
FlatLaf for theming (for development testing, may remove later)\ sqlite-jdbc\
https://www.formdev.com/flatlaf/ https://github.com/xerial/sqlite-jdbc
@@ -1,390 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="21">
<profile kind="CodeFormatterProfile" name="Eclipse (James' Edit)" version="21">
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_with_spaces" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
<setting id="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_record_components" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_logical_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_shift_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_parameters" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_loops" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.text_block_indentation" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_module_statements" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_annotations" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines" value="2147483647"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_not_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_arguments" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_tag_description" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_constructor" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_string_concatenation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_shift_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_shift_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_additive_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_relational_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_logical_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_method_body_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_additive_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_relational_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_relational_operator" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="99"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_additive_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_declaration" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_additive_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_shift_operator" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.keep_code_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assertion_message" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_logical_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_relational_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_logical_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_string_concatenation" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="1200"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
</profile>
</profiles>
-11
View File
@@ -1,11 +0,0 @@
These Files are used when developing the mod.
Eclipse Auto Formatting
IntelliJ Auto Formatting
- These files are the auto-formatting settings that should be used when developing for the mod. We want to make sure the style of code is consistant regardless of who is writting the code.
renderDocMcDistantHorizonsSettings
- This file contains the configuration to run a remote debug instance so you can edit the mod in your IDE while also viewing the OpenGL code in RenderDoc.
minecraft launch options
- This file contains the Java command line arguments used to launch the mod from a development environment (specifically Eclipse, James didn't test it with IntelliJ), and is included to more easily edit the options for RenderDoc
@@ -1,50 +0,0 @@
<code_scheme name="Eclipse (James' Edit)" version="173">
<option name="RIGHT_MARGIN" value="1200" />
<JavaCodeStyleSettings>
<option name="JD_ALIGN_PARAM_COMMENTS" value="false" />
<option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false" />
<option name="JD_ADD_BLANK_AFTER_DESCRIPTION" value="false" />
<option name="JD_P_AT_EMPTY_LINES" value="false" />
<option name="JD_KEEP_INVALID_TAGS" value="false" />
<option name="JD_DO_NOT_WRAP_ONE_LINE_COMMENTS" value="true" />
<option name="JD_KEEP_EMPTY_PARAMETER" value="false" />
<option name="JD_KEEP_EMPTY_EXCEPTION" value="false" />
<option name="JD_KEEP_EMPTY_RETURN" value="false" />
</JavaCodeStyleSettings>
<codeStyleSettings language="JAVA">
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="10" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="10" />
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="10" />
<option name="BLANK_LINES_BEFORE_PACKAGE" value="1" />
<option name="BRACE_STYLE" value="2" />
<option name="CLASS_BRACE_STYLE" value="2" />
<option name="METHOD_BRACE_STYLE" value="2" />
<option name="ELSE_ON_NEW_LINE" value="true" />
<option name="WHILE_ON_NEW_LINE" value="true" />
<option name="CATCH_ON_NEW_LINE" value="true" />
<option name="FINALLY_ON_NEW_LINE" value="true" />
<option name="INDENT_CASE_FROM_SWITCH" value="false" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_RESOURCES" value="false" />
<option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" />
<option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="RESOURCE_LIST_WRAP" value="5" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="THROWS_LIST_WRAP" value="1" />
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
<option name="THROWS_KEYWORD_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
<option name="TERNARY_OPERATION_WRAP" value="5" />
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
<option name="METHOD_ANNOTATION_WRAP" value="0" />
<option name="CLASS_ANNOTATION_WRAP" value="0" />
<option name="FIELD_ANNOTATION_WRAP" value="0" />
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />
<option name="KEEP_INDENTS_ON_EMPTY_LINES" value="true" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
The following is short tutorial to setup and register a gitlab runner in a docker container on windows. The following is short tutorial to setup and register a gitlab runner in a docker container on windows.
Docker can be installed via a installer from their website and these instructions assume that has already been done. Docker can be installed via an installer from their website and these instructions assume that has already been done.
longer tutorials can be found at the following links: longer tutorials can be found at the following links:
https://faun.pub/gitlab-runner-setup-run-in-docker-container-on-windows-44fee102d02e https://faun.pub/gitlab-runner-setup-run-in-docker-container-on-windows-44fee102d02e
@@ -32,6 +32,11 @@ gitlab project -> settings (on the left menu bar) -> CI/CD -> Runners
and you should see the newly registered runner (the description should show up under the runner's auto generated ID) and you should see the newly registered runner (the description should show up under the runner's auto generated ID)
5. optional config
Open Docker Desktop -> Containers -> Files, go to the file "etc/gitlab-runner/config.toml"
concurrent can be changed to allow for concurrent builds.
Additional commands: Additional commands:
+89
View File
@@ -0,0 +1,89 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
plugins {
id "java"
id "com.github.johnrengelman.shadow" version '8.1.1' apply false
}
shadowJar {
// required for basic shadowJar setup
configurations = [project.configurations.shadow]
}
task addSourcesToCompiledJar(type: ShadowJar) {
def sourceJarPath = "build/libs/DistantHorizons-api-${rootProject.versionStr}-sources.jar"
def secondJarFile = file(sourceJarPath)
// doFirst is so these only run when the task is actually executed
doFirst {
System.out.println("Adding source files from: \n" +
"[" + sourceJarPath + "] to compiled API jar: \n" +
"[" + shadowJar.archivePath + "]")
// Validate the input JAR file
if (!secondJarFile.exists()) {
throw new GradleException("Second JAR file not found: [${secondJarFile}]")
}
}
// Set the name of the combined JAR file
archiveFileName.set("DistantHorizonsApi-${rootProject.api_version}.jar")
// Set the destination directory for the combined JAR file
destinationDirectory = file('build/libs/merged/')
// Set the input JAR files to be combined
from sourceSets.main.allJava
from {
configurations.shadow.collect { it.isDirectory() ? it : zipTree(it) }
}
// set the jars to merge
from shadowJar.archivePath
from secondJarFile
// alternative method to Include the source files in the combined JAR
// and/or see which files are being included
eachFile { file ->
// can be set to true for debugging
def useAlternateEmbedMethod = false
def showFileEmbedding = false
if (showFileEmbedding || useAlternateEmbedMethod) {
System.out.println("attempting to add file: " + file)
def relativePath = file.relativePath.pathString
if (relativePath.endsWith('.class')) {
System.out.println("class file: " + relativePath)
def sourceFile = file.file.parentFile.resolveSibling('src/main/java/' + relativePath.replace('.class', '.java'))
if (sourceFile.exists()) {
System.out.println("adding source file: " + sourceFile)
if (useAlternateEmbedMethod) {
file.withInputStream { inputStream ->
copy {
from(inputStream)
into(relativePath.replace('.class', '.java'))
}
}
}
} else {
System.out.println('missing source file: ' + sourceFile)
}
}
}
}
}
javadoc {
options {
// Don't log warnings.
// There are a lot of warnings related to missing @param and @return javadocs
// that aren't necessary and would clutter up said javadocs.
// For more info see: https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html
addStringOption('Xdoclint:all,-missing', '-quiet')
}
}
@@ -0,0 +1,213 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api;
import com.seibel.distanthorizons.api.interfaces.events.IDhApiEventInjector;
import com.seibel.distanthorizons.api.interfaces.factories.IDhApiWrapperFactory;
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
import com.seibel.distanthorizons.api.interfaces.override.worldGenerator.IDhApiWorldGeneratorOverrideRegister;
import com.seibel.distanthorizons.api.interfaces.render.IDhApiCustomRenderObjectFactory;
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderProxy;
import com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper;
import com.seibel.distanthorizons.api.methods.events.abstractEvents.DhApiAfterDhInitEvent;
import com.seibel.distanthorizons.api.methods.override.DhApiWorldGeneratorOverrideRegister;
import com.seibel.distanthorizons.coreapi.ModInfo;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfig;
import com.seibel.distanthorizons.api.interfaces.world.IDhApiWorldProxy;
import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector;
import com.seibel.distanthorizons.coreapi.DependencyInjection.OverrideInjector;
import com.seibel.distanthorizons.api.interfaces.data.IDhApiTerrainDataRepo;
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IOverrideInjector;
/**
* This is the masthead of the API, almost everything you could want to do
* can be achieved from here. <br>
* For example: you can access singletons which handle the config or event binding. <br><br>
*
* <strong>Q:</strong> Why should I use this class instead of just getting the API singleton I need? <br>
* <strong>A:</strong> This way there is a lower chance of your code breaking if we change something on our end.
* For example, if we realized there is a much better way of handling dependency injection we would keep the
* interface the same so your code doesn't have to change. Whereas if you were directly referencing
* the concrete object we replaced, there would be issues.
*
* @author James Seibel
* @version 2023-12-16
* @since API 1.0.0
*/
public class DhApi
{
/**
* If you can see this Java Doc, this can be ignored. <br>
* This is just to let you know that Javadocs are available and that you should use the API jar
* instead of the full mod jar. <br><br>
*
* Note: Don't use this string in your code. It may change and is only for reference.
*/
public static final String READ_ME =
"If you don't see Javadocs something is wrong. \n" +
"If you are only using the full DH Mod in your build script, you won't have access to our javadocs and could potentially call into unsafe code. \n" +
"\n" +
"Please use the API jar in your build script as a compile time dependency " +
"and the full DH jar as a runtime dependency. \n" +
"\n" +
"Please refer to the example API project or the DH Developer Wiki for additional information " +
"and suggested setup. \n" + // DH Dev note: no links were included to prevent link rot.
"";
public static String readMe() { return READ_ME; }
/**
* This is just a humorous way to reference the {@link DhApi#READ_ME} constant string and hopefully peak a few people's attention
* vs the relatively boring "readMe".
*/
public static final String HEY_YOU_YOURE_FINALLY_AWAKE = READ_ME;
/**
* This is just a humorous way to reference the {@link DhApi#READ_ME} constant string and hopefully peak a few people's attention
* vs the relatively boring "readMe".
*/
public static String heyYou_YoureFinallyAwake() { return READ_ME; }
/**
* <strong>WARNING:</strong>
* All objects in this class will be null until after DH initializes for the first time. <br><br>
*
* Bind a custom {@link DhApiAfterDhInitEvent DhApiAfterDhInitEvent}
* to {@link DhApi#events ApiCoreInjectors.events} in order to be notified when this class can
* be safely used.
*
* @since API 1.0.0
*/
public static class Delayed
{
/**
* Used to interact with Distant Horizons' Configs.
* @since API 1.0.0
*/
public static IDhApiConfig configs = null;
/**
* Used to interact with Distant Horizons' terrain data.
* Designed to be used in conjunction with {@link DhApi.Delayed#worldProxy}.
* @since API 1.0.0
*/
public static IDhApiTerrainDataRepo terrainRepo = null;
/**
* Used to interact with Distant Horizons' currently loaded world.
* Designed to be used in conjunction with {@link DhApi.Delayed#terrainRepo}.
* @since API 1.0.0
*/
public static IDhApiWorldProxy worldProxy = null;
/**
* Used to interact with Distant Horizons' rendering system.
* @since API 1.0.0
*/
public static IDhApiRenderProxy renderProxy = null;
/**
* Used to create wrappers for Minecraft objects needed by other Distant Horizons API methods.
* @since API 2.0.0
*/
public static IDhApiWrapperFactory wrapperFactory = null;
/**
* Used to create custom renderable objects. <br>
* These objects can be added to the renderer in {@link IDhApiLevelWrapper}
* @since API 3.0.0
*/
public static IDhApiCustomRenderObjectFactory customRenderObjectFactory = null;
}
//==================//
// always available //
//==================//
// interfaces //
/**
* Used to bind/unbind Distant Horizons Api events.
* @since API 1.0.0
*/
public static final IDhApiEventInjector events = ApiEventInjector.INSTANCE;
/**
* Used to bind/unbind Distant Horizons Api events.
* @since API 1.0.0
*/
public static final IDhApiWorldGeneratorOverrideRegister worldGenOverrides = DhApiWorldGeneratorOverrideRegister.INSTANCE;
/**
* Used to bind overrides to change Distant Horizons' core behavior.
* @since API 1.0.0
*/
public static final IOverrideInjector<IDhApiOverrideable> overrides = OverrideInjector.INSTANCE;
// getters //
/**
* This version should only be updated when breaking changes are introduced to the Distant Horizons API.
* @since API 1.0.0
*/
public static int getApiMajorVersion() { return ModInfo.API_MAJOR_VERSION; }
/**
* This version should be updated whenever new methods are added to the Distant Horizons API.
* @since API 1.0.0
*/
public static int getApiMinorVersion() { return ModInfo.API_MINOR_VERSION; }
/**
* This version should be updated whenever non-breaking fixes are added to the Distant Horizons API.
* @since API 1.0.0
*/
public static int getApiPatchVersion() { return ModInfo.API_PATCH_VERSION; }
/**
* Returns the mod's semantic version number in the format: Major.Minor.Patch
* with optional extensions "-a" for alpha, "-b" for beta, and -dev for unstable development builds. <br>
* Examples: "1.6.9-a", "1.7.0-a-dev", "2.1.0-b", "3.0.0", "3.1.4-dev"
* @since API 1.0.0
*/
public static String getModVersion() { return ModInfo.VERSION; }
/**
* Returns true if the mod is a development version, false if it is a release version.
* @since API 1.0.0
*/
public static boolean getIsDevVersion() { return ModInfo.IS_DEV_BUILD; }
/**
* Returns the network protocol version.
* @since API 1.0.0
*/
public static int getNetworkProtocolVersion() { return ModInfo.PROTOCOL_VERSION; }
// methods //
/**
* Returns true if the thread this method was called from is owned by Distant Horizons.
* @since API 2.0.0
*/
public static boolean isDhThread() { return Thread.currentThread().getName().startsWith(ModInfo.THREAD_NAME_PREFIX); }
}
@@ -1,21 +1,41 @@
package com.seibel.lod.api.enums; /*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums;
/** /**
* BLOCK - Detail Level: 0, width 1 block, <br> * BLOCK - Detail Level: 0, width 1 block, <br>
* CHUNK - Detail Level: 4, width 16 block, <br> * CHUNK - Detail Level: 4, width 16 block, <br>
* REGION - Detail Level: 9, width 512 block <br> <br> * REGION - Detail Level: 9, width 512 block <br> <br>
* *
* Detail levels in Distant Horizons represent how large a section (of either LODs or MC chunks) * Detail levels in Distant Horizons represent how large a LOD
* is, with the smallest being 0 (1 block wide). <br> * is, with the smallest being 0 (1 block wide). <br>
* The width of a detail level can be calculated by putting the detail level to the power of 2. <br> * The width of a detail level can be calculated by putting the detail level to the power of 2. <br>
* Example for the chunk detail level (4): 2^4 = 16 blocks wide <Br><br> * Example for the chunk detail level (4): 2^4 = 16 blocks wide <Br><br>
* *
* This enum doesn't contain all valid detail levels, only those most likely to be needed. * This enum doesn't contain all valid detail levels, only those most likely to be needed.
* Detail levels 1,2,3, ... 255 are all technically valid detail levels * Detail levels 1,2,3, ... 255 are all technically valid detail levels
* (although anything beyond {@link EDhApiDetailLevel#REGION} may be difficult deal with). * (although anything beyond {@link EDhApiDetailLevel#REGION} may be difficult deal with).
* *
* @author James Seibel * @author James Seibel
* @version 2022-12-5 * @version 2022-12-5
* @since API 1.0.0
*/ */
public enum EDhApiDetailLevel public enum EDhApiDetailLevel
{ {
@@ -23,14 +43,14 @@ public enum EDhApiDetailLevel
// when adding items up the API minor version // when adding items up the API minor version
// when removing items up the API major version // when removing items up the API major version
/** /**
* detail level: 0 <Br> * detail level: 0 <Br>
* width in Blocks: 1 * width in Blocks: 1
*/ */
BLOCK(0, 1), BLOCK(0, 1),
/** /**
* detail level: 4 <Br> * detail level: 4 <Br>
* width in Blocks: 16 * width in Blocks: 16
*/ */
CHUNK(4, 16), CHUNK(4, 16),
/** /**
@@ -0,0 +1,36 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.config;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Add this annotation to enum values that
* are valid config options, but shouldn't be selectable
* when toggling through the options. <br><br>
*
* Example: A preset's "custom" option shouldn't be selectable
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface DisallowSelectingViaConfigGui
{
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,37 +17,26 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.config; package com.seibel.distanthorizons.api.enums.config;
/** /**
* NONE, <br> * NONE, <br>
* NON_FULL, <br> * NON_COLLIDING, <br>
* NO_COLLISION, <br>
* BOTH, <br>
* *
* @author Leonardo Amato * @since API 2.0.0
* @version 2022-7-1 * @version 2024-4-6
*/ */
public enum EBlocksToAvoid public enum EDhApiBlocksToAvoid
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
// when removing items up the API major version // when removing items up the API major version
NONE(false, false), NONE(false),
NON_COLLIDING(true);
NON_FULL(true, false),
NO_COLLISION(false, true),
BOTH(true, true);
public final boolean nonFull;
public final boolean noCollision; public final boolean noCollision;
EBlocksToAvoid(boolean nonFull, boolean noCollision) EDhApiBlocksToAvoid(boolean noCollision) { this.noCollision = noCollision; }
{
this.nonFull = nonFull;
this.noCollision = noCollision;
}
} }
@@ -0,0 +1,101 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.config;
/**
* UNCOMPRESSED <br>
* LZ4 <br>
* XZ <br><br>
*
* Note: speed and compression ratios are examples
* and should only be used for estimated comparisons.
*
* @version 2024-3-16
* @since API 2.0.0
*/
public enum EDhApiDataCompressionMode
{
// Reminder:
// when adding items up the API minor version
// when removing items up the API major version
/**
* Should only be used internally and for unit testing. <br><br>
*
* Read Speed: 1.64 MS / DTO <br>
* Write Speed: 12.44 MS / DTO <br>
* Compression ratio: 1.0 <br>
*/
@DisallowSelectingViaConfigGui
UNCOMPRESSED(0),
/**
* Extremely fast (often faster than uncompressed), but generally poor compression. <br><br>
*
* Read Speed: 1.85 MS / DTO <br>
* Write Speed: 9.46 MS / DTO <br>
* Compression ratio: 0.3638 <br>
*/
LZ4(1),
/*
* Decent speed and good compression. <br><br>
*
* Read Speed: 11.78 MS / DTO <br>
* Write Speed: 16.76 MS / DTO <br>
* Compression ratio: 0.2199 <br>
*/
//@Deprecated
//Z_STD(2),
/**
* Extremely slow, but very good compression. <br><br>
*
* Read Speed: 12.25 MS / DTO <br>
* Write Speed: 490.07 MS / DTO <br>
* Compression ratio: 0.1242 <br>
*/
LZMA2(3);
/** More stable than using the ordinal of the enum */
public final byte value;
EDhApiDataCompressionMode(int value) { this.value = (byte) value; }
/** @throws IllegalArgumentException if the value doesn't map to a value */
public static EDhApiDataCompressionMode getFromValue(byte value) throws IllegalArgumentException
{
EDhApiDataCompressionMode[] enumList = EDhApiDataCompressionMode.values();
for (int i = 0; i < enumList.length; i++)
{
if (enumList[i].value == value)
{
return enumList[i];
}
}
throw new IllegalArgumentException("No compression mode with the value ["+value+"]");
}
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -16,13 +16,16 @@
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.core.wrapperInterfaces.modAccessor;
import com.seibel.lod.core.pos.DhChunkPos; package com.seibel.distanthorizons.api.enums.config;
import java.util.HashSet; /**
* @since API 2.0.0
public interface ISodiumAccessor extends IModAccessor { * @version 2024-4-6
HashSet<DhChunkPos> getNormalRenderedChunks(); */
public enum EDhApiGLErrorHandlingMode
{
IGNORE,
LOG,
LOG_THROW;
} }
@@ -0,0 +1,32 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.config;
/**
* @since API 2.0.0
* @version 2024-4-6
*/
public enum EDhApiGlProfileMode
{
CORE,
COMPAT,
ANY;
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,51 +17,44 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.config; package com.seibel.distanthorizons.api.enums.config;
/** /**
* AUTO, <br> * AUTO, <br>
* BUFFER_STORAGE, <br> * BUFFER_STORAGE, <br>
* SUB_DATA, <br> * SUB_DATA, <br>
* BUFFER_MAPPING, <br>
* DATA <br> * DATA <br>
* *
* @author Leetom * @author Leetom
* @author James Seibel * @author James Seibel
* @version 2022-7-2 * @version 2024-4-6
* @since API 3.0.0
*/ */
public enum EGpuUploadMethod public enum EDhApiGpuUploadMethod
{ {
/** Picks the best option based on the GPU the user has. */ /** Picks the best option based on the GPU the user has. */
AUTO(false, false), AUTO(false, false),
// commented out since it isn't currently in use // commented out since it isn't currently in use
//BUFFER_STORAGE_MAPPING(true, true), //BUFFER_STORAGE_MAPPING(true, true),
/** /** Fast rendering, no stuttering. */
* Default for NVIDIA if OpenGL 4.5 is supported. <br>
* Fast rendering, no stuttering.
*/
BUFFER_STORAGE(false, true), BUFFER_STORAGE(false, true),
/** /** Fast rendering but may stutter when uploading. */
* Backup option for NVIDIA. <br>
* Fast rendering but may stutter when uploading.
*/
SUB_DATA(false, false), SUB_DATA(false, false),
/** /**
* Default option for AMD/Intel. <br>
* May end up storing buffers in System memory. <br> * May end up storing buffers in System memory. <br>
* Fast rending if in GPU memory, slow if in system memory, <br> * Fast rending if in GPU memory, slow if in system memory, <br>
* but won't stutter when uploading. * but won't stutter when uploading.
*
* @deprecated not currently supported
*/ */
@Deprecated
BUFFER_MAPPING(true, false), BUFFER_MAPPING(true, false),
/** /** Fast rendering but may stutter when uploading. */
* Backup option for AMD/Intel. <br>
* Fast rendering but may stutter when uploading.
*/
DATA(false, false); DATA(false, false);
@@ -69,7 +62,7 @@ public enum EGpuUploadMethod
public final boolean useEarlyMapping; public final boolean useEarlyMapping;
public final boolean useBufferStorage; public final boolean useBufferStorage;
EGpuUploadMethod(boolean useEarlyMapping, boolean useBufferStorage) EDhApiGpuUploadMethod(boolean useEarlyMapping, boolean useBufferStorage)
{ {
this.useEarlyMapping = useEarlyMapping; this.useEarlyMapping = useEarlyMapping;
this.useBufferStorage = useBufferStorage; this.useBufferStorage = useBufferStorage;
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,21 +17,24 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.rendering; package com.seibel.distanthorizons.api.enums.config;
/** /**
* NEAR, FAR, or NEAR_AND_FAR. * AS_GRASS <br>
* * FADE_TO_DIRT <br>
* @author James Seibel * AS_DIRT <br>
* @version 2022-6-2 *
* @since API 2.0.0
* @version 2024-4-7
*/ */
public enum EFogDistance public enum EDhApiGrassSideRendering
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
// when removing items up the API major version // when removing items up the API major version
NEAR, AS_GRASS,
FAR, FADE_TO_DIRT,
NEAR_AND_FAR AS_DIRT;
}
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,42 +17,45 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.config; package com.seibel.distanthorizons.api.enums.config;
/** /**
* LOWEST <br> * LOWEST <br>
* LOW <br> * LOW <br>
* MEDIUM <br> * MEDIUM <br>
* HIGH <br> <br> * HIGH <br>
* UNLIMITED <br>
* *
* this indicates the base of the quadratic function we use for the quality drop-off * @since API 2.0.0
* * @version 2024-4-6
* @author Leonardo Amato
* @version 9-29-2021
*/ */
public enum EHorizontalQuality public enum EDhApiHorizontalQuality
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
// when removing items up the API major version // when removing items up the API major version
/** 1.0 AKA Linear */ // FIXME any quadraticBase less than 2.0f has issues with DetailDistanceUtil, and will always return the lowest detail level.
LOWEST(1.0f), // So for now we are limiting the lowest value to 2.0
// LOWEST was originally 1.0f and LOW was 1.5f
/** exponent 1.5 */ LOWEST(2.0f, 4),
LOW(1.5f), LOW(2.0f, 8),
MEDIUM(2.0f, 12),
HIGH(2.2f, 16),
EXTREME(2.4f, 32),
;
/** exponent 2.0 */
MEDIUM(2.0f),
/** exponent 2.2 */
HIGH(2.2f);
public final double quadraticBase; public final double quadraticBase;
public final int distanceUnitInBlocks;
EHorizontalQuality(double distanceUnit) EDhApiHorizontalQuality(double quadraticBase, int distanceUnitInBlocks)
{ {
this.quadraticBase = distanceUnit; this.quadraticBase = quadraticBase;
this.distanceUnitInBlocks = distanceUnitInBlocks;
} }
} }
@@ -0,0 +1,52 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.config;
/**
* AUTO <br>
* ENABLED <br>
* DISABLED <br>
*
* @since API 2.0.0
* @version 2024-4-6
*/
public enum EDhApiLodShading
{
// Reminder:
// when adding items up the API minor version
// when removing items up the API major version
/**
* Uses Minecraft's shading for LODs. <Br>
* This means if Minecraft's shading is disabled DH's shading will be as well.
*/
AUTO,
/**
* Simulates Minecraft's shading. <Br>
* This is most useful for shaders that disable Minecraft's shading
* but still require shading on LODs.
*/
ENABLED,
/** LODs will have no shading */
DISABLED;
}
@@ -0,0 +1,54 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.config;
import org.apache.logging.log4j.Level;
/**
* @since API 2.0.0
* @version 2024-4-6
*/
public enum EDhApiLoggerMode
{
DISABLED(Level.OFF, Level.OFF),
LOG_ALL_TO_FILE(Level.ALL, Level.OFF),
LOG_ERROR_TO_CHAT(Level.ALL, Level.ERROR),
LOG_WARNING_TO_CHAT(Level.ALL, Level.WARN),
LOG_INFO_TO_CHAT(Level.ALL, Level.INFO),
LOG_DEBUG_TO_CHAT(Level.ALL, Level.DEBUG),
LOG_ALL_TO_CHAT(Level.ALL, Level.ALL),
LOG_ERROR_TO_CHAT_AND_FILE(Level.ERROR, Level.ERROR),
LOG_WARNING_TO_CHAT_AND_FILE(Level.WARN, Level.WARN),
LOG_INFO_TO_CHAT_AND_FILE(Level.INFO, Level.INFO),
LOG_DEBUG_TO_CHAT_AND_FILE(Level.DEBUG, Level.DEBUG),
LOG_WARNING_TO_CHAT_AND_INFO_TO_FILE(Level.INFO, Level.WARN),
LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE(Level.INFO, Level.ERROR),
;
public final Level levelForFile;
public final Level levelForChat;
EDhApiLoggerMode(Level levelForFile, Level levelForChat)
{
this.levelForFile = levelForFile;
this.levelForChat = levelForChat;
}
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,12 +17,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.config; package com.seibel.distanthorizons.api.enums.config;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import com.seibel.lod.coreapi.util.MathUtil; import com.seibel.distanthorizons.coreapi.util.MathUtil;
/** /**
* BLOCK <Br> * BLOCK <Br>
@@ -30,12 +30,13 @@ import com.seibel.lod.coreapi.util.MathUtil;
* FOUR_BLOCKS <br> * FOUR_BLOCKS <br>
* HALF_CHUNK <Br> * HALF_CHUNK <Br>
* CHUNK <br> * CHUNK <br>
* *
* @author James Seibel * @author James Seibel
* @author Leonardo Amato * @author Leonardo Amato
* @version 2022-7-5 * @since API 2.0.0
* @version 2024-4-6
*/ */
public enum EHorizontalResolution public enum EDhApiMaxHorizontalResolution
{ {
/** render 256 LODs for each chunk */ /** render 256 LODs for each chunk */
BLOCK(16, 0), BLOCK(16, 0),
@@ -54,8 +55,6 @@ public enum EHorizontalResolution
/** /**
* How many DataPoints should * How many DataPoints should
* be drawn per side, per LodChunk * be drawn per side, per LodChunk
@@ -85,22 +84,22 @@ public enum EHorizontalResolution
* 2nd dimension: An array of all LodDetails that are less than or <br> * 2nd dimension: An array of all LodDetails that are less than or <br>
* equal to that detailLevel * equal to that detailLevel
*/ */
private static EHorizontalResolution[][] lowerDetailArrays; private static EDhApiMaxHorizontalResolution[][] lowerDetailArrays;
EHorizontalResolution(int newLengthCount, int newDetailLevel) EDhApiMaxHorizontalResolution(int newLengthCount, int newDetailLevel)
{ {
detailLevel = (byte) newDetailLevel; this.detailLevel = (byte) newDetailLevel;
dataPointLengthCount = newLengthCount; this.dataPointLengthCount = newLengthCount;
dataPointWidth = 16 / dataPointLengthCount; this.dataPointWidth = 16 / this.dataPointLengthCount;
startX = new int[dataPointLengthCount * dataPointLengthCount]; this.startX = new int[this.dataPointLengthCount * this.dataPointLengthCount];
endX = new int[dataPointLengthCount * dataPointLengthCount]; this.endX = new int[this.dataPointLengthCount * this.dataPointLengthCount];
startZ = new int[dataPointLengthCount * dataPointLengthCount]; this.startZ = new int[this.dataPointLengthCount * this.dataPointLengthCount];
endZ = new int[dataPointLengthCount * dataPointLengthCount]; this.endZ = new int[this.dataPointLengthCount * this.dataPointLengthCount];
int index = 0; int index = 0;
@@ -108,11 +107,11 @@ public enum EHorizontalResolution
{ {
for (int z = 0; z < newLengthCount; z++) for (int z = 0; z < newLengthCount; z++)
{ {
startX[index] = x * dataPointWidth; this.startX[index] = x * this.dataPointWidth;
startZ[index] = z * dataPointWidth; this.startZ[index] = z * this.dataPointWidth;
endX[index] = (x * dataPointWidth) + dataPointWidth; this.endX[index] = (x * this.dataPointWidth) + this.dataPointWidth;
endZ[index] = (z * dataPointWidth) + dataPointWidth; this.endZ[index] = (z * this.dataPointWidth) + this.dataPointWidth;
index++; index++;
} }
@@ -122,27 +121,28 @@ public enum EHorizontalResolution
//================//
// static methods //
//================//
/** /**
* Returns an array of all LodDetails that have a detail level * Returns an array of all LodDetails that have a detail level
* that is less than or equal to the given LodDetail * that is less than or equal to the given LodDetail
*/ */
public static EHorizontalResolution[] getSelfAndLowerDetails(EHorizontalResolution detail) public static EDhApiMaxHorizontalResolution[] getSelfAndLowerDetails(EDhApiMaxHorizontalResolution detail)
{ {
if (lowerDetailArrays == null) if (lowerDetailArrays == null)
{ {
// run first time setup // run first time setup
lowerDetailArrays = new EHorizontalResolution[EHorizontalResolution.values().length][]; lowerDetailArrays = new EDhApiMaxHorizontalResolution[EDhApiMaxHorizontalResolution.values().length][];
// go through each LodDetail // go through each LodDetail
for (EHorizontalResolution currentDetail : EHorizontalResolution.values()) for (EDhApiMaxHorizontalResolution currentDetail : EDhApiMaxHorizontalResolution.values())
{ {
ArrayList<EHorizontalResolution> lowerDetails = new ArrayList<>(); ArrayList<EDhApiMaxHorizontalResolution> lowerDetails = new ArrayList<>();
// find the details lower than currentDetail // find the details lower than currentDetail
for (EHorizontalResolution compareDetail : EHorizontalResolution.values()) for (EDhApiMaxHorizontalResolution compareDetail : EDhApiMaxHorizontalResolution.values())
{ {
if (currentDetail.detailLevel <= compareDetail.detailLevel) if (currentDetail.detailLevel <= compareDetail.detailLevel)
{ {
@@ -154,7 +154,7 @@ public enum EHorizontalResolution
Collections.sort(lowerDetails); Collections.sort(lowerDetails);
Collections.reverse(lowerDetails); Collections.reverse(lowerDetails);
lowerDetailArrays[currentDetail.detailLevel] = lowerDetails.toArray(new EHorizontalResolution[lowerDetails.size()]); lowerDetailArrays[currentDetail.detailLevel] = lowerDetails.toArray(new EDhApiMaxHorizontalResolution[lowerDetails.size()]);
} }
} }
@@ -162,14 +162,13 @@ public enum EHorizontalResolution
} }
/** Returns what detail level should be used at a given distance and maxDistance. */ /** Returns what detail level should be used at a given distance and maxDistance. */
public static EHorizontalResolution getDetailForDistance(EHorizontalResolution maxDetailLevel, int distance, int maxDistance) public static EDhApiMaxHorizontalResolution getDetailForDistance(EDhApiMaxHorizontalResolution maxDetailLevel, int distance, int maxDistance)
{ {
EHorizontalResolution[] lowerDetails = getSelfAndLowerDetails(maxDetailLevel); EDhApiMaxHorizontalResolution[] lowerDetails = getSelfAndLowerDetails(maxDetailLevel);
int distanceBetweenDetails = maxDistance / lowerDetails.length; int distanceBetweenDetails = maxDistance / lowerDetails.length;
int index = MathUtil.clamp(0, distance / distanceBetweenDetails, lowerDetails.length - 1); int index = MathUtil.clamp(0, distance / distanceBetweenDetails, lowerDetails.length - 1);
return lowerDetails[index]; return lowerDetails[index];
} }
} }
@@ -1,9 +1,9 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2022 Tom Lee (TomTheFurry) * Copyright (C) 2022 Tom Lee (TomTheFurry)
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -18,36 +18,35 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.config; package com.seibel.distanthorizons.api.enums.config;
/** /**
* AUTO, <br>
* NAME_ONLY, <br> * NAME_ONLY, <br>
* IP_ONLY, <br>
* NAME_IP, <br> * NAME_IP, <br>
* NAME_IP_PORT, <br> <br> * NAME_IP_PORT, <br>
* NAME_IP_PORT_MC_VERSION, <br> <br>
* *
* Determines how the multiplayer folders should be named. * Determines how the multiplayer folders should be named.
* *
* @author James Seibel * @author James Seibel
* @version 2022-7-1 * @since API 2.0.0
* @version 2024-4-6
*/ */
public enum EServerFolderNameMode public enum EDhApiServerFolderNameMode
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
// when removing items up the API major version // when removing items up the API major version
/**
* NAME_IP for LAN connections <Br>
* NAME_IP_PORT for all others
*/
AUTO,
/** Only use the server name */ /** Only use the server name */
NAME_ONLY, NAME_ONLY,
/** /** Only use the server IP */
IP_ONLY,
/**
* {SERVER_NAME} IP {IP} <br> * {SERVER_NAME} IP {IP} <br>
* Example: Minecraft Server IP 192.168.1.40 * Example: Minecraft Server IP 192.168.1.40
*/ */
@@ -59,10 +58,10 @@ public enum EServerFolderNameMode
*/ */
NAME_IP_PORT, NAME_IP_PORT,
/** /**
* {SERVER_NAME} IP {IP} <br> * {SERVER_NAME} IP {IP} <br>
* Example: Minecraft Server IP 192.168.1.40:25565 GameVersion 1.16.5 <Br> <br> * Example: Minecraft Server IP 192.168.1.40:25565 GameVersion 1.16.5 <Br> <br>
* *
* Not normally recommended, since the game version can change if the * Not normally recommended, since the game version can change if the
* server installs paper or some other jar. <br> * server installs paper or some other jar. <br>
* This is just here to provide backwards compatibility. * This is just here to provide backwards compatibility.
@@ -0,0 +1,41 @@
package com.seibel.distanthorizons.api.enums.config;
import com.seibel.distanthorizons.coreapi.ModInfo;
/**
* AUTO, <br>
* STABLE, <br>
* NIGHTLY, <br><br>
*
* @since API 2.1.0
* @version 2024-6-8
*/
public enum EDhApiUpdateBranch
{
AUTO,
STABLE,
NIGHTLY;
/**
* If the updateBranch value is {@link EDhApiUpdateBranch#AUTO}
* this method will convert it either to {@link EDhApiUpdateBranch#STABLE} or {@link EDhApiUpdateBranch#NIGHTLY}
* based on this jar's state. <Br><br>
*
* If updateBranch is {@link EDhApiUpdateBranch#STABLE} or {@link EDhApiUpdateBranch#NIGHTLY}
* it just returns.
*/
public static EDhApiUpdateBranch convertAutoToStableOrNightly(EDhApiUpdateBranch updateBranch)
{
if (updateBranch != EDhApiUpdateBranch.AUTO)
{
return updateBranch;
}
else
{
return ModInfo.IS_DEV_BUILD ? EDhApiUpdateBranch.NIGHTLY : EDhApiUpdateBranch.STABLE;
}
}
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,7 +17,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.config; package com.seibel.distanthorizons.api.enums.config;
/** /**
* NEVER, <br> * NEVER, <br>
@@ -26,11 +26,13 @@ package com.seibel.lod.api.enums.config;
* *
* This represents how far the LODs should overlap with * This represents how far the LODs should overlap with
* the vanilla Minecraft terrain. * the vanilla Minecraft terrain.
* *
* @author James Seibel * @author James Seibel
* @version 2022-6-30 * @since API 2.0.0
* @version 2024-4-6
*/ */
public enum EVanillaOverdraw @Deprecated // not currently in use, if the config this enum represents is re-implemented, the deprecated flag can be removed
public enum EDhApiVanillaOverdraw
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
@@ -0,0 +1,61 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.config;
import com.seibel.distanthorizons.coreapi.util.MathUtil;
/**
* HEIGHT_MAP <br>
* LOW <br>
* MEDIUM <br>
* HIGH <br>
* EXTREME <br>
*
* @author Leonardo Amato
* @version 2024-4-6
* @since API 2.0.0
*/
public enum EDhApiVerticalQuality
{
HEIGHT_MAP( new int[]{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}),
LOW( new int[]{4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1}),
MEDIUM( new int[]{6, 4, 3, 3, 3, 3, 3, 2, 2, 2, 1}),
HIGH( new int[]{16, 8, 4, 3, 3, 3, 3, 3, 3, 3, 1}),
VERY_HIGH( new int[]{32, 16, 8, 4, 4, 3, 3, 3, 3, 3, 1}),
EXTREME( new int[]{64, 32, 8, 4, 4, 3, 3, 3, 3, 3, 1}),
PIXEL_ART( new int[]{512, 64, 16, 8, 4, 3, 3, 3, 3, 3, 1});
/** represents how many LODs can be rendered in a single vertical slice */
public final int[] maxVerticalData;
EDhApiVerticalQuality(int[] maxVerticalData) { this.maxVerticalData = maxVerticalData; }
public int calculateMaxVerticalData(byte dataDetail)
{
// for detail levels lower than what the enum defines, use the lowest quality item
int index = MathUtil.clamp(0, dataDetail, this.maxVerticalData.length - 1);
return this.maxVerticalData[index];
}
}
@@ -0,0 +1,70 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.config;
/**
* MERGE_SAME_BLOCKS <br>
* VISUALLY_EQUAL <br><br>
*
* @version 2024-3-27
* @since API 2.0.0
*/
public enum EDhApiWorldCompressionMode
{
// Reminder:
// when adding items up the API minor version
// when removing items up the API major version
/**
* Every block/biome change is recorded in the database. <br>
* This is what DH 2.0 and 2.0.1 all used by default and will store a lot of data.
*/
MERGE_SAME_BLOCKS(0),
/**
* Only visible block/biome changes are recorded in the database. <Br>
* Hidden blocks (IE ores) are ignored.
*/
VISUALLY_EQUAL(1);
/** More stable than using the ordinal of the enum */
public final byte value;
EDhApiWorldCompressionMode(int value) { this.value = (byte) value; }
public static EDhApiWorldCompressionMode getFromValue(byte value)
{
EDhApiWorldCompressionMode[] enumList = EDhApiWorldCompressionMode.values();
for (int i = 0; i < enumList.length; i++)
{
if (enumList[i].value == value)
{
return enumList[i];
}
}
throw new IllegalArgumentException("No lossy compression mode with the value ["+value+"]");
}
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,31 +17,35 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.config; package com.seibel.distanthorizons.api.enums.config.quickOptions;
import com.seibel.distanthorizons.api.enums.config.DisallowSelectingViaConfigGui;
/** /**
* AUTO <br> * CUSTOM, <br><br>
* Near_First <br>
* Far_First <br> <br>
* *
* Determines which LODs should have priority when generating * MINIMUM, <br>
* outside the normal view distance. * LOW, <br>
* MEDIUM, <br>
* HIGH, <br>
* EXTREME, <br>
* *
* @author Leonardo Amato * @since API 2.0.0
* @version 12-1-2021 * @version 2024-4-6
*/ */
public enum EGenerationPriority public enum EDhApiQualityPreset
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
// when removing items up the API major version // when removing items up the API major version
/** NEAR_FIRST when connected to servers and BALANCED when on single player */ @DisallowSelectingViaConfigGui
AUTO, CUSTOM,
NEAR_FIRST, MINIMUM,
LOW,
MEDIUM,
HIGH,
EXTREME;
BALANCED, }
FAR_FIRST
}
@@ -0,0 +1,50 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.config.quickOptions;
import com.seibel.distanthorizons.api.enums.config.DisallowSelectingViaConfigGui;
/**
* CUSTOM, <br><br>
*
* MINIMAL_IMPACT, <br>
* LOW_IMPACT, <br>
* BALANCED, <br>
* AGGRESSIVE, <br>
*
* @since API 2.0.0
* @version 2024-4-6
*/
public enum EDhApiThreadPreset
{
// Reminder:
// when adding items up the API minor version
// when removing items up the API major version
@DisallowSelectingViaConfigGui
CUSTOM,
MINIMAL_IMPACT,
LOW_IMPACT,
BALANCED,
AGGRESSIVE,
I_PAID_FOR_THE_WHOLE_CPU,
}
@@ -0,0 +1,68 @@
package com.seibel.distanthorizons.api.enums.rendering;
/**
* contains the indices used by shaders to determine
* how different block types should be rendered. <br><br>
*
* UNKNOWN, <br>
* LEAVES, <br>
* STONE, <br>
* WOOD, <br>
* METAL, <br>
* DIRT, <br>
* LAVA, <br>
* DEEPSLATE, <br>
* SNOW, <br>
* SAND, <br>
* TERRACOTTA, <br>
* NETHER_STONE, <br>
* WATER, <br>
* GRASS, <br>
* AIR, <br>
* ILLUMINATED, <br>
*
* @author IMS
* @author James Seibel
* @since API 3.0.0
* @version 2024-7-11
*/
public enum EDhApiBlockMaterial
{
UNKNOWN(0),
LEAVES(1),
STONE(2),
WOOD(3),
METAL(4),
DIRT(5),
LAVA(6),
DEEPSLATE(7),
SNOW(8),
SAND(9),
TERRACOTTA(10),
NETHER_STONE(11),
WATER(12),
GRASS(13),
/** shouldn't normally be needed, but just in case */
AIR(14),
ILLUMINATED(15); // Max value
public final byte index;
EDhApiBlockMaterial(int index) { this.index = (byte)index;}
public static EDhApiBlockMaterial getFromIndex(int index)
{
for(EDhApiBlockMaterial material : EDhApiBlockMaterial.values())
{
if (material.index == index)
{
return material;
}
}
return EDhApiBlockMaterial.UNKNOWN;
}
}
@@ -0,0 +1,89 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.rendering;
/**
* OFF, <br>
* SHOW_DETAIL, <br>
* SHOW_GENMODE, <br>
* SHOW_OVERLAPPING_QUADS, <br>
* SHOW_RENDER_SOURCE_FLAG, <br>
*
* @author Leetom
* @author James Seibel
* @version 2024-4-6
* @since API 2.0.0
*/
public enum EDhApiDebugRendering
{
// Reminder:
// when adding items up the API minor version
// when removing items up the API major version
/** LODs are rendered normally */
OFF,
/** LOD colors are based on their detail */
SHOW_DETAIL,
/** Block Materials are often used by Iris shaders to determine how LODs should be rendered */
SHOW_BLOCK_MATERIAL,
/** Only draw overlapping LOD quads. */
SHOW_OVERLAPPING_QUADS,
/** LOD colors are based on renderSource flags. */
SHOW_RENDER_SOURCE_FLAG;
public static EDhApiDebugRendering next(EDhApiDebugRendering type)
{
switch (type)
{
case OFF:
return SHOW_DETAIL;
case SHOW_DETAIL:
return SHOW_BLOCK_MATERIAL;
case SHOW_BLOCK_MATERIAL:
return SHOW_OVERLAPPING_QUADS;
case SHOW_OVERLAPPING_QUADS:
return SHOW_RENDER_SOURCE_FLAG;
default:
return OFF;
}
}
public static EDhApiDebugRendering previous(EDhApiDebugRendering type)
{
switch (type)
{
case OFF:
return SHOW_RENDER_SOURCE_FLAG;
case SHOW_RENDER_SOURCE_FLAG:
return SHOW_OVERLAPPING_QUADS;
case SHOW_OVERLAPPING_QUADS:
return SHOW_DETAIL;
default:
return OFF;
}
}
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,16 +17,17 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.rendering; package com.seibel.distanthorizons.api.enums.rendering;
/** /**
* USE_DEFAULT_FOG_COLOR, <br> * USE_DEFAULT_FOG_COLOR, <br>
* USE_SKY_COLOR, <br> * USE_SKY_COLOR, <br>
* *
* @author James Seibel * @author James Seibel
* @version 2022-6-9 * @version 2024-4-6
* @since API 2.0.0
*/ */
public enum EFogColorMode public enum EDhApiFogColorMode
{ {
// Reminder: // Reminder:
// when adding items: up the API minor version // when adding items: up the API minor version
@@ -43,4 +44,5 @@ public enum EFogColorMode
* https://www.curseforge.com/minecraft/mc-mods/clear-skies-forge-port * https://www.curseforge.com/minecraft/mc-mods/clear-skies-forge-port
*/ */
USE_SKY_COLOR, USE_SKY_COLOR,
} }
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,17 +17,18 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.rendering; package com.seibel.distanthorizons.api.enums.rendering;
/** /**
* USE_OPTIFINE_FOG_SETTING, <br> * USE_OPTIFINE_FOG_SETTING, <br>
* FOG_ENABLED, <br> * FOG_ENABLED, <br>
* FOG_DISABLED <br> * FOG_DISABLED <br>
* *
* @author James Seibel * @author James Seibel
* @since API 2.0.0
* @version 2022-6-2 * @version 2022-6-2
*/ */
public enum EFogDrawMode public enum EDhApiFogDrawMode
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -16,25 +16,27 @@
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.config; package com.seibel.distanthorizons.api.enums.rendering;
/** /**
* FAST, <br> * LINEAR, <br>
* FANCY, * EXPONENTIAL, <br>
* EXPONENTIAL_SQUARED <br>
* *
* @author Leetom * @author Leetom
* @version 2022-7-1 * @version 2022-6-30
* @since API 2.0.0
*/ */
public enum ELightGenerationMode public enum EDhApiFogFalloff
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
// when removing items up the API major version // when removing items up the API major version
/** Fake light values using a height map */
FAST,
/** Run the lighting engine though the chunk to generate proper light values */ LINEAR,
FANCY EXPONENTIAL,
EXPONENTIAL_SQUARED,
} }
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -16,8 +16,8 @@
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.rendering; package com.seibel.distanthorizons.api.enums.rendering;
/** /**
* BASIC <br> * BASIC <br>
@@ -32,18 +32,19 @@ package com.seibel.lod.api.enums.rendering;
* AVERAGE <br> * AVERAGE <br>
* *
* @author Leetom * @author Leetom
* @version 2022-4-14 * @version 2024-4-6
* @since API 2.0.0
*/ */
public enum EHeightFogMixMode public enum EDhApiHeightFogMixMode
{ {
BASIC, BASIC,
IGNORE_HEIGHT, IGNORE_HEIGHT,
ADDITION, ADDITION,
MAX, MAX,
MULTIPLY, MULTIPLY,
INVERSE_MULTIPLY, INVERSE_MULTIPLY,
LIMITED_ADDITION, LIMITED_ADDITION,
MULTIPLY_ADDITION, MULTIPLY_ADDITION,
INVERSE_MULTIPLY_ADDITION, INVERSE_MULTIPLY_ADDITION,
AVERAGE, AVERAGE,
} }
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,7 +17,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.rendering; package com.seibel.distanthorizons.api.enums.rendering;
/** /**
* ABOVE_CAMERA, <br> * ABOVE_CAMERA, <br>
@@ -28,9 +28,10 @@ package com.seibel.lod.api.enums.rendering;
* ABOVE_AND_BELOW_SET_HEIGHT, <br> * ABOVE_AND_BELOW_SET_HEIGHT, <br>
* *
* @author Leetom * @author Leetom
* @version 6-30-2022 * @version 2024-4-6
* @since API 2.0.0
*/ */
public enum EHeightFogMode public enum EDhApiHeightFogMode
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
@@ -48,7 +49,7 @@ public enum EHeightFogMode
public final boolean above; public final boolean above;
public final boolean below; public final boolean below;
EHeightFogMode(boolean basedOnCamera, boolean above, boolean below) EDhApiHeightFogMode(boolean basedOnCamera, boolean above, boolean below)
{ {
this.basedOnCamera = basedOnCamera; this.basedOnCamera = basedOnCamera;
this.above = above; this.above = above;
@@ -0,0 +1,17 @@
package com.seibel.distanthorizons.api.enums.rendering;
/**
* OPAQUE_AND_TRANSPARENT, <br>
* OPAQUE, <br>
* TRANSPARENT, <br>
*
* @author James Seibel
* @version 2024-1-30
* @since API 2.0.0
*/
public enum EDhApiRenderPass
{
OPAQUE_AND_TRANSPARENT,
OPAQUE,
TRANSPARENT,
}
@@ -0,0 +1,70 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.rendering;
/**
* Default <br>
* Debug <br>
* Disabled <br>
*
* @since API 2.0.0
* @version 2024-4-6
*/
public enum EDhApiRendererMode
{
// Reminder:
// when adding items up the API minor version
// when removing items up the API major version
DEFAULT,
DEBUG,
DISABLED;
/** Used by the config GUI to cycle through the available rendering options */
public static EDhApiRendererMode next(EDhApiRendererMode type)
{
switch (type)
{
case DEFAULT:
return DEBUG;
case DEBUG:
return DISABLED;
default:
return DEFAULT;
}
}
/** Used by the config GUI to cycle through the available rendering options */
public static EDhApiRendererMode previous(EDhApiRendererMode type)
{
switch (type)
{
case DEFAULT:
return DISABLED;
case DEBUG:
return DEFAULT;
default:
return DEBUG;
}
}
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,23 +17,17 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.enums.rendering; package com.seibel.distanthorizons.api.enums.rendering;
/** /**
* OFF, <br> * DISABLED, <br>
* SHOW_WIREFRAME, <br> * FAKE, <br>
* SHOW_DETAIL, <br> * COMPLETE, <br>
* SHOW_DETAIL_WIREFRAME, <br> *
* SHOW_GENMODE, <br> * @since API 2.0.0
* SHOW_GENMODE_WIREFRAME, <br> * @version 2024-4-6
* SHOW_OVERLAPPING_QUADS, <br>
* SHOW_OVERLAPPING_QUADS_WIREFRAME, <br>
*
* @author Leetom
* @author James Seibel
* @version 2022-7-2
*/ */
public enum ETransparency public enum EDhApiTransparency
{ {
// Reminder: // Reminder:
// when adding items up the API minor version // when adding items up the API minor version
@@ -43,13 +37,14 @@ public enum ETransparency
DISABLED(false, false), DISABLED(false, false),
FAKE(true, true), FAKE(true, true),
COMPLETE(true, false); COMPLETE(true, false);
public final boolean tranparencyEnabled; public final boolean transparencyEnabled;
public final boolean fakeTransparencyEnabled; public final boolean fakeTransparencyEnabled;
ETransparency(boolean tranparencyEnabled, boolean fakeTransparencyEnabled) EDhApiTransparency(boolean transparencyEnabled, boolean fakeTransparencyEnabled)
{ {
this.tranparencyEnabled = tranparencyEnabled; this.transparencyEnabled = transparencyEnabled;
this.fakeTransparencyEnabled = fakeTransparencyEnabled; this.fakeTransparencyEnabled = fakeTransparencyEnabled;
} }
} }
@@ -0,0 +1,86 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.worldGeneration;
/**
* PRE_EXISTING_ONLY <br>
* SURFACE <br>
* FEATURES <br><br>
*
* In order of fastest to slowest.
*
* @author James Seibel
* @author Leonardo Amato
* @version 2022-12-10
* @since API 1.0.0
*/
public enum EDhApiDistantGeneratorMode
{
// Reminder:
// when adding items up the API minor version
// when removing items up the API major version
/** Don't generate any new terrain, just generate LODs for already generated chunks. */
PRE_EXISTING_ONLY((byte) 1),
/*
* Not currently implemented <br><br>
*
* Only generate the biomes and use biome
* grass/foliage color, water color, or ice color
* to generate the color. <br>
* Doesn't generate height, everything is shown at sea level.
*/
//BIOME_ONLY((byte) 2),
/*
* Not currently implemented <br><br>
*
* Same as BIOME_ONLY, except instead
* of always using sea level as the LOD height
* different biome types (mountain, ocean, forest, etc.)
* use predetermined heights to simulate having height data.
*/
//BIOME_ONLY_SIMULATE_HEIGHT((byte) 3),
/**
* Generate the world surface,
* this does NOT include caves, trees,
* or structures.
*/
SURFACE((byte) 4),
/**
* Generate including structures.
* NOTE: This may cause world generation bugs or instability,
* since some features can cause concurrentModification exceptions.
*/
FEATURES((byte) 5);
/** The higher the number the more complete the generation is. */
public final byte complexity;
EDhApiDistantGeneratorMode(byte complexity) { this.complexity = complexity; }
}
@@ -0,0 +1,36 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.worldGeneration;
/**
* SERVER_LEVEL, <br>
* CLIENT_LEVEL, <br>
* UNKNOWN <br>
*
* @author James Seibel
* @version 2022-7-13
* @since API 1.0.0
*/
public enum EDhApiLevelType
{
SERVER_LEVEL,
CLIENT_LEVEL,
UNKNOWN
}
@@ -0,0 +1,97 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.worldGeneration;
/**
* EMPTY, <br>
* STRUCTURE_START, <br>
* STRUCTURE_REFERENCE, <br>
* BIOMES, <br>
* NOISE, <br>
* SURFACE, <br>
* CARVERS, <br>
* LIQUID_CARVERS, <br>
* FEATURES, <br>
* LIGHT, <br>
*
* @author James Seibel
* @version 2023-4-20
* @since API 1.0.0
*/
public enum EDhApiWorldGenerationStep
{
EMPTY(0, "empty"),
STRUCTURE_START(1, "structure_start"),
STRUCTURE_REFERENCE(2, "structure_reference"),
BIOMES(3, "biomes"),
NOISE(4, "noise"),
SURFACE(5, "surface"),
CARVERS(6, "carvers"),
LIQUID_CARVERS(7, "liquid_carvers"),
FEATURES(8, "features"),
LIGHT(9, "light");
/** used when serializing this enum. */
public final String name;
public final byte value;
EDhApiWorldGenerationStep(int value, String name)
{
this.value = (byte) value;
this.name = name;
}
//=========//
// parsing //
//=========//
/** @return null if the value doesn't correspond to a {@link EDhApiWorldGenerationStep}. */
public static EDhApiWorldGenerationStep fromValue(int value)
{
for (EDhApiWorldGenerationStep genStep : EDhApiWorldGenerationStep.values())
{
if (genStep.value == value)
{
return genStep;
}
}
return null;
}
/** @return null if the value doesn't correspond to a {@link EDhApiWorldGenerationStep}. */
public static EDhApiWorldGenerationStep fromName(String name)
{
for (EDhApiWorldGenerationStep genStep : EDhApiWorldGenerationStep.values())
{
if (genStep.name.equals(name))
{
return genStep;
}
}
return null;
}
}
@@ -0,0 +1,56 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.enums.worldGeneration;
import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiDistantGeneratorMode;
import com.seibel.distanthorizons.api.interfaces.override.worldGenerator.IDhApiWorldGenerator;
import java.util.concurrent.ExecutorService;
import java.util.function.Consumer;
/**
* VANILLA_CHUNKS, <br>
* API_CHUNKS <br>
*
* @author Builderb0y, James Seibel
* @version 2023-12-21
* @since API 2.0.0
*/
public enum EDhApiWorldGeneratorReturnType
{
/**
* when this constant is returned by {@link IDhApiWorldGenerator#getReturnType()},
* {@link IDhApiWorldGenerator#generateChunks(int, int, byte, byte, EDhApiDistantGeneratorMode, ExecutorService, Consumer)}
* will be used when generating terrain.
*
* @since API 2.0.0
*/
VANILLA_CHUNKS,
/**
* when this constant is returned by {@link IDhApiWorldGenerator#getReturnType()},
* {@link IDhApiWorldGenerator#generateApiChunks(int, int, byte, byte, EDhApiDistantGeneratorMode, ExecutorService, Consumer)}
* will be used when generating terrain.
*
* @since API 2.0.0
*/
API_CHUNKS;
}
@@ -0,0 +1,45 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces;
/**
* Implemented by wrappers so developers can
* access the underlying Minecraft object(s).
*
* @author James Seibel
* @version 2023-6-17
* @since API 1.0.0
*/
public interface IDhApiUnsafeWrapper
{
/**
* Returns the Minecraft object this wrapper contains. <br>
* <strong>Warning</strong>: This object will be Minecraft
* version dependent and may change without notice. <br> <br>
*
* In order to cast this object to something usable, you may want
* to use <code>obj.getClass()</code> when in your IDE
* in order to determine what object this method returns for
* the specific version of Minecraft you are developing for.
*/
Object getWrappedMcObject();
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,15 +17,19 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.interfaces.block; package com.seibel.distanthorizons.api.interfaces.block;
import com.seibel.lod.api.interfaces.IDhApiUnsafeWrapper; import com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper;
/** /**
* A Minecraft version independent way of handling Biomes.
*
* @author James Seibel * @author James Seibel
* @version 3-5-2022 * @version 3-5-2022
* @since API 1.0.0
*/ */
public interface IDhApiBiomeWrapper extends IDhApiUnsafeWrapper public interface IDhApiBiomeWrapper extends IDhApiUnsafeWrapper
{ {
String getName(); String getName();
} }
@@ -0,0 +1,55 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.block;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiBlockMaterial;
import com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper;
/**
* A Minecraft version independent way of handling Blocks.
*
* @author James Seibel
* @version 2023-6-11
* @since API 1.0.0
*/
public interface IDhApiBlockStateWrapper extends IDhApiUnsafeWrapper
{
/** @since API 1.0.0 */
boolean isAir();
/** @since API 1.0.0 */
boolean isSolid();
/** @since API 1.0.0 */
boolean isLiquid();
/**
* Returns the full serialized form of the given block
* as defined by DH's serialization methods.
* @since API 3.0.0
*/
String getSerialString();
/**
* Returns the byte value representing the {@link EDhApiBlockMaterial} enum.
* @see EDhApiBlockMaterial
* @since API 3.0.0
*/
byte getMaterialId();
}
@@ -0,0 +1,43 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config;
import com.seibel.distanthorizons.api.interfaces.config.both.IDhApiWorldGenerationConfig;
import com.seibel.distanthorizons.api.interfaces.config.client.*;
/**
* This interfaces holds all config groups
* the API has access to for easy access.
*
* @author James Seibel
* @version 2023-6-14
* @since API 1.0.0
*/
public interface IDhApiConfig
{
IDhApiGraphicsConfig graphics();
IDhApiWorldGenerationConfig worldGenerator();
IDhApiMultiplayerConfig multiplayer();
IDhApiMultiThreadingConfig multiThreading();
// note: DON'T add the Auto Updater to this API. We only want the user's to have the ability to control when things are downloaded to their machines.
//IDhApiLoggingConfig logging(); // TODO implement
IDhApiDebuggingConfig debugging();
}
@@ -0,0 +1,35 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config;
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable;
/**
* This interface is just used to organize API config groups so
* they can be more easily handled together.
*
* @author James Seibel
* @version 9-15-2022
* @since API 1.0.0
*/
public interface IDhApiConfigGroup extends IBindable
{
}
@@ -0,0 +1,89 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config;
import java.util.function.Consumer;
/**
* An interface for Distant Horizon's Config.
*
* @param <T> The data type of this config.
* @author James Seibel
* @version 2023-12-7
* @since API 1.0.0
*/
public interface IDhApiConfigValue<T>
{
/**
* Returns the active value for this config. <br>
* Returns the True value if either the config cannot be overridden by
* the API or if it hasn't been set by the API.
*/
T getValue();
/**
* Returns the value held by this config. <br>
* This is the value stored in the config file.
*/
T getTrueValue();
/**
* Returns the value of the config if it was set by the API.
* Returns null if the config hasn't been set by the API.
*
* @since API 2.0.0
*/
T getApiValue();
/**
* Sets the config's value. <br>
* If the newValue is set to null then the config
* will revert to using the True Value
* (IE the value visible in the config menu).<br>
* If the config cannot be set via the API this method will return false. <br><br>
*
* @return true if the value was set, false otherwise.
*/
boolean setValue(T newValue);
/**
* Un-sets the config's API value. <br>
* After this method is called this config will
* use the value set in the config menu.
*
* @return true if the value was set, false otherwise.
* @since API 2.0.0
*/
boolean clearValue();
/** @return true if this config can be set via the API, false otherwise. */
boolean getCanBeOverrodeByApi();
/** Returns the default value for this config. */
T getDefaultValue();
/** Returns the max value for this config, null if there is no max. */
T getMaxValue();
/** Returns the min value for this config, null if there is no min. */
T getMinValue();
/** Adds a {@link Consumer} that will be called whenever the config changes to a new value. */
void addChangeListener(Consumer<T> onValueChangeFunc);
//void removeListener(Consumer<T> onValueChangeFunc); // not currently implemented
}
@@ -0,0 +1,47 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.both;
import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiDistantGeneratorMode;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
/**
* Distant Horizons' world generation configuration. <br><br>
*
* Note: Chunks generated via DH's world generator are NOT saved in Minecraft's vanilla save system.
*
* @author James Seibel
* @version 2022-9-15
* @since API 1.0.0
*/
public interface IDhApiWorldGenerationConfig extends IDhApiConfigGroup
{
/**
* Defines whether LOD chunks will be generated
* outside Minecraft's vanilla render distance.
*/
IDhApiConfigValue<Boolean> enableDistantWorldGeneration();
/** Defines to what level LOD chunks will be generated. */
IDhApiConfigValue<EDhApiDistantGeneratorMode> distantGeneratorMode();
}
@@ -0,0 +1,65 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
/**
* Distant Horizons' fog configuration. <br><br>
*
* @author James Seibel
* @version 2022-9-6
* @since API 1.0.0
*/
public interface IDhApiAmbientOcclusionConfig extends IDhApiConfigGroup
{
/** Determines if Ambient Occlusion is rendered */
IDhApiConfigValue<Boolean> enabled();
/**
* Determines how many points in space are sampled for the occlusion test.
* Higher numbers will improve quality and reduce banding, but will increase GPU load.
*/
IDhApiConfigValue<Integer> sampleCount();
/** Determines the radius Screen Space Ambient Occlusion is applied, measured in blocks. */
IDhApiConfigValue<Double> radius();
/** Determines how dark the Screen Space Ambient Occlusion effect will be. */
IDhApiConfigValue<Double> strength();
/** Increasing the value can reduce banding at the cost of reducing the strength of the effect. */
IDhApiConfigValue<Double> bias();
/**
* Determines how dark the occlusion shadows can be. <br>
* 0 = totally black at the corners <br>
* 1 = no shadow
*/
IDhApiConfigValue<Double> minLight();
/**
* The radius, measured in pixels, that blurring is calculated. <br>
* Higher numbers will reduce banding at the cost of GPU performance.
*/
IDhApiConfigValue<Integer> blurRadius();
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,25 +17,35 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.interfaces.config.client; package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.lod.api.enums.rendering.EDebugMode; import com.seibel.distanthorizons.api.enums.rendering.EDhApiDebugRendering;
import com.seibel.lod.api.interfaces.config.IDhApiConfigValue; import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
import com.seibel.lod.api.interfaces.config.IDhApiConfigGroup; import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
/** /**
* Distant Horizons' debug configuration. * Distant Horizons' debug configuration.
* *
* @author James Seibel * @author James Seibel
* @version 2022-9-15 * @version 2022-9-15
* @since API 1.0.0
*/ */
public interface IDhApiDebuggingConfig extends IDhApiConfigGroup public interface IDhApiDebuggingConfig extends IDhApiConfigGroup
{ {
/** Can be used to debug the standard fake chunk rendering. */ /** Can be used to debug the standard fake chunk rendering. */
IDhApiConfigValue<EDebugMode> getDebugRenderMode(); IDhApiConfigValue<EDhApiDebugRendering> debugRendering();
/** If enabled debug keybindings can be used. */ /** If enabled debug keybindings can be used. */
IDhApiConfigValue<Boolean> getEnableDebugKeybindings(); IDhApiConfigValue<Boolean> debugKeybindings();
/** If enabled all LODs will be rendered as wireframe. */
IDhApiConfigValue<Boolean> renderWireframe();
/** If enabled Distant Horizons will attempt to disable Minecraft's block rendering so only LODs will render. */
IDhApiConfigValue<Boolean> lodOnlyMode();
/** If enabled Distant Horizons' debug wireframe rendering will be enabled. */
IDhApiConfigValue<Boolean> debugWireframeRendering();
} }
@@ -0,0 +1,71 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiFogFalloff;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
/**
* Distant Horizons' fog configuration. <br><br>
*
* Note: unless an option explicitly states that it modifies
* Minecraft's vanilla rendering (like DisableVanillaFog)
* these settings will only affect Distant horizons' fog.
*
* @author James Seibel
* @version 2022-6-14
* @since API 1.0.0
*/
public interface IDhApiFarFogConfig extends IDhApiConfigGroup
{
/**
* Defines where the fog starts as a percent of the
* fake chunks render distance radius. <br>
* Can be greater than the fog end distance to invert the fog direction. <br> <br>
*
* 0.0 = fog starts at the camera <br>
* 1.0 = fog starts at the edge of the fake chunk render distance <br>
*/
IDhApiConfigValue<Double> farFogStartDistance();
/**
* Defines where the fog ends as a percent of the radius
* of the fake chunks render distance. <br>
* Can be less than the fog start distance to invert the fog direction. <br> <br>
*
* 0.0 = fog ends at the camera <br>
* 1.0 = fog ends at the edge of the fake chunk render distance <br>
*/
IDhApiConfigValue<Double> farFogEndDistance();
/** Defines how opaque the fog is at its thinnest point. */
IDhApiConfigValue<Double> farFogMinThickness();
/** Defines how opaque the fog is at its thickest point. */
IDhApiConfigValue<Double> farFogMaxThickness();
/** Defines how the fog changes in thickness. */
IDhApiConfigValue<EDhApiFogFalloff> farFogFalloff();
/** Defines the fog density. */
IDhApiConfigValue<Double> farFogDensity();
}
@@ -0,0 +1,71 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiFogColorMode;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiFogDrawMode;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
/**
* Distant Horizons' fog configuration. <br><br>
*
* Note: unless an option explicitly states that it modifies
* Minecraft's vanilla rendering (like DisableVanillaFog)
* these settings will only affect Distant horizons' fog.
*
* @author James Seibel
* @version 2022-6-14
* @since API 1.0.0
*/
public interface IDhApiFogConfig extends IDhApiConfigGroup
{
//===============//
// inner configs //
//===============//
/**
* The advanced fog config.
*/
IDhApiFarFogConfig farFog();
/**
* The height fog config.
*/
IDhApiHeightFogConfig heightFog();
//====================//
// basic fog settings //
//====================//
/** Should be used to enable/disable fog rendering. */
IDhApiConfigValue<EDhApiFogDrawMode> drawMode();
/** Can be used to enable support with mods that change vanilla MC's fog color. */
IDhApiConfigValue<EDhApiFogColorMode> color();
/**
* If enabled attempts to disable vanilla MC's fog on real chunks. <br>
* May not play nice with other fog editing mods.
*/
IDhApiConfigValue<Boolean> disableVanillaFog();
}
@@ -0,0 +1,46 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
/**
* Distant Horizons' generic rendering configuration. <br><br>
*
* @author James Seibel
* @version 2024-7-11
* @since API 3.0.0
*/
public interface IDhApiGenericRenderingConfig extends IDhApiConfigGroup
{
/**
* If enabled DH will render generic objects into its terrain pass. <br>
* This includes: clouds, beacons, and API added objects.
*/
IDhApiConfigValue<Boolean> renderingEnabled();
/** If enabled DH will render beacon beams. */
IDhApiConfigValue<Boolean> beaconRenderingEnabled();
/** If enabled DH will render clouds. */
IDhApiConfigValue<Boolean> cloudRenderingEnabled();
}
@@ -0,0 +1,192 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.distanthorizons.api.enums.config.*;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiRendererMode;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiTransparency;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
/**
* Distant Horizons' graphics/rendering configuration.
*
* @author James Seibel
* @version 2023-6-14
* @since API 1.0.0
*/
public interface IDhApiGraphicsConfig extends IDhApiConfigGroup
{
//===============//
// inner configs //
//===============//
IDhApiFogConfig fog();
IDhApiAmbientOcclusionConfig ambientOcclusion();
IDhApiNoiseTextureConfig noiseTexture();
IDhApiGenericRenderingConfig genericRendering();
//========================//
// basic graphic settings //
//========================//
/** The distance is the radius measured in chunks. */
IDhApiConfigValue<Integer> chunkRenderDistance();
/**
* Simplified version of {@link IDhApiGraphicsConfig#renderingMode()}
* that only enables/disables the fake chunk rendering. <br><br>
*
* Changing this config also changes {@link IDhApiGraphicsConfig#renderingMode()}'s value.
*/
IDhApiConfigValue<Boolean> renderingEnabled();
/**
* Can be used to enable/disable fake chunk rendering or enable the debug renderer. <br><br>
*
* The debug renderer is used to confirm rendering is working at and will draw
* a single multicolor rhombus on the screen in skybox space (AKA behind MC's rendering). <br><br>
*
* Changing this config also changes {@link IDhApiGraphicsConfig#renderingEnabled()}'s value.
*/
IDhApiConfigValue<EDhApiRendererMode> renderingMode();
//==================//
// graphic settings //
//==================//
/** Defines how detailed fake chunks are in the horizontal direction */
IDhApiConfigValue<EDhApiMaxHorizontalResolution> maxHorizontalResolution();
/** Defines how detailed fake chunks are in the vertical direction */
IDhApiConfigValue<EDhApiVerticalQuality> verticalQuality();
/** Modifies the quadratic function fake chunks use for horizontal quality drop-off. */
IDhApiConfigValue<EDhApiHorizontalQuality> horizontalQuality();
IDhApiConfigValue<EDhApiTransparency> transparency();
/** Defines what blocks won't be rendered as LODs. */
IDhApiConfigValue<EDhApiBlocksToAvoid> blocksToAvoid();
/**
* Defines if the color of avoided blocks will color the block below them. <Br>
* (IE: if flowers are avoided, should they color the grass below them?)
*/
IDhApiConfigValue<Boolean> tintWithAvoidedBlocks();
/*
* The same as vanilla Minecraft's biome blending. <br><br>
*
* 0 = blending of 1x1 aka off <br>
* 1 = blending of 3x3 <br>
* 2 = blending of 5x5 <br>
* ... <br>
*/
// IDhApiConfigValue<Integer> getBiomeBlending();
//===========================//
// advanced graphic settings //
//===========================//
/**
* Sets the radius used by the near clip shader to reduce
* overdraw. <br>
* Measured in percentages of the render distance, IE: <br>
* 0.5 = 50% vanilla render distance <br>
* 0.1 = 10% vanilla render distance <br>
* <br>
* Setting this to 0 will reduce/prevent holes in the world due to clipping to close to the camera
* but may cause overdraw issues with transparent or non-full blocks.
*
* @since API 2.0.0
*/
IDhApiConfigValue<Double> overdrawPreventionRadius();
/**
* Modifies how bright fake chunks are. <br>
* This is done when generating the vertex data and is applied before any shaders.
*/
IDhApiConfigValue<Double> brightnessMultiplier();
/**
* Modifies how saturated fake chunks are. <br>
* This is done when generating the vertex data and is applied before any shaders.
*/
IDhApiConfigValue<Double> saturationMultiplier();
/** Defines if Distant Horizons should attempt to cull fake chunk cave geometry. */
IDhApiConfigValue<Boolean> caveCullingEnabled();
/** Defines what height cave culling should be used below if enabled. */
IDhApiConfigValue<Integer> caveCullingHeight();
/** This ratio is relative to Earth's real world curvature. */
IDhApiConfigValue<Integer> earthCurvatureRatio();
/** If enabled vanilla chunk rendering is disabled and only fake chunks are rendered. */
IDhApiConfigValue<Boolean> lodOnlyMode();
/**
* Setting this to a non-zero number will modify vanilla Minecraft's LOD Bias,
* increasing how quickly its textures fade away.
*/
IDhApiConfigValue<Double> lodBias();
/**
* Determines how LODs should be shaded.
*
* @since API 2.0.0
*/
IDhApiConfigValue<EDhApiLodShading> lodShading();
/**
* Sets whether LODs outside the view frustum culling will
* be culled. <br><br>
*
* Disabling this will prevent LODs not rendering on the corner
* of the users vision and may fix issues if LODs appear to
* start/stop rendering incorrectly based on the camera direction,
* but will also reduce FPS.
*
* @since API 2.0.0
* @see IDhApiGraphicsConfig#disableShadowFrustumCulling()
*/
IDhApiConfigValue<Boolean> disableFrustumCulling();
/**
* Identical to the other frustum culling option, except that it is
* only used when a shader mod is present using the DH API
* and the shadow pass is being rendered. <br><br>
*
* Disable this if shadows render incorrectly.
*
* @since API 2.0.0
* @see IDhApiGraphicsConfig#disableFrustumCulling()
*/
IDhApiConfigValue<Boolean> disableShadowFrustumCulling();
}
@@ -0,0 +1,72 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiFogFalloff;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiHeightFogMixMode;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiHeightFogMode;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
/**
* Distant Horizons' fog configuration. <br><br>
*
* Note: unless an option explicitly states that it modifies
* Minecraft's vanilla rendering (like DisableVanillaFog)
* these settings will only affect Distant horizons' fog.
*
* @author James Seibel
* @version 2022-6-14
* @since API 1.0.0
*/
public interface IDhApiHeightFogConfig extends IDhApiConfigGroup
{
/** Defines how the height fog mixes. */
IDhApiConfigValue<EDhApiHeightFogMixMode> heightFogMixMode();
/** Defines how the height fog is drawn relative to the camera or world. */
IDhApiConfigValue<EDhApiHeightFogMode> heightFogMode();
/**
* Defines the height fog's base height if {@link IDhApiHeightFogConfig#heightFogMode()}
* is set to use a specific height.
*/
IDhApiConfigValue<Double> heightFogBaseHeight();
/** Defines the height fog's starting height as a percent of the world height. */
IDhApiConfigValue<Double> heightFogStartingHeightPercent();
/** Defines the height fog's ending height as a percent of the world height. */
IDhApiConfigValue<Double> heightFogEndingHeightPercent();
/** Defines how opaque the height fog is at its thinnest point. */
IDhApiConfigValue<Double> heightFogMinThickness();
/** Defines how opaque the height fog is at its thickest point. */
IDhApiConfigValue<Double> heightFogMaxThickness();
/** Defines how the height fog changes in thickness. */
IDhApiConfigValue<EDhApiFogFalloff> heightFogFalloff();
/** Defines the height fog's density. */
IDhApiConfigValue<Double> heightFogDensity();
}
@@ -0,0 +1,34 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
/**
* Distant Horizons' logging configuration. <br><br>
*
* @author James Seibel
* @version 2022-6-14
* @since API 1.0.0
*/
public interface IDhApiLoggingConfig extends IDhApiConfigGroup
{
// TODO implement
}
@@ -0,0 +1,58 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
/**
* Distant Horizons' threading configuration.
*
* @author James Seibel
* @version 2023-10-29
* @since API 1.0.0
*/
public interface IDhApiMultiThreadingConfig extends IDhApiConfigGroup
{
/**
* Defines how many world generator threads are used to generate
* terrain outside Minecraft's vanilla render distance. <br>
* <br>
* If the number of threads is less than 1 it will be treated as a percentage
* representing how often the single thread will actively generate terrain.
*/
IDhApiConfigValue<Integer> worldGeneratorThreads();
/** Defines how many file handler threads are used. */
IDhApiConfigValue<Integer> fileHandlerThreads();
/**
* Defines how many threads are used
* to build LODs. <br><br>
*
* This includes: <br>
* - lighting <br>
* - Chunk -> LOD conversion <br>
* - Buffer generation <br>
*/
IDhApiConfigValue<Integer> lodBuilderThreads();
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,17 +17,18 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.interfaces.config.client; package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.lod.api.interfaces.config.IDhApiConfigValue; import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
import com.seibel.lod.api.enums.config.EServerFolderNameMode; import com.seibel.distanthorizons.api.enums.config.EDhApiServerFolderNameMode;
import com.seibel.lod.api.interfaces.config.IDhApiConfigGroup; import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
/** /**
* Distant Horizons' client-side multiplayer configuration. * Distant Horizons' client-side multiplayer configuration.
* *
* @author James Seibel * @author James Seibel
* @version 2022-9-15 * @version 2023-6-14
* @since API 1.0.0
*/ */
public interface IDhApiMultiplayerConfig extends IDhApiConfigGroup public interface IDhApiMultiplayerConfig extends IDhApiConfigGroup
{ {
@@ -36,18 +37,17 @@ public interface IDhApiMultiplayerConfig extends IDhApiConfigGroup
* Defines how multiplayer server folders are named. <br> * Defines how multiplayer server folders are named. <br>
* Note: Changing this while connected to a multiplayer world will cause undefined behavior! * Note: Changing this while connected to a multiplayer world will cause undefined behavior!
*/ */
IDhApiConfigValue<EServerFolderNameMode> getFolderSavingMode(); IDhApiConfigValue<EDhApiServerFolderNameMode> folderSavingMode();
/** /**
* Defines the necessary similarity (as a percent) that two potential levels * Defines the necessary similarity (as a percent) that two potential levels
* need in order to be considered the same. <br> <br> * need in order to be considered the same. <br> <br>
* *
* Setting this to zero causes every level of a specific dimension type to be consider * Setting this to zero causes every level of a specific dimension type to be considered
* the same level. <br> * the same level. <br>
* Setting this to a non-zero value allows for usage in servers that user Multiverse * Setting this to a non-zero value allows for usage in servers that user Multiverse
* or similar mods. * or similar mods.
*/ */
IDhApiConfigValue<Double> getMultiverseSimilarityRequirement(); IDhApiConfigValue<Double> multiverseSimilarityRequirement();
} }
@@ -0,0 +1,49 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.config.client;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup;
import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue;
/**
* Distant Horizons' noise texture configuration. <br><br>
*
* @author James Seibel
* @version 2022-6-14
* @since API 1.0.0
*/
public interface IDhApiNoiseTextureConfig extends IDhApiConfigGroup
{
/** If enabled a noise texture will be rendered on the LODs. */
IDhApiConfigValue<Boolean> noiseEnabled();
/** Defines how many steps of noise should be applied. */
IDhApiConfigValue<Integer> noiseSteps();
/** Defines how intense the noise will be. */
IDhApiConfigValue<Double> noiseIntensity();
/**
* Defines how far should the noise texture render before it fades away. (in blocks) <br>
* Set to 0 to disable noise from fading away
*/
IDhApiConfigValue<Integer> noiseDropoff();
}
@@ -0,0 +1,21 @@
package com.seibel.distanthorizons.api.interfaces.data;
/**
* Can be used to drastically speed up repeat read operations in {@link IDhApiTerrainDataRepo}.
*
* @see IDhApiTerrainDataRepo
*
* @author James Seibel
* @version 2024-7-14
* @since API 3.0.0
*/
public interface IDhApiTerrainDataCache
{
/**
* Removes any data that's currently stored in this cache.
* This cane be done to free up memory or invalidate
* the cache so fresh data can be pulled in.
*/
void clear();
}
@@ -0,0 +1,169 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.data;
import com.seibel.distanthorizons.api.enums.EDhApiDetailLevel;
import com.seibel.distanthorizons.api.interfaces.override.worldGenerator.IDhApiWorldGenerator;
import com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper;
import com.seibel.distanthorizons.api.objects.DhApiResult;
import com.seibel.distanthorizons.api.objects.data.DhApiRaycastResult;
import com.seibel.distanthorizons.api.objects.data.DhApiTerrainDataPoint;
/**
* Used to interface with Distant Horizons' terrain data.
*
* @see IDhApiTerrainDataCache
*
* @author James Seibel
* @version 2023-6-22
* @since API 1.0.0
*/
public interface IDhApiTerrainDataRepo
{
//=========//
// getters //
//=========//
/** @see IDhApiTerrainDataRepo#getSingleDataPointAtBlockPos(IDhApiLevelWrapper, int, int, int, IDhApiTerrainDataCache) */
default DhApiResult<DhApiTerrainDataPoint> getSingleDataPointAtBlockPos(IDhApiLevelWrapper levelWrapper, int blockPosX, int blockPosY, int blockPosZ) { return this.getSingleDataPointAtBlockPos(levelWrapper, blockPosX, blockPosY, blockPosZ, null); }
/**
* Returns the terrain datapoint at the given block position, at/or containing the given Y position.
* @since API 3.0.0
*/
DhApiResult<DhApiTerrainDataPoint> getSingleDataPointAtBlockPos(IDhApiLevelWrapper levelWrapper, int blockPosX, int blockPosY, int blockPosZ, IDhApiTerrainDataCache dataCache);
/** @see IDhApiTerrainDataRepo#getColumnDataAtBlockPos(IDhApiLevelWrapper, int, int, IDhApiTerrainDataCache) */
default DhApiResult<DhApiTerrainDataPoint[]> getColumnDataAtBlockPos(IDhApiLevelWrapper levelWrapper, int blockPosX, int blockPosZ) { return this.getColumnDataAtBlockPos(levelWrapper, blockPosX, blockPosZ, null); }
/**
* Returns every datapoint in the column located at the given block X and Z position top to bottom.
* @since API 3.0.0
*/
DhApiResult<DhApiTerrainDataPoint[]> getColumnDataAtBlockPos(IDhApiLevelWrapper levelWrapper, int blockPosX, int blockPosZ, IDhApiTerrainDataCache dataCache);
/** @see IDhApiTerrainDataRepo#getAllTerrainDataAtChunkPos(IDhApiLevelWrapper, int, int, IDhApiTerrainDataCache) */
default DhApiResult<DhApiTerrainDataPoint[][][]> getAllTerrainDataAtChunkPos(IDhApiLevelWrapper levelWrapper, int chunkPosX, int chunkPosZ) { return this.getAllTerrainDataAtChunkPos(levelWrapper, chunkPosX, chunkPosZ, null); }
/**
* Returns every datapoint in the given chunk's X and Z position. <br><br>
*
* The returned array is ordered: [relativeBlockX][relativeBlockZ][columnIndex] <br>
* RelativeBlockX/Z are relative to the block position closest to negative infinity in the chunk's position. <br>
* The column data is ordered from top to bottom. Note: each column may have a different number of values. <br>
*
* @since API 3.0.0
*/
DhApiResult<DhApiTerrainDataPoint[][][]> getAllTerrainDataAtChunkPos(IDhApiLevelWrapper levelWrapper, int chunkPosX, int chunkPosZ, IDhApiTerrainDataCache dataCache);
/** @see IDhApiTerrainDataRepo#getAllTerrainDataAtRegionPos(IDhApiLevelWrapper, int, int, IDhApiTerrainDataCache) */
default DhApiResult<DhApiTerrainDataPoint[][][]> getAllTerrainDataAtRegionPos(IDhApiLevelWrapper levelWrapper, int regionPosX, int regionPosZ) { return this.getAllTerrainDataAtRegionPos(levelWrapper, regionPosX, regionPosZ, null); }
/**
* Returns every datapoint in the given region's X and Z position. <br><br>
*
* The returned array is ordered: [relativeBlockX][relativeBlockZ][columnIndex] <br>
* RelativeBlockX/Z are relative to the block position closest to negative infinity in the region's position. <br>
* The column data is ordered from top to bottom. Note: each column may have a different number of values. <br>
*
* @since API 3.0.0
*/
DhApiResult<DhApiTerrainDataPoint[][][]> getAllTerrainDataAtRegionPos(IDhApiLevelWrapper levelWrapper, int regionPosX, int regionPosZ, IDhApiTerrainDataCache dataCache);
/** @see IDhApiTerrainDataRepo#getAllTerrainDataAtDetailLevelAndPos(IDhApiLevelWrapper, byte, int, int, IDhApiTerrainDataCache) */
default DhApiResult<DhApiTerrainDataPoint[][][]> getAllTerrainDataAtRegionPos(IDhApiLevelWrapper levelWrapper, byte detailLevel, int posX, int posZ) { return this.getAllTerrainDataAtDetailLevelAndPos(levelWrapper, detailLevel, posX, posZ, null); }
/**
* Returns every datapoint in the column located at the given detail level and X/Z position. <br>
* This can be used to return terrain data for non-standard sizes (IE 2x2 blocks or 2x2 chunks).
*
* @param detailLevel a positive byte defining the detail level of the returned data. <br>
* Every increase doubles the width of the returned area. <br>
* Example values: 0 = block, 1 = 2x2 blocks, 2 = 4x4 blocks, ... 4 = chunk (16x16 blocks), ... 9 = region (512x512 blocks) <br>
* See {@link EDhApiDetailLevel} for more information.
*
* @since API 3.0.0
*/
DhApiResult<DhApiTerrainDataPoint[][][]> getAllTerrainDataAtDetailLevelAndPos(IDhApiLevelWrapper levelWrapper, byte detailLevel, int posX, int posZ, IDhApiTerrainDataCache dataCache);
/** @see IDhApiTerrainDataRepo#raycast(IDhApiLevelWrapper, double, double, double, float, float, float, int, IDhApiTerrainDataCache) */
default DhApiResult<DhApiRaycastResult> raycast(
IDhApiLevelWrapper levelWrapper,
double rayOriginX, double rayOriginY, double rayOriginZ,
float rayDirectionX, float rayDirectionY, float rayDirectionZ,
int maxRayBlockLength)
{
return this.raycast(
levelWrapper,
rayOriginX, rayOriginY, rayOriginZ,
rayDirectionX, rayDirectionY, rayDirectionZ,
maxRayBlockLength,
null);
}
/**
* Returns the datapoint and position of the LOD
* at the end of the given ray. <br><br>
*
* Will return "success" with a null datapoint if the ray reaches the max length without finding any data.
*
* @since API 3.0.0
*/
DhApiResult<DhApiRaycastResult> raycast(
IDhApiLevelWrapper levelWrapper,
double rayOriginX, double rayOriginY, double rayOriginZ,
float rayDirectionX, float rayDirectionY, float rayDirectionZ,
int maxRayBlockLength,
IDhApiTerrainDataCache dataCache);
//=========//
// setters //
//=========//
/**
* Sets the LOD data for the given chunk at the chunk's position. <br><br>
*
* Notes: <br>
* - Only works if the given {@link IDhApiLevelWrapper} points to a loaded level. <br>
* - If the player travels to this chunk, or the chunk is updated in some other way; your data will be replaced
* by whatever the current chunk is. <br>
* - This method may not update the LOD data immediately. Any other chunks that have
* been queued to update will be handled first.
*
* @param levelWrapper the level wrapper that the chunk should be saved to.
* @param chunkObjectArray see {@link IDhApiWorldGenerator#generateChunks} for what objects are expected.
* @throws ClassCastException if chunkObjectArray doesn't contain the right objects.
* The exception will contain the expected object(s).
*/
DhApiResult<Void> overwriteChunkDataAsync(IDhApiLevelWrapper levelWrapper, Object[] chunkObjectArray) throws ClassCastException;
//=========//
// helpers //
//=========//
/**
* @return a {@link IDhApiTerrainDataCache} backed by {@link java.lang.ref.SoftReference}'s.
* @since API 3.0.0
*/
IDhApiTerrainDataCache getSoftCache();
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,16 +17,17 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.interfaces.events; package com.seibel.distanthorizons.api.interfaces.events;
import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent; import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.lod.coreapi.interfaces.dependencyInjection.IDependencyInjector; import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IDependencyInjector;
/** /**
* This class takes care of dependency injection for API events. * This class takes care of dependency injection for API events.
* *
* @author James Seibel * @author James Seibel
* @version 2022-9-13 * @version 2022-9-13
* @since API 1.0.0
*/ */
public interface IDhApiEventInjector extends IDependencyInjector<IDhApiEvent> public interface IDhApiEventInjector extends IDependencyInjector<IDhApiEvent>
{ {
@@ -34,8 +35,10 @@ public interface IDhApiEventInjector extends IDependencyInjector<IDhApiEvent>
/** /**
* Unlinks the given event handler, preventing the handler from being called in the future. * Unlinks the given event handler, preventing the handler from being called in the future.
* *
* @throws IllegalArgumentException if the implementation object doesn't implement the interface * @param dependencyInterface the base interface for the {@link IDhApiEvent}
* @param dependencyClassToRemove the concrete {@link IDhApiEvent} class to remove
* @return true if the handler was unbound, false if the handler wasn't bound. * @return true if the handler was unbound, false if the handler wasn't bound.
* @throws IllegalArgumentException if the implementation object doesn't implement the interface
*/ */
// Note to self: Don't try adding a generic type to IDhApiEvent, the constructor won't accept it // Note to self: Don't try adding a generic type to IDhApiEvent, the constructor won't accept it
boolean unbind(Class<? extends IDhApiEvent> dependencyInterface, Class<? extends IDhApiEvent> dependencyClassToRemove) throws IllegalArgumentException; boolean unbind(Class<? extends IDhApiEvent> dependencyInterface, Class<? extends IDhApiEvent> dependencyClassToRemove) throws IllegalArgumentException;
@@ -46,8 +49,9 @@ public interface IDhApiEventInjector extends IDependencyInjector<IDhApiEvent>
* *
* @param abstractEvent event type * @param abstractEvent event type
* @param eventParameterObject event parameter * @param eventParameterObject event parameter
* @return if any of bound event handlers returned that this event should be canceled.
* @param <T> the parameter type taken by the event handlers. * @param <T> the parameter type taken by the event handlers.
* @param <U> the {@link IDhApiEvent}'s class
* @return if any of the bound event handlers notified that this event should be canceled.
*/ */
<T, U extends IDhApiEvent<T>> boolean fireAllEvents(Class<U> abstractEvent, T eventParameterObject); <T, U extends IDhApiEvent<T>> boolean fireAllEvents(Class<U> abstractEvent, T eventParameterObject);
@@ -0,0 +1,112 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.factories;
import com.seibel.distanthorizons.api.interfaces.block.IDhApiBiomeWrapper;
import com.seibel.distanthorizons.api.interfaces.block.IDhApiBlockStateWrapper;
import com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper;
import com.seibel.distanthorizons.api.DhApi;
import java.io.IOException;
/**
* This handles creating abstract wrapper objects.
*
* @author James Seibel
* @version 2023-12-16
* @since API 2.0.0
*/
public interface IDhApiWrapperFactory
{
/**
* Constructs a {@link IDhApiBiomeWrapper} for use by other DhApi methods.
*
* @param objectArray Expects the following Minecraft objects (in order) for each MC version: <br>
* <b>1.16</b> and <b>1.17</b><br>
* - [net.minecraft.world.level.biome.Biome] <br>
* <b>1.18</b> and <b>newer</b> <br>
* - {@literal [net.minecraft.core.Holder<net.minecraft.world.level.biome.Biome>] }<br>
*
* @param levelWrapper Expects a {@link IDhApiLevelWrapper} returned by one of DH's {@link DhApi.Delayed#worldProxy} methods. <br>
* A custom implementation of {@link IDhApiLevelWrapper} will not be accepted.
*
* @throws ClassCastException if any of the given parameters is of the wrong type.
* If thrown the error message will contain the list of expected object types in order.
*
* @since API 2.0.0
*/
IDhApiBiomeWrapper getBiomeWrapper(Object[] objectArray, IDhApiLevelWrapper levelWrapper) throws ClassCastException;
/**
* Constructs a {@link IDhApiBlockStateWrapper} for use by other DhApi methods.
*
* @param objectArray Expects the following Minecraft objects (in order) for each MC version: <br>
* <b>1.16</b> and <b>newer</b> <br>
* - [net.minecraft.world.level.block.state.BlockState]<br>
*
* @param levelWrapper Expects a {@link IDhApiBlockStateWrapper} returned by one of DH's {@link DhApi.Delayed#worldProxy} methods. <br>
* A custom implementation of {@link IDhApiBlockStateWrapper} will not be accepted.
*
* @throws ClassCastException if any of the given parameters is of the wrong type.
* If thrown the error message will contain the list of expected object types in order.
*
* @since API 2.0.0
*/
IDhApiBlockStateWrapper getBlockStateWrapper(Object[] objectArray, IDhApiLevelWrapper levelWrapper) throws ClassCastException;
/**
* Returns the {@link IDhApiBlockStateWrapper} representing air.
* @since API 2.0.0
*/
IDhApiBlockStateWrapper getAirBlockStateWrapper();
/**
* Constructs a {@link IDhApiBiomeWrapper} for use by other DhApi methods.
*
* @param resourceLocationString example: "minecraft:plains"
*
* @param levelWrapper Expects a {@link IDhApiLevelWrapper} returned by one of DH's {@link DhApi.Delayed#worldProxy} methods. <br>
* A custom implementation of {@link IDhApiLevelWrapper} will not be accepted.
*
* @throws IOException if the resourceLocationString wasn't able to be parsed or converted into a valid {@link IDhApiBiomeWrapper}
* @throws ClassCastException if the wrong levelWrapper type was given
*
* @since API 3.0.0
*/
IDhApiBiomeWrapper getBiomeWrapper(String resourceLocationString, IDhApiLevelWrapper levelWrapper) throws IOException, ClassCastException;
/**
* Constructs a {@link IDhApiBlockStateWrapper} for use by other DhApi methods.
* This returns the default blockstate for the given resource location.
*
* @param resourceLocationString examples: "minecraft:bedrock", "minecraft:stone", "minecraft:grass_block"
* @param levelWrapper Expects a {@link IDhApiBlockStateWrapper} returned by one of DH's {@link DhApi.Delayed#worldProxy} methods. <br>
* A custom implementation of {@link IDhApiBlockStateWrapper} will not be accepted.
*
* @throws IOException if the resourceLocationString wasn't able to be parsed or converted into a valid {@link IDhApiBlockStateWrapper}
* @throws ClassCastException if the wrong levelWrapper type was given
*
* @since API 3.0.0
*/
IDhApiBlockStateWrapper getDefaultBlockStateWrapper(String resourceLocationString, IDhApiLevelWrapper levelWrapper) throws IOException, ClassCastException;
}
@@ -0,0 +1,42 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.override;
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable;
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IOverrideInjector;
/**
* Implemented by all DhApi objects that can be overridden.
*
* @author James Seibel
* @version 2022-9-5
* @since API 1.0.0
*/
public interface IDhApiOverrideable extends IBindable
{
/**
* Higher (larger numerical) priorities override lower (smaller numerical) priorities. <br>
* For most developers this can be left at the default.
*
* @return The priority of this interface, the lowest legal value is {@link IOverrideInjector#MIN_NON_CORE_OVERRIDE_PRIORITY}.
*/
default int getPriority() { return IOverrideInjector.DEFAULT_NON_CORE_OVERRIDE_PRIORITY; }
}
@@ -0,0 +1,58 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.override.rendering;
import com.seibel.distanthorizons.api.enums.EDhApiDetailLevel;
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
import com.seibel.distanthorizons.api.objects.math.DhApiMat4f;
/**
* Used to determine if a LOD should be rendered or is outside the
* user's field of view.
*
* @author James Seibel
* @version 2024-2-6
* @since API 2.0.0
*/
public interface IDhApiCullingFrustum extends IDhApiOverrideable
{
/**
* Called before a render pass is done.
*
* @param worldMinBlockY the lowest block position this level allows.
* @param worldMaxBlockY the highest block position this level allows.
* @param worldViewProjection the projection matrix used in this render pass.
*/
void update(int worldMinBlockY, int worldMaxBlockY, DhApiMat4f worldViewProjection);
/**
* returns true if the LOD bounds intersect this frustum
*
* @param lodBlockPosMinX this LOD's starting block X position closest to negative infinity
* @param lodBlockPosMinZ this LOD's starting block Z position closest to negative infinity
* @param lodBlockWidth this LOD's width in blocks
* @param lodDetailLevel this LOD's detail level
*
* @see EDhApiDetailLevel
*/
boolean intersects(int lodBlockPosMinX, int lodBlockPosMinZ, int lodBlockWidth, int lodDetailLevel);
}
@@ -0,0 +1,59 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.override.rendering;
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
/**
* @author James Seibel
* @version 2024-1-24
* @since API 2.0.0
*/
public interface IDhApiFramebuffer extends IDhApiOverrideable
{
/**
* If this method is called that means this program has the highest priority as defined by {@link IDhApiOverrideable#getPriority()}
* and gets to decide if it wants to be used to render this frame or not. <br><br>
*
* If this method returns true then this program will be used for this frame. <br>
* If this returns false then the default DH {@link IDhApiShaderProgram} will be used instead.
*/
boolean overrideThisFrame();
/** Runs any necessary binding this program needs so rendering can be done. */
void bind();
/** Binds the given OpenGL depth texture ID. */
void addDepthAttachment(int textureId, boolean isCombinedStencil);
/** @return the OpenGL ID for this shader program */
int getId();
/** @return the OpenGL framebuffer status as defined by <code>glCheckFramebufferStatus</code> */
int getStatus();
/** Binds the given OpenGL texture ID to the given texture index relative to OpenGL's <code>GL_COLOR_ATTACHMENT0</code> */
void addColorAttachment(int textureIndex, int textureId);
/** Destroys this framebuffer's OpenGL object(s). */
void destroy();
}
@@ -0,0 +1,80 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.override.rendering;
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderableBoxGroup;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
import com.seibel.distanthorizons.api.objects.math.DhApiVec3d;
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBox;
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBoxGroupShading;
/**
* @see IDhApiShaderProgram
*
* @author James Seibel
* @version 2024-7-11
* @since API 3.0.0
*/
public interface IDhApiGenericObjectShaderProgram extends IDhApiOverrideable
{
/**
* If this method is called that means this program has the highest priority as defined by {@link IDhApiOverrideable#getPriority()}
* and gets to decide if it wants to be used to render this frame or not. <br><br>
*
* If this method returns true then this program will be used for this frame. <br>
* If this returns false then the default DH {@link IDhApiGenericObjectShaderProgram} will be used instead.
*/
boolean overrideThisFrame();
/** @return the OpenGL ID for this shader program */
int getId();
/** Free any OpenGL objects owned by this program. */
void free();
/** Runs any necessary binding this program needs so rendering can be done. */
void bind(DhApiRenderParam renderEventParam);
/** Runs any necessary unbinding this program needs so rendering can be done by another program. */
void unbind();
/** Binds the given Vertex Buffer Object to this shader program for rendering. */
void bindVertexBuffer(int vbo);
/** sets up the necessary uniforms for rendering */
void fillIndirectUniformData(
DhApiRenderParam renderParameters,
DhApiRenderableBoxGroupShading shading, IDhApiRenderableBoxGroup boxGroup,
DhApiVec3d camPos);
/** sets up the necessary uniforms for rendering */
void fillSharedDirectUniformData(
DhApiRenderParam renderParameters,
DhApiRenderableBoxGroupShading shading, IDhApiRenderableBoxGroup boxGroup,
DhApiVec3d camPos);
void fillDirectUniformData(
DhApiRenderParam renderParameters,
IDhApiRenderableBoxGroup boxGroup, DhApiRenderableBox box,
DhApiVec3d camPos);
}
@@ -0,0 +1,66 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.override.rendering;
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
import com.seibel.distanthorizons.api.objects.math.DhApiVec3f;
/**
* @see IDhApiGenericObjectShaderProgram
*
* @author James Seibel
* @version 2024-1-24
* @since API 2.0.0
*/
public interface IDhApiShaderProgram extends IDhApiOverrideable
{
/**
* If this method is called that means this program has the highest priority as defined by {@link IDhApiOverrideable#getPriority()}
* and gets to decide if it wants to be used to render this frame or not. <br><br>
*
* If this method returns true then this program will be used for this frame. <br>
* If this returns false then the default DH {@link IDhApiShaderProgram} will be used instead.
*/
boolean overrideThisFrame();
/** @return the OpenGL ID for this shader program */
int getId();
/** Free any OpenGL objects owned by this program. */
void free();
/** Runs any necessary binding this program needs so rendering can be done. */
void bind();
/** Runs any necessary unbinding this program needs so rendering can be done by another program. */
void unbind();
/** sets up the necessary uniforms for rendering */
void fillUniformData(DhApiRenderParam renderParameters);
/** sets the vec3 that all DH verticies should be offset by when rendering */
void setModelOffsetPos(DhApiVec3f modelPos);
/** Binds the given Vertex Buffer Object to this shader program for rendering. */
void bindVertexBuffer(int vbo);
}
@@ -0,0 +1,39 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.override.rendering;
/**
* The culling frustum used during Distant Horizons' shadow pass
* if another mod has enabled Distant Horizons' shadow
* pass via the API. <br><br>
*
* If no {@link IDhApiShadowCullingFrustum} is bound then culling
* will not be done in the shadow pass.
*
* @see IDhApiCullingFrustum
*
* @author James Seibel
* @version 2024-2-10
* @since API 2.0.0
*/
public interface IDhApiShadowCullingFrustum extends IDhApiCullingFrustum
{
// should be identical to the parent culling frustum
}
@@ -0,0 +1,142 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.override.worldGenerator;
import com.seibel.distanthorizons.api.enums.EDhApiDetailLevel;
import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiDistantGeneratorMode;
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
import com.seibel.distanthorizons.api.objects.data.DhApiChunk;
import com.seibel.distanthorizons.api.objects.data.DhApiTerrainDataPoint;
import com.seibel.distanthorizons.coreapi.util.BitShiftUtil;
import java.io.Closeable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.function.Consumer;
/**
* @author James Seibel
* @version 2023-6-22
* @since API 1.0.0
*/
public abstract class AbstractDhApiChunkWorldGenerator implements Closeable, IDhApiOverrideable, IDhApiWorldGenerator
{
//============//
// parameters //
//============//
@Override
public final byte getSmallestDataDetailLevel() { return EDhApiDetailLevel.BLOCK.detailLevel; }
@Override
public final byte getLargestDataDetailLevel() { return EDhApiDetailLevel.BLOCK.detailLevel; }
@Override
public final byte getMinGenerationGranularity() { return EDhApiDetailLevel.CHUNK.detailLevel; }
@Override
public final byte getMaxGenerationGranularity() { return (byte) (EDhApiDetailLevel.CHUNK.detailLevel + 2); }
//=================//
// world generator //
//=================//
@Override
public final CompletableFuture<Void> generateChunks(
int chunkPosMinX, int chunkPosMinZ,
byte granularity, byte targetDataDetail, EDhApiDistantGeneratorMode generatorMode,
ExecutorService worldGeneratorThreadPool, Consumer<Object[]> resultConsumer) throws ClassCastException
{
return CompletableFuture.runAsync(() ->
{
// TODO what does this mean?
int genChunkWidth = BitShiftUtil.powerOfTwo(granularity - 4);
for (int chunkX = chunkPosMinX; chunkX < chunkPosMinX + genChunkWidth; chunkX++)
{
for (int chunkZ = chunkPosMinZ; chunkZ < chunkPosMinZ + genChunkWidth; chunkZ++)
{
Object[] rawMcObjectArray = this.generateChunk(chunkX, chunkZ, generatorMode);
resultConsumer.accept(rawMcObjectArray);
}
}
}, worldGeneratorThreadPool);
}
@Override
public final CompletableFuture<Void> generateApiChunks(
int chunkPosMinX,
int chunkPosMinZ,
byte granularity,
byte targetDataDetail,
EDhApiDistantGeneratorMode generatorMode,
ExecutorService worldGeneratorThreadPool,
Consumer<DhApiChunk> resultConsumer
)
{
return CompletableFuture.runAsync(() ->
{
// TODO what does this mean?
int genChunkWidth = BitShiftUtil.powerOfTwo(granularity - 4);
for (int chunkX = chunkPosMinX; chunkX < chunkPosMinX + genChunkWidth; chunkX++)
{
for (int chunkZ = chunkPosMinZ; chunkZ < chunkPosMinZ + genChunkWidth; chunkZ++)
{
DhApiChunk apiChunk = this.generateApiChunk(chunkX, chunkZ, generatorMode);
resultConsumer.accept(apiChunk);
}
}
}, worldGeneratorThreadPool);
}
/**
* This method is called to generate terrain over a given area
* from a thread defined by Distant Horizons. <br><br>
*
* @param chunkPosX the chunk X position in the level (not to be confused with the chunk's BlockPos in the level)
* @param chunkPosZ the chunk Z position in the level (not to be confused with the chunk's BlockPos in the level)
* @param generatorMode how far into the world gen pipeline this method should run. See {@link EDhApiDistantGeneratorMode} for additional documentation.
*
* @return See {@link IDhApiWorldGenerator#generateChunks(int, int, byte, byte, EDhApiDistantGeneratorMode, ExecutorService, Consumer) IDhApiWorldGenerator.generateChunks}
* for the list of Object's this method should return along with additional documentation.
*
* @see IDhApiWorldGenerator#generateChunks(int, int, byte, byte, EDhApiDistantGeneratorMode, ExecutorService, Consumer) IDhApiWorldGenerator#generateChunks
*/
public abstract Object[] generateChunk(int chunkPosX, int chunkPosZ, EDhApiDistantGeneratorMode generatorMode);
/**
* This method is called to generate terrain over a given area
* from a thread defined by Distant Horizons. <br><br>
*
* @param chunkPosX the chunk X position in the level (not to be confused with the chunk's BlockPos in the level)
* @param chunkPosZ the chunk Z position in the level (not to be confused with the chunk's BlockPos in the level)
* @param generatorMode how far into the world gen pipeline this method should run. See {@link EDhApiDistantGeneratorMode} for additional documentation.
*
* @return A {@link DhApiChunk} with the generated {@link DhApiTerrainDataPoint} including air blocks.
* Note: if air blocks aren't included with the proper lighting, lower detail levels will appear as black/unlit.
*
* @see IDhApiWorldGenerator#generateApiChunks(int, int, byte, byte, EDhApiDistantGeneratorMode, ExecutorService, Consumer)
*
* @since API 3.0.0
*/
public abstract DhApiChunk generateApiChunk(int chunkPosX, int chunkPosZ, EDhApiDistantGeneratorMode generatorMode);
}
@@ -0,0 +1,241 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.override.worldGenerator;
import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiWorldGeneratorReturnType;
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
import com.seibel.distanthorizons.api.enums.EDhApiDetailLevel;
import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiDistantGeneratorMode;
import com.seibel.distanthorizons.api.objects.data.DhApiChunk;
import java.io.Closeable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.function.Consumer;
/**
* @author James Seibel
* @version 2023-6-22
* @since API 1.0.0
*/
public interface IDhApiWorldGenerator extends Closeable, IDhApiOverrideable
{
//============//
// parameters //
//============//
/**
* Defines the smallest datapoint size that can be generated at a time. <br>
* Minimum detail level is 0 (1 block) <br>
* Default detail level is 0 <br>
* For more information on what detail levels represent see: {@link EDhApiDetailLevel}. <br><br>
*
* TODO: System currently only supports 1x1 block per data.
*
* @see EDhApiDetailLevel
* @since API 1.0.0
*/
default byte getSmallestDataDetailLevel() { return EDhApiDetailLevel.BLOCK.detailLevel; }
/**
* Defines the largest datapoint size that can be generated at a time. <br>
* Minimum detail level is 0 (1 block) <br>
* Default detail level is 0 <br>
* For more information on what detail levels represent see: {@link EDhApiDetailLevel}.
*
* @see EDhApiDetailLevel
* @since API 1.0.0
*/
default byte getLargestDataDetailLevel() { return EDhApiDetailLevel.BLOCK.detailLevel; }
/**
* When creating generation requests the system will attempt to group nearby tasks together. <br><br>
* What is the minimum size a single generation call can batch together? <br>
*
* Minimum detail level is 4 (the size of a MC chunk) <br>
* Default detail level is 4 <br>
* For more information on what detail levels represent see: {@link EDhApiDetailLevel}.
*
* @see EDhApiDetailLevel
* @since API 1.0.0
*/
default byte getMinGenerationGranularity() { return EDhApiDetailLevel.CHUNK.detailLevel; }
/**
* When creating generation requests the system will attempt to group nearby tasks together. <br><br>
* What is the maximum size a single generation call can batch together? <br>
*
* Minimum detail level is 4 (the size of a MC chunk) <br>
* Default detail level is 6 (4x4 chunks) <br>
* For more information on what detail levels represent see: {@link EDhApiDetailLevel}.
*
* @see EDhApiDetailLevel
* @since API 1.0.0
*/
default byte getMaxGenerationGranularity() { return (byte) (EDhApiDetailLevel.CHUNK.detailLevel + 2); }
/**
* Starting in API 3.0.0 DH now handles future queuing/management internally. <br><br>
*
* Previous description: <br>
* true if the generator is unable to accept new generation requests. <br>
*
* @since API 1.0.0
* @deprecated API 3.0.0
*/
@Deprecated
default boolean isBusy() { return false; }
/**
* Only used if {@link #getReturnType()} returns {@link EDhApiWorldGeneratorReturnType#API_CHUNKS}. <Br>
* If true DH will run additional validation on the {@link DhApiChunk}'s returned. <Br>
* This should be disabled during release but should be enabled during development to help spot issues with your data format.
*
* @see #getReturnType()
* @see DhApiChunk
* @see EDhApiWorldGeneratorReturnType#API_CHUNKS
* @since API 3.0.0
*/
default boolean runApiChunkValidation() { return true; }
//=================//
// world generator //
//=================//
/**
* This method is called by Distant Horizons to generate terrain over a given area when
* {@link #getReturnType()} returns {@link EDhApiWorldGeneratorReturnType#VANILLA_CHUNKS}. <br><br>
*
* After a chunk has been generated it (and any necessary supporting objects as listed below) should be passed into the
* resultConsumer's {@link Consumer#accept} method. If the Consumer is given the wrong data
* type(s) it will disable the world generator and log an error with a list of objects it was expecting. <br>
* <strong>Note:</strong> these objects are minecraft version dependent and <i>will</i> change without notice!
* Please run your generator in game at least once to confirm the objects you are returning are correct. <br><br>
*
* Consumer expected inputs for each minecraft version (in order): <br>
* <strong>1.16</strong>, <strong>1.17</strong>, <strong>1.18</strong>, <strong>1.19</strong>, <strong>1.20</strong>: <br>
* - [net.minecraft.world.level.chunk.ChunkAccess] <br>
* - [net.minecraft.world.level.ServerLevel] or [net.minecraft.world.level.ClientLevel] <br>
*
* @implNote the default implementation of this method throws an {@link UnsupportedOperationException},
* and must be overridden when {@link #getReturnType()} returns {@link EDhApiWorldGeneratorReturnType#VANILLA_CHUNKS}.
* since {@link #getReturnType()} returns {@link EDhApiWorldGeneratorReturnType#VANILLA_CHUNKS} by default,
* this method must also be overridden when {@link #getReturnType()} is NOT overridden.
*
* @param chunkPosMinX the chunk X position closest to negative infinity
* @param chunkPosMinZ the chunk Z position closest to negative infinity
* @param granularity TODO find a central location to store the definition of granularity. For now it is stored in the Core method: WorldGenerationQueue#startGenerationEvent
* @param targetDataDetail the LOD Detail level requested to generate. See {@link EDhApiDetailLevel} for additional information.
* @param generatorMode how far into the world gen pipeline this method run. See {@link EDhApiDistantGeneratorMode} for additional documentation.
* @param worldGeneratorThreadPool the thread pool that should be used when generating the returned {@link CompletableFuture}.
* @param resultConsumer the consumer that should be fired whenever a chunk finishes generating.
*
* @return a future that should run on the worldGeneratorThreadPool and complete once the given generation task has completed.
*
* @since API 1.0.0
*/
default CompletableFuture<Void> generateChunks(
int chunkPosMinX,
int chunkPosMinZ,
byte granularity,
byte targetDataDetail,
EDhApiDistantGeneratorMode generatorMode,
ExecutorService worldGeneratorThreadPool,
Consumer<Object[]> resultConsumer
)
{
throw new UnsupportedOperationException();
}
/**
* This method is called by Distant Horizons to generate terrain over a given area when
* {@link #getReturnType()} returns {@link EDhApiWorldGeneratorReturnType#API_CHUNKS}. <br><br>
*
* After the {@link DhApiChunk} has been generated, it should be passed into the
* resultConsumer's {@link Consumer#accept(Object)} method.
* Note: if air blocks aren't included in the with the {@link DhApiChunk} with proper lighting, lower detail levels will appear as black/unlit.
*
* @implNote the default implementation of this method throws an {@link UnsupportedOperationException},
* and must be overridden when {@link #getReturnType()} returns {@link EDhApiWorldGeneratorReturnType#API_CHUNKS}.
*
* @param chunkPosMinX the chunk X position closest to negative infinity
* @param chunkPosMinZ the chunk Z position closest to negative infinity
* @param granularity TODO find a central location to store the definition of granularity. For now it is stored in the Core method: WorldGenerationQueue#startGenerationEvent
* @param targetDataDetail the LOD Detail level requested to generate. See {@link EDhApiDetailLevel} for additional information.
* @param generatorMode how far into the world gen pipeline this method run. See {@link EDhApiDistantGeneratorMode} for additional documentation.
* @param worldGeneratorThreadPool the thread pool that should be used when generating the returned {@link CompletableFuture}.
* @param resultConsumer the consumer that should be fired whenever a chunk finishes generating.
*
* @return a future that should run on the worldGeneratorThreadPool and complete once the given generation task has completed.
*
* @since API 2.0.0
*/
default CompletableFuture<Void> generateApiChunks(
int chunkPosMinX,
int chunkPosMinZ,
byte granularity,
byte targetDataDetail,
EDhApiDistantGeneratorMode generatorMode,
ExecutorService worldGeneratorThreadPool,
Consumer<DhApiChunk> resultConsumer
)
{
throw new UnsupportedOperationException();
}
/**
* This method controls how Distant Horizons requests generated chunks.
* By default, the return value is {@link EDhApiWorldGeneratorReturnType#VANILLA_CHUNKS},
* which means that {@link #generateChunks(int, int, byte, byte, EDhApiDistantGeneratorMode, ExecutorService, Consumer)}
* will be invoked whenever Distant Horizons wants to generate terrain with this world generator.
*
* @since API 2.0.0
*/
default EDhApiWorldGeneratorReturnType getReturnType() { return EDhApiWorldGeneratorReturnType.VANILLA_CHUNKS; }
//===============//
// event methods //
//===============//
/**
* Called before a new generator task is started. <br>
* This can be used to run cleanup on existing tasks before new tasks are started.
*
* @since API 1.0.0
*/
void preGeneratorTaskStart();
//===========//
// overrides //
//===========//
// This is overridden to remove the "throws IOException"
// that is present in the default Closeable.close() method
@Override
void close();
}
@@ -0,0 +1,43 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.override.worldGenerator;
import com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper;
import com.seibel.distanthorizons.api.objects.DhApiResult;
/**
* Handles adding world generator overrides.
*
* @author James Seibel
* @version 2022-12-10
* @since API 1.0.0
*/
public interface IDhApiWorldGeneratorOverrideRegister
{
/**
* Registers the given world generator for the given level. <Br> <Br>
*
* Only one world generator can be registered for a specific level at a given time. <Br>
* If another world generator has already been registered, DhApiResult will return
* the name of the previously registered generator and success = false.
*/
DhApiResult<Void> registerWorldGeneratorOverride(IDhApiLevelWrapper levelWrapper, IDhApiWorldGenerator worldGenerator);
}
@@ -0,0 +1,67 @@
package com.seibel.distanthorizons.api.interfaces.render;
import com.seibel.distanthorizons.api.objects.math.DhApiVec3d;
import com.seibel.distanthorizons.api.objects.math.DhApiVec3f;
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBox;
import java.util.List;
/**
* Handles creating
* {@link IDhApiRenderableBoxGroup} objects,
* which can be added via a {@link IDhApiCustomRenderRegister}.
*
* @see IDhApiCustomRenderRegister
* @see IDhApiRenderableBoxGroup
*
* @author James Seibel
* @version 2024-7-3
* @since API 3.0.0
*/
public interface IDhApiCustomRenderObjectFactory
{
/**
* Creates a {@link IDhApiRenderableBoxGroup} from for the given {@link DhApiRenderableBox}
* where the box is positioned relative to the level's origin.
*
* @param resourceLocation A colon separated Resource Location string, similar to vanilla Minecraft, for example: "DistantHorizons:Clouds"
*
* @see DhApiRenderableBox
* @see IDhApiRenderableBoxGroup#getResourceLocationNamespace()
* @see IDhApiRenderableBoxGroup#getResourceLocationPath()
*
* @throws IllegalArgumentException if <code>resourceLocation</code> is null, isn't separated by a colon, or has multiple colons.
*/
IDhApiRenderableBoxGroup createForSingleBox(String resourceLocation, DhApiRenderableBox cube) throws IllegalArgumentException;
/**
* Creates a {@link IDhApiRenderableBoxGroup} from the given list of {@link DhApiRenderableBox} where each
* one is positioned relative to given <code>originBlockPos</code>, which in turn is relative to the level's origin.
*
* @param resourceLocation A colon separated Resource Location string, similar to vanilla Minecraft, for example: "DistantHorizons:Clouds"
* @param originBlockPos The starting position for this {@link IDhApiRenderableBoxGroup}, can be changed during runtime.
*
*
* @see DhApiRenderableBox
* @see IDhApiRenderableBoxGroup#getResourceLocationNamespace()
* @see IDhApiRenderableBoxGroup#getResourceLocationPath()
*
* @throws IllegalArgumentException if <code>resourceLocation</code> is null, isn't separated by a colon, or has multiple colons.
*/
IDhApiRenderableBoxGroup createRelativePositionedGroup(String resourceLocation, DhApiVec3d originBlockPos, List<DhApiRenderableBox> cubeList);
/**
* Creates a {@link IDhApiRenderableBoxGroup} from the given list of {@link DhApiRenderableBox} where each
* one is positioned relative to the level's origin.
*
* @param resourceLocation A colon separated Resource Location string, similar to vanilla Minecraft, for example: "DistantHorizons:Clouds"
*
* @see DhApiRenderableBox
* @see IDhApiRenderableBoxGroup#getResourceLocationNamespace()
* @see IDhApiRenderableBoxGroup#getResourceLocationPath()
*
* @throws IllegalArgumentException if <code>resourceLocation</code> is null, isn't separated by a colon, or has multiple colons.
*/
IDhApiRenderableBoxGroup createAbsolutePositionedGroup(String resourceLocation, List<DhApiRenderableBox> cubeList);
}
@@ -0,0 +1,30 @@
package com.seibel.distanthorizons.api.interfaces.render;
import com.seibel.distanthorizons.api.DhApi;
import com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper;
import com.seibel.distanthorizons.api.interfaces.world.IDhApiWorldProxy;
/**
* Handles adding and removing
* {@link IDhApiRenderableBoxGroup} objects,
* from DH's renderer. <br><br>
*
* Can be accessed in
* {@link DhApi.Delayed#worldProxy} -> {@link IDhApiLevelWrapper}.
*
* @see IDhApiCustomRenderObjectFactory
* @see IDhApiRenderableBoxGroup
* @see IDhApiWorldProxy
* @see IDhApiLevelWrapper
*
* @author James Seibel
* @version 2024-7-3
* @since API 3.0.0
*/
public interface IDhApiCustomRenderRegister
{
void add(IDhApiRenderableBoxGroup cubeGroup) throws IllegalArgumentException;
IDhApiRenderableBoxGroup remove(long id);
}
@@ -0,0 +1,85 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.interfaces.render;
import com.seibel.distanthorizons.api.objects.DhApiResult;
/**
* Used to interact with Distant Horizons' rendering system.
*
* @author James Seibel
* @version 2024-7-27
* @since API 1.0.0
*/
public interface IDhApiRenderProxy
{
/**
* Forces any cached render data to be deleted and regenerated.
* This is generally called whenever resource packs are changed or specific
* rendering settings are changed in Distant Horizon's config. <Br><Br>
*
* If this is called on a dedicated server it won't do anything and will return {@link DhApiResult#success} = false <Br><Br>
*
* Background: <Br>
* When rendering Distant Horizons bakes each block's color into the geometry that's rendered. <Br>
* This improves rendering speed and VRAM size, but prevents dynamically changing LOD colors. <Br>
*/
DhApiResult<Boolean> clearRenderDataCache();
//=======================//
// OpenGL object getters //
//=======================//
/**
* Returns the name of Distant Horizons' depth texture. <br>
* Will return {@link DhApiResult#success} = false and {@link DhApiResult#payload} = -1 if the texture hasn't been created yet.
*/
DhApiResult<Integer> getDhDepthTextureId();
/**
* Returns the name of Distant Horizons' color texture. <br>
* Will return {@link DhApiResult#success} = false and {@link DhApiResult#payload} = -1 if the texture hasn't been created yet.
*/
DhApiResult<Integer> getDhColorTextureId();
//======================//
// Shader compatibility //
//======================//
/**
* If set to true DH won't render opaque and transparent LODs in the same pass.
* Instead, opaque objects will be rendered at the normal time, but
* transparent objects will only be rendered in a second pass during Minecraft's
* own transparent rendering pass.
*/
void setDeferTransparentRendering(boolean deferTransparentRendering);
/** @return If DH should defer transparent rendering or not. */
boolean getDeferTransparentRendering();
/** This may change based on FOV, player speed, and other factors. */
float getNearClipPlaneDistanceInBlocks(float partialTicks);
}
@@ -0,0 +1,98 @@
package com.seibel.distanthorizons.api.interfaces.render;
import com.seibel.distanthorizons.api.enums.config.EDhApiLodShading;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
import com.seibel.distanthorizons.api.objects.math.DhApiVec3d;
import com.seibel.distanthorizons.api.objects.math.DhApiVec3f;
import com.seibel.distanthorizons.api.objects.math.DhApiVec3i;
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBox;
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBoxGroupShading;
import java.util.List;
import java.util.function.Consumer;
/**
* A list of {@link DhApiRenderableBox}'s that
* can be rendered to DH's terrain pass.
*
* @see DhApiRenderableBox
*
* @author James Seibel
* @version 2024-6-30
* @since API 3.0.0
*/
public interface IDhApiRenderableBoxGroup extends List<DhApiRenderableBox>
{
/**
* A unique numerical ID used by DH during rendering.
* This can also be used to bind/unbind specific {@link IDhApiRenderableBoxGroup}'s from the renderer.
* @return the ID for this specific group
*/
long getId();
/**
* Used to determine which mods have added what to the DH renderer.
* This can be used both by the F3 pie chart so you as a mod developer can profile your code
* or by shader developers who want to render your objects differently. <br><br>
*
* Should be used the same as a vanilla Minecraft ResourceLocation.
* For example if your mod named "Heavy Thunder" adds additional clouds named "Storm Front",
* your Resource Location would be something like "HeavyThunder:StormFront"
* and this method would return "HeavyThunder".
*/
String getResourceLocationNamespace();
/**
* Used to determine what type of object mods have added what to the DH renderer.
* This can be used both by the F3 pie chart so you as a mod developer can profile your code
* or by shader developers who want to render your objects differently. <br><br>
*
* Should be used the same as a vanilla Minecraft ResourceLocation.
* For example if your mod named "Heavy Thunder" adds additional clouds named "Storm Front",
* your Resource Location would be something like "HeavyThunder:StormFront"
* and this method would return "StormFront".
*/
String getResourceLocationPath();
/** Sets whether this group should render or not. */
void setActive(boolean active);
/** @return if active this group will render. */
boolean isActive();
/** Sets whether this group should render with Screen Space Ambient Occlusioning. */
void setSsaoEnabled(boolean ssaoEnabled);
/** @return if active this group will render with Screen Space Ambient Occlusioning. */
boolean isSsaoEnabled();
/** Sets where this group will render in the level. */
void setOriginBlockPos(DhApiVec3d pos);
/** @return the block position in the level that all {@see DhApiRenderableBox} will render relative to. */
DhApiVec3d getOriginBlockPos();
/**
* Called right before this group is rendered. <br>
* This is a good place to change the origin or notify of any box changes.
*/
void setPreRenderFunc(Consumer<DhApiRenderParam> renderEventParam);
void setPostRenderFunc(Consumer<DhApiRenderParam> renderEventParam); // TODO name?
/**
* If a cube's color, position, or other property is changed this method
* must be called for those changes to render. <br><br>
*
* Note: changing the group's position via {@link #setOriginBlockPos} doesn't
* require calling this method.
*/
void triggerBoxChange();
/** Only accepts values between 0 and 15 */
void setSkyLight(int skyLight);
int getSkyLight();
/** Only accepts values between 0 and 15 */
void setBlockLight(int blockLight);
int getBlockLight();
void setShading(DhApiRenderableBoxGroupShading shading);
DhApiRenderableBoxGroupShading getShading();
}
@@ -0,0 +1,18 @@
package com.seibel.distanthorizons.api.interfaces.util;
/**
* Used for objects that need deep clones. <br>
* Replacement for {@link Cloneable}.
*
* @see Cloneable
*
* @author James Seibel
* @version 2024-7-12
* @since API 3.0.0
*/
public interface IDhApiCopyable
{
/** Returns a deep clone of all parameters whenever possible. */
IDhApiCopyable copy();
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,19 +17,19 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.interfaces.world; package com.seibel.distanthorizons.api.interfaces.world;
import com.seibel.lod.api.interfaces.IDhApiUnsafeWrapper; import com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper;
/** /**
* @author James Seibel * @author James Seibel
* @version 2022-7-14 * @version 2022-7-14
* @since API 1.0.0
*/ */
public interface IDhApiDimensionTypeWrapper extends IDhApiUnsafeWrapper public interface IDhApiDimensionTypeWrapper extends IDhApiUnsafeWrapper
{ {
String getDimensionName();
boolean hasCeiling(); boolean hasCeiling();
boolean hasSkyLight(); boolean hasSkyLight();
}
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,34 +17,58 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.interfaces.world; package com.seibel.distanthorizons.api.interfaces.world;
import com.seibel.lod.api.interfaces.IDhApiUnsafeWrapper; import com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper;
import com.seibel.lod.api.enums.worldGeneration.EDhApiLevelType; import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiLevelType;
import com.seibel.distanthorizons.api.interfaces.render.IDhApiCustomRenderRegister;
/** /**
* Can be either a Server or Client level. * Can be either a Server or Client level.<br>
* * A level is equivalent to a dimension in vanilla Minecraft.
*
* @author James Seibel * @author James Seibel
* @version 2022-7-14 * @version 2024-7-28
* @since API 1.0.0
*/ */
public interface IDhApiLevelWrapper extends IDhApiUnsafeWrapper public interface IDhApiLevelWrapper extends IDhApiUnsafeWrapper
{ {
IDhApiDimensionTypeWrapper getDimensionType(); IDhApiDimensionTypeWrapper getDimensionType();
String getDimensionName();
EDhApiLevelType getLevelType(); EDhApiLevelType getLevelType();
boolean hasCeiling(); boolean hasCeiling();
boolean hasSkyLight(); boolean hasSkyLight();
/** Returns the max block height of the level(?) */
int getHeight();
/** /**
* Deprecated, use {@link IDhApiLevelWrapper#getMaxHeight} instead. <br>
* Returns the max block height of the level.
*
* @see IDhApiLevelWrapper#getMaxHeight
*/
@Deprecated
default int getHeight() { return this.getMaxHeight(); }
/**
* Returns the max block height of the level
* @since API 3.0.0
*/
int getMaxHeight();
/**
* Returns the lowest possible block position for the level. <br> * Returns the lowest possible block position for the level. <br>
* For MC versions before 1.18 this will return 0. * For MC versions before 1.18 this will return 0.
*/ */
default int getMinHeight() { return 0; } default int getMinHeight() { return 0; }
} /**
* Will return null if called on the server,
* or if called before the renderer has been set up.
*
* @since API 3.0.0
*/
IDhApiCustomRenderRegister getRenderRegister();
}
@@ -1,8 +1,8 @@
/* /*
* This file is part of the Distant Horizons mod (formerly the LOD Mod), * This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License. * licensed under the GNU LGPL v3 License.
* *
* Copyright (C) 2020-2022 James Seibel * Copyright (C) 2020-2023 James Seibel
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
@@ -17,15 +17,15 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.seibel.lod.api.interfaces.world; package com.seibel.distanthorizons.api.interfaces.world;
import com.seibel.lod.api.interfaces.IDhApiUnsafeWrapper;
/** /**
* Used to interact with Distant Horizons current world. * Used to interact with Distant Horizons' current world. <br>
* * A world is equivalent to a single server connection or a singleplayer world.
*
* @author James Seibel * @author James Seibel
* @version 2022-11-20 * @version 2022-11-20
* @since API 1.0.0
*/ */
public interface IDhApiWorldProxy public interface IDhApiWorldProxy
{ {
@@ -33,10 +33,10 @@ public interface IDhApiWorldProxy
boolean worldLoaded(); boolean worldLoaded();
/** /**
* In singleplayer this will return the level the player is currently in. <br> * In singleplayer this will return the level the player is currently in. <br>
* In multiplayer this will return null. * In multiplayer this will return null.
* *
* @throws IllegalStateException if no world is loaded * @throws IllegalStateException if no world is loaded
*/ */
IDhApiLevelWrapper getSinglePlayerLevel() throws IllegalStateException; IDhApiLevelWrapper getSinglePlayerLevel() throws IllegalStateException;
@@ -44,18 +44,18 @@ public interface IDhApiWorldProxy
/** @throws IllegalStateException if no world is loaded */ /** @throws IllegalStateException if no world is loaded */
Iterable<IDhApiLevelWrapper> getAllLoadedLevelWrappers() throws IllegalStateException; Iterable<IDhApiLevelWrapper> getAllLoadedLevelWrappers() throws IllegalStateException;
/** /**
* In the case of servers running multiverse there may be multiple levels for the same dimensionType. * In the case of servers running multiverse there may be multiple levels for the same dimensionType.
* *
* @throws IllegalStateException if no world is loaded * @throws IllegalStateException if no world is loaded
*/ */
Iterable<IDhApiLevelWrapper> getAllLoadedLevelsForDimensionType(IDhApiDimensionTypeWrapper dimensionTypeWrapper) throws IllegalStateException; Iterable<IDhApiLevelWrapper> getAllLoadedLevelsForDimensionType(IDhApiDimensionTypeWrapper dimensionTypeWrapper) throws IllegalStateException;
/** /**
* Returns any dimensions that have names containing the given string (case-insensitive). <br> * Returns any dimensions that have names containing the given string (case-insensitive). <br>
* In the case of servers running multiverse there may be multiple levels for the same dimensionType. * In the case of servers running multiverse there may be multiple levels for the same dimensionType.
* *
* @throws IllegalStateException if no world is loaded * @throws IllegalStateException if no world is loaded
*/ */
Iterable<IDhApiLevelWrapper> getAllLoadedLevelsWithDimensionNameLike(String dimensionName) throws IllegalStateException; Iterable<IDhApiLevelWrapper> getAllLoadedLevelsWithDimensionNameLike(String dimensionName) throws IllegalStateException;
@@ -1,14 +1,34 @@
package com.seibel.lod.api.methods.events; /*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import com.seibel.lod.api.objects.DhApiResult; package com.seibel.distanthorizons.api.methods.events;
import com.seibel.lod.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.lod.coreapi.DependencyInjection.ApiEventInjector; import com.seibel.distanthorizons.api.objects.DhApiResult;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector;
/** /**
* Handles adding/removing event handlers. * Handles adding/removing event handlers.
* *
* @author James Seibel * @author James Seibel
* @version 2022-9-16 * @version 2022-9-16
* @since API 1.0.0
*/ */
public class DhApiEventRegister public class DhApiEventRegister
{ {
@@ -30,7 +50,7 @@ public class DhApiEventRegister
return DhApiResult.createFail(e.getMessage()); return DhApiResult.createFail(e.getMessage());
} }
} }
/** /**
* Unregisters the given event handler for this event if one has been registered. <br> * Unregisters the given event handler for this event if one has been registered. <br>
* If no eventHandler of the given class has been registered the result will return * If no eventHandler of the given class has been registered the result will return
@@ -0,0 +1,46 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiOneTimeEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam;
/**
* Fired after Distant Horizons finishes running its setup.
*
* @author James Seibel
* @version 2023-6-23
* @since API 1.0.0
*/
public abstract class DhApiAfterDhInitEvent implements IDhApiEvent<Void>, IDhApiOneTimeEvent<Void>
{
/** Fired after Distant Horizons finishes its initial setup on Minecraft startup. */
public abstract void afterDistantHorizonsInit(DhApiEventParam<Void> input);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiEventParam<Void> input) { this.afterDistantHorizonsInit(input); }
}
@@ -0,0 +1,52 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Fired after Distant Horizons finishes rendering a frame. <br>
* At this point DH will have also finished cleaning up any modifications it
* did to the OpenGL state, so the state should be back to Minecraft's defaults. <br><br>
*
* Note: as of API v 3.0.0 no {@link DhApiRenderParam} is included in this event
* because the specific parameters may change
* depending on whether deferred rendering is enabled or not.
*
* @author James Seibel
* @version 2024-7-14
* @since API 1.0.0
*/
public abstract class DhApiAfterRenderEvent implements IDhApiEvent<Void>
{
/** Fired after Distant Horizons finishes rendering fake chunks. */
public abstract void afterRender(DhApiEventParam<Void> event);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiEventParam<Void> event) { this.afterRender(event); }
}
@@ -0,0 +1,49 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiCancelableEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiCancelableEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Fired before DH runs its apply shader.
* The apply shader is a shader that copies over everything DH has rendered
* for this pass into MC's framebuffers so it can be rendered to the screen.
* Canceling this event prevents the apply shader from running.
*
* @author James Seibel
* @version 2024-1-31
* @since API 2.0.0
*/
public abstract class DhApiBeforeApplyShaderRenderEvent implements IDhApiCancelableEvent<DhApiRenderParam>
{
/** Fired before the apply shader is run. */
public abstract void beforeRender(DhApiCancelableEventParam<DhApiRenderParam> event);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiCancelableEventParam<DhApiRenderParam> event) { this.beforeRender(event); }
}
@@ -0,0 +1,81 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
import com.seibel.distanthorizons.api.objects.math.DhApiVec3f;
/**
* Called before Distant Horizons starts rendering a buffer. <br>
* This event cannot be cancelled, use {@link DhApiBeforeRenderEvent} if you want to cancel rendering.
*
* @author James Seibel
* @version 2023-1-31
* @since API 2.0.0
*
* @see DhApiBeforeRenderEvent
*/
public abstract class DhApiBeforeBufferRenderEvent implements IDhApiEvent<DhApiBeforeBufferRenderEvent.EventParam>
{
/** Fired immediately before Distant Horizons starts rendering a buffer. */
public abstract void beforeRender(DhApiEventParam<EventParam> input);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiEventParam<EventParam> input) { this.beforeRender(input); }
//==================//
// parameter object //
//==================//
public static class EventParam extends DhApiRenderParam implements IDhApiEventParam
{
/**
* Measured in blocks.
* Should be applied to the model view matrix to move the buffer into its proper place.
*/
public final DhApiVec3f modelPos;
public EventParam(DhApiRenderParam parent, DhApiVec3f modelPos)
{
super(parent);
this.modelPos = modelPos;
}
@Override
public EventParam copy()
{
return new EventParam(
this, this.modelPos.copy()
);
}
}
}
@@ -0,0 +1,37 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderProxy;
/**
* Called before Distant Horizons starts rendering the deferred rendering pass. <br>
* Will only happen if {@link IDhApiRenderProxy#getDeferTransparentRendering()} is true. <br>
* Generally this is only used when shaders are enabled. <br>
* Canceling the event will prevent DH from rendering the deferred pass that frame.
*
* @author James Seibel
* @version 2024-1-22
* @since API 2.0.0
*/
public abstract class DhApiBeforeDeferredRenderEvent extends DhApiBeforeRenderEvent
{
}
@@ -0,0 +1,46 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam;
/**
* Fired before Distant Horizons starts running its mod loader setup. <br>
* IE this is called before Forge's initClient/initServer or Fabric's init method.
*
* @author James Seibel
* @version 2023-6-23
* @since API 1.0.0
*/
public abstract class DhApiBeforeDhInitEvent implements IDhApiEvent<Void>
{
/** Fired before Distant Horizons starts its initial setup on Minecraft startup. */
public abstract void beforeDistantHorizonsInit(DhApiEventParam<Void> input);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiEventParam<Void> input) { this.beforeDistantHorizonsInit(input); }
}
@@ -0,0 +1,97 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderableBoxGroup;
import com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiCancelableEvent;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiCancelableEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Called before Distant Horizons starts rendering a generic object. <br>
* Canceling this event will prevent the triggering {@link IDhApiRenderableBoxGroup} from rendering this frame.
*
* @author James Seibel
* @version 2024-7-11
* @since API 3.0.0
*/
public abstract class DhApiBeforeGenericObjectRenderEvent implements IDhApiCancelableEvent<DhApiBeforeGenericObjectRenderEvent.EventParam>
{
/** Fired before Distant Horizons renders a generic object. */
public abstract void beforeRender(DhApiCancelableEventParam<EventParam> event);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiCancelableEventParam<EventParam> input) { this.beforeRender(input); }
//==================//
// parameter object //
//==================//
public static class EventParam extends DhApiRenderParam implements IDhApiEventParam
{
public final long boxGroupId;
public final String resourceLocationNamespace;
public final String resourceLocationPath;
public EventParam(
DhApiRenderParam renderParam,
IDhApiRenderableBoxGroup boxGroup
)
{
super(renderParam);
this.boxGroupId = boxGroup.getId();
this.resourceLocationNamespace = boxGroup.getResourceLocationNamespace();
this.resourceLocationPath = boxGroup.getResourceLocationPath();
}
public EventParam(
DhApiRenderParam renderParam,
long boxGroupId, String resourceLocationNamespace, String resourceLocationPath
)
{
super(renderParam);
this.boxGroupId = boxGroupId;
this.resourceLocationNamespace = resourceLocationNamespace;
this.resourceLocationPath = resourceLocationPath;
}
@Override
public EventParam copy()
{
return new EventParam(
this,
this.boxGroupId, this.resourceLocationNamespace, this.resourceLocationPath
);
}
}
}
@@ -0,0 +1,47 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Called before Distant Horizons starts the cleanup process done after rendering generic objects. <br>
* This is called after all generic objects have finished rendering.
*
* @author James Seibel
* @version 2024-7-13
* @since API 3.0.0
*/
public abstract class DhApiBeforeGenericRenderCleanupEvent implements IDhApiEvent<DhApiRenderParam>
{
/** Fired before Distant Horizons starts the cleanup process once rendering has finished. */
public abstract void beforeCleanup(DhApiEventParam<DhApiRenderParam> event);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiEventParam<DhApiRenderParam> event) { this.beforeCleanup(event); }
}
@@ -0,0 +1,50 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Called before Distant Horizons has started setting up OpenGL objects for rendering generic objects. <br>
* If you want to modify already bound DH OpenGL objects try using {@link DhApiBeforeGenericObjectRenderEvent}.
*
* @author James Seibel
* @version 2024-7-12
* @since API 3.0.0
*
* @see DhApiBeforeGenericObjectRenderEvent
*/
public abstract class DhApiBeforeGenericRenderSetupEvent implements IDhApiEvent<DhApiRenderParam>
{
/** Fired before Distant Horizons has started setting up OpenGL objects for rendering generic objects. */
public abstract void beforeSetup(DhApiEventParam<DhApiRenderParam> input);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiEventParam<DhApiRenderParam> input) { this.beforeSetup(input); }
}
@@ -0,0 +1,47 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Called before Distant Horizons starts the cleanup process done after rendering. <br>
* This called after every render pass.
*
* @author James Seibel
* @version 2024-1-31
* @since API 2.0.0
*/
public abstract class DhApiBeforeRenderCleanupEvent implements IDhApiEvent<DhApiRenderParam>
{
/** Fired before Distant Horizons starts the cleanup process once rendering has finished. */
public abstract void beforeCleanup(DhApiEventParam<DhApiRenderParam> event);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiEventParam<DhApiRenderParam> event) { this.beforeCleanup(event); }
}
@@ -0,0 +1,47 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiCancelableEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiCancelableEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Called before Distant Horizons starts rendering a frame. <br>
* Canceling the event will prevent DH from rendering that frame.
*
* @author James Seibel
* @version 2023-6-23
* @since API 1.0.0
*/
public abstract class DhApiBeforeRenderEvent implements IDhApiCancelableEvent<DhApiRenderParam>
{
/** Fired before Distant Horizons renders LODs. */
public abstract void beforeRender(DhApiCancelableEventParam<DhApiRenderParam> event);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiCancelableEventParam<DhApiRenderParam> input) { this.beforeRender(input); }
}
@@ -0,0 +1,54 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiRenderPass;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Called immediately before Distant Horizons starts a rendering pass. <br>
* At this point the GL state will be set up for DH to render. <br>
* This event cannot be cancelled, use {@link DhApiBeforeRenderEvent} if you want to cancel rendering.
*
* @author James Seibel
* @version 2023-1-31
* @since API 2.0.0
*
* @see DhApiBeforeRenderEvent
*/
public abstract class DhApiBeforeRenderPassEvent implements IDhApiEvent<DhApiRenderParam>
{
/**
* Fired immediately before Distant Horizons starts a rendering pass. <br>
* {@link DhApiRenderParam#renderPass} should either be {@link EDhApiRenderPass#OPAQUE} or {@link EDhApiRenderPass#TRANSPARENT}.
*/
public abstract void beforeRender(DhApiEventParam<DhApiRenderParam> event);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiEventParam<DhApiRenderParam> event) { this.beforeRender(event); }
}
@@ -0,0 +1,50 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Called before Distant Horizons has started setting up OpenGL objects for rendering. <br>
* If you want to modify already bound DH OpenGL objects try using {@link DhApiBeforeRenderPassEvent}.
*
* @author James Seibel
* @version 2024-1-31
* @since API 2.0.0
*
* @see DhApiBeforeRenderPassEvent
*/
public abstract class DhApiBeforeRenderSetupEvent implements IDhApiEvent<DhApiRenderParam>
{
/** Fired before Distant Horizons has started setting up OpenGL objects for rendering. */
public abstract void beforeSetup(DhApiEventParam<DhApiRenderParam> input);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiEventParam<DhApiRenderParam> input) { this.beforeSetup(input); }
}
@@ -0,0 +1,49 @@
/*
* This file is part of the Distant Horizons mod
* licensed under the GNU LGPL v3 License.
*
* Copyright (C) 2020-2023 James Seibel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.api.methods.events.abstractEvents;
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiCancelableEvent;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiCancelableEventParam;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
/**
* Called during Distant Horizons rendering setup and immediately <br>
* before the render textures are cleared. <br>
* Generally the textures cleared are Distant Horizons owned depth and color textures. <br>
* Canceling the event will prevent DH from clearing any textures.
*
* @author James Seibel
* @version 2024-1-31
* @since API 2.0.0
*/
public abstract class DhApiBeforeTextureClearEvent implements IDhApiCancelableEvent<DhApiRenderParam>
{
/** Fired before Distant Horizons clears any textures. */
public abstract void beforeClear(DhApiCancelableEventParam<DhApiRenderParam> event);
//=========================//
// internal DH API methods //
//=========================//
@Override
public final void fireEvent(DhApiCancelableEventParam<DhApiRenderParam> input) { this.beforeClear(input); }
}

Some files were not shown because too many files have changed in this diff Show More