Compare commits

..
2024 Commits
Author SHA1 Message Date
cyberpwn 5d6224db08 ffs 2022-09-06 23:26:24 -04:00
cyberpwn 4f53b058fa fixes 2022-09-05 14:28:41 -04:00
DanMB fdca73405e ffs 2022-08-22 21:46:22 -07:00
DanMB 003087ee94 Synthetics 2022-08-07 16:04:36 -07:00
DanMB 0a72a1acfc Fixes 2022-07-21 20:58:04 -07:00
DanMB e88519f474 Fixes 2022-07-08 16:49:56 -07:00
DanMB 6d8c92b512 Schemas 2022-07-08 10:46:56 -07:00
DanMB efe800c606 f 2022-07-07 16:22:28 -07:00
DanMB 1634454700 Resolvers 2022-07-07 13:08:14 -07:00
DanMB d31a9605d5 Main 2022-07-06 14:48:54 -07:00
DanMB f061b5848a Update packages 2022-07-06 14:43:01 -07:00
DanMB a4b47dee6c NEw amulet 2022-07-06 10:28:17 -07:00
cyberpwn 54331d8e76 f 2022-07-03 05:48:43 -04:00
cyberpwn 1a7ba74517 Fixes 2022-07-02 17:30:31 -04:00
cyberpwn 6285651194 Tests 2022-07-02 13:40:55 -04:00
cyberpwn 3339f77e1c Resolve this 2022-07-01 10:13:53 -04:00
cyberpwn 8b124bf298 Resolvers 2022-06-30 19:31:13 -04:00
cyberpwn 0a2e3e5e88 t 2022-06-28 07:50:17 -04:00
cyberpwn 6873051bcb Actually decent 2022-06-28 03:47:23 -04:00
cyberpwn 5e2438d6f6 Now its slow 2022-06-27 12:01:49 -04:00
cyberpwn 9d4caa7be4 Iris engine fix 2022-06-27 07:33:34 -04:00
cyberpwn cbfad43467 Task prep 2022-06-27 07:26:28 -04:00
cyberpwn cc70a30315 It go fast 2022-06-26 20:01:47 -04:00
cyberpwn c209895389 Rereg 2022-06-26 08:55:40 -04:00
cyberpwn 1f9f7101e2 fix imports 2022-06-26 05:52:13 -04:00
cyberpwn ed89e7c845 Initial 2022-06-26 05:45:20 -04:00
cyberpwn 80dff702fc Goodbye 2 2022-06-25 19:06:45 -04:00
Brian Fopiano 43bd96a679 Merge pull request #810 from VolmitSoftware/Development
Development
2022-06-25 14:08:37 -07:00
Brian Fopiano a87c83dae2 V+ 2022-06-25 14:06:16 -07:00
cyberpwn 490d2b69e3 uf 2022-06-25 16:16:53 -04:00
DanMB 7eac936431 Merge remote-tracking branch 'origin/Development' into Development 2022-06-25 16:00:53 -04:00
DanMB 588b261d52 df 2022-06-25 16:00:48 -04:00
DanMB daf2cf02b3 d 2022-06-25 15:59:40 -04:00
cyberpwn b9d97f2434 Goes faster 2022-06-25 15:47:34 -04:00
Vatuu 1467dc963d Changed the default download branch to be in line with GHs new standard. 2022-06-21 19:05:01 +02:00
Vatuu 89bf687fc4 Fixed some wrong descriptions. 2022-06-21 18:58:01 +02:00
Vatuu 2e7c80562b Added MIN_STILT, CENTER_STILT and derivatives.
Made stilt override use a palette.
Added yMax and yRand.
Consolidated stilt settings into a object.
2022-06-21 18:57:33 +02:00
Brian Fopiano 5d54b82be0 Spigot Watchdog Fixed 2022-06-20 17:42:10 -07:00
Brian Fopiano 2ae1df4d42 V+ 2022-06-17 09:57:07 -07:00
Brian Fopiano 26782e6f0c Paper shit up 2022-06-16 00:15:35 -07:00
Vatuu cc84d5b562 Fixed noiseOverlay. 2022-06-12 10:39:41 +02:00
Vatuu 8bb1efdca3 Merge remote-tracking branch 'origin/Development' into Development 2022-06-12 08:11:14 +02:00
Vatuu 7a5794c8e2 Fixed MIN_HEIGHT. 2022-06-12 08:11:02 +02:00
Vatuu 9dd20661f5 Added stilt override. 2022-06-12 08:10:07 +02:00
Brian Fopiano ad0ab66711 Merge remote-tracking branch 'origin/Development' into Development 2022-06-11 15:58:11 -07:00
Brian Fopiano 82396b5145 eew 2022-06-11 15:58:07 -07:00
Vatuu 246e974dc1 Fixed FAST_MIN_HEIGHT being messed up. 2022-06-10 17:43:14 +02:00
Vatuu 203b6a4b4f Fixed loading bar not having the coloured pulse effect. 2022-06-10 15:12:56 +02:00
Vatuu f204f3a209 It works! 2022-06-10 11:35:03 +02:00
Vatuu ba8e060370 It """works""". 2022-06-09 22:09:32 +02:00
Vatuu c51172acbc Updated kyori. 2022-06-09 12:51:33 +02:00
Brian Fopiano 39100a5011 Port WIP 2022-06-08 14:46:18 -07:00
DanMB fcee61a703 fg 2022-06-04 23:32:01 -07:00
DanMB ce8cc2cf37 Allow paper multicore to call without locking 2022-06-04 22:19:36 -07:00
DanMB 3b5bdcfb51 Merge remote-tracking branch 'origin/master' 2022-06-04 21:50:27 -07:00
DanMB 4d67e97973 Revert "Revert "No cng thing ""
This reverts commit da09f4d6d8.
2022-06-04 21:50:24 -07:00
DanMB da09f4d6d8 Revert "No cng thing "
This reverts commit dbc7e2e0bf.
2022-06-04 21:49:21 -07:00
DanMB dbc7e2e0bf No cng thing 2022-06-04 21:48:37 -07:00
DanMB dd804b6665 It compiles 2022-06-04 21:42:15 -07:00
DanMB 33eb878834 Test imp 1 2022-06-04 21:08:49 -07:00
DanMB 2a2c456011 More prec 2022-06-04 21:06:38 -07:00
DanMB 05a12f3899 Bench 2022-06-04 21:04:37 -07:00
DanMB eb04710f71 Merge remote-tracking branch 'origin/master' 2022-06-04 20:53:37 -07:00
DanMB 257760453e . 2022-06-04 20:53:28 -07:00
Brian Fopiano d11baeb08a Merge pull request #800 from VolmitSoftware/Development
V+
2022-06-03 20:23:46 -07:00
Vatuu 47d322c993 V+ 2022-06-04 05:21:55 +02:00
Vatuu d316207a61 Added tile entity support + mantle. 2022-06-03 06:19:13 +02:00
Vatuu e6daabbb47 Working on block entity support. 2022-06-02 10:39:28 +02:00
Vatuu 53156449f1 Made the mantle retain object placements. 2022-06-01 20:35:44 +02:00
Brian Fopiano e3d4c32d03 Merge pull request #796 from VolmitSoftware/Development
**Changelog**

- Fixed a Memory Leak (There might be more, keep reports coming)
 - Fixed Iris wand selections (WE)
 - Added Iris Wand Worldedit compatibility [Make selection using Worldedit, then /Iris object want worldedit (/ir o w we) to then set your selection to a new iris wand]
2022-05-26 18:24:06 -07:00
Vatuu 9cd5c39bbe V+ 2022-05-27 03:17:58 +02:00
Vatuu a1fbf25465 Please don't break or leak again. 2022-05-27 01:54:21 +02:00
Vatuu ec74037f05 Added ability to create Iris Wand from WorldEdit selection. 2022-05-26 21:48:46 +02:00
Brian Fopiano fff650b766 Merge pull request #795 from VolmitSoftware/Development
**Changelog:**
- Fixed Startup spam, Worldheight spam, and Entity ID spam from happening anymore
- Removes Raid Error From Villagers (Persistent raid)
- Minheight, MaxHeight, and STilt are now working as intended
- Fixed generation errors causing Holes in bedrock 
- generic math fixes internally

**This will require a world update to fix the Bedrock problems**
2022-05-21 20:26:19 -07:00
Vatuu bae2a18e24 V+ 2022-05-22 05:18:13 +02:00
Vatuu fd8a7ebb4c Properly fixed FAST_MAX_HEIGHT. 2022-05-22 05:08:28 +02:00
Vatuu 4a3a1491d4 Cleanup. 2022-05-22 04:25:39 +02:00
Vatuu 9aa2c5ed8a SPACE 2022-05-22 03:23:20 +02:00
Vatuu d5699a7472 Totally didn't replace MIN_HEIGHT instead of FAST_MAX_HEIGHT 💀 2022-05-22 03:22:19 +02:00
Vatuu df98f8f626 Added filter for duplicated entity uuid. 2022-05-22 03:07:46 +02:00
Vatuu d37b298f07 Fixed bad math for MAX_HEIGHT and FAST_MAX_HEIGHT. 2022-05-22 03:02:50 +02:00
Vatuu 62f7fc17d1 Suppressed persistent raid error. 2022-05-21 18:41:04 +02:00
Brian Fopiano 6e4929246d Merge pull request #794 from VolmitSoftware/master
upstream merge
2022-05-20 19:48:19 -07:00
Vatuu 909461975a Chat filter. 2022-05-21 04:47:12 +02:00
DanMB dec191e5e7 Web hate space 2022-05-19 16:23:11 -07:00
DanMB 07b0cd6f5a Img2 2022-05-19 16:20:25 -07:00
Brian Fopiano b7a892ecfe V+
Chonker of an update
2022-05-19 15:44:56 -07:00
Brian Fopiano 79d16102fa Merge pull request #789 from CocoTheOwner/fixDontUse
Replace MV with bukkit
2022-05-19 15:43:35 -07:00
Vatuu 67efdb47aa Custom dimension info on splash. 2022-05-17 20:15:02 +02:00
Vatuu 751c233b49 Merge remote-tracking branch 'origin/Development' into Development 2022-05-17 19:40:53 +02:00
Vatuu f51734fea0 Fixed fast_min_height? 2022-05-17 19:40:16 +02:00
DanMB 516a7111a7 f 2022-05-16 23:34:58 -07:00
DanMB 1e3ff59b26 Placement options removals 2022-05-16 23:23:42 -07:00
Vatuu 4c48f812d5 Dust of Revealing Pt.3 💀 2022-05-16 21:55:47 +02:00
Vatuu a63a6f751f Dust of Revealing Pt.2, also Whoops. 2022-05-16 19:40:39 +02:00
Vatuu 923860a90b Version bump. 2022-05-16 18:10:59 +02:00
Vatuu 5a4ca2f907 Fixed stilting with edited data. 2022-05-16 17:49:49 +02:00
Vatuu ccc2ed0806 Fixed Dust of Revealing Pt.1 2022-05-16 17:33:15 +02:00
Vatuu 44c707e059 Stilting underwater works now. 2022-05-16 16:53:49 +02:00
Vatuu e7c458de3f Hot reload listener for datapacks and stilts underwater. 2022-05-15 22:10:17 +02:00
Vatuu 11b05b10a4 Removed a single empty line. 2022-05-15 21:28:12 +02:00
Vatuu d133ac0088 Refactor. 2022-05-15 20:28:11 +02:00
Brian Fopiano 8951fcdebd SHUT THE HELL UP
(no more hotloading error)
2022-05-15 00:13:42 -07:00
Vatuu ecbd5677ce Merge remote-tracking branch 'origin/Development' into Development 2022-05-15 01:27:07 +02:00
Vatuu e31b9c1a28 Fixed log error. 2022-05-15 01:26:52 +02:00
Brian Fopiano faa7b7c742 Object placement height now increased (need to make engine dependent) 2022-05-14 12:07:27 -07:00
Vatuu d08f326477 Renaming. 2022-05-14 20:31:23 +02:00
Vatuu 6500ed2075 Made third party items work in loot tables. 2022-05-14 20:26:24 +02:00
Vatuu 56eb775a0f Merge remote-tracking branch 'origin/Development' into Development 2022-05-14 19:46:03 +02:00
Vatuu e225bcfb96 To make brian shut up. 2022-05-14 19:45:44 +02:00
Brian Fopiano 4be6abe416 2032 New MAX height 2022-05-14 10:38:52 -07:00
Vatuu c3de8b33de Fixed Oraxen, and custom dimension height. 2022-05-14 19:03:18 +02:00
Vatuu 5658d6709c Fixed Oraxen, and custom dimension height. 2022-05-14 18:29:57 +02:00
Vatuu 192538a741 ItemAdder link 2022-05-13 23:25:27 +02:00
Vatuu b8b9d7bf8c Added external block data registry. 2022-05-12 19:11:02 +02:00
CocoTheOwner 1db8603910 Replace MV with bukkit 2022-05-03 20:11:09 +02:00
Dan 1c5774fca5 Merge pull request #788 from VolmitSoftware/Development
2.0.7-1.18.2
2022-04-30 13:55:49 -07:00
DanMB 0b332b06b6 V+ 2022-04-30 13:55:18 -07:00
DanMB 0be9b049a3 Fix jigsaw editor 2022-04-30 13:54:42 -07:00
DanMB 6993639cc0 clean 2022-04-30 13:46:17 -07:00
DanMB 74172e3123 Reflective api additions 2022-04-21 10:57:19 -07:00
DanMB 6e1c4f682e abandon ship 2022-04-19 19:10:54 -04:00
DanMB af0d282a1f Matter loaders 2022-04-19 17:05:16 -04:00
DanMB 09bf15fa05 0.01% faster 2022-04-18 16:31:22 -04:00
DanMB 43f7d95b4c My folder 2022-04-18 14:57:44 -04:00
cyberpwn 8b536b1775 Merge remote-tracking branch 'origin/Development' into Development 2022-04-17 11:53:47 -04:00
cyberpwn 60a7f4bc35 Dumb stuff 2022-04-17 04:11:50 -04:00
Brian Fopiano 0ed0e0c983 Merge pull request #786 from VolmitSoftware/Development
not a word
2022-04-16 01:29:41 -07:00
Brian Fopiano f4b1ca9f21 not a word 2022-04-16 01:29:22 -07:00
Brian Fopiano 609104cfa8 Merge pull request #785 from VolmitSoftware/Development
Development
2022-04-16 01:23:44 -07:00
Brian Fopiano 935d11b433 V+ 2022-04-16 01:23:15 -07:00
cyberpwn e9eeb8335d f 2022-04-14 23:58:06 -04:00
cyberpwn 4a2f42437f Mantle deletes 2022-04-14 23:47:25 -04:00
cyberpwn 51b0693c99 fix 2022-04-14 20:43:10 -04:00
cyberpwn 185b366d8d Lots of crap 2022-04-14 20:40:37 -04:00
cyberpwn a40e533068 Revert "Drop oraxen support "
This reverts commit d315e99b63.
2022-04-14 14:32:49 -07:00
Brian Fopiano 5b3918fcb1 Merge pull request #782 from VolmitSoftware/Development
Development
2022-04-13 16:49:22 -07:00
cyberpwn d315e99b63 Drop oraxen support 2022-04-13 19:17:25 -04:00
cyberpwn 8090ba0259 Fix object placement 2022-04-13 19:11:31 -04:00
cyberpwn 584400d011 Revert "This is to prevent warnings for weird objects, (revert)"
This reverts commit 124ad23a95.
2022-04-13 18:50:08 -04:00
cyberpwn 124ad23a95 This is to prevent warnings for weird objects, (revert) 2022-04-13 18:47:31 -04:00
cyberpwn 6b59aa38ae Allow terrain to use the world height 2022-04-13 18:46:19 -04:00
Brian Fopiano 03554eb372 Merge pull request #778 from VolmitSoftware/Development
Development
2022-04-03 01:41:16 -07:00
Brian Fopiano dabfe41f29 Merge branch 'master' into Development 2022-04-03 01:40:24 -07:00
Brian Fopiano 6e2c6fc51e V+ 2022-04-03 01:36:31 -07:00
Brian Fopiano d81986bcc5 255 & no more flying objects
lol why does this happen
2022-04-03 01:34:43 -07:00
Brian Fopiano ea17e916b8 Gradle updates 2022-04-02 14:14:59 -07:00
Brian Fopiano ce56224038 Merge pull request #777 from Vatuu/Development
Fixed MythicMobs api change
2022-04-02 13:11:13 -07:00
Vatuu 9978932391 Fixed MythicMobs api change 2022-04-02 22:03:27 +02:00
Brian Fopiano 2ebc9e0deb V+
2.0.3-1.18.2
2022-03-27 18:06:00 -07:00
Brian Fopiano 7ddc621009 Merge pull request #769 from VolmitSoftware/Development
Updated PAPI Support
Temp Disabled Oraxen Support
Temp Disabled Ascync Tp
updated NMS (Colors and binds etc...)
Fixed my registry oopsie (thx Vatuu)
removed Debug Prints
/iris Height works now
Colors Fixed
2022-03-27 13:51:27 -07:00
cyberpwn aa4e574eef Fix 1.18.2 Biomes 2022-03-27 14:42:13 -04:00
Brian Fopiano 15bc964fcc Ascync tp is disabled for now
Ascync TP is done in 1.18 already, and this is just a dirty fix to stop crashing/ lol
2022-03-18 16:05:38 -07:00
Brian Fopiano 99713ac964 Need to be version specific now 2022-03-18 15:18:35 -07:00
Brian Fopiano f9a6bd1343 Readding Oraxen Link for Texting 2022-03-17 14:52:40 -07:00
Brian Fopiano f4bee872e1 Merge pull request #768 from Vatuu/Development
Fixes
2022-03-17 14:49:13 -07:00
Vatuu be99b286b3 Fixed Brian's mistake. 2022-03-17 22:43:59 +01:00
Brian Fopiano c7d5212f82 Oraxen link, and NMS WORKING, but not working
Jar loads, Color Borked, ill look at it tomorrow
2022-03-17 00:46:42 -07:00
Brian Fopiano 75726b3d34 Updating PAPI 2022-03-17 00:37:03 -07:00
Brian Fopiano 8d7e76ed81 Attempting to update NMS
(Part 1 of ...)
2022-03-17 00:36:49 -07:00
Brian Fopiano 01b08b2297 Revert "Partial For Vatuu to look at NMS"
This reverts commit cf51581ac1.
2022-03-16 19:38:17 -07:00
Brian Fopiano cf51581ac1 Partial For Vatuu to look at NMS 2022-03-16 19:31:43 -07:00
Brian Fopiano d99fd56995 Debug/height fixed/removed
Small fixes.
2022-03-15 22:18:22 -07:00
Vatuu d149051c27 Fixed wrong description for /iris height. 2022-03-14 18:22:04 +01:00
Vatuu 660aaa87ca Removed debug printout. 2022-03-14 18:20:04 +01:00
DanMB 4010f03b05 ff 2022-03-14 09:52:23 -07:00
DanMB e2d2dcf337 f 2022-03-14 09:47:57 -07:00
DanMB b11aaf3f0c Desperate times 2022-03-14 09:27:50 -07:00
DanMB 30ae065cb4 Drop 255 hardcode checks 2022-03-14 09:26:31 -07:00
Brian Fopiano 7f5b0559aa V+ 2022-03-12 15:52:14 -08:00
Brian Fopiano 851954efb2 Merge pull request #763 from VolmitSoftware/Development
Development Changes (WIP)
2022-03-12 15:50:44 -08:00
Brian Fopiano b8c6a459a6 Merge pull request #761 from Vatuu/Development
Worldheight preperations and absolute fluid height
2022-03-11 16:07:02 -08:00
Vatuu 4523089440 Added customNbt property to IrisLoot objects. 2022-03-12 01:05:28 +01:00
Vatuu 217fe47878 Made fluidHeight in dimension config refer to a static y value. 2022-03-09 23:05:33 +01:00
Vatuu 525e3db24a Working on supporting custom heights per world. 2022-03-09 22:42:20 +01:00
Brian Fopiano c3cac7d8c7 Merge pull request #756 from VolmitSoftware/Development
Development 2.0.1-1.18.X Merge
2022-03-04 09:51:00 -08:00
Brian Fopiano a92717bb1d Merge remote-tracking branch 'origin/Development' into Development 2022-03-04 09:45:40 -08:00
Brian Fopiano 9dc32eada2 V+ 2022-03-04 09:45:33 -08:00
Brian Fopiano d1644c0454 Merge pull request #757 from Vatuu/Development
Made IrisEffect dependent on world's minimum height.
2022-03-03 13:17:32 -08:00
Vatuu 81ce84b3f1 Made IrisEffect dependent on world's minimum height. 2022-03-03 22:13:15 +01:00
Brian Fopiano 18a8a405e0 Revert "Merging Stranges Trim Command to see Practicality"
This reverts commit f639c5b14e.
2022-03-03 07:53:19 -08:00
Brian Fopiano 07840b3b55 Cleanup 2022-02-22 00:15:32 -08:00
Brian Fopiano f639c5b14e Merging Stranges Trim Command to see Practicality
It seems like a neat thing to HAVE even if we wont use it
2022-02-21 23:41:13 -08:00
Brian Fopiano a6851554e8 Merge remote-tracking branch 'origin/Development' into Development 2022-02-21 23:39:52 -08:00
Brian Fopiano 6859b83fe0 Changed Dimension Height Verbose 2022-02-21 23:39:44 -08:00
Brian Fopiano 699da3cd26 Updates the Listing to support NewHorizon/End
Update listing.json
2022-02-21 23:37:07 -08:00
Brian Fopiano 6d429ef57b Temp fix for particles not showing up 2022-02-21 23:25:01 -08:00
Brian Fopiano 0bc7c20106 These region tags are unused, and unreferenced, 2022-02-21 23:24:44 -08:00
Nowhere d8f83d09ee Again an Upsi fixed 2022-02-19 10:58:53 +01:00
Nowhere 43874d35ec Fixed an Upsi 2022-02-19 10:57:18 +01:00
Nowhere 5a186e4b02 Update listing.json
Add newhorizions and theend
2022-02-19 10:56:08 +01:00
DanMB 70b3ac21ef Late AF 2022-02-16 14:48:26 -07:00
DanMB 7f24782aee Avoid white screens 2022-02-15 12:58:08 -07:00
DanMB 009835c17f Handle your engine signals 2022-02-15 12:57:56 -07:00
Brian Fopiano 18db39d480 id say this is V+ Worthy 2022-02-11 21:32:40 -08:00
Brian Fopiano 5956c358d0 Merge pull request #723 from CocoTheOwner/villagerPatch
Remove cartographer villagers due to crashes
2022-02-09 13:54:16 -08:00
Brian Fopiano f18232eb6c Merge pull request #716 from CocoTheOwner/SuppressZLIBError
Only print stacktrace when non-ZLIB exception
2022-02-09 13:52:58 -08:00
Brian Fopiano ac69d57de0 Merge pull request #726 from CocoTheOwner/dimensionDefault
"Default" IrisDimension instead of "Overworld"
2022-02-09 13:49:52 -08:00
Brian Fopiano 9297d4a7d2 Merge pull request #724 from CocoTheOwner/noUpdateRendererSpam
Do not spam renderer updates
2022-02-09 13:48:22 -08:00
Brian Fopiano e6fd4e2255 Merge pull request #722 from CocoTheOwner/fixCustomOutput
CocoLocation Fix
2022-02-09 13:47:43 -08:00
Brian Fopiano c0fa6db602 Merge pull request #735 from CocoTheOwner/noConsoleNPE
Enable edit context
2022-02-09 13:47:09 -08:00
Brian Fopiano d61d732a75 Merge pull request #736 from CocoTheOwner/customSpawnEntity
Context Fix
2022-02-09 13:46:24 -08:00
Brian Fopiano e9c0ac3c6b Merge pull request #744 from TheHappyHopper/master
Temp fix for entity spawn height (fixes #730)
2022-02-09 13:44:20 -08:00
Brian Fopiano e071ecc1d7 Merge branch 'master' into master 2022-02-09 13:43:50 -08:00
Brian Fopiano 14f6ef3da0 Merge pull request #743 from ValkrysFr/master
Hot fix mob spawning height
2022-02-09 13:41:58 -08:00
TheHappyHopper edac6d1f22 Temp fix for entity spawn height
Temporary fix for the mob spawning issue until 1.18 heights are natively added
2022-02-09 09:26:51 -08:00
LLIcocoman 525dfab3e3 Adapt getHeight complex function to negative limits 2022-02-07 10:45:16 +01:00
LLIcocoman 0b77986034 Hot fix mob spawning height 2022-02-07 10:43:09 +01:00
Brian Fopiano f0ab72db92 grammar 2022-02-03 09:17:26 -08:00
DanMB 6243555db1 Drop headless 2022-02-02 23:59:20 -07:00
Brian Fopiano abefb652c1 needed 2022-02-02 12:09:09 -08:00
CocoTheOwner 483e3ff800 Revert "Enable edit context"
This reverts commit df2c1ca6f2.
2022-01-30 16:03:36 +01:00
CocoTheOwner 0642e5a67e Revert "Enable edit context"
This reverts commit df2c1ca6f2.
2022-01-30 16:03:18 +01:00
CocoTheOwner 9553aa6e15 It's an entity, not a particle (can be cows, idk) 2022-01-30 15:45:33 +01:00
CocoTheOwner 090fb1a33e Prevent console NPE & speed up by not using catch/throw 2022-01-30 15:40:18 +01:00
CocoTheOwner c4896a1c07 Use "default" for IrisDimensions 2022-01-25 16:19:30 +01:00
CocoTheOwner 5f165d0a89 Allow default to be used for IrisDimensions 2022-01-25 16:19:21 +01:00
CocoTheOwner df2c1ca6f2 Enable edit context 2022-01-25 15:39:43 +01:00
CocoTheOwner 5e41b6c471 Do not continue generating the map when the engine is closed 2022-01-25 10:53:46 +01:00
CocoTheOwner 1d3fff08ed Do not spam renderer updates 2022-01-25 10:50:43 +01:00
CocoTheOwner 73ffcbcb41 Warning message in configurable radius 2022-01-24 13:48:57 +01:00
CocoTheOwner 510535fdd4 Remove cartographers entirely 2022-01-24 13:36:39 +01:00
CocoTheOwner 4ade79a307 Revert "Re-enable debug"
This reverts commit 8f3093ea2b.
2022-01-24 13:31:50 +01:00
CocoTheOwner 954abb974e Set custom output path correctly again 2022-01-24 13:06:46 +01:00
CocoTheOwner 8f3093ea2b Re-enable debug 2022-01-24 13:05:40 +01:00
DanMB 2ead5b3c40 Object recycler 2022-01-22 17:52:53 -05:00
CocoTheOwner 47cab96d10 Only print stacktrace when non-ZLIB exception 2022-01-22 14:13:58 +01:00
Brian Fopiano 7cfcebf0f5 Merge pull request #713 from ArMiN231/patch-1 2022-01-21 01:36:17 -08:00
Nowhere 12e310f1fe Update Readme
Deleted the reference of the branches due to not having branches anymore for past minecraft versions.
Plus fixing a typo
2022-01-21 10:10:28 +01:00
cyberpwn f28b855189 V+ 2022-01-20 06:43:32 -05:00
cyberpwn 43ed3aba41 Fix bukkit not doing its job 2022-01-20 06:43:27 -05:00
cyberpwn 1da4ee04d3 Default headless off 2022-01-20 06:43:16 -05:00
cyberpwn 17b5e4015d hmmm 2022-01-18 05:23:13 -05:00
cyberpwn 1a8b8b7232 V+ 2022-01-15 08:52:34 -05:00
cyberpwn fd2e8cfa8a Cleanup sources 2022-01-15 08:52:11 -05:00
cyberpwn ccd05c04a5 Merge remote-tracking branch 'origin/master' 2022-01-15 08:50:39 -05:00
cyberpwn e70edffaa3 Attempt to fix beetroot crap 2022-01-15 08:49:39 -05:00
Brian Fopiano 3ecaaf33b6 LavaHeight 2022-01-14 10:05:18 -08:00
cyberpwn c424ea52fa Fix a biome bug issue 2022-01-14 08:14:21 -05:00
cyberpwn ebb1aaeefd Fix data loader issues 2022-01-14 08:11:09 -05:00
cyberpwn f2d1f7bf52 Fix spawning & block updating height issues 2022-01-14 08:07:35 -05:00
Brian Fopiano deb42da38e Just adding lavaSetting, need to implement still 2022-01-13 13:44:36 -08:00
cyberpwn 43df2a754d Fix resource loader threading issues 2022-01-13 07:28:18 -05:00
cyberpwn d468d0ca28 Revert "Switch!"
This reverts commit 47fa31515d.
2022-01-13 07:21:55 -05:00
cyberpwn e586d0aecf Fixes 2022-01-13 07:21:14 -05:00
cyberpwn 8e36fed7bf Sec opts 2022-01-13 07:20:40 -05:00
cyberpwn 2e3bf585ea String garbage reduction 2022-01-13 07:19:00 -05:00
cyberpwn f57ad5a888 Number tweaks 2022-01-13 07:18:14 -05:00
cyberpwn 47fa31515d Switch! 2022-01-13 07:16:45 -05:00
cyberpwn 7e45c17078 Fixes 2022-01-13 07:16:07 -05:00
cyberpwn 32a0fc9b17 Random variable tweaks & opts 2022-01-13 07:14:16 -05:00
cyberpwn 62c2757afc Remove useless bitwise ops 2022-01-13 07:09:52 -05:00
cyberpwn 7a7596fb7b Remove unneeded supps 2022-01-13 07:05:34 -05:00
cyberpwn 708b0d6365 2022 Sources 2022-01-13 07:01:02 -05:00
cyberpwn daf1a1baa2 Cleanup 2022-01-13 06:58:05 -05:00
cyberpwn 59150a655a Fix regen 2022-01-13 06:52:37 -05:00
cyberpwn 5594ad1ce3 Root cleanup 2022-01-13 06:45:58 -05:00
cyberpwn f12bd1368f Update adventure 2022-01-13 06:35:10 -05:00
Dan 6921ad49db Merge pull request #704 from VolmitSoftware/1.18.1
1.18.1
2022-01-12 08:40:23 -05:00
cyberpwn 4430fd21f5 Cleanup sources 2022-01-12 08:39:55 -05:00
cyberpwn 64d8f22757 Ignore the setting lol not possible now 2022-01-12 08:38:34 -05:00
cyberpwn 2a73524a19 Default world hint use dimension height requests 2022-01-12 08:27:55 -05:00
cyberpwn bfd7a02c9d Iris WC use dimension heights 2022-01-12 08:27:04 -05:00
cyberpwn b108a0164a Headless use dimension height request 2022-01-12 08:26:01 -05:00
cyberpwn 9f1aa916e4 Configurable world heights 2022-01-12 08:23:58 -05:00
cyberpwn 5144a2a2df Default heights for world 2022-01-12 08:17:45 -05:00
cyberpwn c9c2deae1a Headless default heights 2022-01-12 08:17:36 -05:00
cyberpwn b220db9d85 Terrain chunk fixes 2022-01-12 08:17:28 -05:00
cyberpwn f9e3d96673 New default heights 2022-01-12 08:17:14 -05:00
cyberpwn 6c2b65055b Support negative MCA file sections 2022-01-12 08:12:19 -05:00
cyberpwn 5fa1efb1f2 Fix by id nms 2022-01-12 08:01:26 -05:00
cyberpwn 6b5d4fc557 ? 2022-01-12 07:32:59 -05:00
cyberpwn 369b125c52 Scoreboard min height patch 2022-01-12 07:23:08 -05:00
cyberpwn 732e049252 Height command check info 2022-01-12 07:18:23 -05:00
cyberpwn cdb419c3f1 Fixes 2022-01-12 06:24:26 -05:00
cyberpwn 2dde426df6 Cleanup 2022-01-12 01:47:38 -05:00
cyberpwn 8c00499e76 Height fixes 2022-01-12 01:24:12 -05:00
cyberpwn 32dac5fbe2 Fix registry access 2022-01-10 21:38:00 -05:00
cyberpwn 0d3f8de811 Fixes 2022-01-10 21:01:03 -05:00
cyberpwn 90b8747775 Fix deps 2022-01-10 19:55:51 -05:00
cyberpwn 5333d23ad8 f 2022-01-10 01:33:24 -05:00
cyberpwn e38e11b890 Fix? 2022-01-10 01:28:53 -05:00
cyberpwn 79303c90d7 Merge remote-tracking branch 'origin/1.18.1' into 1.18.1 2022-01-10 01:20:13 -05:00
cyberpwn 4eac0978ed Readme stuff 2022-01-10 01:20:10 -05:00
Brian Fopiano aef5b9a057 Fixed Typo 2022-01-09 22:14:48 -08:00
cyberpwn c65b951493 Merge remote-tracking branch 'origin/1.18.1' into 1.18.1 2022-01-10 01:01:09 -05:00
cyberpwn 75385e5c01 Fixes 2022-01-10 01:01:05 -05:00
Brian Fopiano ad19baf1f6 f 2022-01-09 21:50:05 -08:00
cyberpwn fb7acbac0a Merge remote-tracking branch 'origin/1.18.1' into 1.18.1 2022-01-10 00:48:45 -05:00
cyberpwn 7cd752ceb7 Remapped packaging 2022-01-10 00:48:42 -05:00
Brian Fopiano 9df288e7e3 Added Biomes
(Fixed them / modded some)
2022-01-09 21:38:39 -08:00
cyberpwn 26396bbe1a Update shadow 2022-01-09 23:47:30 -05:00
cyberpwn a21850e85f Fix ver 2022-01-09 23:47:01 -05:00
cyberpwn b19358914a Drop unused (broken) math helper funcs 2022-01-09 23:45:13 -05:00
cyberpwn 5a296f2d06 Update vanilla biome map (needs style) 2022-01-09 23:45:02 -05:00
cyberpwn 755c84039a NMS 1.18 2022-01-09 23:44:48 -05:00
cyberpwn 136ea44509 NMS Stuff 2022-01-09 23:20:24 -05:00
cyberpwn ba758470fc Merge remote-tracking branch 'origin/1.18.1' into 1.18.1 2022-01-09 21:06:10 -05:00
cyberpwn 878c39413a A good nms start for 1.18 2022-01-09 21:06:05 -05:00
cyberpwn a63a3a8fa5 Handle new mappings for now 2022-01-09 21:05:58 -05:00
Brian Fopiano 6a2e1f0271 Merge pull request #703 from VolmitSoftware/master
Merge
2022-01-09 16:49:35 -08:00
Brian Fopiano 21f1ecfa15 make it debug but hide error for entities 2022-01-02 16:21:59 -08:00
DanMB 9c5966c49c Im about to just throw the entire spigot jar into the cp
fuck md5
2021-12-30 20:58:43 -08:00
DanMB ffc1d01a0a Build tools exec fixes 2021-12-30 20:15:36 -08:00
DanMB e66e6e0b51 Print java version 2021-12-30 20:07:39 -08:00
DanMB b40a86e114 Update gradle 2021-12-30 20:07:30 -08:00
DanMB ef23d6d51a Test 2021-12-30 19:56:37 -08:00
Brian Fopiano 4fea28b313 This maked a moddable energy maximum, its default is the same
Imma just push it
2021-12-30 19:55:31 -08:00
Brian Fopiano 5502fa4584 just kidding, silence it 2021-12-30 18:12:44 -08:00
Brian Fopiano 0e2ae6840b Catches if an entity referenced was removed 2021-12-30 18:02:29 -08:00
Brian Fopiano 3a4493c914 V+
:3
2021-12-29 19:48:43 -08:00
Brian Fopiano 66deda7c76 Merge remote-tracking branch 'origin/master' 2021-12-29 18:32:47 -08:00
Brian Fopiano 44beeec1d7 Added OreGeneration, New generation mode 2021-12-29 18:31:56 -08:00
Brian Fopiano 824f74a4ce Fixed Deposits on chunk border
nobody even reads these
2021-12-29 18:30:36 -08:00
DanMB 8d72d2b3a4 V+ 2021-12-29 08:31:47 -08:00
Brian Fopiano 876f1231ee Merge pull request #695 from xIRoXaSx/master
Implementation of #692
2021-12-27 12:46:46 -08:00
Brian Fopiano ffbf395074 Fixes #702
Fixed the Hyphae or whatever not being good or whatever..
2021-12-26 19:20:06 -08:00
Brian Fopiano 550b513f6b Debug respects console color options 2021-12-26 19:04:53 -08:00
Brian Fopiano 3f4ee39ca9 Fixed D'Cree 2021-12-26 18:55:01 -08:00
Brian Fopiano a4887ec3c3 Merge pull request #699 from CocoTheOwner/fixDebugMsg
patch pregen debug
2021-12-26 18:17:35 -08:00
Brian Fopiano f1185d8f34 Merge pull request #700 from CocoTheOwner/allowMapVisionConsole
Allow consoles to open the vision gui
2021-12-26 18:16:58 -08:00
Brian Fopiano 030b2998eb Merge pull request #693 from CocoTheOwner/self-ref
iris settings self reference
2021-12-26 18:15:41 -08:00
Brian Fopiano 3f8ae692ff All Jigsaw bits, biomes, regions, dimensions, caves
Added
2021-12-26 17:47:08 -08:00
Brian Fopiano 07df92d75c redid focus / added coco's focus 2021-12-25 20:26:31 -08:00
Brian Fopiano 8bbf98979e Fixed Rarity map, Fixed missing blocks 2021-12-25 18:40:25 -08:00
Brian Fopiano 24408e53a3 So like... Fixed the cache maybe? 2021-12-25 13:51:46 -08:00
DanMB f8160e254b f 2021-12-25 12:42:21 -08:00
DanMB ff9b585b29 Drop api 2021-12-25 12:31:18 -08:00
DanMB 095f413147 Warn 2021-12-25 11:59:12 -08:00
DanMB 3dd1162a59 Update caffeine 2021-12-25 11:58:43 -08:00
DanMB 436225e341 Update gson 2021-12-25 11:58:12 -08:00
DanMB ca89073537 Proper versioning 2021-12-25 11:55:15 -08:00
DanMB 7663145821 Fix 2021-12-25 11:53:36 -08:00
DanMB eed75eea58 Gradle update wrapper 2021-12-25 11:48:18 -08:00
DanMB 194955770e Fix 2021-12-25 11:25:03 -08:00
Brian Fopiano 3c3820cb38 Adding my LP 2021-12-25 11:16:54 -08:00
DanMB fc25a328bf Oh dear god 2021-12-25 11:08:29 -08:00
DanMB c7e857506d Dont use max perm size 2021-12-25 11:08:20 -08:00
CocoTheOwner d343cd4f08 Allow consoles to open the vision gui 2021-11-18 15:09:41 +01:00
CocoTheOwner b4aa1b74ab patch pregen debug 2021-11-18 14:42:05 +01:00
RoXaS b043c5eade Added timeBlock and weather check for #692 2021-11-15 22:26:07 +01:00
cyberpwn c1a6ca80f5 ... Dont loop boards if no project active 2021-11-13 18:15:12 -05:00
cyberpwn a010ef0f60 V+ 2021-11-13 17:53:55 -05:00
cyberpwn 1240632dae Force Persist mobs (config option) 2021-11-13 17:53:49 -05:00
CocoTheOwner 87df6e08ca iris settings self reference 2021-11-13 17:50:41 +01:00
cyberpwn d7ad947cbb Auto stash before revert of "Improve finding by allowing minimal distance & randomization" 2021-11-12 21:50:27 -05:00
cyberpwn 434e7f75fa Stop touching this without tests. NO MORE PRS TO DECREE 2021-11-12 21:49:55 -05:00
CocoTheOwner 6f6e74e015 Revert "Improve finding by allowing minimal distance & randomization"
This reverts commit 636fddd642.
2021-11-12 21:31:50 -05:00
CocoTheOwner 24f3176b1b Revert "Fix random"
This reverts commit 107d1fc8ff.
2021-11-12 21:31:40 -05:00
cyberpwn 2d0df240f4 Revert "f"
This reverts commit def658ccc6.
2021-11-12 21:27:24 -05:00
cyberpwn def658ccc6 f 2021-11-12 21:27:03 -05:00
cyberpwn 676b35fb1c V+ 2021-11-12 16:52:13 -05:00
cyberpwn 18a1a693b5 Fix center possibly 2021-11-12 16:48:19 -05:00
cyberpwn 617a797743 Image maps working mostly 2021-11-12 16:45:44 -05:00
cyberpwn e1711b5d03 CNG Image map support 2021-11-12 15:52:50 -05:00
cyberpwn 28ef4a0b2b Image maps 2021-11-12 15:35:45 -05:00
cyberpwn 8ee17150b8 Iris Images! 2021-11-12 15:35:26 -05:00
cyberpwn b52017625d Cellularize things 2021-11-12 06:24:47 -05:00
cyberpwn 60ac9dfca2 Nope 2021-11-12 05:16:35 -05:00
cyberpwn c671735e84 Attempt fix for spigot issues 2021-11-12 05:11:44 -05:00
cyberpwn 29e5247131 I literally did nothing here 2021-11-12 05:07:01 -05:00
cyberpwn f5c533094e fmt 2021-11-12 05:00:07 -05:00
cyberpwn 06a8e08244 Fix rarity selection stream... maybe 2021-11-12 04:59:48 -05:00
cyberpwn 30eda70dda onenable stuff (coco) 2021-11-12 04:59:38 -05:00
cyberpwn 38ec4cc3ce V+ 2021-11-11 18:29:38 -05:00
cyberpwn 435271becf Fix NPE 2021-11-11 18:25:43 -05:00
cyberpwn 991bb12c80 Drop area system 2021-11-11 17:59:19 -05:00
Dan b8b643ebdf Merge pull request #663 from CocoTheOwner/onlyWarnWhenPlayer
Only warn about null engine access when the sender is a player.
2021-11-11 17:56:48 -05:00
Dan 42ad8ba1ee Merge pull request #664 from CocoTheOwner/validOnly
Better option picking for players & console
2021-11-11 17:56:38 -05:00
Dan 9f425cce4c Merge pull request #667 from CocoTheOwner/warnWhenCreate
Warn users when using /iris create
2021-11-11 17:56:06 -05:00
Dan 8be08acfa2 Merge pull request #668 from CocoTheOwner/noTaskIfDisabled
Prevent scheduling tasks while disabled
2021-11-11 17:55:53 -05:00
Dan 6422772530 Merge pull request #671 from CocoTheOwner/betterFind
Improve finding by allowing minimal distance & randomization
2021-11-11 17:54:25 -05:00
Dan a008a425ec Merge pull request #685 from CocoTheOwner/printPregenDet
Print pregen details
2021-11-11 17:52:29 -05:00
Dan 0936015d84 Merge pull request #687 from CocoTheOwner/resourceTypeForVscode
Show entity spawners in autocomplete
2021-11-11 17:52:00 -05:00
Dan 488a59df2e Merge pull request #688 from CocoTheOwner/hForHotload
shortcut h goes to hotload instead of spawner charge
2021-11-11 17:51:41 -05:00
Dan 5bf1533067 Merge pull request #689 from CocoTheOwner/gotoInStudio
Goto for Find & add to studio
2021-11-11 17:51:25 -05:00
CocoTheOwner 77024cd651 Goto for Find & add to studio
My brain still defaults to /iris studio goto so this'll help :)
2021-11-01 12:07:33 +01:00
CocoTheOwner d0e209b2eb shortcut h goes to hotload instead of spawner charge 2021-11-01 11:32:28 +01:00
CocoTheOwner d934fc181c Show entity spawners in autocomplete 2021-11-01 11:30:36 +01:00
Dan 2ca6235b5d Add files via upload 2021-10-27 19:59:34 -04:00
cyberpwn a271ed000e Revert "Revert "Graphs & streams ""
This reverts commit 4d64ad8bb8.
2021-10-26 23:40:54 -04:00
cyberpwn 4d64ad8bb8 Revert "Graphs & streams "
This reverts commit 66a717b927.
2021-10-26 23:40:52 -04:00
cyberpwn 66a717b927 Graphs & streams 2021-10-26 19:02:57 -04:00
CocoTheOwner 79114a90f5 Print pregen details 2021-10-21 09:24:50 +02:00
cyberpwn 4427748b8b Update lombok 2021-10-21 02:04:42 -04:00
StrangeOne101 ae9b8326a4 Added studio trim command
- Added studio trim command. Allows you to analyze/delete unused files in a project/pack
2021-10-15 19:13:17 +13:00
cyberpwn 619c240e62 Update deps (experimental) 2021-10-09 04:29:35 -04:00
cyberpwn 19889e7d6f Fix build 2021-10-09 04:06:59 -04:00
CocoTheOwner 107d1fc8ff Fix random 2021-10-01 13:10:07 +02:00
CocoTheOwner 636fddd642 Improve finding by allowing minimal distance & randomization 2021-10-01 12:20:00 +02:00
StrangeOne101 13532a1f0a Improved Decree Commands
- Improved parsing of inputs that aren't specified. Now, all arguments that are specified are parsed first, which allows us to assume the non specified ones more easily
- Fixes #662
2021-10-01 18:40:57 +13:00
CocoTheOwner e1ace2ba08 Prevent scheduling tasks while disabled 2021-09-29 21:42:41 +02:00
CocoTheOwner 96f0c1d148 Warn users when using /iris create that they should use multiverse instd 2021-09-29 18:11:13 +02:00
CocoTheOwner 03ecf8fe82 Better headers & warnings 2021-09-27 15:41:15 +02:00
CocoTheOwner 1c03a7fc5c 3 tries + either valid or null 2021-09-27 15:33:45 +02:00
CocoTheOwner 85fe65612e Only accept posted console option picking when valid result 2021-09-27 15:26:40 +02:00
CocoTheOwner 88469f6141 Merge branch 'master' into onlyWarnWhenPlayer 2021-09-27 15:24:23 +02:00
CocoTheOwner d81ba4a8c8 Only warn about null engine access when the sender is a player. 2021-09-27 15:23:38 +02:00
cyberpwn 734c0a37f7 V+ 2021-09-26 12:04:08 -04:00
cyberpwn 7becca450a Woop works 2021-09-26 11:17:41 -04:00
cyberpwn f2a5489363 Data bits 2021-09-26 04:42:44 -04:00
cyberpwn c7a8cb566b fix 2021-09-25 18:25:08 -04:00
cyberpwn a80031c3c5 Data fixes for tec plates 2021-09-25 18:25:00 -04:00
cyberpwn b6d9eb3dcc f 2021-09-25 14:18:30 -04:00
cyberpwn 4a594a8e4f Fix 2021-09-25 13:58:18 -04:00
cyberpwn 384a28c517 Clean up 2021-09-25 13:52:50 -04:00
cyberpwn 57ef3842e9 UCW 2021-09-25 13:51:36 -04:00
Dan 5b509466e6 Merge pull request #659 from CocoTheOwner/pickOptionForConsol,e
option picking auto-pick nr1 for consoles
2021-09-25 13:50:30 -04:00
Dan 7019947083 Merge pull request #657 from CocoTheOwner/noMultiLine
Reduce multi-line console statements
2021-09-25 13:49:27 -04:00
Dan 5ddc9243dd Merge pull request #661 from CocoTheOwner/defaultHeadless
Make headless default
2021-09-25 13:49:05 -04:00
cyberpwn 1dd89597fd Fix 2021-09-25 13:49:40 -04:00
cyberpwn 2ac1de4ae9 Reduced cache defaults 2021-09-25 13:44:09 -04:00
cyberpwn 1f783ddf44 Remap settings 2021-09-25 13:42:45 -04:00
cyberpwn bee920f96a DANGER V+ 2021-09-25 13:37:54 -04:00
cyberpwn 333e158ca5 Bust the cache 2021-09-25 12:55:27 -04:00
CocoTheOwner 67baf07efc Make headless default 2021-09-25 17:56:14 +02:00
cyberpwn 4ba8ecd3fd Fix mode fail due to pres svc 2021-09-25 08:55:19 -04:00
cyberpwn aee42cdecc Fix issues with decorants on objects fixes #660 2021-09-25 08:55:10 -04:00
cyberpwn adb2a32fda Fix index OOB for caves / mca cap fixes #655 2021-09-25 08:45:28 -04:00
cyberpwn d2c373b27d Force stop bursters if longer than 7s 2021-09-25 08:40:35 -04:00
cyberpwn b0060bcb82 More settings 2021-09-25 08:22:13 -04:00
cyberpwn 4f63db3f70 Async tp 2021-09-24 09:35:16 -04:00
cyberpwn 0d356514f2 Fix ores in air structures 2021-09-24 08:38:11 -04:00
CocoTheOwner 6ce37944a7 This is better 2021-09-24 11:00:27 +02:00
CocoTheOwner 8ef75f7c34 option picking auto-pick nr1 for consoles
Consoles cannot pick options, so we select the first option for them.
2021-09-24 09:52:18 +02:00
cyberpwn bf2da499d6 Fixes 2021-09-23 21:23:38 -04:00
CocoTheOwner ef2fe6a775 Two more 2021-09-23 17:07:40 +02:00
CocoTheOwner 2ac84f14be Just so they don't go on multiple lines :) 2021-09-23 17:06:48 +02:00
Dan 5078becbb3 Merge pull request #653 from CocoTheOwner/rawCommands
Raw commands in Entities
2021-09-23 10:57:27 -04:00
cyberpwn e19784a429 Still busted. Build at your own risk 2021-09-23 10:56:22 -04:00
cyberpwn 1628652264 BITS BITS EVERYWHERE 2021-09-23 10:44:56 -04:00
CocoTheOwner 668c7d301b Merge branch 'master' into rawCommands 2021-09-23 12:29:50 +02:00
CocoTheOwner d56a63e712 Requested patches 2021-09-23 12:23:11 +02:00
CocoTheOwner 8070b211ab Revert "OK I'm really guessing at this point"
This reverts commit 0a85521028.
2021-09-23 12:15:46 +02:00
cyberpwn 5ed59d0282 Atomic bit storage 2021-09-23 06:07:44 -04:00
cyberpwn 70223cfcd6 Atomic crude incrementalIdentityHashmaps 2021-09-23 06:01:32 -04:00
cyberpwn 7d0ff90b01 Atomic Linear Palettes 2021-09-23 05:52:59 -04:00
cyberpwn ecc09a710a Allow disabling paletted hunks 2021-09-23 05:50:38 -04:00
cyberpwn 846b4faefa Fix caves 2021-09-23 05:39:41 -04:00
cyberpwn 66da382789 Tweaks and fixes 2021-09-23 05:28:11 -04:00
cyberpwn 3378723bdd World manager fix engine close post ticks 2021-09-23 04:33:43 -04:00
cyberpwn 56723330b3 No cache locks 2021-09-23 04:32:49 -04:00
Dan 08e2244975 Merge pull request #656 from CocoTheOwner/noPregenEngineShutdown
Stop pregen on engine shutdown
2021-09-23 04:23:06 -04:00
cyberpwn f9e934fa1a Auto stash before revert of "Drop it " 2021-09-22 12:54:06 -04:00
CocoTheOwner 30eacc5019 Stop pregen on engine shutdown 2021-09-22 17:57:02 +02:00
cyberpwn 3ba7c18288 Revert "Drop it "
This reverts commit cc66e7e7c8.
2021-09-22 09:54:41 -04:00
cyberpwn 958a09b280 Update settings 2021-09-22 08:56:54 -04:00
cyberpwn cc66e7e7c8 Drop it 2021-09-22 08:55:45 -04:00
cyberpwn 7f58e0413c Not worth, 2021-09-22 08:54:38 -04:00
cyberpwn 3c256ddc5d PaletteHunkOr 2021-09-22 06:43:23 -04:00
Dan d2f8e62ecc Merge pull request #649 from CocoTheOwner/fixes
fixes
2021-09-22 06:37:51 -04:00
Dan 5ce479b1af Merge pull request #650 from CocoTheOwner/betterHotloadCMD
Better hotloading command (allows console)
2021-09-22 06:37:08 -04:00
Dan be2b893a3f Merge pull request #652 from CocoTheOwner/studioInfo
Add another update message to make sure the command is ran
2021-09-22 06:36:16 -04:00
cyberpwn 32994ce4af Merge remote-tracking branch 'origin/master' 2021-09-22 06:28:41 -04:00
cyberpwn 0c6a43fe0a Basic palette hunk 2021-09-22 06:28:37 -04:00
cyberpwn 81e0376102 Palette container support custom data 2021-09-22 06:26:57 -04:00
cyberpwn f21306a19d Linear palettes for custom data 2021-09-22 06:26:38 -04:00
cyberpwn 5f3dcac8e1 Hashmap palettes for custom data 2021-09-22 06:26:27 -04:00
cyberpwn 600bf94044 Basic impl for global palettes 2021-09-22 06:26:18 -04:00
cyberpwn 3b38b69034 Support .equals 2021-09-22 06:26:05 -04:00
cyberpwn faa8f0f9b6 A palette type for writing / reading 2021-09-22 06:25:54 -04:00
cyberpwn 125624b09e Drop useless palette classes 2021-09-22 06:25:42 -04:00
cyberpwn 7186afda93 Slice support palettes 2021-09-22 06:25:23 -04:00
cyberpwn ee542abb5d Sep palettes for other uses 2021-09-22 05:21:33 -04:00
cyberpwn c7638a6485 NBTSpecific palettes 2021-09-22 05:21:23 -04:00
CocoTheOwner 16795871c3 Run commands in effects 2021-09-21 20:44:31 +02:00
CocoTheOwner 54eff0e27f Good enough 2021-09-21 20:27:08 +02:00
CocoTheOwner 0a85521028 OK I'm really guessing at this point 2021-09-21 20:17:31 +02:00
CocoTheOwner 587af255a6 fix 2021-09-21 19:53:24 +02:00
CocoTheOwner 06326f4d55 Add another update message to make sure the command is ran 2021-09-21 19:46:09 +02:00
CocoTheOwner b73f9798e4 Introduction if IrisCommands 2021-09-21 19:45:32 +02:00
Dan 7ef5031717 Merge pull request #645 from CocoTheOwner/densityRange
Density range.
2021-09-21 12:29:26 -04:00
CocoTheOwner ba30258ee6 Better hotloading command (allows console) 2021-09-21 18:18:38 +02:00
CocoTheOwner 940a65cac0 Revert "fixes"
This reverts commit 8539bc5ade.
2021-09-21 18:17:51 +02:00
CocoTheOwner 7878b05030 Run raw commands for entity spawns 2021-09-21 17:57:55 +02:00
CocoTheOwner 16eb63d2ea last one 2021-09-21 17:56:14 +02:00
CocoTheOwner 8539bc5ade fixes 2021-09-21 17:31:58 +02:00
Dan 02f357a88d Merge pull request #643 from CocoTheOwner/fixes
Improve some commands
2021-09-21 08:30:48 -04:00
cyberpwn 92f72b45d5 V+ 2021-09-21 08:19:29 -04:00
cyberpwn 7755b19abc 3D Cache to caff 2021-09-21 08:19:24 -04:00
cyberpwn 6b62ba1c5b Mantle reduction mem 2021-09-21 08:18:51 -04:00
cyberpwn 2514aa2e3c Drop updates after use 2021-09-21 08:18:33 -04:00
cyberpwn 82982c54f9 Optional object type name placement 2021-09-21 08:18:13 -04:00
cyberpwn 726718a6f5 Mantle in pregen methods 2021-09-21 08:18:00 -04:00
cyberpwn 1609e232a2 New settings 2021-09-21 08:17:44 -04:00
cyberpwn fda2e265af clean pregener 2021-09-21 08:17:38 -04:00
cyberpwn 5c19ae0e94 f 2021-09-20 11:37:18 -04:00
CocoTheOwner f01b3caeb1 Merge branch 'master' into fixes 2021-09-20 16:40:37 +02:00
CocoTheOwner 9e7262660f Density range. Now use getDensity(rng, x, z, IrisData) 2021-09-20 16:39:19 +02:00
cyberpwn 4489197d01 V+ 2021-09-20 07:38:37 -04:00
cyberpwn 3d411fc6f3 Find strongholds closes #639 2021-09-20 07:33:18 -04:00
cyberpwn d4f26577a5 Autoconfigure iris first time startup 2021-09-20 07:14:56 -04:00
cyberpwn c744f761a1 Wire modes to engine 2021-09-20 07:14:38 -04:00
cyberpwn 7224ca43f3 Auto configuration modes 2021-09-20 07:14:31 -04:00
cyberpwn b95cea35a2 Modes 2021-09-19 03:15:49 -04:00
cyberpwn d891791929 Engine modes 2021-09-19 00:48:16 -04:00
CocoTheOwner 826b0ad4ce Improve some commands 2021-09-18 15:07:36 +02:00
cyberpwn c99c61cc7a V+ 2021-09-18 05:40:24 -04:00
cyberpwn 5eb57de264 Nobody 2021-09-18 05:29:06 -04:00
cyberpwn 976cfdbbc2 Performance improvements 2021-09-18 05:08:49 -04:00
cyberpwn a7aea8d1ed Starcast is 60+% faster 2021-09-18 04:42:23 -04:00
cyberpwn 9caa89b733 Gross 2021-09-18 04:25:26 -04:00
cyberpwn e42515c1ea Cleanup 2021-09-17 23:49:25 -04:00
cyberpwn 901169775d V+ 2021-09-15 18:46:51 -04:00
cyberpwn 3d86540d1d Remove interpolators log 2021-09-15 18:46:23 -04:00
cyberpwn 6cb97d067e Fix op spigot jig exit 2021-09-14 12:21:51 -04:00
cyberpwn ad323ebf2b Proper derefs 2021-09-14 12:17:39 -04:00
cyberpwn 18efedf7c5 Use main pool 2021-09-14 11:38:05 -04:00
cyberpwn 4eaf4ff26b Fixes 2021-09-14 11:37:59 -04:00
cyberpwn b1d2ac7822 Hella nice goto 2021-09-13 20:36:50 -04:00
cyberpwn 87e6e583a6 Locators 2021-09-13 18:40:40 -04:00
cyberpwn 2897e1a3ad Routing 2021-09-13 18:40:28 -04:00
cyberpwn dfd5a7c21d Locate objects 2021-09-13 18:40:22 -04:00
cyberpwn 093f6411c7 Locate jigsaw structures 2021-09-13 18:40:15 -04:00
cyberpwn 845bea522b Spiral util for infininity 2021-09-13 18:39:54 -04:00
cyberpwn d0175f9c39 Marker exhaustion & auto-removal in invalid positions 2021-09-13 16:46:04 -04:00
cyberpwn 0b1d59e398 Marker destruction 2021-09-13 16:33:24 -04:00
cyberpwn 93bcb8994f Height streams only 2021-09-13 10:08:41 -04:00
cyberpwn ecee464b34 Fix decorant mods 2021-09-13 09:51:33 -04:00
cyberpwn 42789fcc24 Fix vision 2021-09-13 09:47:44 -04:00
cyberpwn f26b36f3e8 Rounded height stream for mantle 2021-09-13 09:47:35 -04:00
cyberpwn 9f09052900 Fix biome mods 2021-09-13 09:47:24 -04:00
cyberpwn 95a7ba0785 No modifiers 2021-09-13 09:47:09 -04:00
cyberpwn ef4a3b405d Fix complex 2021-09-13 09:46:59 -04:00
cyberpwn 7096fcd43e No more true height streams 2021-09-13 09:46:55 -04:00
cyberpwn eeab12ed86 Only compute if absent/present if compute is not needed (locking opts) 2021-09-13 09:31:56 -04:00
cyberpwn ca961e8498 Multicore smartbore 2021-09-13 09:14:08 -04:00
cyberpwn 40b0a37110 Fixes 2021-09-12 12:08:35 -04:00
cyberpwn 6daf0861c9 Marker spawning 2021-09-12 12:02:36 -04:00
cyberpwn 03bc1e722e Optimal updates only 2021-09-12 11:12:48 -04:00
cyberpwn ce94c5e237 Dont wait for the mantle to load, skip it until it's loaded (async) 2021-09-12 10:56:58 -04:00
cyberpwn 88aad1e107 Reduce cave updates 2021-09-12 10:53:56 -04:00
cyberpwn c4fe14bd45 Reduced updates 2021-09-12 10:42:36 -04:00
cyberpwn 2191b539e3 Dont warn on markers 2021-09-12 09:28:41 -04:00
cyberpwn dcd3495564 Clean 2021-09-12 09:10:18 -04:00
cyberpwn 30559841d5 Integrate markers with world mgr (initial spawns only so far) 2021-09-12 09:06:19 -04:00
cyberpwn 0dc0d5c981 Markers 2021-09-12 08:37:57 -04:00
cyberpwn 3b981e2818 V+ (UNSTABLE DO NOT USE) 2021-09-12 08:28:47 -04:00
Dan 47bfc74ba9 Delete gradlebuild.yml 2021-09-12 08:26:09 -04:00
cyberpwn 8858e1bce8 Cleanup 2021-09-12 08:26:09 -04:00
cyberpwn 04be430b8c Fix mtl carving streams 2021-09-12 08:24:51 -04:00
cyberpwn d46351b866 Remove feature streams from worldmgr 2021-09-12 08:24:19 -04:00
cyberpwn d3ec29aa42 Drop features from project compression 2021-09-12 08:23:21 -04:00
cyberpwn 357abee462 Vision update streams 2021-09-12 08:22:40 -04:00
cyberpwn c86a040768 Update render streams 2021-09-12 08:22:26 -04:00
cyberpwn d9e7dc158d Drop engine stream types 2021-09-12 08:22:11 -04:00
cyberpwn 46591968c0 Drop feature command on studio 2021-09-12 08:21:54 -04:00
cyberpwn bb7c256ecf Remove features from mtl object chances 2021-09-12 08:21:36 -04:00
cyberpwn d239ed1c9f Jig component remove feature defs 2021-09-12 08:20:49 -04:00
cyberpwn 604dece366 Remove mantle component: feature 2021-09-12 08:20:02 -04:00
cyberpwn 8b55f20684 Drop feature size radius computation in mantle engine 2021-09-12 08:18:46 -04:00
cyberpwn 8bf12ff32c No features in board service 2021-09-12 08:18:11 -04:00
cyberpwn 0596482a8d Remove features from regions 2021-09-12 08:17:46 -04:00
cyberpwn b5a77aa62a Remove Zone matter from jig structure 2021-09-12 08:17:32 -04:00
cyberpwn 5db27d9d93 Remove ZM from mantle chunk 2021-09-12 08:17:17 -04:00
cyberpwn a630e4937b Drop zone matter 2021-09-12 08:16:58 -04:00
cyberpwn 96d27d17ce Remove features from mantle chunk format 2021-09-12 08:16:38 -04:00
cyberpwn 742b848f42 Remove features from mantle writer 2021-09-12 08:16:01 -04:00
cyberpwn 57884e3400 Remove feature def from mantle 2021-09-12 08:15:42 -04:00
cyberpwn 40459f4e01 Tear out of complex features 2021-09-12 08:15:08 -04:00
cyberpwn a461072113 Remove biome registry features 2021-09-12 08:12:32 -04:00
cyberpwn 0105931414 Remove dim features registry 2021-09-12 08:12:13 -04:00
cyberpwn c0b7b871ba Remove feature command on what 2021-09-12 08:11:47 -04:00
cyberpwn 1250c94600 Drop feature classes 2021-09-12 08:11:29 -04:00
cyberpwn ccbd5b17d3 Mantle dont use post handler 2021-09-12 08:10:29 -04:00
cyberpwn 2fd3abbb14 Remove base noise features 2021-09-12 08:08:18 -04:00
cyberpwn 5bc019d3d3 Improvements 2021-09-12 08:02:41 -04:00
cyberpwn 91c24d5501 Fixes lombok 2021-09-12 07:48:01 -04:00
cyberpwn cd7f192fba Improve biome generator performance when interpolators match each other 2021-09-12 07:46:24 -04:00
cyberpwn 7d0555fb67 Cleanup 2021-09-11 13:18:58 -04:00
Dan 3864708cf1 Merge pull request #633 from VolmitSoftware/matter
Basic matter functions
2021-09-11 13:16:54 -04:00
cyberpwn ef22a58631 Matter inject 2021-09-11 13:16:57 -04:00
cyberpwn acf4fa106f Filtering for matter 2021-09-11 13:05:23 -04:00
cyberpwn 5a5704ee0b Read matter from IOB 2021-09-11 12:18:25 -04:00
cyberpwn 7e65416f10 Register matter loaders 2021-09-11 12:06:23 -04:00
cyberpwn 2d7bc59db4 Matter loader 2021-09-11 12:04:48 -04:00
cyberpwn 930469a006 Matter placer 2021-09-11 12:00:04 -04:00
cyberpwn c657ba52ad V+ 2021-09-11 07:53:35 -04:00
Dan 46499512eb Merge pull request #627 from CocoTheOwner/maxOnPregen
Max on pregen radius parameter
2021-09-11 07:51:31 -04:00
Dan c2779570fa Merge pull request #628 from CocoTheOwner/reopenVSCodeOnFail
Try opening VSCode again after first time failed
2021-09-11 07:50:37 -04:00
Dan 750dc609bb Merge pull request #630 from CocoTheOwner/vDecreeCmd
Print default string instead of full DecreeParam instance
2021-09-11 07:49:30 -04:00
cyberpwn 1037183f4c Fixes 2021-09-11 07:49:13 -04:00
cyberpwn 979f959291 Fix hunk oob through have mod 2021-09-11 06:22:57 -04:00
CocoTheOwner 86cfe0465c Print default string instead of full DecreeParam instance 2021-09-11 10:50:41 +02:00
CocoTheOwner 61d461eea5 Try opening VSCode again after first time failed 2021-09-11 09:15:45 +02:00
CocoTheOwner ff1733225a Max on pregen radius parameter 2021-09-11 09:15:09 +02:00
cyberpwn 784fca98c8 Revert "Drop features "
This reverts commit 1f0ebd8ba1.
2021-09-10 21:37:47 -04:00
cyberpwn 1f0ebd8ba1 Drop features 2021-09-10 21:33:07 -04:00
cyberpwn 2e645f04e7 Fix entities stuck in the ground closes #607 2021-09-10 09:27:11 -04:00
cyberpwn debe8eb81c Remove config v 2021-09-10 09:15:29 -04:00
Dan 2e8f8f258d Merge pull request #622 from CocoTheOwner/unusedSettings
Simplify settings
2021-09-10 09:13:03 -04:00
Dan 697f40595e Merge pull request #618 from CocoTheOwner/pregenFix
Engine is null again dan!
2021-09-10 09:12:47 -04:00
cyberpwn 37404b6619 Merge remote-tracking branch 'origin/master' 2021-09-10 09:13:10 -04:00
cyberpwn 4b3a016d70 Init engine on world touch / access / checks 2021-09-10 09:13:06 -04:00
Dan ed2af5f9b4 Merge pull request #620 from CocoTheOwner/patchDownload
Patch download
2021-09-10 09:09:13 -04:00
Dan 5418ab52b7 Merge pull request #621 from CocoTheOwner/studioDownload
Add download to studio
2021-09-10 09:07:06 -04:00
CocoTheOwner 61037af138 Remove version yeet 2021-09-10 15:06:04 +02:00
Dan f86cd11d74 Merge pull request #624 from CocoTheOwner/patches
Patches
2021-09-10 09:03:30 -04:00
CocoTheOwner e46b335dc0 ok 2021-09-10 15:02:56 +02:00
cyberpwn 79299112eb Fixes 2021-09-10 09:01:04 -04:00
cyberpwn 3d5bee3a2c Basic API 2021-09-10 08:34:02 -04:00
CocoTheOwner 466cc84c16 Patches 2021-09-10 13:55:32 +02:00
CocoTheOwner 27f9e2ea9f V+ 2021-09-10 02:14:40 +02:00
CocoTheOwner 593e10eec2 Rename mismatching version number file to another numba 2021-09-10 02:13:57 +02:00
CocoTheOwner 5d5b8b78d4 Remove little-used shortcuts, check config version 2021-09-10 02:09:58 +02:00
CocoTheOwner 620c4087bc Studio in studio tho 2021-09-10 01:36:43 +02:00
CocoTheOwner c5bf0e0cb7 Simplify settings 2021-09-10 01:35:26 +02:00
CocoTheOwner 7f7d53e00a Add download to studio 2021-09-10 01:08:30 +02:00
CocoTheOwner 073466bd6a Patch download 2021-09-09 23:20:54 +02:00
CocoTheOwner 151e88046d Engine is null again dan! 2021-09-09 14:54:29 +02:00
cyberpwn c3b1d6735e Use direct types 2021-09-09 08:35:41 -04:00
cyberpwn e3a5da64a5 Handle registered blocks 2021-09-09 08:28:22 -04:00
cyberpwn 3c4599423d Registry fixes 2021-09-09 08:28:12 -04:00
Dan 2bb1f27e07 Merge pull request #616 from CocoTheOwner/fixTreesIsh
I guess
2021-09-09 08:22:47 -04:00
Dan e3adbbbd0b Merge pull request #599 from CocoTheOwner/Fixes
aliases, startup NPE, pick option when console
2021-09-09 08:22:05 -04:00
cyberpwn 5e6838bdc9 Registries 2021-09-09 07:47:42 -04:00
cyberpwn fc6720e090 API 2021-09-09 07:00:12 -04:00
CocoTheOwner e29f671363 I guess 2021-09-08 18:06:57 +02:00
CocoTheOwner 6e501c7b8a Print seed 2021-09-08 15:15:04 +02:00
CocoTheOwner 7dd3cc6f9f Merge remote-tracking branch 'upstream/master' into Fixes 2021-09-08 15:02:56 +02:00
cyberpwn f346f080ee Revert "Revert "Revert "Revert "Revert "Revert "V+""""""
This reverts commit 9f19e585db.
2021-09-08 08:52:49 -04:00
cyberpwn 9f19e585db Revert "Revert "Revert "Revert "Revert "V+"""""
This reverts commit bc74487301.
2021-09-08 08:52:45 -04:00
cyberpwn bc74487301 Revert "Revert "Revert "Revert "V+""""
This reverts commit 693baa8cef.
2021-09-08 08:52:43 -04:00
cyberpwn 693baa8cef Revert "Revert "Revert "V+"""
This reverts commit 9ae60d4859.
2021-09-08 08:52:40 -04:00
cyberpwn 9ae60d4859 Revert "Revert "V+""
This reverts commit 281efef207.
2021-09-08 08:52:37 -04:00
cyberpwn 281efef207 Revert "V+"
This reverts commit 986de265fe.
2021-09-08 08:52:33 -04:00
CocoTheOwner d893537ae6 Merge remote-tracking branch 'upstream/master' into Fixes 2021-09-08 14:52:01 +02:00
cyberpwn 986de265fe V+ 2021-09-08 08:49:34 -04:00
cyberpwn d25633e213 Cleanup 2021-09-08 08:46:25 -04:00
cyberpwn 0c8c7157f6 Fix minimessage 2021-09-08 08:41:15 -04:00
cyberpwn e393442df9 Late engine start fix issues 2021-09-08 08:41:07 -04:00
cyberpwn fc94fe30d0 Fixes for pieces 2021-09-08 08:40:55 -04:00
cyberpwn 1065079be6 Fix spawn radius issues 2021-09-08 08:40:48 -04:00
cyberpwn e426172b18 Perfection modifiers 2021-09-08 08:40:36 -04:00
cyberpwn effe93286a Fix block data issues 2021-09-08 08:39:21 -04:00
cyberpwn 2a669618a2 Oof 2021-09-08 08:39:15 -04:00
CocoTheOwner 44cd0e1e10 Patch weird Kayori bug 2021-09-08 14:33:59 +02:00
cyberpwn 621155f06f Attempt to deal with adventure api failing now... until it gets fixed. 2021-09-08 06:34:34 -04:00
cyberpwn 6c116e261d Update adventure api 2021-09-08 06:07:41 -04:00
cyberpwn bcc89d91f7 New stage system use dep for decorants 2021-09-08 05:58:16 -04:00
cyberpwn 8e874afbd5 Bodies 2021-09-08 05:58:05 -04:00
cyberpwn 9421cd0b2d Engine tweaks for multi-stage ease of use 2021-09-08 05:55:06 -04:00
cyberpwn 37c46042c3 Engine stages 2021-09-08 05:49:40 -04:00
CocoTheOwner c5429f0515 Dum 2021-09-07 22:16:52 +02:00
CocoTheOwner f0375ca446 Better ig 2021-09-07 17:51:08 +02:00
CocoTheOwner b34bac9b5e Remove hot garbage 2021-09-07 17:44:03 +02:00
CocoTheOwner f42e418346 Better context yes 2021-09-07 17:43:13 +02:00
CocoTheOwner a060c01f58 Merge remote-tracking branch 'upstream/master' into Fixes 2021-09-07 17:41:41 +02:00
cyberpwn f41686fab4 V+ 2021-09-07 03:27:05 -04:00
cyberpwn be88d584cf More carve checking 2021-09-07 00:35:13 -04:00
cyberpwn 80aa87935d Fix seed drift 2021-09-07 00:27:48 -04:00
cyberpwn 405073cca9 V+ 2021-09-05 22:23:04 -04:00
Dan 22cb831138 Update bug.yml 2021-09-05 22:03:43 -04:00
cyberpwn 95c8c75789 Fix deep slate ore issues 2021-09-05 21:57:32 -04:00
cyberpwn e8e3cadeff Revert "Stop alias spamming"
This reverts commit 892d3be144.
2021-09-05 21:53:57 -04:00
CocoTheOwner 8123ba9a01 Merge branch 'master' into Fixes 2021-09-05 11:39:21 +02:00
cyberpwn 5aa6c98dc1 V+ 2021-09-04 15:00:17 -04:00
cyberpwn 8e16b8e4a8 Cleanup 2021-09-04 14:59:56 -04:00
cyberpwn 90f0a5eac6 Structure & Piece handlers for jigsaw decree 2021-09-04 14:58:11 -04:00
cyberpwn 892d3be144 Stop alias spamming 2021-09-04 14:55:28 -04:00
cyberpwn 164242ae4b Reimplement jigsaw closes #610 2021-09-04 14:50:35 -04:00
cyberpwn 07b8c5087b Re-implement regen closes #611 2021-09-04 14:39:17 -04:00
cyberpwn abba2e969b Fluid bodies disable for now 2021-09-04 14:25:23 -04:00
cyberpwn 0a4b57ea01 Lake gen 2021-09-04 14:25:15 -04:00
cyberpwn 422ecb758f Elipsoid functions 2021-09-04 14:25:09 -04:00
cyberpwn 20f953b9cb Fix imports post merge 2021-09-04 14:06:27 -04:00
cyberpwn d2f1488ef1 Merge remote-tracking branch 'origin/master' 2021-09-04 14:05:52 -04:00
cyberpwn a3aedd5fad Connect configuration with the mantle for fluid bodies 2021-09-04 14:05:16 -04:00
cyberpwn e2d07f7e78 Fluid body configuration for lakes & rivers 2021-09-04 14:00:45 -04:00
cyberpwn 3aa0fac852 Fluid body configuration 2021-09-04 13:55:59 -04:00
cyberpwn 238243a7d4 Fluid body components for mantle 2021-09-04 13:54:40 -04:00
cyberpwn 9533b62ebf Check carving sizes 2021-09-04 13:54:19 -04:00
cyberpwn d06445e04b Default worms 2021-09-04 13:54:09 -04:00
DanLT 69255a938b f 2021-09-03 17:39:50 -08:00
DanLT 773f24238f Fix decorant cave issues fixes #586 2021-09-03 11:56:50 -08:00
DanLT 548ed4a1f0 Cache nodes single core 2021-09-03 11:47:09 -08:00
DanLT 76bf764262 Fix deepslate ores in zones 2021-09-03 11:39:40 -08:00
DanLT 075882b7b0 Fix initial exceptions 2021-09-03 11:34:09 -08:00
DanLT d25299e1ba Stop walls from placing above surface fixes #590 2021-09-03 11:29:44 -08:00
CocoTheOwner 0160d42302 aliases, startup NPE, pick option when console 2021-09-03 21:28:12 +02:00
DanLT 6ca7a013d6 Merge remote-tracking branch 'origin/master' 2021-09-03 11:23:03 -08:00
DanLT 60ed93e13b Convert ores to deepslate / nondeepslate depending on src fixes #593 2021-09-03 11:22:59 -08:00
DanLT 747e2e2e27 V+ 2021-09-03 11:20:45 -08:00
Dan 16d1694a78 Merge pull request #592 from CocoTheOwner/noLocateBiome
Cancel locate
2021-09-03 06:52:02 -08:00
CocoTheOwner 17e74d9ed2 Cancel locate 2021-09-02 22:31:10 +02:00
DanLT 923a42e9a3 Stop hotloading production worlds 2021-09-02 11:59:12 -08:00
DanLT bac66dfbf9 Fix issues with ores spawning problems 2021-09-02 11:54:06 -08:00
DanLT 6895c0b392 V+ 2021-09-01 15:22:31 -08:00
DanLT ef08319670 Disable cave lava for now 2021-09-01 15:17:00 -08:00
DanLT 1aee758f87 Fix center stronghold 2021-09-01 13:52:07 -08:00
DanLT 3d0eca9432 Fix anchoring point on lava carving 2021-09-01 13:50:14 -08:00
DanLT 93936a7498 Lava impl 2021-09-01 13:26:30 -08:00
DanLT 8e873ccd00 Cleanup 2021-09-01 13:09:45 -08:00
DanLT 7a188af002 Fixes 2021-09-01 13:07:49 -08:00
DanLT aaffeb9fac Studio world checker 2021-09-01 13:07:27 -08:00
DanLT 67711bcb0d Fix eb & biome context 2021-09-01 13:05:36 -08:00
DanLT f93c158caa Fix board service 2021-09-01 13:05:18 -08:00
DanLT c74d05a47b Revert "Revert "f""
This reverts commit f867c0f8a1.
2021-09-01 12:53:39 -08:00
DanLT f867c0f8a1 Revert "f"
This reverts commit 98d024295e.
2021-09-01 12:53:27 -08:00
DanLT 98d024295e f 2021-09-01 12:53:19 -08:00
DanLT 963d3de709 Support mantle cave biome getter 2021-09-01 12:33:53 -08:00
DanLT e20fa7f3a2 Update angle maxs for ravines 2021-09-01 12:28:33 -08:00
DanLT 719d262a00 Merge remote-tracking branch 'origin/master' 2021-09-01 12:21:24 -08:00
DanLT 9ad9f28f33 Fix 2021-09-01 12:21:20 -08:00
DanLT 6ac4a405b5 Noooope 2021-09-01 10:46:17 -08:00
DanLT 64fbdff13d Iris seed 2021-09-01 10:46:08 -08:00
DanLT 65011f42da Merge remote-tracking branch 'origin/master' 2021-09-01 10:27:57 -08:00
DanLT d763967d4b Cleanup 2021-09-01 10:27:49 -08:00
DanLT 44c807aedd Interpolator as registry 2021-09-01 10:27:41 -08:00
Dan 6e6bb72245 Merge pull request #591 from CocoTheOwner/fixWeird
Fix weird
2021-09-01 06:28:12 -08:00
CocoTheOwner ca96b45637 Fix weird 2021-09-01 16:27:42 +02:00
Dan d8ff7786df Merge pull request #574 from Skizzles/master
Update bug.yml
2021-09-01 06:16:08 -08:00
Dan 35ed07e0ba Merge pull request #588 from ArMiN231/patch-1
Getting rid of the double n when hotloading
2021-09-01 06:15:47 -08:00
ArMiN231 7b002606bf Update Iris.java 2021-09-01 14:24:44 +02:00
ArMiN231 ac0d0a6680 Getting rid of the double n when hotloading 2021-09-01 14:17:14 +02:00
DanLT e5033cceec Update gradle 2021-09-01 02:26:14 -08:00
cyberpwn b5d7e2969f V+ 2021-08-31 17:14:11 -04:00
cyberpwn 6b4bd90bfa f 2021-08-31 11:42:56 -04:00
cyberpwn b2aff55160 Cave spawning & markers 2021-08-31 11:24:48 -04:00
cyberpwn 569c34bca0 Fix expiring commands 2021-08-31 10:17:25 -04:00
cyberpwn e63c966756 Fix carving from digging bedrock 2021-08-31 10:13:51 -04:00
cyberpwn 43f9efb9e4 Fix commands 2021-08-31 10:12:23 -04:00
cyberpwn 82666d62ef Fixes 2021-08-30 12:25:56 -04:00
cyberpwn 72b62481a7 Console help better 2021-08-30 12:06:20 -04:00
cyberpwn 9cf13e320a Allow disabling console / ingame formatting 2021-08-30 11:55:22 -04:00
cyberpwn c8c4a0f61b fixhl 2021-08-30 08:37:19 -04:00
cyberpwn 801c44389e Schema hell 2021-08-30 08:09:48 -04:00
cyberpwn fbdb060e10 Gently fail on new overworlds 2021-08-30 07:05:53 -04:00
cyberpwn 09edc78bdc Fixes ? 2021-08-29 23:30:15 -04:00
cyberpwn 6951817088 Skip invalid field types? 2021-08-29 23:05:55 -04:00
cyberpwn 2a22d25975 Working snippets (without autocomplete) 2021-08-29 22:53:37 -04:00
cyberpwn 875adc8bdf Snippet annotation tags 2021-08-29 22:36:34 -04:00
cyberpwn b8b914a99c Re-explode the objects 2021-08-29 22:25:16 -04:00
cyberpwn 59401d27ca Snippets! 2021-08-29 22:19:41 -04:00
cyberpwn 26cb21f541 Precache decree help 2021-08-29 22:19:35 -04:00
cyberpwn 49154759c0 Fix j 2021-08-29 12:43:02 -04:00
cyberpwn abc07968e5 V+ 2021-08-29 10:26:48 -04:00
cyberpwn d28899ae84 f 2021-08-29 10:26:23 -04:00
cyberpwn 04c44de145 Fix infinite spawning bug 2021-08-29 10:25:52 -04:00
cyberpwn 7997d52df5 Follow command sounds setting 2021-08-29 09:39:00 -04:00
cyberpwn f3d899cbf5 *Better* Underwater Caves 2021-08-29 09:34:03 -04:00
cyberpwn e540596c20 Underwater caves 2021-08-29 09:07:38 -04:00
cyberpwn b1aa7a8e88 Less verbose 2021-08-29 08:12:30 -04:00
cyberpwn 3eef5b2c02 Fix loader close bug 2021-08-29 08:06:16 -04:00
cyberpwn 443aa0040c Better warnings 2021-08-29 07:51:00 -04:00
cyberpwn 48c1db6a8a Optimized dust 2021-08-29 07:25:07 -04:00
cyberpwn b9f2530e2f Why? 2021-08-28 22:54:30 -04:00
cyberpwn 3cb7c0206a CMd sound 2021-08-28 22:52:42 -04:00
cyberpwn a7360f1145 Glitter type 2021-08-28 22:42:58 -04:00
cyberpwn c4e3c4b34f Suggest always unless its a category 2021-08-28 22:42:53 -04:00
cyberpwn ae763ae25d Command pagination 2021-08-28 22:34:05 -04:00
cyberpwn dd0b4f27d4 Cleanup 2021-08-28 21:50:50 -04:00
cyberpwn faf5bcb32b Activate decree 2021-08-28 21:48:15 -04:00
cyberpwn 93f2c83c0e Fix what command 2021-08-28 21:43:39 -04:00
cyberpwn 63b5545502 Move what to iris 2021-08-28 21:32:02 -04:00
cyberpwn 31c99517d7 Revert "Revert "Fixes ""
This reverts commit f3a2be4a06.
2021-08-28 21:29:48 -04:00
Dan 2e3a2ff69a Revert "Revert "Merge pull request #561 from CocoTheOwner/DecreeCommands""
This reverts commit a451189d83.
2021-08-28 21:29:42 -04:00
cyberpwn 4aa2c83e03 Support dripstone tip_merge 2021-08-28 19:56:54 -04:00
cyberpwn 376d7a8878 Fixes 2021-08-28 19:54:41 -04:00
cyberpwn dd5f55f4fc Biome ceiling floor wall & decorator support for caves 2021-08-28 19:54:31 -04:00
cyberpwn d2806c7ec0 Dripstone support 2021-08-28 19:54:16 -04:00
cyberpwn 2db34f4d49 Auto stash before revert of "Merge pull request #561 from CocoTheOwner/DecreeCommands" 2021-08-28 16:26:45 -04:00
Dan a451189d83 Revert "Merge pull request #561 from CocoTheOwner/DecreeCommands"
This reverts commit d24b9ec0ae.
2021-08-28 16:26:40 -04:00
cyberpwn f3a2be4a06 Revert "Fixes "
This reverts commit 8e53be6810.
2021-08-28 16:26:35 -04:00
cyberpwn dddd97bc22 Test 2021-08-28 12:39:04 -04:00
cyberpwn 8e53be6810 Fixes 2021-08-28 12:34:50 -04:00
Dan d24b9ec0ae Merge pull request #561 from CocoTheOwner/DecreeCommands
Object commands WIP
2021-08-28 08:26:39 -08:00
CocoTheOwner d8900341ac remove what 2021-08-28 18:01:24 +02:00
CocoTheOwner 0465d047e7 Update Commands with patches 2021-08-28 17:59:56 +02:00
CocoTheOwner cf1f3677ae Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-28 17:59:40 +02:00
cyberpwn 354b02612d Forking 2021-08-28 11:55:47 -04:00
cyberpwn f06d5b806a Ravines! 2021-08-28 11:13:13 -04:00
CocoTheOwner 49385a08ad Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-28 16:19:29 +02:00
CocoTheOwner d07c8c8851 What & debug fix 2021-08-28 16:18:53 +02:00
cyberpwn 803c3678e3 Updates & fixes 2021-08-28 09:52:42 -04:00
cyberpwn 3118f743a0 Fixes 2021-08-27 11:29:18 -04:00
cyberpwn 2fa5c7eca4 Carving slice 2021-08-27 10:24:13 -04:00
cyberpwn a09829ed4b Updates on their own slice 2021-08-27 10:24:01 -04:00
cyberpwn cf3d92d6e1 CAVES AND MORE 2021-08-27 09:53:25 -04:00
cyberpwn 524b63e88c Caves in the mantle 2021-08-27 05:32:40 -04:00
cyberpwn 0a930db7d6 Flag carved for carving components 2021-08-27 05:09:21 -04:00
cyberpwn e6338bbde1 Add carving config to 3 masters 2021-08-27 05:09:13 -04:00
cyberpwn e4f7dd21b6 Mantle carving component 2021-08-27 05:09:06 -04:00
cyberpwn b0bae93d06 Carving package 2021-08-27 05:08:58 -04:00
cyberpwn 9b93a5cd04 Move editing stuff to writer 2021-08-27 05:08:40 -04:00
cyberpwn 3142717154 More removals 2021-08-27 04:57:14 -04:00
cyberpwn 3dcfacfeed Remove Caves, Carving & Ravines 2021-08-27 04:48:00 -04:00
cyberpwn a51f5fefc4 Remove spot & ridge biomes 2021-08-27 04:40:53 -04:00
cyberpwn fcc3bbf9b6 Remove lakes & shores 2021-08-27 04:40:06 -04:00
cyberpwn 109390d21e V+ 2021-08-27 02:46:48 -04:00
cyberpwn c7dd91ef90 Update gson 2021-08-27 02:46:45 -04:00
cyberpwn 3d15abfdae Debugging 2021-08-27 02:45:49 -04:00
cyberpwn a9caaefd16 More fixes 2021-08-27 02:43:27 -04:00
cyberpwn 261c786a10 Fix vacuum 2021-08-27 02:32:57 -04:00
cyberpwn a5270ccea8 Fixes 2021-08-27 01:35:23 -04:00
cyberpwn 08865dc218 Blank packs 2021-08-27 01:11:13 -04:00
cyberpwn 3f50767e48 New pack api 2021-08-27 00:47:38 -04:00
cyberpwn 8ff5887955 Auto stash before revert of "Cleanup" 2021-08-27 00:16:30 -04:00
cyberpwn 2aa240337c Cleanup 2021-08-26 06:35:12 -04:00
cyberpwn 44d75d9955 Cleanup 2021-08-26 06:12:32 -04:00
cyberpwn 3b61b87501 Fix 2021-08-26 06:07:39 -04:00
cyberpwn 04de362bc9 Rise 2021-08-26 05:39:41 -04:00
cyberpwn e06175f600 Buffet mode fixes 2021-08-26 03:08:21 -04:00
cyberpwn fe78d4f1e7 Fix regens 2021-08-26 02:02:25 -04:00
cyberpwn 4a1de4c0da Chunk regeneration 2021-08-26 01:46:56 -04:00
CocoTheOwner 22b77411ec Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-25 21:12:12 +02:00
cyberpwn 3f730ead84 V+ 2021-08-25 08:42:46 -04:00
cyberpwn d52d70a014 Woo fixes 2021-08-25 08:35:47 -04:00
cyberpwn 0a7b485514 Biomes in MCA 2021-08-25 07:59:16 -04:00
CocoTheOwner 151c384313 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-25 13:30:01 +02:00
cyberpwn 8586d44d7e Integrate real 1.17 chunks 2021-08-25 07:10:31 -04:00
cyberpwn 5c8b600cb1 QPos & utils 2021-08-25 07:10:15 -04:00
cyberpwn afd67d2f00 Biome storage format 2021-08-25 07:10:07 -04:00
cyberpwn 125a3fdc5e Rename pkg 2021-08-25 07:09:57 -04:00
CocoTheOwner 9963ff9c8e Auto stash before merge of "DecreeCommands" and "upstream/master" 2021-08-25 13:08:54 +02:00
CocoTheOwner 8547ea4c6a Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-25 13:08:45 +02:00
cyberpwn fd434e8b21 Remove old palettes 2021-08-25 06:34:03 -04:00
cyberpwn 1524866432 HELP ME 2021-08-25 06:32:54 -04:00
cyberpwn 19fa9390ff EVEN MORE PALETTES 2021-08-25 06:32:50 -04:00
cyberpwn a335050332 Fixes 2021-08-25 06:32:43 -04:00
cyberpwn 8aa9ecffc5 Fixes 2021-08-25 05:18:16 -04:00
cyberpwn ef02e5169d More cleanup 2021-08-25 05:18:13 -04:00
cyberpwn ba31a56949 Allow get value on tags 2021-08-25 05:18:07 -04:00
cyberpwn 6b7bd75b18 DONT USE IDENTITY! 2021-08-25 03:56:00 -04:00
cyberpwn 013d6625d5 More fixes 2021-08-25 03:55:54 -04:00
cyberpwn ca228ca23e Fix palettes 2021-08-25 03:55:47 -04:00
cyberpwn 1dce68212f No generics in the palette. 2021-08-25 03:55:39 -04:00
cyberpwn 2683c2433b Nasty suppliers 2021-08-25 03:55:25 -04:00
cyberpwn 2929800a9f Global palette theft 2021-08-25 02:43:00 -04:00
cyberpwn c1b04ace78 Fix atomic cache issues 2021-08-25 02:42:50 -04:00
cyberpwn 04a54dbc2a Integrate DP with sections 2021-08-25 02:42:42 -04:00
cyberpwn e7c1f31315 Drop chunk support for 1.13 and below 2021-08-25 02:42:26 -04:00
cyberpwn 62f6917d81 Regid fixes 2021-08-25 02:42:01 -04:00
cyberpwn babefc7bd3 Linear deobf 2021-08-25 02:41:55 -04:00
cyberpwn a09c9f4a2e DataPalette Hash fixes 2021-08-25 02:41:50 -04:00
cyberpwn 5876598ca0 DP Global 2021-08-25 02:41:42 -04:00
cyberpwn f45d643739 Deobf datapalette block & fix a ton of issues 2021-08-25 02:41:37 -04:00
cyberpwn c1ba176e27 Deobf dbits 2021-08-25 02:41:24 -04:00
cyberpwn 9b3013c51a Deobf datapalette 2021-08-25 02:41:13 -04:00
cyberpwn a746720a6e Update math helper 2021-08-25 02:40:51 -04:00
cyberpwn a95c61c1d8 DP Tests 2021-08-25 02:40:42 -04:00
cyberpwn d5da8e4e2b Forcefully integrate a mangled DataPalette from NMS into a NBTMCA API 2021-08-24 23:16:01 -04:00
cyberpwn 861e11a713 Data Palette stuff for 1.17 mca 2021-08-24 22:37:55 -04:00
cyberpwn 23ac209c05 f 2021-08-24 22:28:39 -04:00
cyberpwn 8df789ae34 Cleanup 2021-08-24 22:28:33 -04:00
cyberpwn 432e95e4ec Commons lang3 2021-08-24 22:26:29 -04:00
cyberpwn 401ed0a7a5 Remove hunk writers & old nbt 2021-08-24 22:26:22 -04:00
CocoTheOwner dae6957093 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-24 18:52:27 +02:00
cyberpwn 7b6405fba7 Prepatch 2021-08-24 08:24:36 -04:00
cyberpwn 6dc3e74607 Atomic NBT List 2021-08-24 04:09:26 -04:00
cyberpwn 617066340b Remove block data caching 2021-08-24 04:00:17 -04:00
CocoTheOwner 2dd6db352f Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-23 13:21:27 +02:00
cyberpwn 56e13641df V+ 2021-08-23 03:15:17 -04:00
cyberpwn 9d62113388 Performance Improvements 2021-08-23 03:12:17 -04:00
Skizzles 47b4a6c498 Update bug.yml
fix my stupid spelling
2021-08-22 04:30:21 -07:00
Skizzles 7dfe3a1c59 Update bug.yml
Fixes support links not linking to discord
2021-08-22 04:29:42 -07:00
cyberpwn 44acfc7ec8 Fix surfaces underwater 2021-08-22 04:22:16 -04:00
cyberpwn 7933f5e357 Fix height placement on structures 2021-08-22 03:55:39 -04:00
cyberpwn 858c5a27ad Sync post 2021-08-22 03:49:51 -04:00
cyberpwn 28e41a0ae9 Fix B 2021-08-22 03:49:41 -04:00
cyberpwn ae79f9be66 Fix noise explorer 2021-08-22 03:45:48 -04:00
cyberpwn 4a6d58c36e Locky overrides 2021-08-22 03:30:39 -04:00
cyberpwn 5bf6687f1f Compiling 2021-08-22 03:04:30 -04:00
cyberpwn beb80f0422 Modernize B 2021-08-22 03:04:24 -04:00
cyberpwn 0e86d6fbdb Libs 2021-08-22 03:03:57 -04:00
cyberpwn 2a8e4f19af Stop closing production worlds 2021-08-21 21:50:12 -04:00
cyberpwn 6ed8b6d058 Fix 2021-08-21 21:46:01 -04:00
cyberpwn 33812b3f4a Fixes 2021-08-21 21:41:37 -04:00
cyberpwn b62e542801 "S" 2021-08-21 09:42:49 -04:00
cyberpwn 0080110fad Auto stash before revert of "f" 2021-08-21 09:31:15 -04:00
cyberpwn 19ef661457 Revert "f"
This reverts commit 7946221f0b.
2021-08-21 07:33:52 -04:00
cyberpwn 7946221f0b f 2021-08-21 07:33:45 -04:00
cyberpwn 203a42c043 Engine fixes 2021-08-21 06:21:15 -04:00
cyberpwn d3998dd03b Config tweaks 2021-08-21 05:56:15 -04:00
cyberpwn e752a48343 Drop decree from yml for now 2021-08-21 02:52:11 -04:00
cyberpwn 71955b777b Unreg decree for now 2021-08-21 02:52:00 -04:00
cyberpwn d686d07d53 Iris but forkjoin 2021-08-21 02:42:22 -04:00
cyberpwn 72b4c9c6ab Revert "Fix mantle "
This reverts commit 59399124fa.
2021-08-21 00:31:52 -04:00
cyberpwn 4b991ab67a f 2021-08-21 00:29:05 -04:00
cyberpwn 59399124fa Fix mantle 2021-08-21 00:29:01 -04:00
cyberpwn 3eb4962d7d f 2021-08-21 00:25:27 -04:00
cyberpwn 42d3b4c326 Auto stash before revert of "Test" 2021-08-20 01:34:24 -04:00
cyberpwn f3931567f9 Revert "Test"
This reverts commit 154adafbcb.
2021-08-20 01:34:20 -04:00
cyberpwn 154adafbcb Test 2021-08-20 01:34:14 -04:00
cyberpwn 4a1e511262 Fixes 2021-08-19 22:39:36 -04:00
cyberpwn 3fc907e50f Cave placers 2021-08-19 22:39:04 -04:00
cyberpwn bbf441c3b4 Worms 2021-08-19 22:26:40 -04:00
cyberpwn bbf660d80e Caves 2021-08-19 22:26:31 -04:00
cyberpwn a1c3bc26c9 Worms 2021-08-19 16:36:54 -04:00
cyberpwn fc73e0e482 Advanced mantle editing 2021-08-19 16:36:45 -04:00
Dan e7727afbe8 Update gradlebuild.yml 2021-08-19 07:06:35 -04:00
Dan de5ce2660d Create gradlebuild.yml 2021-08-19 07:06:10 -04:00
CocoTheOwner 2e661cb2f8 Patch object handlers 2021-08-19 12:37:30 +02:00
cyberpwn ebeaad0b4e Worm iterators 2021-08-19 06:27:38 -04:00
CocoTheOwner ce60c048f8 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-19 12:22:08 +02:00
cyberpwn 6795ff7db9 Compile at least 2021-08-19 06:21:37 -04:00
cyberpwn 931f1fb27d Why itj why. 2021-08-19 06:21:18 -04:00
CocoTheOwner 74625a8d65 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-19 12:21:08 +02:00
cyberpwn 03e8ccee7d Worms 2021-08-19 06:21:03 -04:00
CocoTheOwner 01b9e4cb55 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-19 12:20:47 +02:00
cyberpwn b5d5014ba2 Fix decree for objects 2021-08-19 06:20:43 -04:00
CocoTheOwner 4f7bfd14c0 alias O in object because studiO was taking priority 2021-08-19 12:02:30 +02:00
CocoTheOwner 7347300f05 Rework undo for Decree
Undo now in a service.
No longer per-player, collective history
We're not worledit - Dan
Removes the need for deprecated offlinePlayer calls as well.
2021-08-19 11:57:56 +02:00
cyberpwn aa6bdd2786 Mantle height causing chunk holes 2021-08-19 05:42:52 -04:00
CocoTheOwner db0aeeabbd Shift 2021-08-19 11:28:30 +02:00
cyberpwn 9aa426ed56 Remove vertical domains for now 2021-08-19 04:36:58 -04:00
CocoTheOwner 30f9348c26 doc 2021-08-19 09:56:35 +02:00
CocoTheOwner baf76c51f9 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-19 09:54:55 +02:00
CocoTheOwner 6abef569e8 Further simplifications of sender for clarity 2021-08-19 09:54:51 +02:00
CocoTheOwner ade88a6055 rename fileName + alias force 2021-08-19 09:54:33 +02:00
CocoTheOwner 11d0274a1b Simple null check 2021-08-19 09:54:21 +02:00
cyberpwn 957de5d6f7 Cleanup terrain actuator 2021-08-19 03:38:07 -04:00
cyberpwn f5f4c5c672 Performance improvements 2021-08-19 03:26:45 -04:00
cyberpwn 5924495035 Fix sea surface 2021-08-18 23:41:51 -04:00
cyberpwn c486f65e74 Revert "Legacy objects copy"
This reverts commit 7f7397f684.
2021-08-18 23:26:49 -04:00
cyberpwn b19a7d45d8 Unfuck the decorator stacks 2021-08-18 23:26:30 -04:00
cyberpwn 7f7397f684 Legacy objects copy 2021-08-18 17:23:54 -04:00
cyberpwn 39142909f6 V+ 2021-08-18 15:03:59 -04:00
cyberpwn 23f5b84c5e No spam 2021-08-18 15:03:34 -04:00
cyberpwn 630b6e6313 MVC Fixes 2021-08-18 14:58:23 -04:00
cyberpwn 4396ca9420 Light level for spawns closes #558 2021-08-18 14:24:03 -04:00
cyberpwn 5286a69c34 More shutdown fixes 2021-08-18 14:08:43 -04:00
cyberpwn 059d5542c9 Post shutdown fixes 2021-08-18 14:08:28 -04:00
cyberpwn a09e77a17d Fix odd color negative -> ? 2021-08-18 14:08:13 -04:00
CocoTheOwner 5a236e3bea Fuck that builder. Yeet 2021-08-18 15:05:47 +02:00
CocoTheOwner aba5add7f9 Engine check 2021-08-18 15:05:31 +02:00
CocoTheOwner a4190672d3 Don't sort values again (done in getParams) 2021-08-18 13:14:53 +02:00
CocoTheOwner 10da9182d1 Improve boolean handling in DecIris 2021-08-18 13:14:41 +02:00
CocoTheOwner 2de5bc2855 Dont sort subvalues to allow better control 2021-08-18 13:14:29 +02:00
CocoTheOwner b32db945be patch debug 2021-08-18 13:05:19 +02:00
CocoTheOwner 44d02e6dfd Aliases, colors & patches 2021-08-18 12:58:59 +02:00
CocoTheOwner fc096dc6fa See description
- No-parameter command nodes are now on-click-runnable
- Parameters are now sorted by: name *and then* required
2021-08-18 12:58:45 +02:00
CocoTheOwner 1d52bbde58 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-18 12:03:08 +02:00
cyberpwn 1a049e854b Tests 2021-08-18 04:37:52 -04:00
CocoTheOwner 5b15ef81f5 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-18 10:09:29 +02:00
CocoTheOwner 05088c1063 Matter & save 2021-08-18 10:09:25 +02:00
cyberpwn 04c09efd75 Fix WM 2021-08-18 03:54:08 -04:00
cyberpwn 2c0576099a Patch MVC Stupidity 2021-08-18 03:54:01 -04:00
cyberpwn 27b49f9d7e ??? 2021-08-18 03:16:18 -04:00
cyberpwn 6a247c425a More debug 2021-08-18 03:13:33 -04:00
cyberpwn 7910034916 World installs 2021-08-18 03:09:03 -04:00
cyberpwn c56e5d17be Use loadkeys 2021-08-18 03:02:17 -04:00
cyberpwn 522eabce5e debug spawns 2021-08-18 02:58:30 -04:00
cyberpwn 0e4b874994 Support initial spawns 2021-08-18 02:49:12 -04:00
cyberpwn 319cc8a5f9 () 2021-08-18 01:45:50 -04:00
cyberpwn b5c26392e1 V+ 2021-08-18 01:26:04 -04:00
cyberpwn 7d53c55cc1 Remove diag 2021-08-18 01:24:37 -04:00
cyberpwn 3e30994541 Patch rotation glitch 2021-08-18 01:24:17 -04:00
cyberpwn a669fcba7a Remove structure test spawning of entities 2021-08-18 00:54:23 -04:00
cyberpwn 851053fd9a Allow onion bursting for post mantle jobs 2021-08-18 00:39:16 -04:00
cyberpwn b71a87e803 Allow y locking for structures 2021-08-18 00:39:03 -04:00
cyberpwn c72658d21a PD 2021-08-17 23:51:41 -04:00
cyberpwn d0b8c59769 No RTE on closing a closed mantle 2021-08-17 23:46:25 -04:00
cyberpwn 583b74fb7e No leaky 2021-08-17 23:40:47 -04:00
cyberpwn cf6f28aa3e Fixes 2021-08-17 20:31:30 -04:00
cyberpwn f3ece64635 Platform with exclusive for hotloading & closing 2021-08-17 18:42:10 -04:00
cyberpwn 6343b7087d ffs 2021-08-17 17:26:38 -04:00
cyberpwn e279dc4cea A less garbage hotloader 2021-08-17 16:46:13 -04:00
cyberpwn fc5763c8e8 Skip for profiling now 2021-08-17 16:09:58 -04:00
cyberpwn 9e32fcda88 Experimental support for vertical warping 2021-08-17 16:08:01 -04:00
cyberpwn 7fe8c7b547 Drop locate 2021-08-17 16:07:51 -04:00
cyberpwn 38329514f9 Fixes 2021-08-17 15:57:53 -04:00
cyberpwn 37705dfc71 Fix hotloading 2021-08-17 14:21:50 -04:00
cyberpwn e8e7e3144f Check if shaped gen is flat 2021-08-17 14:21:43 -04:00
cyberpwn 0da229e8f4 Remove under feature 2021-08-17 12:29:19 -04:00
cyberpwn 1029b2523d Vertical domain 2021-08-17 12:27:25 -04:00
cyberpwn 477b520cf0 Fix IData 2021-08-17 12:24:54 -04:00
Dan d54fdf5452 Merge pull request #557 from CocoTheOwner/DecreeCommands
Small fixes
2021-08-17 08:23:08 -08:00
CocoTheOwner bfb47aba87 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-17 18:17:17 +02:00
CocoTheOwner d241a57d38 Object 2021-08-17 18:17:13 +02:00
CocoTheOwner 01479a82de More merge conflicts please 2021-08-17 18:07:38 +02:00
CocoTheOwner 198820d95d PlaySound in volmitsender 2021-08-17 18:04:09 +02:00
cyberpwn 86741a4e95 Cache changes 2021-08-17 11:28:41 -04:00
CocoTheOwner 7d859661ba Sorry for merge conflicts :) 2021-08-17 17:22:27 +02:00
CocoTheOwner d04c95514e Studio patches 2021-08-17 16:55:33 +02:00
CocoTheOwner e6e3953a85 Auto stash before merge of "DecreeCommands" and "upstream/master" 2021-08-17 16:17:40 +02:00
CocoTheOwner 104f1232f3 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-17 16:16:49 +02:00
StrangeOne101 b55bf6e6c1 2 Bug Fixes
- Fixed #552 by making sure the biome saved in datapacks is all lowercase
- Fixed extra character showing when Iris downloads a pack
2021-08-17 23:20:09 +12:00
cyberpwn d79af8fcc2 Fix update 2021-08-17 00:19:12 -04:00
cyberpwn ff05429f58 Attempt 2021-08-16 23:51:40 -04:00
cyberpwn 0dbabe629a More debug 2021-08-16 23:47:33 -04:00
cyberpwn 3348d46b5a Endersignal debug 2021-08-16 23:41:07 -04:00
cyberpwn aff1a245c2 Make hotloading idiot proof 2021-08-16 23:30:33 -04:00
cyberpwn 51802f71a5 Fix hotloading bricking the engine 2021-08-16 23:23:39 -04:00
cyberpwn 32f34f1444 Dim installing 2021-08-16 19:35:03 -04:00
cyberpwn b7309ccdf1 Comments 2021-08-16 19:15:31 -04:00
cyberpwn 8abaac56ff Fix dim creation 2021-08-16 19:13:06 -04:00
cyberpwn a462ab98e9 Cleanup sources 2021-08-16 18:53:01 -04:00
cyberpwn af602a414a Managers -> Services 2021-08-16 18:51:53 -04:00
CocoTheOwner 67e426354c Small fixes 2021-08-17 00:35:25 +02:00
Dan e2f8e31fa0 Merge pull request #556 from CocoTheOwner/DecreeCommands
More decree
2021-08-16 13:55:55 -08:00
cyberpwn d67cce4184 v 2021-08-16 17:55:54 -04:00
CocoTheOwner ca63b412cb Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-16 23:54:14 +02:00
CocoTheOwner 89e372c229 More info for decree 2021-08-16 23:54:11 +02:00
cyberpwn 4ae5b49764 Service 2021-08-16 17:53:55 -04:00
cyberpwn 1057f32b34 Tweaks 2021-08-16 17:50:50 -04:00
CocoTheOwner e3948eb4ba bunch of defaults 2021-08-16 23:47:29 +02:00
CocoTheOwner 6d363235a5 oops 2 2021-08-16 23:17:51 +02:00
CocoTheOwner fb50b4fa78 oops 2021-08-16 23:17:41 +02:00
CocoTheOwner 85fbaa2b97 Iris What 2021-08-16 23:17:17 +02:00
cyberpwn 1440453640 Cancer 2021-08-16 17:15:38 -04:00
cyberpwn e364959d25 Download utils 2021-08-16 16:53:03 -04:00
cyberpwn 89642e71b5 Fix param 2021-08-16 16:23:41 -04:00
Dan d8413b3b7d Merge pull request #554 from CocoTheOwner/DecreeCommands
Remove aliases that *should* be interpretable by the processor
2021-08-16 12:18:33 -08:00
CocoTheOwner 92ba038af7 Remove name = where not needed 2021-08-16 22:17:54 +02:00
CocoTheOwner 2ac2cc2ebf Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-16 22:15:58 +02:00
cyberpwn 990ed86283 V+ 2021-08-16 16:10:37 -04:00
cyberpwn 953d702ed6 Allow leaf decay if setting is changed 2021-08-16 16:10:04 -04:00
CocoTheOwner 1fa828ad1a Move files add what patches 2021-08-16 22:08:43 +02:00
cyberpwn 9f16fa189f Compiler tweak for param names 2021-08-16 16:07:00 -04:00
cyberpwn a7e78cc3fb Num util 2021-08-16 16:01:01 -04:00
cyberpwn 353c40cc46 Update number handlers 2021-08-16 16:00:05 -04:00
CocoTheOwner 3a7c8d660c DecIrisWhat 2021-08-16 21:51:17 +02:00
CocoTheOwner b2c9108ffc Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-16 21:50:14 +02:00
cyberpwn ef447e2ba1 Dec settings (later) 2021-08-16 15:49:07 -04:00
cyberpwn 85f0b37b03 Fix format handler for bad locale 2021-08-16 15:48:58 -04:00
cyberpwn 9f6cdfcd11 Vector handlers 2021-08-16 15:48:44 -04:00
CocoTheOwner 376477767b no instance 2021-08-16 21:46:39 +02:00
CocoTheOwner f1376be2e0 No mow wegen 2021-08-16 21:42:12 +02:00
CocoTheOwner 5e57ec0e67 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-16 21:38:01 +02:00
CocoTheOwner 15721f1279 Pregen & create 2021-08-16 21:37:53 +02:00
Dan e8fe58438d Merge pull request #555 from CocoTheOwner/fixEntitySpawn
Spawn entity using block instead of tile since it was causing issues
2021-08-16 11:17:59 -08:00
Dan 8ef04b1ad0 Merge pull request #553 from CocoTheOwner/fixContextHandlers
Move context handlers to separate folder because of jarscanner issue
2021-08-16 11:16:29 -08:00
CocoTheOwner a3d6776c02 Merge pack overwrite with download (under param) 2021-08-16 20:44:42 +02:00
CocoTheOwner e7a529257a Metrics 2021-08-16 20:38:46 +02:00
CocoTheOwner 714afabf30 Download 2021-08-16 19:04:07 +02:00
CocoTheOwner f1df8d07bb Spawn entity using block instead of tile since it was causing issues
https://pastebin.com/gwXGK8qd
2021-08-16 18:50:14 +02:00
CocoTheOwner a18c4b6449 Studio charge (no longer in debug) 2021-08-16 18:48:42 +02:00
CocoTheOwner 2099342352 debug 2021-08-16 18:30:53 +02:00
CocoTheOwner 50ee2727a2 bitwise 2021-08-16 18:23:13 +02:00
CocoTheOwner 571e918ee0 aura 2021-08-16 18:13:57 +02:00
CocoTheOwner 7c5d8721c0 Studio command patches & generator context
Generator context is pretty poorly implemented
2021-08-16 13:17:14 +02:00
CocoTheOwner b5984a965e Merge branch 'fixContextHandlers' into DecreeCommands 2021-08-16 12:20:57 +02:00
CocoTheOwner 0e0bd94251 Remove aliases that *should* be interpretable by the processor 2021-08-16 12:06:04 +02:00
CocoTheOwner a9d2d52c1e Move context handlers to separate folder because of jarscanner issue 2021-08-16 11:57:34 +02:00
DanLT b7c67a16d9 Useful 2021-08-15 15:59:45 -08:00
DanLT 35615526a1 Even faster 2021-08-15 15:57:37 -08:00
DanLT c43ce52e78 Fixes? 2021-08-15 15:51:26 -08:00
DanLT 61a313f24b Context handlers 2021-08-15 15:12:08 -08:00
Dan d71393cead Merge pull request #536 from CocoTheOwner/DecreeCommands
Some commands (in studio mainly) WIP
2021-08-15 14:41:12 -08:00
CocoTheOwner 64bb6714a3 Ten - Remove beautify in favour of clean 2021-08-15 22:49:28 +02:00
CocoTheOwner f8336d6adb Nine - remove aliases 2021-08-15 22:46:22 +02:00
CocoTheOwner 30245f4aed Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-15 22:44:53 +02:00
Dan a861652d6f Merge pull request #546 from CocoTheOwner/fixMergeIssue
HOTFIX. Fixes the massive compile issue
2021-08-15 12:28:19 -08:00
CocoTheOwner 5fe5ba78da Eight - remove technical debt 2021-08-15 22:12:51 +02:00
CocoTheOwner 8fa9977617 Seven - getloadkey 2021-08-15 22:04:14 +02:00
CocoTheOwner 0df2dd3ce2 Six - true is not false. bad 2021-08-15 21:53:28 +02:00
CocoTheOwner 80893f2592 Five - Remove player check 2021-08-15 21:50:34 +02:00
CocoTheOwner 91cf10541b Four - remove decreeExtension 2021-08-15 21:49:03 +02:00
CocoTheOwner aaccfdee44 Three 2021-08-15 21:47:50 +02:00
CocoTheOwner a8449de731 Two - remove test 2021-08-15 21:45:54 +02:00
CocoTheOwner 9d98641a94 One - remove dupe function 2021-08-15 21:45:34 +02:00
CocoTheOwner 4f13227d9e Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-15 21:43:08 +02:00
CocoTheOwner 70e9ee0dd1 debug 2021-08-15 21:41:40 +02:00
Dan d43932a9d2 Merge pull request #545 from CocoTheOwner/noGradientNullSender
Remove the gradient if an error occurs with sender.send
2021-08-15 06:39:32 -08:00
Dan 7118261fee Merge pull request #547 from CocoTheOwner/noSelfDistruct
This doesnt get used yeet
2021-08-15 06:34:33 -08:00
CocoTheOwner 89b171db36 sync loot opener since InvOpenEv must be sync 2021-08-15 13:48:23 +02:00
CocoTheOwner 1c4778790a scolon 2021-08-15 13:36:06 +02:00
CocoTheOwner d20d1488de /ir s Find error 2021-08-15 13:35:36 +02:00
CocoTheOwner c969f277ee Add new handlers (Which don't work for no reason)
I'm getting stuck help plz. All commands that require any IrisRegistrant, including the dimensions (of which I did not modify the handler), give an invocationtargetexception
2021-08-15 00:33:52 +02:00
CocoTheOwner cf4a77af75 This doesnt get used yeet 2021-08-14 23:42:51 +02:00
CocoTheOwner 4042592420 So it's the same as the biome loader :D 2021-08-14 23:33:31 +02:00
CocoTheOwner a750241ec3 Merge remote-tracking branch 'origin/hotfix' into DecreeCommands 2021-08-14 23:26:37 +02:00
CocoTheOwner 8ab79ec1ae DAMNIT 2021-08-14 23:25:37 +02:00
CocoTheOwner a9289df93f another I hate this 2021-08-14 23:25:15 +02:00
CocoTheOwner f6c42c4b53 Idk what I did here but it's bad 2021-08-14 23:23:49 +02:00
CocoTheOwner bfb121938a Remove the gradient if an error occurs with sender.send
Otherwise, the raw gradient text is printed to the console, which is bad.
2021-08-14 23:22:53 +02:00
CocoTheOwner 20d26d4bcd getLoadKey instead of getName 2021-08-14 22:50:38 +02:00
CocoTheOwner 474b851275 loadkey instead of name 2021-08-14 22:31:39 +02:00
CocoTheOwner 5c541275c5 override equals function for hashing
lombok was complaining
2021-08-14 22:28:31 +02:00
CocoTheOwner 486e92dfc9 another I hate this 2021-08-14 22:25:14 +02:00
CocoTheOwner 959ce3bc92 Idk what I did here but it's bad 2021-08-14 22:23:51 +02:00
CocoTheOwner 3866c740e9 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-14 22:08:00 +02:00
Dan a65a85fb67 Merge pull request #538 from CocoTheOwner/noSystemOut 2021-08-14 13:11:12 -04:00
Dan c921b7bb1c Merge pull request #539 from CocoTheOwner/DecreeFixes 2021-08-14 13:07:18 -04:00
Dan 7acf2d80d2 Merge pull request #540 from CocoTheOwner/DimNameWhenNull 2021-08-14 13:05:58 -04:00
Dan 01b2d6cb39 Merge pull request #541 from CocoTheOwner/CoreBoardManager 2021-08-14 13:05:20 -04:00
CocoTheOwner e2665e3cbe Merge remote-tracking branch 'upstream/master' into noSystemOut 2021-08-14 16:33:08 +02:00
CocoTheOwner 9b95094207 Merge remote-tracking branch 'upstream/master' into DecreeFixes 2021-08-14 16:33:00 +02:00
CocoTheOwner 59b637c317 Merge remote-tracking branch 'upstream/master' into DimNameWhenNull 2021-08-14 16:32:53 +02:00
CocoTheOwner 52963e8e80 Merge remote-tracking branch 'upstream/master' into CoreBoardManager 2021-08-14 16:32:42 +02:00
CocoTheOwner 43f42ac917 Merge remote-tracking branch 'upstream/master' into DecreeCommands 2021-08-14 16:32:28 +02:00
CocoTheOwner 0352951d8c ir s Update 2021-08-14 16:25:45 +02:00
cyberpwn fe334d0aed f 2021-08-14 10:11:00 -04:00
CocoTheOwner f2371d8735 Entity spawn 2021-08-14 16:07:23 +02:00
cyberpwn 3c9608efbd Cleanup command merged 2021-08-14 10:00:43 -04:00
CocoTheOwner 8dff3b55c9 fix pack file getting from dimension & add profiler 2021-08-14 16:00:20 +02:00
CocoTheOwner b42b6303ae I skipped loot. Oops 2021-08-14 15:51:09 +02:00
CocoTheOwner 263e6d5cca lowercase matching 2021-08-14 15:48:33 +02:00
CocoTheOwner 5b5622b4a7 Polish 2021-08-14 15:35:42 +02:00
CocoTheOwner e328bf616f Utility function extension 2021-08-14 15:34:34 +02:00
cyberpwn 52ba831b1c CMD Fixes 2021-08-14 08:33:56 -04:00
CocoTheOwner 12b1016d66 Package + function 2021-08-14 12:14:47 +02:00
CocoTheOwner a471bfec6a BooleanHandler 2021-08-14 12:14:36 +02:00
CocoTheOwner 3b6d3116bd Small patch (Forgot to launch) + simplify + compact + docs + ir s map 2021-08-14 12:01:03 +02:00
CocoTheOwner 5c0c680f56 simplify studio checks + ir s loot 2021-08-14 11:53:24 +02:00
CocoTheOwner 3af8f4772f Simplify command usage + hotload 2021-08-14 11:42:19 +02:00
CocoTheOwner 10b2593389 Find + addition to DecreeExecutor
Adds world() to the decree executor
2021-08-14 11:29:24 +02:00
CocoTheOwner cf67d58236 Noise explorer 2021-08-14 11:20:32 +02:00
CocoTheOwner 748227319c Noise explorer 2021-08-14 11:14:17 +02:00
CocoTheOwner 94c18e835a CoreBoardManager 2021-08-14 11:03:50 +02:00
CocoTheOwner cfb5693ffe smol patch 2021-08-14 11:03:04 +02:00
CocoTheOwner 3e1f3d5a51 Fixes 2021-08-14 10:57:42 +02:00
CocoTheOwner c0bf529a6b ok 2021-08-14 09:34:26 +02:00
cyberpwn f951ee1f91 Formatting & fixes 2021-08-13 20:36:12 -04:00
CocoTheOwner e8ac971f9e Script. Please check this. This is probably wrong. 2021-08-13 22:57:02 +02:00
CocoTheOwner b1278aff2e editbiome 2021-08-13 22:48:14 +02:00
CocoTheOwner c26c14227c convert 2021-08-13 22:43:48 +02:00
CocoTheOwner ce36bcc951 JSON Cleaner in util & Decree tag & beatify DecreeCMD 2021-08-13 22:41:25 +02:00
CocoTheOwner 1134cd7788 Notify user of opening studio 2021-08-13 22:22:16 +02:00
CocoTheOwner 7920d2225c version 2021-08-13 22:22:07 +02:00
CocoTheOwner d0faaf2d53 desc + bootify 2021-08-13 21:58:11 +02:00
CocoTheOwner fc60878c25 why 2021-08-13 21:58:02 +02:00
CocoTheOwner 1b941536d0 Required = !hasDefault && constant 2021-08-13 21:32:41 +02:00
CocoTheOwner 4215bfc6fe CMD -> Dec + fixes 2021-08-13 21:22:22 +02:00
CocoTheOwner 22d215b2c7 Doc 2021-08-13 21:18:15 +02:00
CocoTheOwner 69eb7979c1 oops 2021-08-13 20:20:57 +02:00
CocoTheOwner 0f0c24d31b Remove system.out's 2021-08-13 20:12:35 +02:00
cyberpwn 30c5a0d9cd CHATTY 2021-08-13 13:21:46 -04:00
cyberpwn 93e0773758 Loaders 2021-08-13 11:33:12 -04:00
cyberpwn c92e64afbd Refine decree 2021-08-13 11:15:09 -04:00
cyberpwn 6ba9dc74d8 Decree system 2021-08-13 10:39:40 -04:00
cyberpwn f69c244080 New command manager 2021-08-13 10:39:35 -04:00
cyberpwn f1b4a973a8 Fix import issues in gradle 2021-08-13 10:39:23 -04:00
Dan efe49ee4c1 Merge pull request #528 from CocoTheOwner/decree+2
More docs more framework, glhf!
2021-08-13 08:25:19 -04:00
CocoTheOwner 51573cb9f5 More docs more framework, glhf! 2021-08-13 14:24:52 +02:00
cyberpwn f6ab374718 Fixes 2021-08-13 08:24:50 -04:00
Dan 7ace88ae0d Merge pull request #527 from CocoTheOwner/decree+
Document, simplify & further
2021-08-13 06:08:48 -04:00
CocoTheOwner 5f5e04506c Merge remote-tracking branch 'upstream/master' into decree+ 2021-08-13 11:59:34 +02:00
cyberpwn 9a58e121e8 Fix example 2021-08-13 05:58:44 -04:00
cyberpwn 7153347d67 Auto stash before merge of "master" and "origin/master" 2021-08-13 05:56:52 -04:00
StrangeOne101 611ccd9605 Only hotload noise gen if a generator is open 2021-08-13 21:28:23 +12:00
CocoTheOwner 0befa2eb39 target > elementtype 2021-08-13 11:06:44 +02:00
CocoTheOwner b0677bb66d Revert "Move decreeSystem into decreeCommand"
This reverts commit 3d68caed6b.
2021-08-13 10:28:54 +02:00
CocoTheOwner f476f1447c Docs 2021-08-13 10:13:59 +02:00
CocoTheOwner c8907232da patch doc 2021-08-12 23:41:27 +02:00
CocoTheOwner 864ca81d1d VolmitSender no longer saved, class never instantiated (rem unsd impt) 2021-08-12 23:38:27 +02:00
CocoTheOwner 636427ac6b Exception annotation 2021-08-12 23:37:17 +02:00
CocoTheOwner 3d68caed6b Move decreeSystem into decreeCommand
Why the extra class?
2021-08-12 23:35:11 +02:00
CocoTheOwner 4f7e25038c util function 2021-08-12 23:33:08 +02:00
CocoTheOwner ba0a95ed26 Pff + docs 2021-08-12 23:31:02 +02:00
CocoTheOwner 0cd25be408 Instantiate decreeNode with Decree 2021-08-12 23:30:02 +02:00
CocoTheOwner c6fa0ddde3 pff 2021-08-12 23:26:46 +02:00
CocoTheOwner b64a9b7a44 Instantiate DecreeParameter with @param stored + exception when not decl 2021-08-12 23:25:12 +02:00
CocoTheOwner 326bf39bed Refactor 2021-08-12 23:19:24 +02:00
CocoTheOwner ac4c37ba48 Extends 2021-08-12 23:17:26 +02:00
CocoTheOwner 305017d523 Annotate @Param & @Decree & update example 2021-08-12 23:16:51 +02:00
CocoTheOwner 19d1c552fe Remove unused imports 2021-08-12 23:16:04 +02:00
CocoTheOwner 7d6908d146 Simplify and document 2021-08-12 22:54:04 +02:00
Daniel Mills 9cf399f956 RECOVERY 2021-08-12 03:15:53 -04:00
Daniel Mills a0b4450e5b Fix command issues with studio 2021-08-10 10:16:33 -04:00
Daniel Mills 9d983a7c96 ""Stable"" 2021-08-10 09:32:32 -04:00
Daniel Mills 89be08bc58 Fix per second metric on boards 2021-08-10 09:23:21 -04:00
Daniel Mills 6dcf3e15da Unsafe but somehow safe black magic 2021-08-10 09:19:52 -04:00
Daniel Mills e66cb9479f Remove tiles 2021-08-10 08:47:23 -04:00
Daniel Mills bd8d9cc3aa Fix world create commands & pregnes 2021-08-10 08:46:27 -04:00
Daniel Mills 9453b86907 Dont configure on demand 2021-08-10 07:28:50 -04:00
Daniel Mills ecf9441fae V++ 2021-08-10 07:28:45 -04:00
Daniel Mills 70b659acbe Cleanup 2021-08-10 07:26:41 -04:00
Daniel Mills 2ebb9f2763 V+ 2021-08-10 07:26:35 -04:00
Dan 1231b13dfd Merge pull request #518 from CocoTheOwner/irisCreateRework
Rework /iris create & patch /iris pregen start
2021-08-10 07:21:38 -04:00
Dan bebad4d361 Merge pull request #521 from CocoTheOwner/patchExecute
Patch execute command
2021-08-10 07:21:19 -04:00
Dan ed5a1887f4 Merge pull request #522 from CocoTheOwner/gradle
Easier to yoink the build.gradle
2021-08-10 07:21:00 -04:00
Dan 342e689825 Merge pull request #519 from VolmitSoftware/the-mantle
The Mantle
2021-08-10 07:19:38 -04:00
Daniel Mills c5c1a9b25b Fixes 2021-08-10 07:19:17 -04:00
Daniel Mills 7637905de2 Safe saving / trimming 2021-08-10 07:19:10 -04:00
Daniel Mills ec780b7b93 Fixes 2021-08-10 07:18:59 -04:00
Daniel Mills 3728c59f1d Async trimming 2021-08-10 07:18:55 -04:00
Daniel Mills 4442d9a706 Fix gens 2021-08-10 06:07:08 -04:00
Daniel Mills 8928b35f30 Mantle tweaks 2021-08-10 06:07:02 -04:00
Daniel Mills fca189ee4c Component writers merged 2021-08-10 06:06:55 -04:00
Daniel Mills d0fb3dde66 Locks 2021-08-10 06:06:39 -04:00
Daniel Mills fc4377abaf Fix IO 2021-08-10 06:06:32 -04:00
Daniel Mills 97a62752c6 Compiles 2021-08-10 03:43:24 -04:00
Daniel Mills 87e1e55da7 Fix the board 2021-08-10 03:35:37 -04:00
Daniel Mills 5410cda182 World manager fixes 2021-08-10 03:35:31 -04:00
Daniel Mills ee240ca201 Fix post 2021-08-10 03:35:21 -04:00
Daniel Mills 98ffa0a256 Feature looping 2021-08-10 03:33:16 -04:00
Daniel Mills 2f450b7ea0 Iterate features 2021-08-10 03:29:27 -04:00
Daniel Mills 099b50dbfa Drop fix command 2021-08-10 03:23:28 -04:00
CocoTheOwner ece7a443fe another doc 2021-08-10 00:11:58 +02:00
CocoTheOwner 984f2669b8 Docs 2021-08-09 23:54:05 +02:00
CocoTheOwner 9b94b9e3fe Merge branch 'master' into gradle 2021-08-09 23:52:44 +02:00
CocoTheOwner a781bcb7f4 Simplify conversion & less error-prone
settings.gradle name is now used over user-definable one
2021-08-09 23:52:20 +02:00
CocoTheOwner b596f38ab5 Forgot one 2021-08-09 23:26:01 +02:00
CocoTheOwner f2b4d6f829 ok intellij if you so demand (still works) 2021-08-09 23:06:35 +02:00
CocoTheOwner d2d2dc64db Easier to yoink the build.gradle 2021-08-09 23:01:57 +02:00
Daniel Mills 5b8171a719 Fix structure imports 2021-08-09 16:28:10 -04:00
CocoTheOwner 838ad5ec1a More patches 2021-08-09 18:04:15 +02:00
CocoTheOwner 3d16323e33 Patch execute command 2021-08-09 17:53:36 +02:00
CocoTheOwner ba25eaa788 Patch for compat with new engine 2021-08-09 16:58:55 +02:00
CocoTheOwner 747412e522 Merge remote-tracking branch 'upstream/master' into irisCreateRework 2021-08-09 16:56:37 +02:00
Daniel Mills 059ff25d8e Fix dust 2021-08-09 09:59:12 -04:00
Daniel Mills 831143427d Strip engine components of parallax 2021-08-09 09:45:04 -04:00
Daniel Mills de51d4860e Drop parallax core 2021-08-09 09:43:30 -04:00
Daniel Mills 6569038777 Drop par manager 2021-08-09 09:43:15 -04:00
Daniel Mills 075aec3ac0 Mantle optimized iteration 2021-08-09 09:39:01 -04:00
Daniel Mills 734847db68 Object tweaks & mantle fixes 2021-08-09 09:38:52 -04:00
Daniel Mills a99f2b78a1 Drop gen access & merge with engine 2021-08-09 09:38:43 -04:00
Daniel Mills 037473f2e1 Cleanup components 2021-08-09 09:26:22 -04:00
Daniel Mills 378f735e9f Drop support for mutations 2021-08-09 09:11:09 -04:00
Daniel Mills 4cdac76ca5 Fixes 2021-08-09 09:09:45 -04:00
Daniel Mills 9ed3c8a6bb Mantle Feature Components 2021-08-09 09:07:42 -04:00
Daniel Mills 252d289a8d Framework remove parallax 2021-08-09 09:07:31 -04:00
Daniel Mills 832bad1fee Planned Structure support mantle 2021-08-09 09:07:22 -04:00
Daniel Mills d5b99316e5 Mantle & Engine Mantle & Engine changes 2021-08-09 09:07:13 -04:00
Daniel Mills 3723c5dae5 Replace placeObjects with useMantle 2021-08-09 09:06:57 -04:00
Daniel Mills 7c3fa7aef5 Player Matter 2021-08-09 09:06:49 -04:00
Daniel Mills 4ee31db7a0 Mantle flagging 2021-08-09 09:06:45 -04:00
Daniel Mills 0d8cb7393c Jigsaw Mantle Components 2021-08-09 09:06:31 -04:00
Daniel Mills 0d3d0a8da1 Mantle components 2021-08-09 09:06:24 -04:00
Daniel Mills e45eb7f2be Fixed dimension loaders 2021-08-09 07:14:36 -04:00
Daniel Mills 128e5c414c Fix parser issues 2021-08-09 07:14:27 -04:00
Daniel Mills 5a70d98c71 V* 2021-08-09 04:46:38 -04:00
Daniel Mills 69d4215397 V+ 2021-08-09 04:43:49 -04:00
Dan 722190305b Merge pull request #515 from VolmitSoftware/decomposed
The Decomposition of Iris
2021-08-09 04:40:21 -04:00
Daniel Mills 428d4859da Fix world data location 2021-08-09 04:38:24 -04:00
Daniel Mills 9455860554 Fixes 2021-08-09 04:27:43 -04:00
Daniel Mills eb4b42c089 Engine provider 2021-08-09 02:12:36 -04:00
Daniel Mills 79b3d7359a Fix closing issues 2021-08-09 02:12:30 -04:00
Daniel Mills c95ea19da1 Fix typing for goto 2021-08-09 01:15:37 -04:00
Dan a8b3f2af14 Merge pull request #516 from TOWUK/patch-1
api spigot 1.17.1
2021-08-09 01:10:50 -04:00
Daniel Mills 2b8ccc38bb Biome searching done 2021-08-09 01:10:12 -04:00
CocoTheOwner baebadb7a6 Patch command usage 2021-08-08 23:01:58 +02:00
CocoTheOwner f73db056f2 TabCompletions for create 2021-08-08 23:01:48 +02:00
CocoTheOwner 429ac1e71c Rework command 2021-08-08 21:54:19 +02:00
TOWUK 07cd91dda4 api spigot 1.17.1 2021-08-08 19:13:08 +03:00
Daniel Mills 956f61e775 "Working" 2021-08-08 08:14:59 -04:00
Daniel Mills 14fc2d2c70 Studio provider for engine bukkit 2021-08-08 08:01:34 -04:00
Daniel Mills 9c07240948 Fix world manager 2021-08-08 08:01:09 -04:00
Daniel Mills 7e2260578e Fix mantle df 2021-08-08 08:00:49 -04:00
Daniel Mills 7f2d781241 Fix effect manager 2021-08-08 08:00:35 -04:00
Daniel Mills df05ade4a7 Engine std check fixes 2021-08-08 08:00:09 -04:00
Daniel Mills e4b45e512f Studio check for headless 2021-08-08 07:58:09 -04:00
Daniel Mills 623bb52fd8 Studio check for engines 2021-08-08 07:58:02 -04:00
Daniel Mills ab809dabf8 Fix villager manager 2021-08-08 07:57:45 -04:00
Daniel Mills 2ebf26c156 Debug spawner boost fix 2021-08-08 07:57:40 -04:00
Daniel Mills 1ffc598fd4 Biome command fix 2021-08-08 07:57:34 -04:00
Daniel Mills 0495d954bc Studio method impl for bukkit 2021-08-08 07:52:45 -04:00
Daniel Mills cc6a7a6a72 Height getter 2021-08-08 07:52:35 -04:00
Daniel Mills b081bbb444 Engine fixes 2021-08-08 07:50:55 -04:00
Daniel Mills 69cbb262ba Patch core 2021-08-08 07:50:47 -04:00
Daniel Mills ba2a398da3 PAtch commands 2021-08-08 07:50:40 -04:00
Daniel Mills a8a87e7f79 Can you smell the rot? 2021-08-08 07:50:15 -04:00
Daniel Mills 2ffd1e6e47 Merge remote-tracking branch 'origin/master' 2021-08-08 06:26:02 -04:00
Dan efaebb43aa Merge pull request #510 from CocoTheOwner/compatbug
no async file write
2021-08-08 06:25:56 -04:00
CocoTheOwner d201350a08 Merge remote-tracking branch 'upstream/master' into compatbug 2021-08-08 12:01:14 +02:00
CocoTheOwner 81184d77fe This is better 2021-08-08 11:56:12 +02:00
Daniel Mills b9d60e0018 Fix build warnings 2021-08-08 04:54:39 -04:00
Daniel Mills f50ac49ede The engine is the framework 2021-08-08 04:53:14 -04:00
Dan 70d8b8a88a Merge pull request #506 from CocoTheOwner/UseToolbelt
Upgrade iris pregen & use toolbelt
2021-08-08 04:36:43 -04:00
Dan 535f1b5988 Merge pull request #512 from CocoTheOwner/whatArguse
Copy pasta eaten and processed :]
2021-08-08 04:34:21 -04:00
Daniel Mills 366c903f84 Mantle fixes 2021-08-08 03:44:25 -04:00
Daniel Mills 1781ff36c6 V+ 2021-08-08 01:57:46 -04:00
Daniel Mills 4e131d9a54 Fix async spawn issue on spigot 2021-08-08 01:13:53 -04:00
Daniel Mills 7f6fec5530 Fixes 2021-08-08 01:12:16 -04:00
Daniel Mills 2d43014029 Scripted spawners 2021-08-08 00:22:31 -04:00
Daniel Mills 33ea66ea88 Infinite energy option 2021-08-08 00:22:25 -04:00
Daniel Mills b74e449efd Object preprocessors 2021-08-07 23:41:26 -04:00
Daniel Mills afd4820713 Fixes for scripts 2021-08-07 23:41:21 -04:00
Daniel Mills 8e032fa26a Scripting engine 2021-08-07 23:11:09 -04:00
Daniel Mills 897669a069 Fix parallax closer 2021-08-07 22:42:17 -04:00
Daniel Mills 03ea78b40b Merge remote-tracking branch 'origin/master' 2021-08-07 21:18:45 -04:00
Daniel Mills 18465cf6cb Add BSF 2021-08-07 21:18:39 -04:00
CocoTheOwner ac6ccd2dc7 Another one 2021-08-07 21:07:18 +02:00
CocoTheOwner fb32d11d64 Copy pasta eaten and processed :] 2021-08-07 20:38:05 +02:00
CocoTheOwner ec75e911bd no async file write 2021-08-07 20:10:30 +02:00
CocoTheOwner 603f032e28 Merge remote-tracking branch 'upstream/master' into UseToolbelt 2021-08-07 20:04:48 +02:00
CocoTheOwner cf76e43898 Forgot to remove width&height from autcomplete 2021-08-07 19:53:32 +02:00
CocoTheOwner a0df548dd3 IrisPregenStart repl. IrisPregenCreate + fixes 2021-08-07 19:50:02 +02:00
CocoTheOwner dff6048a07 Rename class, update nodes, update messages 2021-08-07 19:25:59 +02:00
Dan 478d465cb6 Update README.md 2021-08-07 08:51:39 -04:00
Daniel Mills 271f308c36 V+ 2021-08-07 08:35:59 -04:00
Daniel Mills 956958fa0e Mantle Impl 2021-08-07 08:34:45 -04:00
Daniel Mills 6a68da0559 Cleanup 2021-08-07 08:16:24 -04:00
Daniel Mills 6683eee49a The Mantle API 2021-08-07 08:15:28 -04:00
Daniel Mills f258d5f932 Locking & Thread fixes 2021-08-07 08:15:09 -04:00
Daniel Mills 600995a220 Matter utilities 2021-08-07 08:15:03 -04:00
Daniel Mills 803dfed9f7 Mantle & Debugging 2021-08-07 02:48:36 -04:00
Daniel Mills 771cb45b49 V+ 2021-08-06 23:12:27 -04:00
Daniel Mills a2a7689881 Beautify updates keys 2021-08-06 23:08:48 -04:00
Daniel Mills e9f4c3d0c7 Cleanup 2021-08-06 22:15:11 -04:00
Daniel Mills a5ef5769b9 Tab complete for summons 2021-08-06 22:14:16 -04:00
Daniel Mills 9d251f94e5 Per chunk spawner cooldowns 2021-08-06 22:11:17 -04:00
Daniel Mills d1e8d52f5c Tweak particles 2021-08-06 21:01:11 -04:00
CocoTheOwner 14d2ae0c0e Use toolbelt instead of Irisworlds 2021-08-06 23:15:22 +02:00
CocoTheOwner dafa3bde8b Newline & append 2021-08-06 23:13:54 +02:00
CocoTheOwner cb923cef47 Details string klist to strinbuilder 2021-08-06 23:10:44 +02:00
CocoTheOwner 93888aeed3 nicer to work with 2021-08-06 22:58:09 +02:00
CocoTheOwner c41e34e9d8 Patches autocomplete with no worlds & getString cast error 2021-08-06 22:53:34 +02:00
CocoTheOwner 154aea7a61 Better autocompletions 2021-08-06 22:51:02 +02:00
CocoTheOwner bc53cd1aa4 Remove empty command descriptions 2021-08-06 22:50:52 +02:00
CocoTheOwner ef51aa7e98 oops 2021-08-06 22:22:56 +02:00
CocoTheOwner 705c5ce790 Fix console sender, add descriptions, add -here 2021-08-06 22:20:18 +02:00
CocoTheOwner 26dee50e68 Wikilink 2021-08-06 16:54:56 +02:00
CocoTheOwner be3d7ef11d Upgrade pregen command. PregenTask now takes width & height ins o radius 2021-08-06 16:52:15 +02:00
Daniel Mills ef5897969f Fixes 2021-08-06 10:22:28 -04:00
Daniel Mills d9cd0257ba Fix false desc warnings 2021-08-06 07:48:56 -04:00
Daniel Mills 95bb8cb1e5 Register managers 2021-08-06 07:42:08 -04:00
Daniel Mills e1aa2f651a Auto stash before merge of "master" and "origin/master" 2021-08-06 07:41:34 -04:00
Daniel Mills 03c535e80d Merge remote-tracking branch 'origin/master' 2021-08-06 07:39:39 -04:00
Daniel Mills 6f9c4f220e Oraxen Impl & Fixes 2021-08-06 07:39:28 -04:00
Daniel Mills 6f3813b685 Gradle 2021-08-06 07:38:47 -04:00
Dan 510dde6923 Merge pull request #500 from CocoTheOwner/noMaps
Remove dolphins so there's no crashes because of treasure chests.
2021-08-06 07:38:12 -04:00
CocoTheOwner a7761c1867 Villager trade warning system 2021-08-06 12:45:00 +02:00
CocoTheOwner a2af965bad This solves the warnings but it's probably better to <see desc>
Probably better to implement an annotation that cancels warnings for fields in classes that aren't Iris', such as bukkit packages. The implementation would be something like
@SuppressNoDesc
ItemStack items;
-> if !field.isAnnotationPresent(SND.class) { // error }
2021-08-06 12:38:50 +02:00
CocoTheOwner 28b6ed500b or not 2021-08-06 12:14:05 +02:00
CocoTheOwner 6991fa39cc more supression 2021-08-06 12:11:38 +02:00
CocoTheOwner 274469d299 This at least removes the warnings & replaces the description fields 2021-08-06 12:09:32 +02:00
CocoTheOwner a0b8581ec5 Nothin 2021-08-06 12:03:10 +02:00
CocoTheOwner b844a0e98d Simplify 2021-08-06 11:37:26 +02:00
CocoTheOwner e5f14ac176 Split into villager & dolphin manager 2021-08-06 11:36:12 +02:00
CocoTheOwner a1110a847d Patch dolphin, generify trades, move to dir, trades list repl. one 2021-08-06 11:33:12 +02:00
CocoTheOwner a3889fe369 Rename var in dimension 2021-08-06 11:31:25 +02:00
CocoTheOwner bd93918d9b Better 2021-08-06 11:00:09 +02:00
CocoTheOwner 421a6ba143 Merge remote-tracking branch 'upstream/master' into noMaps 2021-08-06 09:25:17 +02:00
Daniel Mills f091256edb Wow 2021-08-05 21:24:52 -04:00
CocoTheOwner c0e4733eb8 Auto stash before merge of "master" and "upstream/master" 2021-08-06 02:46:04 +02:00
Daniel Mills e636a6ad58 Docs 2021-08-05 20:06:22 -04:00
Daniel Mills 071617bfc5 Tile & Entity Matter 2021-08-05 20:03:50 -04:00
Daniel Mills 8a079c98cc Slices for entities & tiles 2021-08-05 19:27:30 -04:00
Daniel Mills fa95f96a6d Save / load tiles and normal entities 2021-08-05 19:27:16 -04:00
Daniel Mills c198abe5ac Merge remote-tracking branch 'origin/master' 2021-08-05 18:42:39 -04:00
Daniel Mills ef5ba0f1d1 Fixes 2021-08-05 18:42:34 -04:00
Daniel Mills fff7cd53cc INMS Drop 1.16 2021-08-05 18:42:17 -04:00
StrangeOne101 64ce5138e1 Re-added MythicMob support
- Re-added Mythic Mob support via everyone's favourite friend: Reflection
- Added room for Citizens to be supported using the same system
- MythicMobs can be spawned by adding `"specialType": "MythicMobs:<mobName>"` to your entity file. In future, Citizens could also be used here
2021-08-06 02:52:54 +12:00
Daniel Mills 3c07e7a0d8 More matter 2021-08-05 08:11:28 -04:00
Daniel Mills a1510ffcb5 Strange solutions to rotating matter objects 2021-08-05 07:41:20 -04:00
Daniel Mills 1b96bce44f Hunk rotation 2021-08-05 07:22:56 -04:00
Daniel Mills 294a5e39a6 Data formats Matter 2021-08-05 01:11:48 -04:00
Daniel Mills 65fdd6e25f Register studio as a root (also) 2021-08-04 23:52:05 -04:00
Daniel Mills 6d2ef1f985 V+ 2021-08-04 22:05:12 -04:00
Daniel Mills 14af19873c Fix nbt 2021-08-04 22:00:51 -04:00
Daniel Mills 2f5dd470d2 Fix typo closes #496 2021-08-04 21:55:00 -04:00
Daniel Mills dc4592ae4d Entity errors 2021-08-04 21:50:49 -04:00
Daniel Mills baa3cfa636 Fixes 2021-08-04 21:50:10 -04:00
Daniel Mills ad324df937 Matter apis 2021-08-04 20:19:22 -04:00
Daniel Mills f2b301cb17 Matter apis 2021-08-04 19:27:28 -04:00
Daniel Mills 6e369ea787 Its right 2021-08-04 18:32:02 -04:00
Daniel Mills f640abda91 Objectify objects 2021-08-04 18:30:58 -04:00
Daniel Mills 77f8f11d99 Move a lot of utilities in engine to util because they are utilities 2021-08-04 18:15:55 -04:00
StrangeOne101 12b4c27468 Object Command & Entity Spawn Changes (#492)
- Redid object paste command
    - Added rotate flag to paste with rotation
    - Added scale flag to paste with scale. Optional interpolation method can be used
    - Changes are now logged and can be reverted with the undo command
    - Fixed edit flag
    - Made the edit flag now update your wand even if it isn't in your hand
- Added object undo command
- Added object check command
- Added a surface target to spawn on for entities. This will fix mobs spawning in water
    - LAND for mobs that spawn on any land surface
    - ANIMAL for mobs that should only spawn on grass and dirt
    - WATER for mobs that should spawn in water
    - OVERWORLD for mobs that can spawn on both land and water (turtles, for example)
    - LAVA for mobs that can spawn on lava (striders, for example)
- Attempted to fix PAPI complaining about registering on the wrong thread
- Fixed console spam for entities (was due to the mount event being called async)
- Fixed grass paths and a few other update breaking blocks
    - Made it so if a block state changes on an update, it will now use as many as the other states as it can rather than not use anything
- Patch to stop people naming the world 'Iris'
2021-08-05 01:32:14 +12:00
Daniel Mills 75f3073cbf V+ 2021-08-04 02:24:11 -04:00
Daniel Mills 5eddfaed98 Stop logging jigsaw places 2021-08-04 02:20:52 -04:00
Daniel Mills 89b4fdef56 Custom sound for pearl so you know its working 2021-08-04 02:19:24 -04:00
Daniel Mills 6f08c1f758 Actually gen 2021-08-04 02:13:08 -04:00
Daniel Mills 1155789a75 Stronkholds 2021-08-04 02:07:55 -04:00
Daniel Mills 8c4a74179d Better Rates 2021-08-04 01:47:36 -04:00
Daniel Mills bdbc94e54a Energy tweaks 2021-08-04 01:18:45 -04:00
Daniel Mills 30f880361e Fix multipliers 2021-08-04 01:16:42 -04:00
Daniel Mills c5ac347538 Entity logic 2021-08-04 01:07:07 -04:00
Daniel Mills 008da9467f Feature hack 2021-08-03 23:03:40 -04:00
Daniel Mills ee78249c2f Fix feature placements 2021-08-03 23:02:46 -04:00
Daniel Mills 412c67b47a Objects "Matter" 2021-08-03 21:45:09 -04:00
Daniel Mills f4191ad984 test 2021-08-03 20:01:21 -04:00
Daniel Mills ea8d1100ac Fix feature searching 2021-08-03 18:11:57 -04:00
Daniel Mills 20e8c033cc Fixes 2021-08-03 18:09:32 -04:00
Daniel Mills ff2d10e0e1 Cooldown fixes 2021-08-03 18:03:31 -04:00
Daniel Mills 672c39e58d Faster Interpolatin 2021-08-03 18:03:27 -04:00
Dan 36d3849118 Merge pull request #491 from CocoTheOwner/updateBuild
moved my folder
2021-08-03 01:41:15 -04:00
Daniel Mills 43d7dfde4c Cleanup sources 2021-08-03 01:40:35 -04:00
Daniel Mills 51a056b3d7 Spawners in objects closes 2021-08-03 01:37:03 -04:00
Daniel Mills 6e22d6687c Update meta 2021-08-02 20:31:27 -04:00
Daniel Mills 369fdf07e2 Fixes 2021-08-02 20:25:00 -04:00
Daniel Mills 8c6c1b3ccc Proguard (optimizatin & shrinking only) no obfuscation :D 2021-08-02 19:50:56 -04:00
Daniel Mills 160bdf5472 Cleanup sources 2021-08-02 19:50:41 -04:00
Daniel Mills 18c70002cb Cleanup 2021-08-02 18:36:56 -04:00
Daniel Mills 4b8cfd9fdd Aquire engine data in expressions 2021-08-02 17:04:47 -04:00
Daniel Mills ffa5fd5b2a Insane Loader Propagation 2021-08-02 16:32:57 -04:00
Daniel Mills 9fb4798c77 Streamed expressions 2021-08-02 15:59:27 -04:00
Daniel Mills a6039278c3 Fix data meta 2021-08-02 15:57:18 -04:00
Daniel Mills c50702c83b Fix atomic cache not transient 2021-08-02 15:54:45 -04:00
Daniel Mills d4c1e62c72 Fix object registry 2021-08-02 15:54:38 -04:00
Daniel Mills 488c609109 Registry list abstraction 2021-08-02 15:45:22 -04:00
Daniel Mills 0a6e24104e Support new loaders 2021-08-02 15:27:05 -04:00
Daniel Mills d6acac0208 Better schema building 2021-08-02 15:26:54 -04:00
Daniel Mills b02f61ef21 Data loader abstraction 2021-08-02 15:26:46 -04:00
Daniel Mills eb82b44726 Cleanup 2021-08-02 01:14:52 -04:00
Daniel Mills ca035f9447 IRis Expressions 2021-08-02 01:13:55 -04:00
Daniel Mills 19aa3c0854 Tristarcast & Interpolation improvements 2021-08-02 01:13:37 -04:00
Daniel Mills 93675d90bb 3D Caching for procedural streams 2021-08-02 01:13:07 -04:00
Daniel Mills 0d90c1d960 Hunk interp 2021-08-02 01:12:51 -04:00
Daniel Mills d826f968b5 Cavern json objects 2021-08-02 01:12:40 -04:00
Daniel Mills f682d7489f Cavern tests 2021-08-02 01:12:25 -04:00
Daniel Mills 649b1adfdd Move project related code in their own package 2021-08-02 01:12:13 -04:00
Daniel Mills 3d67ea736f Add dep Paralithic for expressions 2021-08-02 01:11:32 -04:00
Daniel Mills ba88f837fe Cave zones & force main world 2021-08-01 16:20:46 -04:00
Daniel Mills 6728703473 Island mode improvements 2021-08-01 15:01:58 -04:00
Daniel Mills 55521afe35 Fixes 2021-08-01 13:45:01 -04:00
Daniel Mills 8820b02406 Engine data saving 2021-08-01 13:36:28 -04:00
Daniel Mills e79ba6117b V+ 2021-07-31 22:50:36 -04:00
Daniel Mills 668d29a9d7 Hotloader improvements 2021-07-31 22:44:46 -04:00
Daniel Mills 6b97acdb50 Fixes 2021-07-31 22:32:14 -04:00
Daniel Mills 9a11021560 Fixes 2021-07-31 20:44:52 -04:00
Daniel Mills ee18217520 Entities 2021-07-31 19:41:12 -04:00
Daniel Mills 16de60f82d Spawners 2021-07-31 12:23:35 -04:00
Daniel Mills 8cd94f976c Identity for regions & biomes 2021-07-31 11:27:11 -04:00
Daniel Mills 9ab0662cbf V+ 2021-07-31 09:31:19 -04:00
Daniel Mills 5cceed1fd7 Fix plax cmods 2021-07-31 09:30:47 -04:00
Daniel Mills 03a1b51bd7 Fix parallax noise feature artifact holes / spikes
It was a really weird caching issue
2021-07-31 08:58:54 -04:00
Daniel Mills 1edf567ea7 Allow disabling some locks in settings for speedups 2021-07-31 08:55:53 -04:00
CocoTheOwner fa73eddf50 moved my folder 2021-07-31 14:37:54 +02:00
Daniel Mills 1923ae6f4b Revert "Lock the piss out of the parallax layer "
This reverts commit 229f3dc061.
2021-07-31 08:20:57 -04:00
Daniel Mills 229f3dc061 Lock the piss out of the parallax layer 2021-07-31 08:18:21 -04:00
Daniel Mills cc95042a94 Use a synced list 2021-07-31 08:18:12 -04:00
Daniel Mills 302f54971d Tweak feature iteration 2021-07-31 08:18:00 -04:00
Daniel Mills dff88403b5 I'm not proud of this 2021-07-31 08:10:45 -04:00
Daniel Mills cd3f9af232 Fix tree type size matcher 2021-07-30 10:22:50 -04:00
Daniel Mills b217162cad Get the real engine 2021-07-30 10:12:33 -04:00
Daniel Mills 7d24a61ae8 Fixes 2021-07-30 10:04:58 -04:00
Daniel Mills ca1b37dbcf Block data support native oraxen ids 2021-07-30 10:04:50 -04:00
Daniel Mills 0e887fb2ea Register Oraxen link 2021-07-30 10:04:41 -04:00
Daniel Mills a122adf05d Oraxen 2021-07-30 09:58:54 -04:00
Daniel Mills 04fc1e25e4 Coord annotations 2021-07-30 09:37:21 -04:00
Daniel Mills cff402affb Attempt block drops 2021-07-30 09:33:50 -04:00
Daniel Mills e1e0368f8c Papi support 2021-07-30 09:19:28 -04:00
Daniel Mills 8ee39d3822 Drop BKCommonLib (unused) 2021-07-30 08:52:06 -04:00
Daniel Mills e2b533db64 Fix 2021-07-30 08:50:18 -04:00
Daniel Mills fc5db74f16 Fix incorrect sapling placements 2021-07-30 08:49:46 -04:00
Daniel Mills 42e62a3698 Real class height placer 2021-07-30 08:48:29 -04:00
Daniel Mills 62f03356ca V+ 2021-07-30 07:07:06 -04:00
Daniel Mills 25bb0912fb Fix villages re-placing on top of each other 2021-07-30 06:17:56 -04:00
Dan beff1d8d42 Merge pull request #485 from CocoTheOwner/fixTreeNPE
Fix tree NPE
2021-07-30 04:49:10 -04:00
Daniel Mills 7dc56cc075 Cleanup 2021-07-30 04:40:26 -04:00
Daniel Mills 394d653978 Hunk grow interp 2021-07-30 04:40:07 -04:00
Daniel Mills 742fa27029 Fix engine hotloading 2021-07-30 04:39:56 -04:00
Daniel Mills 18b962dc57 Speed up profiling 2021-07-30 04:39:45 -04:00
Daniel Mills 233a179dad Pregen progress 2021-07-30 04:39:33 -04:00
Daniel Mills 9cc76c5ee6 Better warning 2021-07-30 01:52:05 -04:00
Daniel Mills 401ba40373 Shutdown render threads 2021-07-29 14:58:02 -04:00
Daniel Mills 6dad50aab1 Fix thread switch 2021-07-29 14:48:32 -04:00
Daniel Mills 9a43f868aa Hotload Iris Vision 2021-07-29 14:32:17 -04:00
Daniel Mills 294e9bb590 Fix out of date plugin ymls 2021-07-29 14:16:15 -04:00
Daniel Mills d101311109 V+ 2021-07-29 14:05:19 -04:00
CocoTheOwner e0e920bfe0 return, dumb 2021-07-29 11:28:25 +02:00
CocoTheOwner 3a090d7c1d Fix tree NPE 2021-07-29 11:07:27 +02:00
Daniel Mills dc851d856d Performance Improvements 2021-07-29 04:24:28 -04:00
Daniel Mills 2f8fe43ea3 Clean 2021-07-28 23:33:21 -04:00
Daniel Mills 959f96dd74 Jigsaw is faster 2021-07-28 23:32:14 -04:00
Daniel Mills 6620d2d023 Transient fix 2021-07-28 23:20:18 -04:00
Daniel Mills 408742494a Fixes 2021-07-28 21:35:22 -04:00
Daniel Mills f7ae9c06d8 Fix post mod issues 2021-07-28 21:34:02 -04:00
Daniel Mills b4c0d8e829 Fix build env 2021-07-28 20:41:25 -04:00
Daniel Mills b2a410d6cf Proper fracturing for max fracture accuracy 2021-07-28 20:18:10 -04:00
Daniel Mills 16fa453163 Fixes 2021-07-27 18:53:50 -04:00
Daniel Mills fc678684f5 Cleanup 2021-07-27 17:34:51 -04:00
Dan 8f7db7e52f Merge pull request #482 from VolmitSoftware/performance
Iris MPC
2021-07-27 17:33:09 -04:00
Daniel Mills e9d6cf278a Fix cave mod MPC 2021-07-27 17:32:03 -04:00
Daniel Mills d1c6f5f98e MPC Modifier support 2021-07-27 17:24:24 -04:00
Daniel Mills 48f581525e MPC Actuator support 2021-07-27 17:24:17 -04:00
Daniel Mills 8d967856b5 Support switching on and off MPC 2021-07-27 17:24:06 -04:00
Daniel Mills ee83cf2989 Sync LTC for CraftBukkit 2021-07-27 17:04:14 -04:00
Daniel Mills cb304d35e2 Desync terrain actuator 2021-07-27 17:04:05 -04:00
Daniel Mills 65185c5854 Multicore caves 2021-07-27 17:01:22 -04:00
Daniel Mills 91526674be Multicore terrain 2021-07-27 17:00:27 -04:00
Daniel Mills 3e11ff65db Multicore post 2021-07-27 17:00:19 -04:00
Daniel Mills 4a3ac17a2f Precache height 2021-07-27 17:00:12 -04:00
Daniel Mills 2283f1ddc9 Update metrics 2021-07-27 17:00:06 -04:00
Daniel Mills ae78887746 V+ 2021-07-27 15:42:07 -04:00
Daniel Mills 9de4bf839f Improve feature performance 2021-07-27 15:38:37 -04:00
Daniel Mills 295e51181b Fix tree placement 2021-07-27 15:27:21 -04:00
Daniel Mills 287e3a0090 Fixes 2021-07-27 15:21:00 -04:00
Daniel Mills 4d150e71a3 Don't iterate nothing 2021-07-27 15:20:33 -04:00
Daniel Mills 0debbc263e Fix false error detection 2021-07-27 15:20:17 -04:00
Daniel Mills a9e5e40a54 Fix add issue with blockdata 2021-07-27 15:04:28 -04:00
Daniel Mills cf61080980 Valid predicates for saplings 2021-07-27 15:04:20 -04:00
Daniel Mills 3e33731cf0 Update 2021-07-27 14:45:30 -04:00
Daniel Mills d7cda90acd Cleanup 2021-07-27 14:45:19 -04:00
Daniel Mills 9a7dcc8c1a Finalize 2021-07-27 14:44:07 -04:00
Dan d477121790 Merge pull request #481 from StrangeOne101/master
Decorator Updates
2021-07-27 14:43:05 -04:00
Daniel Mills 60e7a21e39 Cleanup 2021-07-27 14:42:43 -04:00
Daniel Mills b915ca2add Strip some comments 2021-07-27 14:41:31 -04:00
Daniel Mills e90ef7aaee Prevent self-chain firing events 2021-07-27 14:40:36 -04:00
Daniel Mills e918daaa9b This is not part of the tree. 2021-07-27 14:38:21 -04:00
Dan 83b4f645db Merge pull request #434 from CocoTheOwner/saplingOverrides
Add sapling / tree overrides WIP
2021-07-27 14:37:17 -04:00
StrangeOne101 1797df7017 Reblackhole 2021-07-27 14:40:14 +12:00
StrangeOne101 3beda9c201 Black Hole 2021-07-27 14:33:46 +12:00
CocoTheOwner 68e6bd668c Sync grow event, patch set fnction, path blockstateslist 2021-07-26 20:20:49 +02:00
CocoTheOwner 696cf61fe9 Remove log on creation 2021-07-26 20:02:59 +02:00
Daniel Mills 7fe56766fc V+ 2021-07-26 13:48:26 -04:00
Daniel Mills 1e62f8c951 Stop duplicate features from hitting each other 2021-07-26 13:21:01 -04:00
Daniel Mills 82b995f96f Parallax customize vacuum interp 2021-07-26 13:20:50 -04:00
Daniel Mills 05aa0c2482 Safe plax chunk meta 2021-07-26 13:13:53 -04:00
Daniel Mills bca5f4bec4 Fix NPE for now 2021-07-26 13:06:16 -04:00
Daniel Mills 8b599f78c0 Error detection when opening a studio world closes #466 2021-07-26 13:04:27 -04:00
StrangeOne101 38776e74bc Decorator Changes & Jigsaw Fix
- Fixed Jigsaw pieces with rotation disabled rotating randomly. They will now inherit the parent's rotation
- Fixed pallete of blocks in stacked blocks not being chosen randomly on the Y axis

Fixes for issues in the last commit:
- Fixed CEILING decorators not working with scaleStack
2021-07-27 04:12:40 +12:00
StrangeOne101 21ce09a5b5 Added scaleStack property to decorators
- Added scaleStack to decorators. It allows the size of the stack to scale to the size of the cave, using stackMin and stackMax as a min/max percentage
- Fixed stacks missing a block in size when the top block isn't defined
- Changed decorator stacks of a single block to place the top block instead of the body
- Fixed tab sound playing to other players
2021-07-27 04:12:40 +12:00
StrangeOne101 5fabec6a42 Minor patches to decorators 2021-07-27 04:12:40 +12:00
StrangeOne101 64f361d4b1 Cave Decorator Changes
- Surface decorators are no longer placed below liquids in caves
- SEA_FLOOR and SEA_SURFACE decorators now function within caves relative to the cave liquid
- Fixed stacked decorators going above the height of caves and the map
2021-07-27 04:12:40 +12:00
Daniel Mills f8ae842971 Revert "You cant call gson, the exception is that the string is too long,"
This reverts commit ca01d6efb8.
2021-07-26 12:05:09 -04:00
Daniel Mills ca01d6efb8 You cant call gson, the exception is that the string is too long, 2021-07-26 12:04:37 -04:00
Dan 498ab6d165 Merge pull request #472 from CocoTheOwner/betterObjectPaste
Reduce message spam, reduce code complexity, stop opening obj twice
2021-07-26 11:59:27 -04:00
CocoTheOwnerandStrangeOne101 8e8524ccc8 Patch pregen command descriptions (#477)
* Patch pregen command descriptions

* Update CommandIrisPregen.java

Co-authored-by: StrangeOne101 <strange.toby@gmail.com>
2021-07-26 23:01:38 +12:00
CocoTheOwner 714936f710 WTF to JSON 2021-07-26 22:58:56 +12:00
CocoTheOwner 11c0477a34 Patch entity spawns 2021-07-26 19:06:16 +12:00
CocoTheOwner 4f65c6bbcc improve villager placements 2021-07-26 17:16:57 +12:00
CocoTheOwner c7ee183fe4 Reduce complexity, similarly done to other cmds.
Removed "Hotloaded!" As that is also printed by the studio world's hotload function, now players are getting it twice.
2021-07-26 17:16:37 +12:00
CocoTheOwner 80545ce1f2 1 more todo 2021-07-25 23:40:38 +02:00
CocoTheOwner c80edcfe9f Patch set command (I get what you mean now) 2021-07-25 23:37:29 +02:00
CocoTheOwner 74318fb3c0 Call new bukkit event with the grow event data from here 2021-07-25 23:36:12 +02:00
CocoTheOwner 83a8942724 ok 2021-07-25 23:21:43 +02:00
CocoTheOwner 48f57068d8 width & depth must be equal, not smaller 2021-07-25 23:17:19 +02:00
CocoTheOwner 3f85916764 Reduce message spam, reduce code complexity, stop opening obj twice 2021-07-25 22:41:17 +02:00
Daniel Mills ab0f544267 V+ 2021-07-25 12:56:48 -04:00
Daniel Mills 14e16c874e More noise generators 2021-07-25 11:31:39 -04:00
CocoTheOwner 7fb87ad67f Merge branch 'master' into saplingOverrides 2021-07-25 15:28:54 +02:00
Dan 1b85417ae6 Merge pull request #467 from CocoTheOwner/removeregen
Remove regen command from registry
2021-07-25 09:17:38 -04:00
CocoTheOwner 8d41e6fece Remove regen command from registry 2021-07-25 13:28:54 +02:00
Daniel Mills ab2906991d Cleanup 2021-07-24 16:40:58 -04:00
Daniel Mills ac85c75cc4 Load all biomes for data packs, not just thought used ones 2021-07-24 11:49:47 -04:00
Daniel Mills 7f1fae307c Stop null biomes from ever being set into chunks 2021-07-24 11:49:17 -04:00
Daniel Mills cce41082a1 Spectator mode 2021-07-24 11:49:03 -04:00
Daniel Mills 902a489b04 Actually use priority mburst 2021-07-24 11:19:05 -04:00
Daniel Mills 30006fe520 Project creation fixes 2021-07-24 11:18:58 -04:00
Daniel Mills 2ce1bb9c3f Parallax features working with biomes! 2021-07-24 11:18:45 -04:00
Daniel Mills c468fa2a95 Fix multipliers 2021-07-24 09:50:57 -04:00
Daniel Mills 06ef342953 Fix NPE 2021-07-24 09:49:03 -04:00
Daniel Mills 02121105de Merge remote-tracking branch 'origin/master' 2021-07-24 09:46:42 -04:00
Daniel Mills e24788157a Plax typo 2021-07-24 09:46:31 -04:00
Daniel Mills 63905c608e Remove unused addNoise field on pos 2021-07-24 09:46:04 -04:00
Daniel Mills 69127e6952 Fix progress issues with pregen headless world inits 2021-07-24 09:45:52 -04:00
Daniel Mills 87a84f02a3 Board tweaks 2021-07-24 09:42:39 -04:00
Daniel Mills 0b5bea9965 Support features with fractured radii 2021-07-24 09:42:32 -04:00
Daniel Mills 0d5e3a080c Parallax fixes 2021-07-24 09:42:19 -04:00
Daniel Mills a4ba07de99 Fix world events 2021-07-24 09:42:06 -04:00
Daniel Mills 970a5ec763 Support creation of studio worlds through tk 2021-07-24 09:41:39 -04:00
StrangeOne101 6f338c44c4 Everyone and their neighbor loves typos 2021-07-25 01:34:28 +12:00
Daniel Mills f360fadd3f Better iris noise rendering 2021-07-23 18:50:25 -04:00
Daniel Mills 846fa4722b Parallax fiaster 2021-07-23 18:25:29 -04:00
Daniel Mills 9752f1d492 Fix iris loot & update blocks 2021-07-23 17:44:13 -04:00
Daniel Mills ce2d386b7e Iris debug toggle 2021-07-23 17:44:03 -04:00
Daniel Mills 993d433d03 Fix gradle 2021-07-23 17:22:24 -04:00
Daniel Mills ede344db3a V+ 2021-07-23 16:15:31 -04:00
Daniel Mills 6c397da1f8 INMS Additions 2021-07-23 16:13:17 -04:00
Daniel Mills 1d9862fe11 1.16 Support regress 2021-07-23 16:06:10 -04:00
Daniel Mills 2d3db00639 Fixes 2021-07-23 09:40:06 -04:00
Daniel Mills 7269233134 Fix goto issues 2021-07-23 09:34:20 -04:00
Daniel Mills 27be0ad808 Object tab complete 2021-07-23 09:14:52 -04:00
Daniel Mills 51e875694c Jigsaw tab complete place 2021-07-23 09:14:45 -04:00
Daniel Mills 92d64d77c5 Object paste tab complete 2021-07-23 09:14:34 -04:00
Daniel Mills 579e9e0b8c Possible keys search 2021-07-23 09:14:22 -04:00
Daniel Mills 25b9c491c3 Fix bitwise calculator 2021-07-23 08:55:53 -04:00
Daniel Mills 8f1b48b0ab Fix paper async chunk errors 2021-07-23 08:49:03 -04:00
Daniel Mills 611d3c3b63 Retry on paper load failures 2021-07-23 08:38:32 -04:00
Daniel Mills 3a658e10f1 Fix possible load keys loading all data folders 2021-07-23 08:36:42 -04:00
Daniel Mills 92a182e5a8 Fix rotations? 2021-07-22 21:27:14 -04:00
Daniel Mills 954f0cc26f Settings changes and fix npes 2021-07-22 21:26:01 -04:00
Daniel Mills 5e0b4e1be6 Try get chunk 2021-07-22 21:01:10 -04:00
Daniel Mills c72511da6a Tests 2021-07-22 20:57:10 -04:00
Daniel Mills 15c65ad4e1 Synchronize sections test? 2021-07-22 20:50:43 -04:00
Daniel Mills d06657e2ff Zero write detection? 2021-07-22 20:49:00 -04:00
Daniel Mills 5dae1ee34f ffs 2021-07-22 20:37:02 -04:00
Daniel Mills 88a5d33bad f 2021-07-22 20:31:49 -04:00
Daniel Mills 42e02a6129 Atomic MCA Data 2021-07-22 20:27:15 -04:00
Daniel Mills 7d56164882 Attempt to fix concurrency issues 2021-07-22 20:17:11 -04:00
Daniel Mills 3e60ad21bf Fix npe 2021-07-22 20:07:38 -04:00
Daniel Mills 55c4e9635a Commands 2021-07-22 20:07:18 -04:00
Daniel Mills 101d0212a7 Pullbuild 2021-07-22 19:43:30 -04:00
Daniel Mills f0338b5247 More gen errors 2021-07-22 19:38:49 -04:00
Daniel Mills 80136b4aff Merge remote-tracking branch 'origin/master' 2021-07-22 19:23:35 -04:00
Daniel Mills f0a89e99f5 Error Test 2021-07-22 19:23:31 -04:00
CocoTheOwner 09f830c315 patch faulty null exit 2021-07-22 23:40:25 +02:00
StrangeOne101 ace92f8be0 Fixes grow on trees (#458)
- Made the download command easier to use with less errors than before
- Usage is now `/iris download <repo> [branch=master]`
- Fixed multiplicitive being useless in noise generators
2021-07-23 03:34:31 +12:00
Daniel Mills 7e08f495a7 Schemas for mods 2021-07-22 11:13:26 -04:00
Daniel Mills a8299b4f54 Iris Mods 2021-07-22 11:12:17 -04:00
Daniel Mills bdb00b8d58 Formatting for objects 2021-07-22 10:56:01 -04:00
Daniel Mills 4e18127371 Clamp heights to prevent issues with negative heights / overflowing 2021-07-22 10:54:51 -04:00
CocoTheOwner e5165e6fba add some todos 2021-07-22 16:25:24 +02:00
Daniel Mills 77dc237549 Add a description for terrain modes 2021-07-22 10:18:11 -04:00
Daniel Mills e3cc04f538 Fix focus mode causing failing chunks 2021-07-22 09:21:38 -04:00
Dan 322d1ad75c Merge pull request #454 from CocoTheOwner/bugreportfix
Allow people to paste screenshots in report
2021-07-22 08:34:12 -04:00
Daniel Mills 4767903a07 V+ 2021-07-22 08:31:07 -04:00
CocoTheOwner 0064ce97f0 Allow people to paste screenshots in report 2021-07-21 21:10:42 +02:00
CocoTheOwner 71f067f678 Next step to free sizes for saplongs 2021-07-21 21:10:16 +02:00
CocoTheOwner 8f37dc8570 Cleanup & fix 2021-07-21 18:24:09 +02:00
CocoTheOwner b15b640652 Probably wise to quicksave 2021-07-21 18:12:45 +02:00
CocoTheOwner 3e892f30ca Remove requireNonNull and do safer 2021-07-21 16:59:46 +02:00
CocoTheOwner 20f3efced9 Convert to toolbelt 2021-07-21 16:58:09 +02:00
CocoTheOwner 25bcd0f2a9 Merge remote-tracking branch 'upstream/master' into saplingOverrides 2021-07-21 16:48:22 +02:00
Daniel Mills d990bf794a Merge remote-tracking branch 'origin/master' 2021-07-21 10:39:44 -04:00
Daniel Mills aa25feb57e Fixes 2021-07-21 10:39:39 -04:00
Dan b203fc7c68 Merge pull request #443 from CocoTheOwner/fixCompoundNPE
Fix NPE by checking if null before calling on it.
2021-07-21 09:37:35 -04:00
Dan 9298e045d3 Merge pull request #442 from CocoTheOwner/fixVolmitSender
Fix sender.player() call without checking if player
2021-07-21 09:37:15 -04:00
Dan e3255588d3 Merge pull request #448 from CocoTheOwner/infoImprovement
Improve some info logs
2021-07-21 09:34:41 -04:00
Dan 514f23cf4d Merge pull request #436 from CocoTheOwner/better-bugreports
Update bug reports & feature requests
2021-07-21 09:34:16 -04:00
Daniel Mills ab206b2abf Stop threads on vision shutdown 2021-07-21 09:13:05 -04:00
Daniel Mills 2f8a65d364 Only install datapacks on init if it is studio 2021-07-21 08:39:09 -04:00
Daniel Mills a30e47d094 Shutdown threads on iris disable 2021-07-21 08:37:35 -04:00
Daniel Mills 0a78a87a17 Stop recreating threads without shutting down engine targets 2021-07-21 08:37:26 -04:00
Daniel Mills 886ec9c574 V+ 2021-07-21 08:12:01 -04:00
Daniel Mills 434fe894bc Precache Noise double chunk speed! 2021-07-21 08:11:47 -04:00
Daniel Mills cde9dbe406 Fix parallax issues 2021-07-21 08:10:26 -04:00
Daniel Mills c5262f188e Fix JVM Warnings 2021-07-21 08:10:11 -04:00
Daniel Mills 8f57364547 Verify MCA Chunks 2021-07-21 08:09:57 -04:00
CocoTheOwner eb193f230b Re-enable dirty placer. needs fixin' 2021-07-21 11:40:16 +02:00
CocoTheOwner 6a868f975e Rename treeoptions & improve debug 2021-07-21 11:39:27 +02:00
CocoTheOwner 66a8db598f Require toggle in treeSettings 2021-07-21 11:34:34 +02:00
CocoTheOwner bfa13583e3 Sapling now called tree 2021-07-21 11:33:42 +02:00
CocoTheOwner d865e646b9 Remove @Required from object place chance (default = 1 already) 2021-07-21 11:30:26 +02:00
CocoTheOwner f630537897 ANY treetype 2021-07-21 11:27:21 +02:00
CocoTheOwner aaf7ae8fc3 Remove unused, add & implement ANY treeSize 2021-07-21 11:25:22 +02:00
CocoTheOwner 52cba23190 Add object placement to dimension
It is not enabled to place objects, but will work with sapling overrides
2021-07-21 11:24:54 +02:00
CocoTheOwner c48c74a0cf Remove saplings, update debug, improve object placing functions 2021-07-21 11:10:43 +02:00
CocoTheOwner 9c6c27909d Improve some info logs 2021-07-20 23:29:10 +02:00
CocoTheOwner 3ba3e5cf76 Fix NPE by checking if null before calling on it. 2021-07-20 22:04:21 +02:00
CocoTheOwner df4040a96a Fix sender.player() call without checking if player 2021-07-20 21:50:33 +02:00
CocoTheOwner 6932e468cf comments, debug. 2021-07-20 21:46:56 +02:00
CocoTheOwner a82279b068 Refactor, cleanup, debug 2021-07-20 21:25:28 +02:00
Daniel Mills 0ae7b9c120 A Friendly reminder... 2021-07-20 14:28:06 -04:00
Daniel Mills 72f86069a2 Dont lock objects (for now) 2021-07-20 14:27:59 -04:00
Daniel Mills 509c32db70 Close engine targets on shutdown 2021-07-20 14:27:45 -04:00
Daniel Mills 7fa45c0658 Stop bounds enforcement 2021-07-20 14:27:36 -04:00
Daniel Mills 4e81a6af83 Don't interpolate slope 2021-07-20 13:48:47 -04:00
Daniel Mills 66d3eb3400 Shutdown engine threads properly 2021-07-20 13:48:34 -04:00
Daniel Mills 7e36cb76ba Lock accessors 2021-07-20 13:48:25 -04:00
Daniel Mills fc47651c33 Fix 2021-07-20 13:28:17 -04:00
Daniel Mills 6948d70d94 V+ 2021-07-20 12:01:10 -04:00
Daniel Mills eee2db8ad9 Fix Decays 2021-07-20 11:52:36 -04:00
Daniel Mills 318a36a831 Only use hybrid headless if mca is enabled 2021-07-20 11:40:01 -04:00
Daniel Mills 4d90bd9e31 Cleanup Code 2021-07-20 11:36:44 -04:00
Daniel Mills 4e81151e11 Config fixes for pregen 2021-07-20 11:35:40 -04:00
Daniel Mills 18195b778a Cleanup old compat 2021-07-20 11:33:02 -04:00
Daniel Mills 326bddad2a Thread counts synced 2021-07-20 11:19:47 -04:00
Daniel Mills f4b41a43cf Link pregen 2021-07-20 11:18:55 -04:00
Daniel Mills 38c762f775 Drop doaflip again 2021-07-20 11:18:44 -04:00
Daniel Mills 9833d466c4 Iris Syndicate 2021-07-20 11:18:35 -04:00
Daniel Mills 4d965333ef Revert "Drop do a flip "
This reverts commit 9ed246e482.
2021-07-20 08:56:17 -04:00
CocoTheOwner a6ec18690d Fix tree sapling detection math 2021-07-20 14:25:34 +02:00
Daniel Mills d3fe0b48d8 Pregenerator tracking nets 2021-07-20 04:56:54 -04:00
Daniel Mills 35220e1c4d Slave pregen method 2021-07-20 04:56:45 -04:00
Daniel Mills de7bc9870d Turbo connectivity 2021-07-20 04:56:37 -04:00
Daniel Mills 680a3a5d13 Turbo commands 2021-07-20 04:56:31 -04:00
Daniel Mills cf8612c99f Net listeners 2021-07-20 04:56:20 -04:00
Daniel Mills e817d3355c GRTF 2021-07-20 04:48:23 -04:00
Daniel Mills 53b7f33ec4 IO Write file from stream 2021-07-20 04:48:15 -04:00
Daniel Mills 5ed9a29f81 Color fixes 2021-07-20 03:02:18 -04:00
Daniel Mills 89406c4754 Docs 2021-07-20 02:59:49 -04:00
Daniel Mills b27b26837f Coord docs & fix serious parallax issue 2021-07-20 02:59:38 -04:00
Daniel Mills 0595008fce Stop serious memory leaks 2021-07-20 02:59:15 -04:00
Daniel Mills d6b2e019c7 Headless look for existing chunks 2021-07-20 02:58:57 -04:00
Daniel Mills 25cfb1f5c0 Plx fixes 2021-07-20 02:58:44 -04:00
Daniel Mills 10a159b315 Decorator doc 2021-07-20 02:58:17 -04:00
Daniel Mills 60c113b0e8 Allow reading region chunks without loading mca 2021-07-20 02:58:11 -04:00
Daniel Mills ec4330aea7 Actuator docs 2021-07-20 02:58:01 -04:00
Daniel Mills f263fe30a4 PRegen tweaks 2021-07-20 02:57:52 -04:00
Daniel Mills 0ec2f68a96 Proper plax coord checking 2021-07-20 00:14:39 -04:00
Daniel Mills 1156b909eb Save debugging for plax 2021-07-20 00:14:26 -04:00
Daniel Mills 9ed246e482 Drop do a flip 2021-07-19 23:55:28 -04:00
CocoTheOwner c342c5c4f6 fixes and the majority of treesize retrieval 2021-07-19 19:03:25 +02:00
Daniel Mills 3b7ef5b262 Coolstuff 2021-07-19 11:05:52 -04:00
Daniel Mills 79bf3d8d4f f 2021-07-19 10:47:20 -04:00
Daniel Mills cfe91a8722 Le Pregenerator with headless mode 2021-07-19 10:46:03 -04:00
Daniel Mills c3e2d34372 APIs & such 2021-07-19 10:45:52 -04:00
Daniel Mills 56b6ee5d2a Merge remote-tracking branch 'origin/master' 2021-07-19 10:45:21 -04:00
Dan 3f34ac1c75 Update README.md 2021-07-19 10:43:48 -04:00
Daniel Mills be5015d16b Patch grasspath 2021-07-19 09:27:43 -04:00
Dan 2c1d4cfc40 Merge pull request #437 from VolmitSoftware/new-pregenerator
...
2021-07-19 06:42:27 -04:00
Daniel Mills 5bf75e122c Tweaks 2021-07-19 06:40:54 -04:00
Daniel Mills aa51048990 Fixes 2021-07-19 06:32:44 -04:00
Daniel Mills 6d117f824d Fix threading & other issues 2021-07-19 06:32:38 -04:00
Daniel Mills 0a591e748f Fix rendering issues 2021-07-19 06:32:27 -04:00
Daniel Mills be2cb5d2f2 Fix pregen thread counts 2021-07-19 06:32:20 -04:00
Daniel Mills 280ec22348 Better mca iteration 2021-07-19 06:32:13 -04:00
Daniel Mills f9a815bba6 Dont try to load mca regions 2021-07-19 06:31:57 -04:00
CocoTheOwner 1534dcc932 Rework according to discussed changes 2021-07-19 12:07:29 +02:00
Daniel Mills e19ae7af59 Math fixes 2021-07-19 05:43:46 -04:00
Daniel Mills 1726d6f59e Iterator event fixes 2021-07-19 05:41:30 -04:00
Daniel Mills 756f395158 Method api & impl changes 2021-07-19 05:41:19 -04:00
Daniel Mills 90d2cf4970 Pregen job tweaks 2021-07-19 05:41:10 -04:00
Daniel Mills 37e70fd5bb fix pregen command to use mca coords 2021-07-19 05:41:01 -04:00
Daniel Mills 126481833b Sync get future 2021-07-19 05:40:48 -04:00
Daniel Mills b2630cfb49 Pos tostring 2021-07-19 05:40:43 -04:00
CocoTheOwner 579e2e95e3 Remove old, shove in new. 2021-07-19 11:07:24 +02:00
Daniel Mills 6580436900 Async pregen start 2021-07-19 04:37:06 -04:00
Daniel Mills a0ecf72a1c Open gui on pregen start 2021-07-19 04:34:34 -04:00
Daniel Mills bc3aaa94de Actual command tests 2021-07-19 04:33:14 -04:00
Daniel Mills 482ca5ed15 Command tests 2021-07-19 04:31:06 -04:00
Daniel Mills 66894c2e8a Pregen utils for commands 2021-07-19 04:30:59 -04:00
Daniel Mills 5d5a1fadd9 The Iris Pregenerator (job) 2021-07-19 04:22:33 -04:00
Daniel Mills 2d531c3a15 The Iris pregenerator (logic) 2021-07-19 04:22:24 -04:00
Daniel Mills e4da11727a Pregen methods impl 2021-07-19 04:22:14 -04:00
Daniel Mills 309f97b443 Pregen method api 2021-07-19 04:22:03 -04:00
Daniel Mills 98240e910e Pregen tasks 2021-07-19 04:21:54 -04:00
Daniel Mills 6d79d3d1f8 Support pregen listeners in iris comp gen 2021-07-19 04:21:49 -04:00
Daniel Mills def4e19359 Tweaks to headless gens 2021-07-19 04:21:33 -04:00
Daniel Mills 6cfd055bec Pos utils 2021-07-19 04:21:22 -04:00
Daniel Mills 1208b25b66 Move around guis 2021-07-19 02:00:15 -04:00
Daniel Mills b25bf70224 ChunkPosition -> Position2 2021-07-19 02:00:07 -04:00
Daniel Mills 7ecb139dba CMP 2021-07-19 01:47:00 -04:00
Daniel Mills 2a7720852a Move components 2021-07-19 01:46:54 -04:00
Daniel Mills 627eb556cb The headless generator 2021-07-19 01:45:29 -04:00
Daniel Mills e251155f4f NBT Force flushing 2021-07-19 01:45:21 -04:00
Daniel Mills 4e9c44e574 V+ 2021-07-19 01:45:09 -04:00
CocoTheOwner 5b662df7cd ifs 2021-07-19 02:09:52 +02:00
Dan 802574fb44 Merge pull request #433 from VolmitSoftware/headless
Iris Headless Support
2021-07-18 19:50:35 -04:00
Daniel Mills 51f3334711 Headless generation 2021-07-18 19:49:54 -04:00
Daniel Mills 254b5c963b Headless Generator 2021-07-18 19:36:18 -04:00
Daniel Mills d5f64a79b2 Headless worlds 2021-07-18 19:36:02 -04:00
Daniel Mills dd54a714cb Fix init errors 2021-07-18 19:35:56 -04:00
CocoTheOwner d40e9e3d73 Add todo cards 2021-07-19 01:31:09 +02:00
Daniel Mills d5066adb4b Fix terrain chunk creation 2021-07-18 19:05:22 -04:00
Daniel Mills f933aae562 Cleanup imports 2021-07-18 19:02:26 -04:00
Daniel Mills db65a80a7f Drop support for non-world terrain chunks 2021-07-18 19:01:53 -04:00
Daniel Mills 2f9658fa22 No More Fake News 2021-07-18 19:00:45 -04:00
Daniel Mills ab06365a81 Fix FakeEngine 2021-07-18 18:59:48 -04:00
Daniel Mills 2bc27bd6f5 Ravine mod support headless 2021-07-18 18:59:14 -04:00
Daniel Mills 078ac1abe4 Post mod support headless 2021-07-18 18:59:01 -04:00
Daniel Mills 05259eb0d2 Deposit mod support headless 2021-07-18 18:58:49 -04:00
Daniel Mills 8c272ea032 Cave mod headless support 2021-07-18 18:58:36 -04:00
Daniel Mills f58f29389c Use IrisWorld instead of FakeWorld om World Creator 2021-07-18 18:58:16 -04:00
Daniel Mills 854b137820 Fix wrong list for worlds 2021-07-18 18:57:05 -04:00
Daniel Mills fb8b5ac6b6 Compound headless mode 2021-07-18 18:56:05 -04:00
Daniel Mills 35106f5e67 Engine support headless 2021-07-18 18:55:40 -04:00
Daniel Mills a5ea58dbf7 Terrain actuator headless 2021-07-18 18:55:25 -04:00
Daniel Mills b4ddc8e5fc Island experiment support headless 2021-07-18 18:54:55 -04:00
Daniel Mills 2223405e79 Decorant support headless 2021-07-18 18:54:42 -04:00
Daniel Mills 7260e0d0f5 Biome actuator headless 2021-07-18 18:50:53 -04:00
Daniel Mills 44cf7f7330 Iris Project headless 2021-07-18 18:50:33 -04:00
Daniel Mills 465ceab271 Pregen fix but it needs to be recreated 2021-07-18 18:50:07 -04:00
Daniel Mills fa818d50d1 Vision headless support 2021-07-18 18:48:57 -04:00
Daniel Mills deb75df77a Cleanup unused 2021-07-18 18:45:41 -04:00
Daniel Mills aae47e103b Spawn loc headless 2021-07-18 18:44:52 -04:00
Daniel Mills 957dbecb3d Plxmgr headless 2021-07-18 18:43:14 -04:00
Daniel Mills 75fe59ef79 Patch complex 2021-07-18 18:42:32 -04:00
Daniel Mills 63ba5cf39d Patch engine components 2021-07-18 18:42:05 -04:00
Daniel Mills 8a0b7fbc47 Patch goto in headless mode 2021-07-18 18:41:39 -04:00
Daniel Mills ea9fb5bcb0 Update Engine for Iris Worlds 2021-07-18 18:39:54 -04:00
Daniel Mills 21d8ceacf0 Initial spawn fixes 2021-07-18 18:39:36 -04:00
Daniel Mills 986cf025a0 Seed access for spawns 2021-07-18 18:38:47 -04:00
Daniel Mills 85b936ead2 Engine target fix for world folder 2021-07-18 18:38:12 -04:00
Daniel Mills f241679087 Fix world method in studio close 2021-07-18 18:37:55 -04:00
Daniel Mills 6618cdc0ad Composite generator use only iris worlds 2021-07-18 18:37:17 -04:00
Daniel Mills fe2de5d8ae Use Iris worlds 2021-07-18 18:37:09 -04:00
Daniel Mills bd954e7292 Support additional world methods 2021-07-18 18:36:59 -04:00
Daniel Mills 86367298cc Support get players 2021-07-18 18:25:46 -04:00
Daniel Mills 08346a2326 V+ 2021-07-18 18:23:20 -04:00
Daniel Mills 1bb9090434 Update engine compounds for iris worlds 2021-07-18 18:22:51 -04:00
Daniel Mills 879bcdf8d8 Update Engine Target to use Iris Worlds 2021-07-18 18:21:41 -04:00
Daniel Mills 1b7658d8f9 Iris Worlds 2021-07-18 18:21:04 -04:00
Daniel Mills d635705449 Fix pregen speed issue 2021-07-18 17:56:56 -04:00
CocoTheOwner af1b17cb98 Rename & rewrite, add limits & checks, better delete 2021-07-18 18:00:10 +02:00
CocoTheOwner 944ef83805 everything reworked 2021-07-18 17:21:29 +02:00
CocoTheOwner 20b3e95b4f Merge remote-tracking branch 'upstream/master' into saplingOverrides 2021-07-18 11:10:42 +02:00
Daniel Mills c2de0dd613 V+ 2021-07-18 04:47:31 -04:00
Daniel Mills 2a7f5f55b0 Fix failed to gen on really anything fixes #424 2021-07-18 04:47:11 -04:00
Daniel Mills a03539ad8b Speed up plax mgr 2021-07-18 04:46:55 -04:00
Daniel Mills c420a8a686 NBTWorlds! 2021-07-18 04:46:33 -04:00
CocoTheOwner 8d6a2e8882 Basic sapling manager logic. Needs polishing 2021-07-17 21:41:30 +02:00
CocoTheOwner 8da9156bb5 Saplings 2021-07-17 20:38:12 +02:00
CocoTheOwner ffc8a5188d Descriptions 2021-07-17 20:38:05 +02:00
CocoTheOwner 4eb1117659 Ok? 2021-07-17 18:45:11 +02:00
CocoTheOwner b4602c1e48 Create IrisSapling, Make sapling lists, rename toggles, add objects 2021-07-17 18:42:30 +02:00
CocoTheOwner 80ede42191 Remove toggle from biome/region sapling config & prevent non-iris world 2021-07-17 18:01:11 +02:00
CocoTheOwner ea6937c0ac Add sapling configs to biome and dimension files 2021-07-17 17:54:38 +02:00
CocoTheOwner 2f99ba8526 Merge remote-tracking branch 'origin/saplingOverrides' into saplingOverrides 2021-07-17 17:51:02 +02:00
CocoTheOwner 16324e16c7 Initial commit.
Captures block place and sapling grow events and prints info to the console. Initial configuration options are in place, definitions will be added.
2021-07-17 17:50:45 +02:00
Daniel Mills c2e1ecf5b1 V+ 2021-07-17 07:52:26 -04:00
Daniel Mills cd353217d6 Fix CMOD 2021-07-17 07:45:48 -04:00
Daniel Mills 6903f67f0f Attempt to patch mca holes 2021-07-17 07:36:15 -04:00
Daniel Mills 487dab793a Performance Improvements 2021-07-17 03:20:10 -04:00
StrangeOne101 4cd3f9bd38 Merge pull request #423 from StrangeOne101/master
Tweaks
2021-07-17 17:29:20 +12:00
StrangeOne101 f581e76057 Tweaks
- Tweaked cards in map neater around the text
- Fixed map coordinate inaccuracy when zoomed
- Fixed too many commas when teleporting via the map
- Fixed no message being sent to the player at all when a studio world is opened
- Increased map zoom default to 400% 
- Fixed create command NPE when downloaded a fresh pack
2021-07-17 17:26:12 +12:00
Daniel Mills 312aa856ad Storepage 2021-07-17 01:00:09 -04:00
Daniel Mills 6f4363e95b Cleanup 2021-07-17 00:36:16 -04:00
Daniel Mills 595ba92f06 Handle terrain mode rendering 2021-07-17 00:33:45 -04:00
Daniel Mills df9114d7b0 Parallax Feature Performance Caching 2021-07-17 00:33:32 -04:00
Daniel Mills 1496d0e482 Stream api additions 2021-07-17 00:30:02 -04:00
Daniel Mills 92f5783f35 Stop tracking cache hit ratios 2021-07-17 00:29:47 -04:00
Daniel Mills da1895125a Island terrain mode (experimental) 2021-07-17 00:29:33 -04:00
Daniel Mills bcdd470567 Improve biome generator performance (sync) efficiency 2021-07-17 00:29:09 -04:00
Daniel Mills 7cd0070d90 Cancel noise boxes for now... later 2021-07-17 00:28:37 -04:00
CocoTheOwner 8217949fa2 Initial commit.
Captures block place and sapling grow events and prints info to the console. Initial configuration options are in place, definitions will be added.
2021-07-16 17:28:28 +02:00
Daniel Mills 4bdf1553c9 f 2021-07-16 08:54:29 -04:00
Daniel Mills 6fd5d38cd8 Fixes 2021-07-16 07:30:20 -04:00
Daniel Mills 8a737104ef Dont pregen created worlds unless they are specified to 2021-07-16 07:28:25 -04:00
Daniel Mills a608da759b Fixes 2021-07-16 07:10:54 -04:00
Daniel Mills c828625cc1 Pregenerator tweaks 2021-07-16 06:34:28 -04:00
Daniel Mills 7ead247fcb Formatting 2021-07-16 06:29:45 -04:00
Daniel Mills 7a62af78d0 Proper warnings 2021-07-16 06:27:25 -04:00
Daniel Mills 9896d6e6b2 Fix 2021-07-16 05:49:16 -04:00
Daniel Mills 9c376183e0 Stop blowing up the VM when looking for biomes 2021-07-16 05:00:00 -04:00
Daniel Mills e5cc9a3cbf VolmitSender 2021-07-16 04:59:51 -04:00
Daniel Mills 985979ab14 No goto - tp 2021-07-16 04:03:09 -04:00
Daniel Mills 377a4c2284 Noise boxing 2021-07-16 03:54:09 -04:00
Daniel Mills 24242db981 V+ 2021-07-16 02:41:27 -04:00
Daniel Mills 73a4152b5d RF 2021-07-16 02:40:56 -04:00
Daniel Mills b5eb094566 Performance Improvements 2021-07-16 02:39:37 -04:00
Daniel Mills 71140381e0 Cleanup 2021-07-16 02:25:35 -04:00
Daniel Mills 22387b2610 Refs 2021-07-16 02:11:41 -04:00
Daniel Mills da53a7d469 Repackage utils 2021-07-16 02:11:37 -04:00
Daniel Mills b9b30f9f53 Refactors 2021-07-16 01:46:32 -04:00
Daniel Mills c984eb9b8c Restructure Packages (read commit description)
There are now three root packages
- Engine: Generator & JSON Scaffolding
- Core: Managers, Commands, NMS
- Util: Random utility packages
2021-07-16 01:46:22 -04:00
Daniel Mills eef548f6a1 Fix Rarity, Strings do not implement IRare 2021-07-16 01:39:28 -04:00
Daniel Mills 2da8ffb8cd Copper 2021-07-16 00:53:08 -04:00
Daniel Mills 8188c21641 Fixes 2021-07-16 00:52:21 -04:00
Daniel Mills 19dca8c5bb Fix gen crash 2021-07-16 00:50:58 -04:00
Daniel Mills 5de5b6047a Better generating 2021-07-16 00:50:53 -04:00
Daniel Mills 695c4159dc Hotload datapacks on hotload (still needs restart) 2021-07-16 00:15:13 -04:00
Daniel Mills 2624315bd5 Custom biome particles & spawns 2021-07-16 00:09:25 -04:00
Daniel Mills fff6e50702 Map changes 2021-07-15 23:25:06 -04:00
Daniel Mills 753b69726a Mapping overload 2021-07-15 07:58:20 -04:00
Daniel Mills df273aca7e Map madness 2021-07-15 03:38:27 -04:00
Daniel Mills 9e9feb5980 Engine support max densities 2021-07-15 03:38:22 -04:00
Daniel Mills e71eb465fb Use new map only 2021-07-15 02:01:49 -04:00
Daniel Mills e9f2550a26 It compiles 2021-07-15 02:00:53 -04:00
StrangeOne101 12bfd98011 Merge pull request #418 from StrangeOne101/map-1.17
New Studio Map Command
2021-07-15 17:57:57 +12:00
StrangeOne101 2b45056842 Merge branch 'master' into map-1.17 2021-07-15 17:56:57 +12:00
StrangeOne101 c86fdf07db Merge branch 'master' into map-1.17 2021-07-15 17:54:23 +12:00
Daniel Mills 385ffd5b27 Destroy everything 2021-07-15 01:53:35 -04:00
StrangeOne101 ad6b746124 New Studio Map Command
- Allows you to see a map of a world/pack (without being in the world)
- Chooses a random color for each biome if no color is chosen, based on vanilla derivative 

Dev note: 
- The biome at your cursor is not accurate when zoomed out
2021-07-15 17:52:20 +12:00
Daniel Mills 57e8b59db6 std tp alias for tps 2021-07-15 00:41:28 -04:00
Daniel Mills ecb869695e Performance Improvements Pregenerator 2021-07-15 00:39:08 -04:00
Daniel Mills c99c7ee6c9 Its faster to be sync when you're already mutlicore... 2021-07-15 00:38:57 -04:00
Daniel Mills d3c47fe1a4 Performance Improvements 2021-07-14 19:06:05 -04:00
Daniel Mills 1c21b23e8e Fix placeobjects not working fixes #409 2021-07-14 18:31:29 -04:00
Daniel Mills bb55cd3c42 Command goto g only 2021-07-14 17:05:05 -04:00
Dan 4a74190241 Merge pull request #411 from StrangeOne101/master
Attempted fix biome & region rarity
2021-07-14 17:03:54 -04:00
Dan 586f9594fb Merge pull request #415 from CocoTheOwner/master
Remove "g" from cmd alt list for gen explorer since also on goto
2021-07-14 17:02:40 -04:00
Daniel Mills e68facfd51 Fixes 2021-07-14 16:44:15 -04:00
Daniel Mills 7d423fa49d Totally stable optimizations that wont cause any problems at all. 2021-07-14 16:40:20 -04:00
Daniel Mills 886553a923 Cleanup / Update sources 2021-07-14 15:40:01 -04:00
Daniel Mills ff4a00d103 Support interpolator types for object scale ups 2021-07-14 15:28:29 -04:00
Daniel Mills dbdf8a97ae MCA Data Pack Support for custom biomes 2021-07-14 15:23:04 -04:00
Daniel Mills 2433e31db0 Faster MCA 2021-07-14 15:22:53 -04:00
Daniel Mills 5538aac732 Actually fix 2021-07-14 14:44:32 -04:00
Daniel Mills c05f169d54 Read server properties file for proper dpacks folder 2021-07-14 14:40:43 -04:00
Daniel Mills 24aaefe342 Wipe datapacks on setup 2021-07-14 14:06:40 -04:00
Daniel Mills c167e881fb Biomes support multi-custom instances 2021-07-14 13:51:01 -04:00
CocoTheOwner 9a8c22f487 Add le me to gradle 2021-07-14 19:49:20 +02:00
Daniel Mills fd8077a5cd Hi-lo biome exceptions now throw 2021-07-14 13:28:10 -04:00
Daniel Mills 6dd196a7a6 Schemadata descriptions for new enums 2021-07-14 13:25:35 -04:00
Daniel Mills bdfe14e278 Fix slab cmod op 2021-07-14 13:24:20 -04:00
Daniel Mills 1c7b318c3f Fix color parsing 2021-07-14 13:24:14 -04:00
Daniel Mills a6acc30eea Actually support nested json files in folders up to 2 subfolders 2021-07-14 12:59:36 -04:00
StrangeOne101 c54a849243 Optimizations 2021-07-15 00:48:27 +12:00
StrangeOne101 1f2871f649 Map Command Overhaul in 1.17
- Features biomes using random color (based on vanilla derivative) if a color isn't provided in the biome class
- Allows a map to be opened for packs that don't have a world open (`/iris std map overworld`)
2021-07-14 23:01:09 +12:00
StrangeOne101 147d5902ed Attempted fix biome & region rarity
- Attempted to fix the issue of biome & region rarity issue
2021-07-14 21:23:02 +12:00
Daniel Mills ec47ca1983 THE SUPER DUPER COOL BUT TOTALLY NOT STABLE THING THATS NOT READY YET... 2021-07-14 04:51:50 -04:00
Daniel Mills 6ca6fc6989 Cleanup SRC 2021-07-14 02:34:13 -04:00
Dan f29015426f Merge pull request #410 from CocoTheOwner/jigsawexit
add command alts
2021-07-14 02:31:50 -04:00
Daniel Mills 57f09fd64d Trilinear, Tricubic & Trihermite 2021-07-14 02:31:15 -04:00
Daniel Mills 2477ee4952 Support Object scaling 2021-07-14 02:31:06 -04:00
Daniel Mills 2bd7fd2aa7 Support iris object scaling 2021-07-14 02:30:15 -04:00
Daniel Mills bc5529ded8 NMS for datapack discovery 2021-07-14 02:29:58 -04:00
Daniel Mills b05736e4fb What biome support datapack biomes 2021-07-14 02:29:47 -04:00
Daniel Mills 6a187881c0 Drop EWG Object conversion 2021-07-14 02:29:38 -04:00
Daniel Mills d1accc4e09 ffff 2021-07-13 19:04:05 -04:00
Daniel Mills e7e130460e Auto stash before revert of "Flush " 2021-07-13 18:55:51 -04:00
Daniel Mills d33a02f6cd Revert "Flush "
This reverts commit 8f6c511598.
2021-07-13 18:14:35 -04:00
Daniel Mills 8f6c511598 Flush 2021-07-13 18:14:27 -04:00
CocoTheOwner 7fb04d51ae add command alts 2021-07-13 02:25:16 +02:00
Daniel Mills 64d5275554 V+ 2021-07-11 10:23:09 -04:00
Daniel Mills 76041a9f55 Fix decorator issues 2021-07-10 23:58:59 -04:00
Daniel Mills 502f7de040 Fix OOB exceptions for ceiling decorators 2021-07-10 23:37:29 -04:00
Daniel Mills a86512e807 Skip invalid height 2021-07-10 23:37:16 -04:00
Daniel Mills 2e19dbe05f Fixes + Nowhere 2021-07-10 23:23:39 -04:00
Dan 18d8f07242 Merge pull request #408 from StrangeOne101/1.17
Decorator Updates
2021-07-10 23:20:59 -04:00
StrangeOne101 fb0ff734d7 You didn't see anything... 2021-07-10 22:49:25 +12:00
StrangeOne101 13a5482f91 Added Top Threshold option to decorators
- Added topThreshold option to decorators. Allows stacked blocks to start using the top palette for x percent of the stack
2021-07-10 17:33:32 +12:00
StrangeOne101 4a5794ad5f Fixed weight not being used in decorator palettes 2021-07-10 14:26:33 +12:00
StrangeOne101 7652aca406 Decorator Updates and Fixes - Season 2
- Added SEA_FLOOR type to decorators which will only place bellow sea level/in water
- Implemented CEILING type to decorators, which will allow stacked blocks to place from the top down
- Fixed height variance not being implemented properly. The height of stacked blocks is now correct

Dev notes: This WILL require updates to the overworld pack as fixing some of the bugs here made some workarounds in the overworld pack kinda break
2021-07-10 03:34:18 +12:00
StrangeOne101 f1dfb1c952 Decor Updates
- Fixed decorators using the same RNG when picking from a pool of blocks as it used to place it. This caused it to only use pool entries above the placement chance threshold. (E.g. a flower pool with a 0.15 chance to place will only use the first 0.15 of the pool of flowers since the RNG is the same)
- Removed `zoom`, `verticalZoom` and `varianceZoom` properties from decorators. Zooms can be done inside the individual styles instead.
- WIP Tab Completion (Create command only rn)

Dev notes:
It's very important from now on that in decorators, the X and Z remain switched when getting noise so that the result of the noise is not exactly the same as the noise that choose if the decor should be placed or not
2021-07-10 03:34:18 +12:00
Daniel Mills b4f866be03 Fixes 2021-07-09 08:00:38 -04:00
Daniel Mills 4fed35d189 V+ 2021-07-08 11:18:57 -04:00
Daniel Mills c3cff6a911 Fixes 2021-07-08 05:20:20 -04:00
Daniel Mills 91f718f39d Cache tweaks 2021-07-08 04:32:39 -04:00
Dan e4ea01cfd2 Merge pull request #406 from CocoTheOwner/jigsawexit
Create a jigsaw exit command
2021-07-08 04:31:51 -04:00
CocoTheOwner dd7d5a46e8 Create a jigsaw exit command 2021-07-08 10:25:40 +02:00
Daniel Mills 3be4b08bb0 Test paper deadlock fix 2021-07-07 19:22:36 -04:00
Daniel Mills 2fde7b7879 V+ 2021-07-07 05:36:34 -04:00
Daniel Mills 60777e5714 Utils 2021-07-07 05:35:57 -04:00
Daniel Mills 9d7fcc4987 Drop NMS Binding for fastworlds 2021-07-07 05:35:38 -04:00
Daniel Mills 95ed1c3ac3 Profiler 2021-07-07 05:35:28 -04:00
Daniel Mills 7e285969a7 Ignore rotation issues 2021-07-07 03:22:22 -04:00
DanLT 083f1be766 Cleanup parallax manager 2021-07-06 06:43:34 -08:00
DanLT d39ed3c03f Support "async" spawning 2021-07-06 06:43:24 -08:00
DanLT a068bda34f File collecting
its not efficient
2021-07-06 06:43:01 -08:00
DanLT 559f37e5d2 Revert "Revert "Revert "Test carved objects"""
This reverts commit 6df6296cd1.
2021-07-06 02:31:54 -08:00
DanLT d50b7de668 Revert "Dont check caves"
This reverts commit 35c5191a4d.
2021-07-06 02:31:51 -08:00
DanLT 35c5191a4d Dont check caves 2021-07-06 02:21:31 -08:00
DanLT 6df6296cd1 Revert "Revert "Test carved objects""
This reverts commit b88a565344.
2021-07-06 02:20:52 -08:00
DanLT b88a565344 Revert "Test carved objects"
This reverts commit d98bc1ec63.
2021-07-06 02:20:15 -08:00
DanLT d98bc1ec63 Test carved objects 2021-07-06 02:04:39 -08:00
Dan 74886db10d Merge pull request #401 from StrangeOne101/1.17
Fixed Strongholds not generating in 1.17
2021-07-06 05:43:59 -04:00
StrangeOne101 48e4fd8088 Fixed Strongholds not generating in 1.17
- Fixed Strongholds not generating in 1.17
- Made 9 strongholds now generate by default

Dev note: Tile entities are not placing correctly in jigsaws when generating (manual placement is fine)
2021-07-06 20:28:56 +12:00
DanLT 54c7f896ad Dont optimize chunks in mca anymore (for now) 2021-07-06 00:18:32 -08:00
Daniel Mills ccd14e6505 f 2021-07-05 06:10:31 -04:00
Daniel Mills dc33534478 Psychotic builds 2021-07-05 06:02:37 -04:00
Daniel Mills 83d79e23d5 Focus mode is back! 2021-07-05 06:01:29 -04:00
Daniel Mills 151f99e343 Temp fix for crashes on rotation issues 2021-07-05 06:01:22 -04:00
Daniel Mills ccea63f1e2 V+ 2021-07-05 05:09:46 -04:00
Daniel Mills 1019419d85 Add beautify json command (bulk project) 2021-07-05 05:09:39 -04:00
Daniel Mills a234823d0a Allow json objects to retain order of loaded objects 2021-07-05 05:09:26 -04:00
Daniel Mills d2015845e8 Fixes and tweaks 2021-07-04 23:40:46 -04:00
Daniel Mills 1857cca081 Fix gradle versioning issue (build cache) 2021-07-04 22:31:15 -04:00
Daniel Mills 195bbf4652 Fix poss null 2021-07-04 22:26:00 -04:00
Daniel Mills af76d937e1 Or not 2021-07-04 22:22:42 -04:00
Daniel Mills 885780a92b Stop using paper rapid start worlds (deadlocking) 2021-07-04 22:15:58 -04:00
Daniel Mills 547bfe26d7 Fix rotation cmods (bukkit logic is causing issues in switches) 2021-07-04 22:15:38 -04:00
Dan bc87fdde1f Merge pull request #392 from CocoTheOwner/no-day-weather-studio
Update IrisProject.java
2021-07-04 21:55:14 -04:00
Dan 6fc8324337 Merge pull request #399 from StrangeOne101/1.17
Fixed Loot tables acting like a cucumber in the sun
2021-07-04 21:54:27 -04:00
StrangeOne101 5103d91db0 Fixed Loot tables acting like a cucumber in the sun
- Fixed loot chests containing the exact same loot
- Fixed chests having nothing if a roll fails
- Fixed rolls always being done in the same order
- Added method to BlockPosition to get a unique long from 3 integers (x, y z)
2021-07-05 04:24:13 +12:00
CocoTheOwner b67ab5ecd3 You got it 2021-07-04 10:03:41 +02:00
Dan 3aa085f17e Merge pull request #390 from CocoTheOwner/add-alt-cmd
Update CommandIrisObjectSave.java
2021-07-04 03:54:38 -04:00
Dan 1b9a78827a Merge pull request #398 from StrangeOne101/1.17
Revert stackoverflow, persistent entities in jigsaws
2021-07-04 03:52:55 -04:00
StrangeOne101 3299e0fa6a Re-implemented lost object placement heightmap 2021-07-04 16:32:04 +12:00
StrangeOne101 79e12c8dd8 Incremented Version 2021-07-04 14:01:29 +12:00
StrangeOne101 ced33114cc Jigsaw Enhancements
- Added keepEntity property for jigsaw connectors. When set to true, mobs spawned will not despawn
- Fixed jigsaw entities being spawned off-center
2021-07-04 14:01:01 +12:00
Daniel Mills 294324e31b Revert "JSON Tweaks "
This reverts commit 9ddf09e187.
2021-07-04 14:00:12 +12:00
StrangeOne101 1b27d652af Merge remote-tracking branch 'upstream/master' into 1.17 2021-07-04 13:57:52 +12:00
Daniel Mills e98209249f V+ 2021-07-03 01:57:32 -04:00
Daniel Mills 9ddf09e187 JSON Tweaks 2021-07-03 01:49:55 -04:00
Daniel Mills 73e975cfa1 BP Hash 2021-07-03 01:49:48 -04:00
Daniel Mills a942ea6ee2 My god gradle is slow 2021-07-03 01:42:52 -04:00
Daniel Mills 38ca7c030f Fix init compound update world 2021-07-03 01:21:50 -04:00
StrangeOne101 7d59edc8a5 Added Object & Jigsaw Loot Tables
- Added the ability for placed objects and jigsaws to have select loot tables
    - Includes the ability to filter loot tables based on block type/block state
    - Overrides loot tables from the biome/region, but if no loot tables are provided for an object, they will still be used
    - Uses weight based system for determining which table to pick (so it's guaranteed rather than by chance)
- Added WeightedRandom util class
- Fixed loot tables not being random based on the seed
- Fixed jigsaws breaking bedrock
- Fixed enchantments in loot tables not working for enchanted books
- Fixed mobs spawned in Jigsaws not being spawned in the center like they should be
2021-06-29 00:24:36 +12:00
CocoTheOwner 7d05450244 Update IrisProject.java 2021-06-27 13:58:59 +02:00
CocoTheOwner 8e5ba70706 typo 2021-06-27 02:33:19 +02:00
CocoTheOwner d43c40fc59 jigsaw shortcuts 2021-06-27 02:32:49 +02:00
CocoTheOwner 02ce707546 Update CommandIrisObjectSave.java 2021-06-27 02:29:07 +02:00
DanLT 4a11ed6dc4 Stop blinding people 2021-06-24 18:11:56 -08:00
DanLT 72d07fc3fb JFC paper chill it on the patches 2021-06-24 18:11:45 -08:00
DanLT 9b910b26a9 Support Objects in Regions 2021-06-24 08:32:13 -08:00
DanLT 4a9be7b4a5 Tweak binding size 2021-06-23 21:26:37 -08:00
DanLT 34958c654f Update compound worlds on the fly 2021-06-23 21:14:41 -08:00
DanLT bf91156182 Iris Create / Project Load/Create skipLoadSpawn 2021-06-23 21:14:29 -08:00
DanLT b774b6920d NMS 1.17 skip loadSpawn 2021-06-23 21:13:51 -08:00
DanLT 56f6143873 Pregenerator force override gui option 2021-06-23 21:13:41 -08:00
DanLT 7ba051c7ff Hotswapping of worlds 2021-06-23 21:13:27 -08:00
DanLT 63f5c240a4 Support engine targets to hotswap worlds 2021-06-23 21:13:17 -08:00
DanLT ba91e433c3 Fix jigsaw scaffold error (temp) 2021-06-23 21:13:08 -08:00
DanLT 2818b207db World creator height supports 2021-06-23 21:12:53 -08:00
DanLT 0527066a4c Fake world improvements 2021-06-23 21:12:45 -08:00
DanLT a48400535f tweaks 2021-06-23 20:09:33 -08:00
DanLT fa201d21e2 fixes 2021-06-23 07:05:05 -08:00
DanLT c9222ff6f6 Fix console spam 1.17+ 2021-06-22 13:45:37 -08:00
DanLT a45d311339 Better caching 2021-06-22 09:35:28 -08:00
DanLT b59278601c tc init 2021-06-22 09:26:00 -08:00
DanLT b48a913fbf Update new mapping classes for nms 1.17 2021-06-22 09:18:27 -08:00
DanLT a0ef779aee Biome IDs for 1.17 nms 2021-06-22 09:14:03 -08:00
DanLT 861ff636b1 NMS Bindings for 1.17 only 2021-06-22 09:09:19 -08:00
DanLT bbce4bdeb0 INMS Register new binding for 1.17 2021-06-22 09:09:06 -08:00
DanLT df0ceb4850 V+ 2021-06-22 09:08:53 -08:00
DanLT b1e45756dd Remove 1.16 NMS Bindings 2021-06-22 09:08:48 -08:00
DanLT 4b52878dc1 Update Gradlew 2021-06-22 09:03:42 -08:00
DanLT 62a4f18866 Fix gradle 2021-06-22 09:03:08 -08:00
DanLT b00faf3930 Merge branch 'pr/385' 2021-06-22 09:02:28 -08:00
StrangeOne101 d6ddb2b247 Fixes Season 2
- Fixed double sided connectors not working properly
- Fixed skulls not being able to be rotated when they are placed on an angle that isn't perfectly straight (north, south, east, west)
2021-06-22 09:00:43 -08:00
StrangeOne101 900510e7f2 Reverted accuracy changes to noise generator
- Also fixed some overlooked issues
2021-06-22 09:00:08 -08:00
StrangeOne101 7370af0084 Re-added /iris std generator
Re-added the studio generator command. Fixed it up a bit (stopped random jitters that occurred)
2021-06-22 09:00:08 -08:00
StrangeOne101 9644693de3 More fixes
- Fixed Jigsaws not placing TileStates
- Fixed NPE when banners, signs or skulls try to be rotated to be up or down
2021-06-22 09:00:08 -08:00
StrangeOne101 b6bc269505 Fixes
- Fixed NPE occuring when Jigsaw fails to find Object in pool. Now just produces a warning in the console like it should
- Fixed pointless copies of lists being created within PlannedStructure
- Fixed mobs spawning within other blocks and suffocating on spawn
- Fixed creating a jigsaw with a non existent object causing jigsaw commands to lock up (#377)
- Fixed editing a non existent jigsaw just not doing anything
2021-06-22 09:00:08 -08:00
DanLT 82161c10f8 Revert "Gradle Updates for deps"
This reverts commit f2dd96c3bf.
2021-06-22 09:00:08 -08:00
DanLT c939033031 Revert "Update Wrapper for g7.1 (to support j16)"
This reverts commit 6d32fe743b.
2021-06-22 08:59:57 -08:00
DanLT 8c8c040fb3 Update the c 2021-06-21 17:34:43 -08:00
DanLT 48a07e2b34 deps 2021-06-21 09:13:12 -08:00
DanLT 7bdfbb17b5 Bug with spigot itself, syncs the get() in blockdata (toBukkit cmod) 2021-06-21 07:13:17 -08:00
DanLT 492646edc3 Remove debugging messages 2021-06-21 07:12:47 -08:00
DanLT 975096b221 Remove smoothiemap usages 2021-06-21 06:54:29 -08:00
DanLT 0c4c790a65 Remove smoothiemaps 2021-06-21 06:53:53 -08:00
Dan 012539b5d3 Update README.md 2021-06-17 19:38:28 -08:00
Dan f4cd9f27e4 Merge pull request #375 from VolmitSoftware/mc17j16
1.17
2021-06-17 19:37:30 -08:00
DanLT 449c2322b8 Height warnings 2021-06-17 19:35:07 -08:00
DanLT 7efdcdc592 linked terrain chunk min height support 2021-06-17 19:25:42 -08:00
DanLT 356aa27f70 Replace GRASS_PATH with DIRT_PATH 2021-06-17 19:22:40 -08:00
DanLT a579c7882f Get min/max height for regenerate method from composite 2021-06-17 19:22:08 -08:00
DanLT 3077cf6bb5 Support min height 2021-06-17 19:21:53 -08:00
Dan 7c46ee50a4 Merge pull request #376 from VolmitSoftware/master
Give me fixes
2021-06-17 19:18:07 -08:00
Dan 1d37910bd4 Merge pull request #369 from CocoTheOwner/Improve-progess-indicator-pregen
Update ProjectManager.java
2021-06-17 19:15:52 -08:00
Dan 5555ff2ac1 Merge pull request #371 from CocoTheOwner/prevent-parallaxmanager-npe
Update EngineParallaxManager.java
2021-06-17 19:15:23 -08:00
Dan 2ad93d79f5 Merge pull request #374 from StrangeOne101/master
Object NBT Support Additions
2021-06-17 19:14:22 -08:00
DanLT 6d32fe743b Update Wrapper for g7.1 (to support j16) 2021-06-17 19:11:23 -08:00
DanLT f2dd96c3bf Gradle Updates for deps 2021-06-17 19:11:07 -08:00
StrangeOne101 9b4384d3e6 Object NBT Support Additions
- Added support for banner NBT to be saved to objects
- Fixed spawners not saving their spawn type to objects
- Removed pointless IDs from the TileEntity registry system
2021-06-17 17:59:06 +12:00
CocoTheOwner c1831e58f5 oops, removed again, without gradle 2021-06-12 12:40:56 +02:00
CocoTheOwner 991f241209 Revert "ok, remove debug"
This reverts commit b565cf4be1.
2021-06-12 12:40:27 +02:00
CocoTheOwner b565cf4be1 ok, remove debug 2021-06-12 12:40:12 +02:00
Daniel Mills 8a5e1cd4f1 V+ 2021-06-11 16:53:23 -04:00
Daniel Mills 4445121023 Prep for async prepare 2021-06-11 16:53:13 -04:00
Daniel Mills 1421869094 Fix NPE on Multiverse core link 2021-06-11 16:52:53 -04:00
Daniel Mills 24480ef13a Prepare spawn async support 2021-06-11 16:52:43 -04:00
Daniel Mills 73bd7991bb Support async creation 2021-06-11 16:52:30 -04:00
Daniel Mills 6e74761977 Fake world support names 2021-06-11 16:52:18 -04:00
Dan a7f7a226d6 Merge pull request #370 from CocoTheOwner/fix-pregen-progressbar
Fix pregen progressbar
2021-06-11 16:51:18 -04:00
CocoTheOwner 491cdc5fef Update EngineParallaxManager.java 2021-06-11 09:54:51 +02:00
CocoTheOwner 98fe47d085 Undo previous calculation change. Move elapsed to start after drawing task for more accuracy. 2021-06-11 09:53:10 +02:00
CocoTheOwner 2290627c5f Update Pregenerator.java 2021-06-11 09:42:04 +02:00
CocoTheOwner 656d436028 Update ProjectManager.java 2021-06-11 09:39:10 +02:00
Daniel Mills cff8e822f2 V+ 2021-06-09 08:57:47 -04:00
Dan 5dfd46f809 Merge pull request #365 from CocoTheOwner/fixCustomField
Undo a change that breaks when Biome.CUSTOM is not a field on your MC Distribution
2021-06-09 08:47:03 -04:00
CocoTheOwner 97a6395ddd Update DirectWorldWriter.java 2021-06-08 21:08:04 +02:00
CocoTheOwner 5226106ff0 Undo a change that breaks when Biome.CUSTOM is not a field on your MC distribution 2021-06-08 16:35:01 +02:00
Daniel Mills 5e838e3f10 G+ 2021-06-08 06:57:28 -04:00
Daniel Mills 574860f117 Fix coadloads 2021-06-06 01:48:26 -04:00
Daniel Mills c19857d463 Fix buildscript 2021-06-06 01:13:47 -04:00
Daniel Mills 6741d58bec Convert Iris to Gradle 2021-06-06 00:24:43 -04:00
Daniel Mills eb806dbca5 Drop json stuff 2021-06-06 00:24:02 -04:00
Dan 7d8aa683ff Merge pull request #363 from CocoTheOwner/pregen-patch
V+ & patch pregen bug
2021-06-05 16:36:27 -04:00
CocoTheOwner 3bceaa7a2f V+ & patch pregen bug 2021-06-05 22:33:07 +02:00
Daniel Mills bfa45b66ac Update repos 2021-06-03 10:12:07 -04:00
Dan e39b89859f Merge pull request #354 from avixk/master
Villager Despawning Fix
2021-05-27 20:00:38 -04:00
Dan 1f14a01994 Merge pull request #360 from Mohamad82Bz/master
Removed two console debug messages that left by accident
2021-05-27 19:59:32 -04:00
Dan 91310ce98c Merge pull request #361 from CocoTheOwner/patch-1
Update LICENSE.md
2021-05-27 19:59:08 -04:00
CocoTheOwner 94dcfbf197 Update LICENSE.md 2021-05-27 21:43:43 +02:00
Mohamad82Bz d2b4b8b279 Removed two console debug messages that left by accident 2021-05-27 01:59:06 +04:30
Dan aaa9495ceb Merge pull request #357 from Mohamad82Bz/master
Running EnginePlayer Async  | Fixed DustRevealer was working with normal glowstones
2021-05-25 12:54:40 -04:00
Dan a8b75c9b13 Merge pull request #349 from pazkaI/master
Pregen fix: exclude custom biome from id mapping
2021-05-25 12:52:59 -04:00
Mohamad82Bz f21685e81d Removed J.sr (runTask) as it's no longer needed 2021-05-25 21:16:15 +04:30
Mohamad82Bz e24a7f887a Using scheduleSyncDelayedTask for sync parts 2021-05-25 21:15:51 +04:30
Mohamad82Bz 54b5ab6d79 Fixed PotionEffect was adding asynchronously 2021-05-25 20:24:06 +04:30
Mohamad82Bz 361b2ed7c7 EnginePlayer is now running async 2021-05-25 11:43:52 +04:30
Mohamad82Bz cee6c7c999 Reworked and fixed isDust and isWand check #2 2021-05-23 22:04:41 +04:30
Mohamad82Bz 3e5efd4090 Reworked and fixed isDust and isWand check 2021-05-23 21:51:59 +04:30
DanLT 10b8ba1ec8 V+ 2021-05-17 15:04:31 -08:00
avixk be90380775 Added a bandaid to keep villagers from despawning 2021-05-16 14:15:14 -05:00
avixk 3b2e775698 Added a bandaid to keep villagers from despawning 2021-05-16 14:13:58 -05:00
Pascal 01ba90689f compile for java 8 2021-05-09 20:13:25 +02:00
Dan e53fa82c46 Merge pull request #350 from pazkaI/villager-fix
fix villager despawning issue
2021-05-09 09:58:58 -08:00
DanLT 48ccbfd860 135 2021-05-09 08:20:14 -08:00
DanLT 601d4e1f48 Set all entities to persistent closes #348 2021-05-09 08:08:13 -08:00
Pascal 7fce3bdd25 fix villager despawning 2021-05-08 14:05:41 +02:00
Pascal 4b1bccd4b5 exclude custom biome from id mapping 2021-05-07 15:54:54 +02:00
Andrew Baker 28e809f92f Add message if couldn't find specific branch
Took 5 minutes
2021-04-29 11:37:51 -07:00
Andrew Baker 866e0e3fa9 Add branch support to listings
Took 1 hour 51 minutes
2021-04-29 11:23:31 -07:00
739 changed files with 4701 additions and 95110 deletions
-34
View File
@@ -1,34 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: Bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots or Video Recordings**
If applicable, add screenshots or video recordings to help explain your problem.
**Server and Plugin Informations**
- Installed plugins:
- Iris Version:
- Server Platform and Version [eg: PaperSpigot 1.16.3 #240]:
- Operating System (if applicable):
- Server Logs:
**Additional context**
Add any other context about the problem here, server timings reports, Iris dump information, complete console log etc. Please do not make Pastebin dumps or screenshot expire.
-20
View File
@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: Enhancement, Addition
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
+7 -120
View File
@@ -1,125 +1,12 @@
# User-specific stuff
build/
.gradle/
.idea/
*.iml
*.ipr
*.iws
# IntelliJ
out/
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Package Files #
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
collection/
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
.flattened-pom.xml
# Common working directory
run/
.gradle
**/build/
!src/**/build/
# Ignore Gradle GUI config
gradle-app.setting
# Cache of project
.gradletasknamecache
# Custom folders
release/
src/main/java/com/volmit/iris/util/uniques/
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

-97
View File
@@ -1,97 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>SPIGOT</platformType>
<platformType>BUKKIT</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: io.timeandspace:smoothie-map:2.0.2" level="project" />
<orderEntry type="library" name="Maven: io.timeandspace:jpsg-core:1.4" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:2.11.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.guava:guava:21.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.16-R0.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.26" level="project" />
<orderEntry type="library" name="Maven: io.papermc:paperlib:1.0.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bukkit.craftbukkit:1.16.3:1.16.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bukkit.craftbukkit:1.16.4:1.16.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.bergerkiller.bukkit:BKCommonLib:1.16.4-v2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldedit:worldedit-bukkit:7.2.0-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldedit:worldedit-core:7.2.0-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldedit.worldedit-libs:core:7.2.0-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: de.schlichtherle:truezip:6.8.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-profile-default_2.13:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.scala-lang:scala-library:2.13.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-http:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-kernel-spec:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-annotations:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.findbugs:annotations:3.0.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-cio:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-io:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-services:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-logging:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpclient:4.5.10" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpcore:4.4.12" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.slf4j:jcl-over-slf4j:1.7.28" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-odf:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-comp-zipdriver:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-comp-zip:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bouncycastle:bcprov-jdk15on:1.63" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-tar:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-comp-tardriver:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.commons:commons-compress:1.19" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-tar-bzip2:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-tar-gzip:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-tar-xz:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.tukaani:xz:1.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-zip-raes:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-profile-base_2.13:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-access-swing:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-access:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-file:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-jar:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-zip:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-comp-ibm437:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-kernel-impl_2.13:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-console:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-default:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-swing:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-macosx:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-spec:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-shed:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.dev.jna:jna:4.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.mozilla:rhino-runtime:1.7.12" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.antlr:antlr4-runtime:4.7.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldedit.worldedit-libs:bukkit:7.2.0-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.logging.log4j:log4j-slf4j-impl:2.8.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.logging.log4j:log4j-api:2.8.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bstats:bstats-bukkit:1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: it.unimi.dsi:fastutil:8.2.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: io.lumine.xikage:MythicMobs:4.9.1" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.5" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.4.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
<orderEntry type="library" name="Maven: org.zeroturnaround:zt-zip:1.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.6.6" level="project" />
</component>
</module>
-35
View File
@@ -1,35 +0,0 @@
VOLMIT SOFTWARE PUBLIC LICENSE
Version 1.2, 13 March 2021
Copyright :copyright: 2021 Andrew Baker
TERMS AND CONDITIONS
0. Definitions
"License" refers to this file. An updated version is available at <https://github.com/VolmitSoftware/Licenses>. The version at <https://github.com/VolmitSoftware/Licenses> is always correct and up-to-date.
"Author" refers to the person Andrew Baker <andrew@andrewcbaker.net>.
"Repository" refers to the location at which the software protected under this License is stored.
"Content" refers to the files and folders inside of the Repository.
"Copyright" refers to the laws on intellectual property and the legal rights automatically granted to the Author during the creation of the Content.
"Modify" refers to editing the Content as well as creating programs or code which depends on the Content to run.
"Compile" refers to the act of building the Content into an executable file such as a JAR file.
1. You may freely copy, Modify, distribute, create derivative works, or distribute derivative works of the Content as long as you obey the unmodified License that is supplied with the Content.
2. You may not copy, Modify, or distribute the Content in such a way that it will, directly or indirectly, generate revenue without explicit, written permission from the Author.
3. You may not host publicly available download links to Compiled versions of the Content unless you are using less than 5% of the original Content in a Repository of your own.
4. For any conditions not outlined in the License, refer to your country or state laws for Copyright.
5. If you do not agree to any of the above conditions you must delete the Content in its entirety as well as all copies of the Content and derivative works of the Content that you have made.
END TERMS AND CONDITIONS
+83 -3
View File
@@ -1,3 +1,83 @@
# Iris
# [Support](https://discord.gg/3xxPTpT) **|** [Documentation](https://docs.volmit.com/iris/) **|** [Git](https://github.com/IrisDimensions)
![Iris Image](https://raw.githubusercontent.com/VolmitSoftware/Iris/master/IRIS.png)
# IrisBukkit
The master branch is for the latest version of minecraft.
# [Support](https://discord.gg/3xxPTpT) **|** [Documentation](https://docs.volmit.com/iris/) **
|** [Git](https://github.com/IrisDimensions)
# Building
Building IrisBukkit is fairly simple, though you will need to setup a few things if your system has never been used for
java
development.
Consider supporting our development by buying IrisBukkit on spigot! We work hard to make IrisBukkit the best it can be
for everyone.
### Command Line Builds
1. Install [Java JDK 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
2. Set the JDK installation path to `JAVA_HOME` as an environment variable.
* Windows
1. Start > Type `env` and press Enter
2. Advanced > Environment Variables
3. Under System Variables, click `New...`
4. Variable Name: `JAVA_HOME`
5. Variable Value: `C:\Program Files\Java\jdk-17.0.1` (verify this exists after installing java don't just copy
the example text)
* MacOS
1. Run `/usr/libexec/java_home -V` and look for Java 17
2. Run `sudo nano ~/.zshenv`
3. Add `export JAVA_HOME=$(/usr/libexec/java_home)` as a new line
4. Use `CTRL + X`, then Press `Y`, Then `ENTER`
5. Quit & Reopen Terminal and verify with `echo $JAVA_HOME`. It should print a directory
3. If this is your first time building IrisBukkit for MC 1.18+ run `gradlew setup` inside the root IrisBukkit project
folder.
Otherwise, skip this step. Grab a coffee, this may take up to 5 minutes depending on your cpu & internet connection.
4. Once the project has setup, run `gradlew iris`
5. The IrisBukkit jar will be placed in `IrisBukkit/build/IrisBukkit-XXX-XXX.jar` Enjoy! Consider supporting us by
buying it on spigot!
### IDE Builds (for development)
* Run `gradlew setup` any time you get dependency issues with craftbukkit
* Configure ITJ Gradle to use JDK 17 (in settings, search for gradle)
* Add a build line in the build.gradle for your own build task to directly compile IrisBukkit into your plugins folder
if you
prefer.
* Resync the project & run your newly created task (under the development folder in gradle tasks!)
# IrisBukkit Toolbelt
Everyone needs a tool-belt.
```java
package com.volmit.iris.core.tools;
// Get IrisDataManager from a world
IrisToolbelt.access(anyWorld).getCompound().getData();
// Get Default Engine from world
IrisToolbelt.access(anyWorld).getCompound().getDefaultEngine();
// Get the engine at the given height
IrisToolbelt.access(anyWorld).getCompound().getEngineForHeight(68);
// IS THIS THING ON?
boolean yes=IrisToolbelt.isIrisWorld(world);
// GTFO for worlds (moves players to any other world, just not this one)
IrisToolbelt.evacuate(world);
IrisAccess access=IrisToolbelt.createWorld() // If you like builders...
.name("myWorld") // The world name
.dimension("terrifyinghands")
.seed(69133742) // The world seed
.headless(true) // Headless make gen go fast
.pregen(PregenTask // Define a pregen job to run
.builder()
.center(new Position2(0,0)) // REGION coords (1 region = 32x32 chunks)
.radius(4) // Radius in REGIONS. Rad of 4 means a 9x9 Region map.
.build())
.create();
```
+41
View File
@@ -0,0 +1,41 @@
plugins {
id 'java'
id "io.freefair.lombok" version "6.3.0"
}
group 'com.volmit.iris'
version '1.0-SNAPSHOT'
jar {
manifest {
attributes('Contains-Sources': 'java,class')
}
}
allprojects {
apply plugin: 'java'
repositories {
maven { url "https://arcanearts.jfrog.io/artifactory/archives" }
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.24'
annotationProcessor 'org.projectlombok:lombok:1.18.24'
annotationProcessor 'systems.manifold:manifold-ext:2022.1.19'
implementation 'art.arcane:Source:22.9.3'
implementation 'art.arcane:Cram:22.9.3'
implementation 'art.arcane:Amulet:22.9.5'
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.1'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
testAnnotationProcessor 'systems.manifold:manifold-ext:2022.1.19'
}
}
dependencies {
}
+290
View File
@@ -0,0 +1,290 @@
plugins {
id 'java'
id "io.freefair.lombok" version "6.3.0"
id "com.github.johnrengelman.shadow" version "7.1.2"
id "de.undercouch.download" version "5.0.1"
}
group rootProject.group
version rootProject.version
def nmsVersion = "1.19"
def apiVersion = '1.19'
def spigotJarVersion = '1.19-R0.1-SNAPSHOT'
def name = getRootProject().getName() // Defined in settings.gradle
def main = 'com.volmit.iris.platform.bukkit.IrisBukkit'
// ADD YOURSELF AS A NEW LINE IF YOU WANT YOUR OWN BUILD TASK GENERATED
// ======================== WINDOWS =============================
registerCustomOutputTask('Cyberpwn', 'C://Users/cyberpwn/Documents/development/server/plugins')
registerCustomOutputTask('Psycho', 'D://Dan/MinecraftDevelopment/server/plugins')
registerCustomOutputTask('ArcaneArts', 'C://Users/arcane/Documents/development/server/plugins')
registerCustomOutputTask('Coco', 'D://Documents/MC/plugins')
registerCustomOutputTask('Strange', 'D://Servers/1.17 Test Server/plugins')
registerCustomOutputTask('Vatuu', 'D://Minecraft/Servers/1.19/plugins')
// ========================== UNIX ==============================
registerCustomOutputTaskUnix('CyberpwnLT', '/Users/danielmills/development/server/plugins')
registerCustomOutputTaskUnix('PsychoLT', '/Users/brianfopiano/Desktop/REMOTES/RemoteMinecraft/plugins')
// ==============================================================
/**
* Gradle is weird sometimes, we need to delete the plugin yml from the build folder to actually filter properly.
*/
file(jar.archiveFile.get().getAsFile().getParentFile().getParentFile().getParentFile().getAbsolutePath() + '/build/resources/main/plugin.yml').delete()
/**
* Expand properties into plugin yml
*/
processResources {
filesMatching('**/plugin.yml') {
expand(
'name': name.toString(),
'version': version.toString(),
'main': main.toString(),
'apiversion': apiVersion.toString()
)
}
}
/**
* We need parameter meta for the decree command system
*/
compileJava {
options.compilerArgs << '-parameters'
}
/**
* Configure Iris for shading
*/
shadowJar {
//minimize()
append("plugin.yml")
relocate 'com.dfsek.paralithic', 'com.volmit.iris.util.paralithic'
relocate 'art.arcane', 'com.volmit.iris.util.arcane'
relocate 'manifold', 'com.volmit.iris.util.manifold'
relocate 'art.arcane.source', 'com.volmit.iris.util.source'
relocate 'ChumBukkit.extensions', 'com.volmit.iris.util.extensions'
relocate 'IrisBukkit.extensions', 'com.volmit.iris.util.extensions'
relocate 'Fukkit.extensions', 'com.volmit.iris.util.extensions'
relocate 'Amulet.extensions', 'com.volmit.iris.util.extensions'
relocate 'Iris.extensions', 'com.volmit.iris.util.extensions'
dependencies {
include(dependency('art.arcane:'))
include(dependency('systems.manifold:'))
include(dependency("com.dfsek:Paralithic:"))
include(dependency(":engine"))
}
}
/**
* Faster dependency caches
*/
configurations.all {
resolutionStrategy.cacheChangingModulesFor 60, 'minutes'
resolutionStrategy.cacheDynamicVersionsFor 60, 'minutes'
}
configurations {
testImplementation.extendsFrom annotationProcessor
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
maven { url "https://arcanearts.jfrog.io/artifactory/archives" }
mavenCentral()
}
dependencies {
implementation 'org.spigotmc:spigot-api:1.19-R0.1-SNAPSHOT'
implementation 'art.arcane:Fukkit:22.9.2'
implementation project(":engine")
}
if (JavaVersion.current() != JavaVersion.VERSION_1_8 &&
sourceSets.main.allJava.files.any { it.name == "module-info.java" }) {
tasks.withType(JavaCompile) {
options.compilerArgs += ['-Xplugin:Manifold', '--module-path', it.classpath.asPath]
}
} else {
tasks.withType(JavaCompile) {
options.compilerArgs += ['-Xplugin:Manifold']
}
}
if (JavaVersion.current().toString() != "17") {
System.err.println()
System.err.println("=========================================================================================================")
System.err.println("You must run gradle on Java 17. You are using " + JavaVersion.current())
System.err.println()
System.err.println("=== For IDEs ===")
System.err.println("1. Configure the project for Java 17")
System.err.println("2. Configure the bundled gradle to use Java 17 in settings")
System.err.println()
System.err.println("=== For Command Line (gradlew) ===")
System.err.println("1. Install JDK 17 from https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html")
System.err.println("2. Set JAVA_HOME environment variable to the new jdk installation folder such as C:\\Program Files\\Java\\jdk-17.0.1")
System.err.println("3. Open a new command prompt window to get the new environment variables if need be.")
System.err.println("=========================================================================================================")
System.err.println()
System.exit(69);
}
System.out.println(buildDir);
def buildToolsJar = new File(buildDir, "buildtools/BuildTools.jar");
def specialSourceJar = new File(buildDir, "specialsource/SpecialSource.jar");
def buildToolsFolder = new File(buildDir, "buildtools");
def specialSourceFolder = new File(buildDir, "specialsource");
def buildToolsHint = new File(buildDir, "buildtools/craftbukkit-" + nmsVersion + ".jar");
def outputShadeJar = new File(buildDir, "libs/bukkit-" + version + "-all.jar");
def ssiJar = new File(buildDir, "specialsource/bukkit-" + version + "-all.jar");
def ssobfJar = new File(buildDir, "specialsource/Iris-" + version + "-rmo.jar");
def ssJar = new File(buildDir, "specialsource/Iris-" + version + "-rma.jar");
def homePath = System.properties['user.home']
def m2 = new File(homePath + "/.m2/repository")
def m2s = m2.getAbsolutePath();
// ======================== Building Mapped Jars =============================
task downloadBuildtools(type: Download) {
group "remapping"
src 'https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar'
dest buildToolsJar
onlyIf {
!buildToolsJar.exists()
}
}
task downloadSpecialSource(type: Download) {
group "remapping"
src 'https://repo.maven.apache.org/maven2/net/md-5/SpecialSource/1.10.0/SpecialSource-1.10.0-shaded.jar'
dest specialSourceJar
onlyIf {
!specialSourceJar.exists()
}
}
task executeBuildTools(dependsOn: downloadBuildtools, type: JavaExec)
{
group "remapping"
classpath = files(buildToolsJar)
workingDir = buildToolsFolder
args = [
"--rev",
nmsVersion,
"--compile",
"craftbukkit",
"--remap"
]
onlyIf {
!buildToolsHint.exists()
}
}
task copyBuildToSpecialSource(type: Copy)
{
group "remapping"
from outputShadeJar
into specialSourceFolder
dependsOn(downloadSpecialSource, shadowJar)
}
task specialSourceRemapObfuscate(type: JavaExec)
{
group "remapping"
dependsOn(copyBuildToSpecialSource, downloadSpecialSource, shadowJar)
workingDir = specialSourceFolder
classpath = files(specialSourceJar,
new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-mojang.jar"))
mainClass = "net.md_5.specialsource.SpecialSource"
args = [
"--live",
"-i",
ssiJar.getName(),
"-o",
ssobfJar.getName(),
"-m",
m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-mojang.txt",
"--reverse",
]
}
task specialSourceRemap(type: JavaExec)
{
group "remapping"
dependsOn(specialSourceRemapObfuscate)
workingDir = specialSourceFolder
classpath = files(specialSourceJar,
new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-obf.jar"))
mainClass = "net.md_5.specialsource.SpecialSource"
args = [
"--live",
"-i",
ssobfJar.getName(),
"-o",
ssJar.getName(),
"-m",
m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-spigot.csrg"
]
}
tasks.compileJava.dependsOn(executeBuildTools)
compileJava {
options.encoding = "UTF-8"
}
task setup()
{
group("iris")
dependsOn(clean, executeBuildTools)
}
task iris(type: Copy)
{
group "iris"
from ssJar
into buildDir
rename { String fileName ->
fileName.replace('Iris-' + version + '-rma.jar', "Iris-" + version + ".jar")
}
dependsOn(specialSourceRemap)
}
def registerCustomOutputTask(name, path) {
if (!System.properties['os.name'].toLowerCase().contains('windows')) {
return;
}
tasks.register('build' + name, Copy) {
group('development')
outputs.upToDateWhen { false }
dependsOn(iris)
from(new File(buildDir, "Iris-" + version + ".jar"))
into(file(path))
rename { String fileName ->
fileName.replace("Iris-" + version + ".jar", "Iris.jar")
}
}
}
def registerCustomOutputTaskUnix(name, path) {
if (System.properties['os.name'].toLowerCase().contains('windows')) {
return;
}
tasks.register('build' + name, Copy) {
group('development')
outputs.upToDateWhen { false }
dependsOn(iris)
from(new File(buildDir, "Iris-" + version + ".jar"))
into(file(path))
rename { String fileName ->
fileName.replace("Iris-" + version + ".jar", "Iris.jar")
}
}
}
@@ -0,0 +1,217 @@
package com.volmit.iris.platform.bukkit;
import art.arcane.amulet.io.IO;
import art.arcane.amulet.logging.LogListener;
import com.volmit.iris.engine.EngineConfiguration;
import com.volmit.iris.platform.IrisPlatform;
import com.volmit.iris.platform.PlatformBiome;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.platform.PlatformNamespaceKey;
import com.volmit.iris.platform.PlatformWorld;
import com.volmit.iris.platform.bukkit.wrapper.BukkitBiome;
import com.volmit.iris.platform.bukkit.wrapper.BukkitBlock;
import com.volmit.iris.platform.bukkit.wrapper.BukkitKey;
import com.volmit.iris.platform.bukkit.wrapper.BukkitWorld;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Warning;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.block.Biome;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.UUID;
import java.util.stream.Stream;
public class IrisBukkit extends JavaPlugin implements IrisPlatform, LogListener {
private static final String TAG = ChatColor.DARK_GRAY + "[" + ChatColor.GREEN + "Iris" + ChatColor.DARK_GREEN + "/";
private static final String TAG_STRIPPED = ChatColor.stripColor(TAG);
private static IrisBukkit instance;
private ConsoleCommandSender consoleSender;
public void onEnable() {
instance = this;
consoleSender = Bukkit.getConsoleSender();
LogListener.listener.set(this);
getServer().getScheduler().scheduleSyncDelayedTask(this, () -> {
World world = Bukkit.createWorld(new WorldCreator("iristests/" + UUID.randomUUID()).generator(new IrisBukkitChunkGenerator(this, EngineConfiguration.builder()
.timings(true).mutable(true)
.build())));
for(Player i : Bukkit.getOnlinePlayers())
{
i.teleport(world.getSpawnLocation());
}
}, 10);
}
public void onDisable() {
World w = null;
for(World i : Bukkit.getWorlds()) {
if(!i.getName().startsWith("iristest")) {
w = i;
break;
}
}
for(World i : Bukkit.getWorlds()) {
if(i.getName().startsWith("iristest"))
{
for(Player j : i.getPlayers())
{
j.teleport(w.getSpawnLocation());
}
if(i.getGenerator() instanceof Closeable c)
{
try {
c.close();
} catch(IOException e) {
throw new RuntimeException(e);
}
}
BukkitWorld.of(i).unloadChunks(false, true);
File folder = i.getWorldFolder();
Bukkit.unloadWorld(i, false);
IO.delete(folder);
}
}
}
public static IrisBukkit getInstance() {
return instance;
}
private void messageConsole(String color, String key, Object o) {
try {
consoleSender.sendMessage(TAG + key + ChatColor.DARK_GRAY + "]: " + color + o.toString());
}
catch(Throwable e) {
System.out.println(TAG_STRIPPED + key + "]: " + o.toString());
}
}
@Override
public void logError(String k, Object o) {
messageConsole(ChatColor.RED.toString(), k, o);
}
@Override
public void logInfo(String k, Object o) {
messageConsole(ChatColor.WHITE.toString(), k, o);
}
@Override
public void logWarning(String k, Object o) {
messageConsole(ChatColor.YELLOW.toString(), k, o);
}
@Override
public void logDebug(String k, Object o) {
messageConsole(ChatColor.GRAY.toString(), k, o);
}
@Override
public String getPlatformName() {
return "Bukkit";
}
@Override
public Stream<PlatformBlock> getBlocks() {
//This is because it's a method extension
//noinspection Convert2MethodRef
return Arrays.stream(Material.values())
.filter(i -> !i.isLegacy())
.filter(Material::isBlock)
.map(Material::createBlockData).map(i -> BukkitBlock.of(i));
}
@Override
public Stream<PlatformBiome> getBiomes() {
//This is because it's a method extension
//noinspection Convert2MethodRef
return Arrays.stream(Biome.values()).parallel().filter((i) -> i != Biome.CUSTOM).map(i -> BukkitBiome.of(i));
}
@Override
public boolean isWorldLoaded(String name) {
return Bukkit.getWorlds().keepWhere(i -> i.getName().equals(name)).isNotEmpty();
}
@Override
public PlatformWorld getWorld(String name) {
World w = Bukkit.getWorld(name);
if(w == null)
{
return null;
}
return BukkitWorld.of(w);
}
@Override
public PlatformBlock parseBlock(String raw) {
return BukkitBlock.of(Bukkit.createBlockData(raw));
}
@Override
public PlatformNamespaceKey key(String namespace, String key) {
return BukkitKey.of(namespace, key);
}
@Override
public File getStudioFolder(String dimension) {
File f = new File(getDataFolder(), "packs/" + dimension);
f.mkdirs();
return f;
}
@Override
public File getStudioFolder() {
File f = new File(getDataFolder(), "packs/");
f.mkdirs();
return f;
}
@Override
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
return new IrisBukkitChunkGenerator(this, EngineConfiguration.builder()
.threads(4)
.mutable(true)
.timings(true)
.build());
}
@Override
public void i(String s, Object o) {
logInfo(s, o);
}
@Override
public void f(String s, Object o) {
logError(s, o);
}
@Override
public void w(String s, Object o) {
logWarning(s, o);
}
@Override
public void d(String s, Object o) {
logDebug(s, o);
}
}
@@ -0,0 +1,147 @@
package com.volmit.iris.platform.bukkit;
import art.arcane.chrono.Average;
import art.arcane.chrono.PrecisionStopwatch;
import art.arcane.spatial.hunk.Hunk;
import com.volmit.iris.engine.EngineConfiguration;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.feature.FeatureSizedTarget;
import com.volmit.iris.engine.feature.FeatureTarget;
import com.volmit.iris.engine.pipeline.PipedHunkStack;
import com.volmit.iris.platform.IrisPlatform;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.platform.bukkit.util.StaticBiomeProvider;
import com.volmit.iris.platform.bukkit.wrapper.BukkitWorld;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.generator.BiomeProvider;
import org.bukkit.generator.ChunkGenerator;
import com.volmit.iris.platform.bukkit.util.ChunkDataHunkView;
import org.bukkit.generator.WorldInfo;
import java.io.Closeable;
import java.io.IOException;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.ReentrantLock;
public class IrisBukkitChunkGenerator extends ChunkGenerator implements Closeable {
private final IrisPlatform platform;
private final EngineConfiguration configuration;
private final AtomicReference<Engine> engine;
private final ReentrantLock engineLock;
private final AtomicInteger perSecond;
private final PrecisionStopwatch p = PrecisionStopwatch.start();
private final Average a = new Average(128);
private final StaticBiomeProvider staticBiomeProvider;
public IrisBukkitChunkGenerator(IrisPlatform platform, EngineConfiguration configuration) {
this.perSecond = new AtomicInteger(0);
this.platform = platform;
this.configuration = configuration;
this.staticBiomeProvider = new StaticBiomeProvider(Biome.PLAINS);
this.engine = new AtomicReference<>();
this.engineLock = new ReentrantLock();
}
@Override
public ChunkData generateChunkData(World world, Random random, int x, int z, BiomeGrid biome) {
PrecisionStopwatch pp = PrecisionStopwatch.start();
initEngine(world);
ChunkData data = Bukkit.createChunkData(world);
Hunk<PlatformBlock> chunk = new ChunkDataHunkView(data);
FeatureSizedTarget targetSize = FeatureSizedTarget.builder()
.width(chunk.getWidth())
.height(chunk.getHeight())
.depth(chunk.getDepth())
.offsetX(x << 4)
.offsetZ(z << 4)
.offsetY(0)
.build();
FeatureTarget<PlatformBlock> blockTarget = new FeatureTarget<>(chunk, targetSize);
PipedHunkStack stack = new PipedHunkStack();
stack.register(PlatformBlock.class, blockTarget);
engine.get().getPlumbing().generate(engine.get(), targetSize, stack);
perSecond.incrementAndGet();
a.put(pp.getMilliseconds());
if(p.getMilliseconds() > 1000)
{
p.reset();
p.begin();
System.out.println("PERSECOND: " + perSecond.getAndSet(0) + " AMS: " + ((int)Math.round(a.getAverage())) + "ms");
}
return data;
}
private void initEngine(World world) {
if(engine.get() == null)
{
engineLock.lock();
if(engine.get() == null)
{
try {
engine.set(new Engine(platform, BukkitWorld.of(world), configuration));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
engineLock.unlock();
}
}
@Override
public boolean canSpawn(World world, int x, int z) {
return false;
}
@Override
public BiomeProvider getDefaultBiomeProvider(WorldInfo worldInfo) {
return staticBiomeProvider;
}
@Override
public void close() throws IOException {
engine.get().close();
}
@Override
public boolean shouldGenerateNoise() {
return super.shouldGenerateNoise();
}
@Override
public boolean shouldGenerateSurface() {
return super.shouldGenerateSurface();
}
@Override
public boolean shouldGenerateBedrock() {
return super.shouldGenerateBedrock();
}
@Override
public boolean shouldGenerateCaves() {
return super.shouldGenerateCaves();
}
@Override
public boolean shouldGenerateDecorations() {
return super.shouldGenerateDecorations();
}
@Override
public boolean shouldGenerateMobs() {
return super.shouldGenerateMobs();
}
@Override
public boolean shouldGenerateStructures() {
return super.shouldGenerateStructures();
}
}
@@ -0,0 +1,53 @@
package com.volmit.iris.platform.bukkit.util;
import art.arcane.spatial.hunk.Hunk;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.platform.bukkit.wrapper.BukkitBlock;
import org.bukkit.generator.ChunkGenerator;
@SuppressWarnings("ClassCanBeRecord")
public class ChunkDataHunkView implements Hunk<PlatformBlock> {
private final ChunkGenerator.ChunkData chunk;
public ChunkDataHunkView(ChunkGenerator.ChunkData chunk) {
this.chunk = chunk;
}
@Override
public int getWidth() {
return 16;
}
@Override
public int getDepth() {
return 16;
}
@Override
public int getHeight() {
return chunk.getMaxHeight() - chunk.getMinHeight();
}
@Override
public synchronized void set(int x1, int y1, int z1, int x2, int y2, int z2, PlatformBlock t) {
if(t == null) {
return;
}
chunk.setRegion(x1, y1 + chunk.getMinHeight(), z1, x2, y2 + chunk.getMinHeight(), z2, ((BukkitBlock)t).getDelegate());
}
@Override
public synchronized void setRaw(int x, int y, int z, PlatformBlock t) {
if(t == null) {
return;
}
chunk.setBlock(x, y + chunk.getMinHeight(), z, ((BukkitBlock)t).getDelegate());
}
@Override
public PlatformBlock getRaw(int x, int y, int z) {
return BukkitBlock.of(chunk.getBlockData(x, y + chunk.getMinHeight(), z));
}
}
@@ -0,0 +1,27 @@
package com.volmit.iris.platform.bukkit.util;
import org.bukkit.block.Biome;
import org.bukkit.generator.BiomeProvider;
import org.bukkit.generator.WorldInfo;
import java.util.Arrays;
import java.util.List;
public class StaticBiomeProvider extends BiomeProvider {
private static final List<Biome> ALL_BIOMES = Arrays.stream(Biome.values()).without((i) -> i.equals(Biome.CUSTOM)).toList().unmodifiable();
private final Biome defaultBiome;
public StaticBiomeProvider(Biome defaultBiome) {
this.defaultBiome = defaultBiome;
}
@Override
public Biome getBiome(WorldInfo worldInfo, int x, int y, int z) {
return defaultBiome;
}
@Override
public List<Biome> getBiomes(WorldInfo worldInfo) {
return ALL_BIOMES;
}
}
@@ -0,0 +1,24 @@
package com.volmit.iris.platform.bukkit.wrapper;
import com.volmit.iris.platform.PlatformBiome;
import com.volmit.iris.platform.PlatformNamespaceKey;
import lombok.Data;
import org.bukkit.block.Biome;
@Data
public class BukkitBiome implements PlatformBiome {
private final Biome delegate;
private BukkitBiome(Biome delegate) {
this.delegate = delegate;
}
@Override
public PlatformNamespaceKey getKey() {
return BukkitKey.of(delegate.getKey());
}
public static BukkitBiome of(Biome biome) {
return new BukkitBiome(biome);
}
}
@@ -0,0 +1,71 @@
package com.volmit.iris.platform.bukkit.wrapper;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.platform.PlatformNamespaceKey;
import com.volmit.iris.platform.block.PlatformBlock;
import lombok.Data;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.Ageable;
import org.bukkit.block.data.BlockData;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@Data
public class BukkitBlock implements PlatformBlock {
private final BlockData delegate;
private final Map<String, String> properties;
private BukkitBlock(BlockData delegate, Map<String, String> properties) {
this.delegate = delegate;
this.properties = properties;
}
private BukkitBlock(BlockData delegate) {
this.delegate = delegate;
String s = delegate.getAsString(true);
if(s.contains("[")) {
Map<String, String> properties = new HashMap<>();
String[] props = new String[] {s.split("\\Q[\\E")[1].split("\\Q]\\E")[0]};
String[] p;
if(props[0].contains(",")) {
for(String i : props[0].split("\\Q,\\E")) {
p = i.split("\\Q=\\E");
properties.put(p[0], p[1]);
}
} else {
p = props[0].split("\\Q=\\E");
properties.put(p[0], p[1]);
}
this.properties = Collections.unmodifiableMap(properties);
} else {
this.properties = Map.of();
}
}
@Override
public Map<String, String> getProperties() {
return null;
}
@Override
public PlatformNamespaceKey getKey() {
return BukkitKey.of(delegate.getMaterial().getKey());
}
public static BukkitBlock of(BlockData blockData) {
return new BukkitBlock(blockData);
}
public static BukkitBlock of(Material material) {
return of(material.createBlockData());
}
public static BukkitBlock of(String raw) {
return of(Bukkit.createBlockData(raw));
}
}
@@ -0,0 +1,35 @@
package com.volmit.iris.platform.bukkit.wrapper;
import com.volmit.iris.platform.PlatformChunk;
import org.bukkit.Chunk;
public class BukkitChunk implements PlatformChunk {
private final Chunk delegate;
private BukkitChunk(Chunk delegate) {
this.delegate = delegate;
}
@Override
public int getX() {
return delegate.getX();
}
@Override
public int getZ() {
return delegate.getZ();
}
@Override
public void unload(boolean save, boolean force) {
if(force) {
delegate.getPluginChunkTickets().forEach(delegate::removePluginChunkTicket);
}
delegate.unload(save);
}
public static BukkitChunk of(Chunk chunk) {
return new BukkitChunk(chunk);
}
}
@@ -0,0 +1,45 @@
package com.volmit.iris.platform.bukkit.wrapper;
import com.volmit.iris.platform.PlatformNamespaceKey;
import lombok.Data;
import org.bukkit.NamespacedKey;
@Data
public class BukkitKey implements PlatformNamespaceKey {
private final NamespacedKey delegate;
private BukkitKey(NamespacedKey delegate) {
this.delegate = delegate;
}
@Override
public String getNamespace() {
return delegate.getNamespace();
}
@Override
public String getKey() {
return delegate.getKey();
}
public String toString() {
return delegate.toString();
}
public static BukkitKey of(String nsk) {
if(nsk.contains(":")) {
String[] f = nsk.split("\\Q:\\E");
return of(f[0], f[1]);
}
return of("minecraft", nsk);
}
public static BukkitKey of(String namespace, String key) {
return of(new NamespacedKey(namespace, key));
}
public static BukkitKey of(NamespacedKey key) {
return new BukkitKey(key);
}
}
@@ -0,0 +1,60 @@
package com.volmit.iris.platform.bukkit.wrapper;
import art.arcane.amulet.geometry.Vec;
import com.volmit.iris.platform.PlatformPlayer;
import com.volmit.iris.platform.PlatformWorld;
import org.bukkit.entity.Player;
import java.util.UUID;
public class BukkitPlayer implements PlatformPlayer {
private final Player delegate;
private BukkitPlayer(Player delegate) {
this.delegate = delegate;
}
@Override
public UUID getUUID() {
return delegate.getUniqueId();
}
@Override
public String getName() {
return delegate.getName();
}
@Override
public Vec getLocation() {
return delegate.getLocation().vec();
}
@Override
public PlatformWorld getWorld() {
return BukkitWorld.of(delegate.getWorld());
}
@Override
public boolean canUseIris() {
return delegate.isOp();
}
@Override
public void sendMessage(String message) {
delegate.sendMessage(message);
}
@Override
public void sendActionBar(String message) {
throw new UnsupportedOperationException();
}
@Override
public void sendTitleMessage(String title, String subtitle, int in, int stay, int out) {
throw new UnsupportedOperationException();
}
public static BukkitPlayer of(Player player) {
return new BukkitPlayer(player);
}
}
@@ -0,0 +1,91 @@
package com.volmit.iris.platform.bukkit.wrapper;
import com.volmit.iris.platform.PlatformBiome;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.platform.PlatformChunk;
import com.volmit.iris.platform.PlatformPlayer;
import com.volmit.iris.platform.PlatformWorld;
import com.volmit.iris.util.WorldHeight;
import lombok.Data;
import org.bukkit.World;
import java.io.File;
import java.util.Arrays;
import java.util.stream.Collectors;
@Data
public class BukkitWorld implements PlatformWorld {
private final World delegate;
private final WorldHeight worldHeight;
private BukkitWorld(World delegate) {
this.delegate = delegate;
this.worldHeight = new WorldHeight(delegate.getMinHeight(), delegate.getMaxHeight());
}
@Override
public WorldHeight getHeight() {
return worldHeight;
}
@Override
public String getName() {
return delegate.getName();
}
@Override
public File getFolder() {
return delegate.getWorldFolder();
}
@Override
public Iterable<PlatformPlayer> getPlayers() {
//noinspection Convert2MethodRef
return delegate.getPlayers().stream().map(i -> BukkitPlayer.of(i)).collect(Collectors.toList());
}
@Override
public Iterable<PlatformChunk> getLoadedChunks() {
//noinspection Convert2MethodRef
return Arrays.stream(delegate.getLoadedChunks()).map(i -> BukkitChunk.of(i)).collect(Collectors.toList());
}
@Override
public PlatformChunk getOrLoadChunk(int x, int z) {
return BukkitChunk.of(delegate.getChunkAt(x, z));
}
@Override
public PlatformBlock getBlock(int x, int y, int z) {
return BukkitBlock.of(delegate.getBlockAt(x, y, z).getBlockData());
}
@Override
public PlatformBiome getBiome(int x, int y, int z) {
return BukkitBiome.of(delegate.getBiome(x, y, z));
}
@Override
public long getSeed() {
return delegate.getSeed();
}
@Override
public boolean isChunkLoaded(int x, int z) {
return delegate.isChunkLoaded(x, z);
}
@Override
public void setBlock(int x, int y, int z, PlatformBlock block) {
delegate.setBlockData(x, y, z, ((BukkitBlock) block).getDelegate());
}
@Override
public void setBiome(int x, int y, int z, PlatformBiome biome) {
delegate.setBiome(x, y, z, ((BukkitBiome) biome).getDelegate());
}
public static BukkitWorld of(World world) {
return new BukkitWorld(world);
}
}
+8
View File
@@ -0,0 +1,8 @@
name: Iris
main: com.volmit.iris.platform.bukkit.IrisBukkit
version: 1.0.0
api-version: 1.19
libraries:
- org.apache-extras.beanshell:bsh:2.0b6
- com.google.code.gson:gson:2.8.9
- com.github.ben-manes.caffeine:caffeine:3.1.1
+34
View File
@@ -0,0 +1,34 @@
plugins {
id 'java'
id "io.freefair.lombok" version "6.3.0"
}
group rootProject.group
version rootProject.version
jar {
manifest {
attributes('Contains-Sources': 'java,class')
}
}
configurations {
testImplementation.extendsFrom annotationProcessor
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
if (JavaVersion.current() != JavaVersion.VERSION_1_8 &&
sourceSets.main.allJava.files.any { it.name == "module-info.java" }) {
tasks.withType(JavaCompile) {
options.compilerArgs += ['-Xplugin:Manifold', '--module-path', it.classpath.asPath]
}
} else {
tasks.withType(JavaCompile) {
options.compilerArgs += ['-Xplugin:Manifold']
}
}
@@ -0,0 +1,91 @@
package com.volmit.iris.engine;
import com.volmit.iris.engine.feature.features.FeatureError;
import com.volmit.iris.engine.feature.features.FeatureTerrain;
import com.volmit.iris.engine.pipeline.EnginePipeline;
import com.volmit.iris.engine.pipeline.EnginePlumbing;
import com.volmit.iris.engine.pipeline.PipelinePhase;
import com.volmit.iris.engine.pipeline.PipelineTask;
import com.volmit.iris.platform.IrisPlatform;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.platform.PlatformNamespaceKey;
import com.volmit.iris.platform.PlatformRegistry;
import com.volmit.iris.platform.PlatformWorld;
import lombok.Data;
import manifold.util.concurrent.ConcurrentWeakHashMap;
import java.io.Closeable;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.Map;
import java.util.Optional;
@Data
public class Engine implements Closeable {
private static final Map<Thread, WeakReference<Engine>> engineContext = new ConcurrentWeakHashMap<>();
private final IrisPlatform platform;
private final EngineRegistry registry;
private final EngineConfiguration configuration;
private final PlatformWorld world;
private final EngineBlockCache blockCache;
private final EngineExecutor executor;
private final EnginePlumbing plumbing;
private final EngineSeedManager seedManager;
private final EngineData data;
public Engine(IrisPlatform platform, PlatformWorld world, EngineConfiguration configuration) throws IOException {
this.configuration = configuration.validate();
this.platform = platform;
this.world = world;
i("Initializing Iris Engine for " + platform.getPlatformName() + " in " + world.getName()
+ " with " + configuration.getThreads() + " priority " + configuration.getThreadPriority()
+ " threads in " + (configuration.isMutable() ? "edit mode" : "production mode"));
this.blockCache = new EngineBlockCache(this);
this.registry = EngineRegistry.builder()
.blockRegistry(new PlatformRegistry<>("Block", platform.getBlocks()))
.biomeRegistry(new PlatformRegistry<>("Biome", platform.getBiomes()))
.build();
this.data = new EngineData(this).loadData(
getConfiguration().isMutable()
? getPlatform().getStudioFolder()
: getWorld().getIrisDataFolder(), getConfiguration().getDimension());
this.seedManager = getSeedManager();
this.executor = new EngineExecutor(this);
this.plumbing = EnginePlumbing.builder().engine(this)
.errorPipeline(EnginePipeline.builder()
.phase(PipelinePhase.builder()
.task(new PipelineTask<>(new FeatureError(this), PlatformBlock.class))
.build())
.build())
.pipeline(EnginePipeline.builder()
.phase(PipelinePhase.builder()
.task(new PipelineTask<>(new FeatureTerrain(this), PlatformBlock.class))
.build())
.build())
.build();
}
public PlatformBlock block(String block) {
return blockCache.get(block);
}
public PlatformNamespaceKey key(String nsk) {
return getPlatform().key(nsk);
}
public static Optional<Engine> context() {
WeakReference<Engine> reference = engineContext.get(Thread.currentThread());
if(reference != null)
{
return Optional.ofNullable(reference.get());
}
return Optional.empty();
}
@Override
public void close() throws IOException {
getExecutor().close();
}
}
@@ -0,0 +1,23 @@
package com.volmit.iris.engine;
import com.volmit.iris.platform.block.PlatformBlock;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class EngineBlockCache
{
private final Engine engine;
private final Map<String, PlatformBlock> cache;
public EngineBlockCache(Engine engine)
{
this.engine = engine;
this.cache = new ConcurrentHashMap<>();
}
public PlatformBlock get(String t)
{
return cache.computeIfAbsent(t, (key) -> engine.getPlatform().parseBlock(key));
}
}
@@ -0,0 +1,61 @@
package com.volmit.iris.engine;
import com.volmit.iris.platform.PlatformNamespaceKey;
import com.volmit.iris.platform.PlatformWorld;
import com.volmit.iris.util.NSK;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EngineConfiguration {
@Builder.Default
private int chunkSize = 16;
@Builder.Default
private boolean mutable = false;
@Builder.Default
private boolean timings = false;
@Builder.Default
private int threads = Runtime.getRuntime().availableProcessors();
@Builder.Default
private int threadPriority = 3;
@Builder.Default
private PlatformNamespaceKey dimension = new NSK("overworld", "main");
public EngineConfiguration validate() throws IOException {
validateChunkSize();
return this;
}
private void validateChunkSize() throws IOException {
if(Arrays.binarySearch(allowedChunkSizes, chunkSize) < 0) {
throw new IOException("Invalid Chunk Size: " + chunkSize + " Allowed Chunk Sizes are: " + Arrays.toString(allowedChunkSizes));
}
}
private static final int[] allowedChunkSizes;
static {
allowedChunkSizes = new int[16];
for(int i = 0; i < allowedChunkSizes.length; i++) {
allowedChunkSizes[i] = (int) Math.pow(2, i+1);
}
Arrays.sort(allowedChunkSizes); // for binary sorting
}
}
@@ -0,0 +1,276 @@
package com.volmit.iris.engine;
import art.arcane.amulet.concurrent.J;
import art.arcane.amulet.io.IO;
import art.arcane.amulet.io.JarLoader;
import art.arcane.cram.PakFile;
import art.arcane.cram.PakKey;
import art.arcane.cram.PakResource;
import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import com.volmit.iris.engine.dimension.IrisDimension;
import com.volmit.iris.engine.dimension.IrisGenerator;
import com.volmit.iris.engine.dimension.IrisRange;
import com.volmit.iris.engine.resolver.*;
import com.volmit.iris.platform.PlatformNamespaceKey;
import com.volmit.iris.util.NSK;
import lombok.Data;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
@Data
public class EngineData implements TypeAdapterFactory {
private final Engine engine;
private final Gson gson;
private List<Resolvable> resolvableTypes;
private final Map<Class<?>, Resolver<?>> resolvers;
public EngineData(Engine engine) throws IOException {
this.engine = engine;
this.resolvers = new HashMap<>();
this.resolvableTypes = J.attempt(() -> new JarLoader(getClass()).all().parallel()
.filter(Objects::nonNull)
.filter(i -> !i.isInterface() && !i.isEnum())
.filter(i -> i.isAssignableFrom(Resolvable.class) || Resolvable.class.isAssignableFrom(i))
.filter(i -> !i.equals(EngineResolvable.class))
.map(i -> J.attempt(() -> (Resolvable) i.getDeclaredConstructor().newInstance(), null)).toList(), List.of());
GsonBuilder gsonBuilder = new GsonBuilder().registerTypeAdapterFactory(this);
resolvableTypes.forEach(i -> i.apply(gsonBuilder));
this.gson = gsonBuilder.setPrettyPrinting().create();
i("Registered " + resolvableTypes.size() + " Mutators with " + resolvableTypes.stream().filter(i -> i instanceof TypeAdapterFactory).count() + " Type Adapter Factories");
}
public void generateSchemas(File folder) throws IOException {
folder.mkdirs();
for(Resolvable i : resolvableTypes) {
IO.writeAll(new File(folder, i.entity().getId() + ".json"), i.generateSchema(this).toString());
}
}
public <T extends Resolvable> T resolve(Class<T> clazz, PlatformNamespaceKey key)
{
Resolver<?> r = resolvers.get(clazz);
if(r == null) {
return null;
}
return (T) r.resolve(key);
}
public void registerResolver(Class<?> type, Resolver<?> resolver, String namespace)
{
if(resolvers.containsKey(type)) {
Resolver r = resolvers.get(type);
resolvers.put(type, r.and(namespace, r));
}
else {
resolvers.put(type, resolver);
}
}
public EngineData loadData(File folder, PlatformNamespaceKey dimension) throws IOException {
i("Loading Data in " + folder.getPath());
for(File i : folder.listFiles()) {
if(i.isDirectory() && i.getName().equals(dimension.getNamespace())) {
loadDataNamespaced(i, i.getName());
if(getEngine().getConfiguration().isMutable()) {
generateSchemas(new File(i, ".iris/schema"));
i("Generated " + new File(i, ".iris/schema").listFiles().length + " Schemas");
generateCodeWorkspace(new File(i, dimension.getNamespace() + ".code-workspace"));
i("Generated Code Workspace");
}
}
else if(i.getName().equals(dimension.getNamespace() + ".dat")) {
loadPakFile(folder, i.getName().split("\\Q.\\E")[0]);
}
}
IrisDimension dim = resolve(IrisDimension.class, dimension);
if(dim == null) {
f("Failed to load dimension " + dimension);
}
return this;
}
private void generateCodeWorkspace(File file) throws IOException {
file.getParentFile().mkdirs();
JsonObject ws = new JsonObject();
JsonArray folders = new JsonArray();
JsonObject folder = new JsonObject();
folder.add("path", new JsonPrimitive("."));
folders.add(folder);
ws.add("folders", folders);
JsonObject settings = new JsonObject();
settings.add("workbench.colorTheme", new JsonPrimitive("Monokai"));
settings.add("workbench.preferredDarkColorTheme", new JsonPrimitive("Solarized Dark"));
settings.add("workbench.tips.enabled", new JsonPrimitive(false));
settings.add("workbench.tree.indent", new JsonPrimitive(24));
settings.add("files.autoSave", new JsonPrimitive("onFocusChange"));
JsonObject jc = new JsonObject();
jc.add("editor.autoIndent", new JsonPrimitive("brackets"));
jc.add("editor.acceptSuggestionOnEnter", new JsonPrimitive("smart"));
jc.add("editor.cursorSmoothCaretAnimation", new JsonPrimitive(true));
jc.add("editor.dragAndDrop", new JsonPrimitive(false));
jc.add("files.trimTrailingWhitespace", new JsonPrimitive(true));
jc.add("diffEditor.ignoreTrimWhitespace", new JsonPrimitive(true));
jc.add("files.trimFinalNewlines", new JsonPrimitive(true));
jc.add("editor.suggest.showKeywords", new JsonPrimitive(false));
jc.add("editor.suggest.showSnippets", new JsonPrimitive(false));
jc.add("editor.suggest.showWords", new JsonPrimitive(false));
JsonObject st = new JsonObject();
st.add("strings", new JsonPrimitive(true));
jc.add("editor.quickSuggestions", st);
jc.add("editor.suggest.insertMode", new JsonPrimitive("replace"));
settings.add("[json]", jc);
settings.add("json.maxItemsComputed", new JsonPrimitive(30000));
JsonArray schemas = new JsonArray();
for(Resolvable i : resolvableTypes) {
String id = i.entity().getId();
JsonObject o = new JsonObject();
JsonArray fileMatch = new JsonArray();
fileMatch.add("/" + id + "/*.json");
o.add("fileMatch", fileMatch);
o.add("url", new JsonPrimitive(".iris/schema/" + id + ".json"));
schemas.add(o);
}
settings.add("json.schemas", schemas);
ws.add("settings", settings);
IO.writeAll(file, ws.toString());
}
public void loadDataNamespaced(File folder, String namespace) throws IOException {
i("Loading Namespace " + namespace + " in " + folder.getPath());
for(Resolvable i : resolvableTypes)
{
new File(folder, i.entity().getId()).mkdirs();
IO.writeAll(new File(new File(folder, i.entity().getId()), "example.json"), gson.toJson(i));
}
for(File i : folder.listFiles())
{
if(i.isDirectory()) {
loadDataFolder(i, namespace);
}
}
}
public void loadDataFolder(File folder, String namespace) {
for(Resolvable i : resolvableTypes)
{
if(!folder.getName().equals(i.entity().getId())) {
continue;
}
registerResolver(i.getClass(), Resolver.hotDirectoryJson(namespace, i.getClass(), folder, gson), namespace);
}
}
public void loadPakFile(File folder, String name) throws IOException {
PakFile pakFile = new PakFile(folder, name);
Map<PakKey, PakResource> resources = pakFile.getAllResources();
for(Resolvable i : resolvableTypes)
{
Class<? extends Resolvable> resolvableClass = i.getClass();
CompositeResolver<?> composite = Resolver.frozen(resources, (p) -> p.getClass().equals(resolvableClass));
for(String j : composite.getResolvers().keySet())
{
Resolver<? extends Resolvable> resolver = composite.getResolvers().get(i);
this.registerResolver(i.getClass(), resolver, j);
}
}
}
public void printResolvers() {
resolvers.forEach((k, i) -> i.print(k.simpleName(), this));
}
private <T> void writeSafeJson(TypeAdapter<T> delegate, JsonWriter out, T value) {
try {
delegate.write(out, value);
} catch (IOException e) {
try {
delegate.write(out, null);
} catch(IOException ex) {
throw new RuntimeException(ex);
}
}
}
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
for(Resolvable i : resolvableTypes) {
if(type.getRawType().equals(i.getClass())) {
return new TypeAdapter<>() {
public void write(JsonWriter out, T value) {writeSafeJson(delegate, out, value);}
@SuppressWarnings("unchecked")
public T read(JsonReader in) throws IOException {
JsonToken token = in.peek();
if(token == JsonToken.STRING) {
Resolver<?> resolver = getResolvers().get(i.getClass());
String key = in.nextString();
if(resolver == null) {
w("Unable to find a resolver for " + i.getClass() + " received " + key);
return null;
}
T t = (T) resolver.resolve(new NSK(key));
if(t == null) {
w("Unable to resolve " + i.getClass() + " " + key);
}
return t;
}
return delegate.read(in);
}
};
}
}
return null;
}
public Resolvable getInstance(Class<?> type) {
for(Resolvable i : resolvableTypes) {
if(i.getClass().equals(type)) {
return i;
}
}
return null;
}
public List<PlatformNamespaceKey> getAllKeys(Class<?> type) {
List<PlatformNamespaceKey> keys = new ArrayList<>();
Resolver<?> resolver = resolvers.get(type);
if(resolver != null) {
resolver.addAllKeys(keys);
}
return keys;
}
}
@@ -0,0 +1,51 @@
package com.volmit.iris.engine;
import art.arcane.amulet.concurrent.J;
import lombok.Data;
import java.io.Closeable;
import java.io.IOException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinWorkerThread;
@Data
public class EngineExecutor implements ForkJoinPool.ForkJoinWorkerThreadFactory, Thread.UncaughtExceptionHandler, Closeable {
private final Engine engine;
private final ForkJoinPool forks;
public EngineExecutor(Engine engine)
{
this.engine = engine;
forks = new ForkJoinPool(engine.getConfiguration().getThreads(), this, this, true);
i("Started Pool with " + engine.getConfiguration().getThreads() + " priority " + engine.getConfiguration().getThreadPriority() + " threads.");
}
@Override
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
}
@Override
public ForkJoinWorkerThread newThread(ForkJoinPool pool) {
final ForkJoinWorkerThread worker = ForkJoinPool.defaultForkJoinWorkerThreadFactory.newThread(pool);
worker.setName("Iris " + engine.getWorld().getName() + " Executor " + worker.getPoolIndex());
return worker;
}
@Override
public void close() throws IOException {
i("Shutting down generator pool");
forks.shutdownNow().forEach((i) -> {
try
{
i.run();
}
catch(Throwable e)
{
e.printStackTrace();
}
});
i("Generator pool shutdown");
}
}
@@ -0,0 +1,14 @@
package com.volmit.iris.engine;
import com.volmit.iris.platform.PlatformBiome;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.platform.PlatformRegistry;
import lombok.Builder;
import lombok.Data;
@Builder
@Data
public class EngineRegistry {
private final PlatformRegistry<PlatformBlock> blockRegistry;
private final PlatformRegistry<PlatformBiome> biomeRegistry;
}
@@ -0,0 +1,16 @@
package com.volmit.iris.engine;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
public class EngineSeedManager {
private final Engine engine;
private final long worldSeed;
public EngineSeedManager(Engine engine)
{
this.engine = engine;
this.worldSeed = engine.getWorld().getSeed();
}
}
@@ -0,0 +1,25 @@
package com.volmit.iris.engine.dimension;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Map;
@Data
@NoArgsConstructor
@Builder
@AllArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "author")
public class IrisAuthor extends EngineResolvable
{
private String name;
private Map<String, String> social;
}
@@ -0,0 +1,33 @@
package com.volmit.iris.engine.dimension;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import com.volmit.iris.platform.PlatformBiome;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "biome")
public class IrisBiome extends EngineResolvable {
private String name;
@Builder.Default
private IrisSurface surface = new IrisSurface();
@Builder.Default
private IrisRange height = IrisRange.flat(1);
public PlatformBiome toPlatformBiome()
{
return null;
}
}
@@ -0,0 +1,74 @@
package com.volmit.iris.engine.dimension;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.IOException;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "chance", jsonTypes = {JsonToken.STRING, JsonToken.BEGIN_OBJECT})
public class IrisChance extends EngineResolvable implements TypeAdapterFactory {
@Builder.Default
@TokenConstructor(JsonToken.NUMBER)
private double threshold = 0.5;
@TokenConstructor(JsonToken.STRING)
@Builder.Default
private IrisGenerator generator = IrisGenerator.WHITE;
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
if(!type.getRawType().equals(getClass())) {
return null;
}
return new TypeAdapter<>() {
public void write(JsonWriter out, T value) {writeSafeJson(delegate, out, value);}
@SuppressWarnings("unchecked")
public T read(JsonReader in) throws IOException {
JsonToken token = in.peek();
if(token == JsonToken.STRING) {
return (T) IrisChance.half(gson.fromJson(in.nextString(), IrisGenerator.class));
}
return delegate.read(in);
}
};
}
public static IrisChance half(IrisGenerator generator) {
return IrisChance.builder()
.threshold(0.5)
.generator(generator)
.build();
}
public static IrisChance white(double chance) {
return IrisChance.builder()
.threshold(chance)
.generator(IrisGenerator.WHITE)
.build();
}
}
@@ -0,0 +1,25 @@
package com.volmit.iris.engine.dimension;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "decorator")
public class IrisDecorator extends EngineResolvable {
@Builder.Default
private IrisPalette palette = IrisPalette.flat("minecraft:grass");
@Builder.Default
private IrisChance chance = IrisChance.white(0.25);
}
@@ -0,0 +1,30 @@
package com.volmit.iris.engine.dimension;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.Singular;
import lombok.experimental.Accessors;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@Builder
@AllArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "dimension")
public class IrisDimension extends EngineResolvable {
@Builder.Default
private IrisDimensionMeta meta = new IrisDimensionMeta();
@Singular
@Type(IrisBiome.class)
private List<IrisBiome> biomes = new ArrayList<>();
}
@@ -0,0 +1,31 @@
package com.volmit.iris.engine.dimension;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.Singular;
import lombok.experimental.Accessors;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@Builder
@AllArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "dimension-meta")
public class IrisDimensionMeta extends EngineResolvable
{
private String name;
private String description;
private String version;
@Singular
@Resolvable.Type(IrisAuthor.class)
private List<IrisAuthor> authors = new ArrayList<>();
}
@@ -0,0 +1,76 @@
package com.volmit.iris.engine.dimension;
import art.arcane.source.NoisePlane;
import art.arcane.source.script.NoisePlaneConstructor;
import art.arcane.source.util.NoisePreset;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.script.ScriptException;
import java.io.IOException;
@Data
@NoArgsConstructor
@Builder
@AllArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "generator", jsonTypes = {JsonToken.STRING, JsonToken.BEGIN_OBJECT})
public class IrisGenerator extends EngineResolvable implements TypeAdapterFactory {
public static final IrisGenerator NATURAL = IrisGenerator.builder().java("art.arcane.source.api.util.NoisePreset.NATURAL.create(seed)").build();
public static final IrisGenerator WHITE = IrisGenerator.builder().java("Noise.white(seed)").build();
public static final IrisGenerator FLAT = IrisGenerator.builder().java("Noise.flat(seed)").build();
@Builder.Default
private String java = "art.arcane.source.api.util.NoisePreset.NATURAL.create(seed)";
@Builder.Default
private IrisSeed seed = new IrisSeed();
public NoisePlane getNoisePlane(long seed)
{
try {
return NoisePlaneConstructor.execute(seed, java);
} catch(ScriptException e) {
e.printStackTrace();
return NoisePreset.NATURAL.create(seed);
}
}
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
if(!type.getRawType().equals(getClass())) {
return null;
}
return new TypeAdapter<>() {
public void write(JsonWriter out, T value) {writeSafeJson(delegate, out, value);}
@SuppressWarnings("unchecked")
public T read(JsonReader in) throws IOException {
JsonToken token = in.peek();
if(token == JsonToken.STRING) {
return (T) IrisGenerator.builder().java(in.nextString()).build();
}
return delegate.read(in);
}
};
}
}
@@ -0,0 +1,74 @@
package com.volmit.iris.engine.dimension;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import com.volmit.iris.platform.block.PlatformBlock;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.Singular;
import lombok.experimental.Accessors;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "palette", jsonTypes = {JsonToken.STRING, JsonToken.BEGIN_OBJECT})
public class IrisPalette extends EngineResolvable implements TypeAdapterFactory {
@Singular
@PlatformType(PlatformBlock.class)
@Type(String.class)
@TokenConstructor(JsonToken.STRING)
private List<String> blocks = new ArrayList<>();
@Builder.Default
private IrisGenerator generator = IrisGenerator.WHITE;
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
if(!type.getRawType().equals(getClass())) {
return null;
}
return new TypeAdapter<>() {
public void write(JsonWriter out, T value) {
writeSafeJson(delegate, out, value);
}
@SuppressWarnings("unchecked")
public T read(JsonReader in) throws IOException {
JsonToken token = in.peek();
if(token == JsonToken.STRING) {
return (T) IrisPalette.flat(in.nextString());
}
return delegate.read(in);
}
};
}
public static IrisPalette flat(String block){
return IrisPalette.builder()
.block(block)
.generator(IrisGenerator.FLAT)
.build();
}
}
@@ -0,0 +1,71 @@
package com.volmit.iris.engine.dimension;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.IOException;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "range", jsonTypes = {JsonToken.NUMBER, JsonToken.BEGIN_OBJECT})
public class IrisRange extends EngineResolvable implements TypeAdapterFactory {
@Builder.Default
@TokenConstructor(JsonToken.NUMBER)
private double max = 1;
@Builder.Default
private double min = 1;
@Builder.Default
private IrisGenerator generator = IrisGenerator.NATURAL;
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
if(!type.getRawType().equals(getClass())) {
return null;
}
return new TypeAdapter<>() {
public void write(JsonWriter out, T value) {writeSafeJson(delegate, out, value);}
@SuppressWarnings("unchecked")
public T read(JsonReader in) throws IOException {
JsonToken token = in.peek();
if(token == JsonToken.NUMBER) {
double d = in.nextDouble();
return (T) IrisRange.builder().min(d).max(d).generator(IrisGenerator.FLAT).build();
}
return delegate.read(in);
}
};
}
public static IrisRange flat(double v) {
return IrisRange.builder()
.max(v)
.min(v)
.generator(IrisGenerator.FLAT)
.build();
}
}
@@ -0,0 +1,87 @@
package com.volmit.iris.engine.dimension;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.IOException;
@Data
@NoArgsConstructor
@Builder
@AllArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "seed", jsonTypes = {JsonToken.NUMBER, JsonToken.STRING, JsonToken.BEGIN_OBJECT})
public class IrisSeed extends EngineResolvable implements TypeAdapterFactory {
@Builder.Default
private IrisSeedSetMode mode = IrisSeedSetMode.LOCAL_OFFSET;
@Builder.Default
@TokenConstructor(JsonToken.NUMBER)
private long offset = 0;
@TokenConstructor(JsonToken.STRING)
private String hashOffset;
public long getOffset() {
if(hashOffset != null && hashOffset.isNotEmpty()) {
return hashOffset.hashCode() + offset;
}
return offset;
}
public double getSeed(Engine engine, long localSeed) {
return switch(mode)
{
case WORLD -> engine.getSeedManager().getWorldSeed();
case LOCAL -> localSeed;
case LOCAL_OFFSET -> localSeed + getOffset();
case RAW -> getOffset();
case WORLD_OFFSET -> engine.getSeedManager().getWorldSeed() + getOffset();
case RANDOM -> (Math.random() * Long.MAX_VALUE) + (Math.random() * Long.MAX_VALUE);
};
}
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
if(!type.getRawType().equals(getClass())) {
return null;
}
return new TypeAdapter<>() {
public void write(JsonWriter out, T value) {writeSafeJson(delegate, out, value);}
@SuppressWarnings("unchecked")
public T read(JsonReader in) throws IOException {
JsonToken token = in.peek();
if(token == JsonToken.STRING) {
return (T) IrisSeed.builder().hashOffset(in.nextString()).build();
}
if(token == JsonToken.NUMBER) {
return (T) IrisSeed.builder().offset(Double.doubleToLongBits(in.nextDouble())).build();
}
return delegate.read(in);
}
};
}
}
@@ -0,0 +1,11 @@
package com.volmit.iris.engine.dimension;
public enum IrisSeedSetMode
{
WORLD,
RAW,
WORLD_OFFSET,
LOCAL,
LOCAL_OFFSET,
RANDOM
}
@@ -0,0 +1,31 @@
package com.volmit.iris.engine.dimension;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.Singular;
import lombok.experimental.Accessors;
import java.util.ArrayList;
import java.util.List;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "surface")
public class IrisSurface extends EngineResolvable {
@Singular
@Type(IrisSurfaceLayer.class)
private List<IrisSurfaceLayer> layers = new ArrayList<>();
@Singular
@Type(IrisDecorator.class)
private List<IrisDecorator> decorators = new ArrayList<>();
}
@@ -0,0 +1,25 @@
package com.volmit.iris.engine.dimension;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.engine.resolver.Resolvable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)
@Accessors(fluent = true, chain = true)
@Resolvable.Entity(id = "surface-layer")
public class IrisSurfaceLayer extends EngineResolvable {
@Builder.Default
private IrisPalette palette = IrisPalette.flat("minecraft:stone");
@Builder.Default
private IrisRange thickness = IrisRange.flat(1);
}
@@ -0,0 +1,35 @@
package com.volmit.iris.engine.feature;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.platform.PlatformNamespaced;
import lombok.Data;
@Data
public abstract class Feature<T extends PlatformNamespaced, S extends FeatureState> {
private final String name;
private final Engine engine;
private boolean optimize;
private boolean heightAgnostic;
public Feature(String name, Engine engine)
{
this.engine = engine;
this.name = name;
this.optimize = true;
this.heightAgnostic = true;
}
public FeatureTask<T, S> task(FeatureSizedTarget target, FeatureTarget<T> origin, FeatureStorage storage, int verticalExecutionSize, int horizontalExecutionSize, FeatureTaskTiming timings)
{
return new FeatureTask<>(engine, this, storage, target, origin, verticalExecutionSize, horizontalExecutionSize, heightAgnostic, timings);
}
public FeatureTask<T, S> task(FeatureSizedTarget target, FeatureTarget<T> origin, FeatureStorage storage, int horizontalExecutionSize, FeatureTaskTiming timings)
{
return new FeatureTask<>(engine, this, storage, target, origin, Integer.MAX_VALUE, horizontalExecutionSize, heightAgnostic, timings);
}
public abstract S prepare(Engine engine, FeatureSizedTarget target, FeatureStorage storage);
public abstract void generate(Engine engine, S state, FeatureTarget<T> target, FeatureStorage storage);
}
@@ -0,0 +1,159 @@
package com.volmit.iris.engine.feature;
import art.arcane.amulet.range.IntegerRange;
import art.arcane.spatial.hunk.storage.ArrayHunk;
import art.arcane.spatial.hunk.view.HunkView;
import art.arcane.spatial.util.Consume;
import com.volmit.iris.platform.PlatformNamespaced;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.stream.Stream;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class FeatureSizedTarget {
@Builder.Default
private final int width = 16;
@Builder.Default
private final int height = 0;
@Builder.Default
private final int depth = 16;
@Builder.Default
private final int offsetX = 0;
@Builder.Default
private final int offsetY = 0;
@Builder.Default
private final int offsetZ = 0;
public <T extends PlatformNamespaced> FeatureTarget<T> hunked()
{
return new FeatureTarget<>(new ArrayHunk<>(width, height, depth), this);
}
public <T extends PlatformNamespaced> FeatureTarget<T> hunked(FeatureTarget<T> origin)
{
return new FeatureTarget<>(new HunkView<>(origin.getHunk(), width, height, depth, offsetX - origin.getOffsetX(), offsetY - origin.getOffsetY(), offsetZ - origin.getOffsetZ()), this);
}
Stream<FeatureSizedTarget> splitX() {
if(width <= 1) {
return Stream.of(this);
}
int wo2 = width/2;
return Stream.of(FeatureSizedTarget.builder()
.width(wo2).height(height).depth(depth)
.offsetX(offsetX).offsetY(offsetY).offsetZ(offsetZ).build(),
FeatureSizedTarget.builder()
.width(width - wo2).height(height).depth(depth)
.offsetX(offsetX + wo2).offsetY(offsetY).offsetZ(offsetZ).build());
}
Stream<FeatureSizedTarget> splitY() {
if(height <= 1) {
return Stream.of(this);
}
int ho2 = height / 2;
return Stream.of(FeatureSizedTarget.builder()
.width(width).height(ho2).depth(depth)
.offsetX(offsetX).offsetY(offsetY).offsetZ(offsetZ).build(),
FeatureSizedTarget.builder()
.width(width).height(height - ho2).depth(depth)
.offsetX(offsetX).offsetY(offsetY + ho2).offsetZ(offsetZ).build());
}
Stream<FeatureSizedTarget> splitZ() {
if(depth <= 1) {
return Stream.of(this);
}
int do2 = depth / 2;
return Stream.of(FeatureSizedTarget.builder()
.width(width).height(height).depth(do2)
.offsetX(offsetX).offsetY(offsetY).offsetZ(offsetZ).build(),
FeatureSizedTarget.builder()
.width(width).height(height).depth(depth - do2)
.offsetX(offsetX).offsetY(offsetY).offsetZ(offsetZ + do2).build());
}
public int getAbsoluteMaxX()
{
return getOffsetX() + getWidth() - 1;
}
public int getAbsoluteMaxY()
{
return getOffsetY() + getHeight() - 1;
}
public int getAbsoluteMaxZ()
{
return getOffsetZ() + getDepth() - 1;
}
public IntegerRange yCap(int max) {
return new IntegerRange(y().getLeftEndpoint(), Math.min(y().getRightEndpoint(), max));
}
public void forYCap(Consume.One<Integer> consumer, int max) {
for(int y : yCap(max)) {
consumer.accept(y);
}
}
public void forXZ(Consume.Two<Integer, Integer> consumer) {
for(int x : x()) {
for(int z : z()) {
consumer.accept(x, z);
}
}
}
public IntegerRange x()
{
return new IntegerRange(getOffsetX(), getAbsoluteMaxX());
}
public IntegerRange y()
{
return new IntegerRange(getOffsetY(), getAbsoluteMaxY());
}
public IntegerRange z()
{
return new IntegerRange(getOffsetZ(), getAbsoluteMaxZ());
}
public IntegerRange localX()
{
return new IntegerRange(0, getWidth() - 1);
}
public IntegerRange localY()
{
return new IntegerRange(0, getHeight() - 1);
}
public IntegerRange localZ()
{
return new IntegerRange(0, getDepth() - 1);
}
public static FeatureSizedTarget mergedSize(Stream<FeatureSizedTarget> targets, boolean x, boolean y, boolean z) {
List<FeatureSizedTarget> t = targets.toList();
return FeatureSizedTarget.builder()
.width(x ? t.stream().mapToInt(FeatureSizedTarget::getWidth).sum() : t[0].getWidth())
.height(y ? t.stream().mapToInt(FeatureSizedTarget::getHeight).sum() : t[0].getHeight())
.depth(z ? t.stream().mapToInt(FeatureSizedTarget::getDepth).sum() : t[0].getDepth())
.offsetX(x ? t.stream().mapToInt(FeatureSizedTarget::getOffsetX).min().orElse(0) : t[0].getOffsetX())
.offsetY(y ? t.stream().mapToInt(FeatureSizedTarget::getOffsetY).min().orElse(0) : t[0].getOffsetY())
.offsetZ(z ? t.stream().mapToInt(FeatureSizedTarget::getOffsetZ).min().orElse(0) : t[0].getOffsetZ())
.build();
}
}
@@ -0,0 +1,5 @@
package com.volmit.iris.engine.feature;
public interface FeatureState {
}
@@ -0,0 +1,22 @@
package com.volmit.iris.engine.feature;
import com.volmit.iris.engine.dimension.IrisBiome;
import com.volmit.iris.util.NoiseCache;
import com.volmit.iris.util.ShortNoiseCache;
import lombok.Data;
@Data
public class FeatureStorage {
private ShortNoiseCache height;
private NoiseCache<IrisBiome> biome;
private final int w;
private final int h;
public FeatureStorage(int w, int h)
{
this.w = w;
this.h = h;
this.height = new ShortNoiseCache(w, h);
this.biome = new NoiseCache<>(w, h);
}
}
@@ -0,0 +1,38 @@
package com.volmit.iris.engine.feature;
import art.arcane.spatial.hunk.Hunk;
import art.arcane.spatial.hunk.view.HunkView;
import com.volmit.iris.platform.PlatformNamespaced;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
import java.util.stream.Stream;
@Data
@EqualsAndHashCode(callSuper = true)
public class FeatureTarget<T extends PlatformNamespaced> extends FeatureSizedTarget {
private final Hunk<T> hunk;
public FeatureTarget(Hunk<T> hunk, int offsetX, int offsetY, int offsetZ)
{
super(hunk.getWidth(), hunk.getHeight(), hunk.getDepth(), offsetX, offsetY, offsetZ);
this.hunk = hunk;
}
public FeatureTarget(Hunk<T> hunk, FeatureSizedTarget target)
{
this(hunk, target.getOffsetX(), target.getOffsetY(), target.getOffsetZ());
}
public static <V extends PlatformNamespaced> FeatureTarget<V> mergedTarget(Stream<FeatureTarget<V>> targets, FeatureTarget<V> origin, boolean x, boolean y, boolean z)
{
List<FeatureTarget<V>> t = targets.toList();
FeatureSizedTarget mergedSize = FeatureSizedTarget.mergedSize(t.stream().map(i -> i), x, y, z);
Hunk<V> hunk = new HunkView<>(origin.getHunk(), mergedSize.getWidth(), mergedSize.getHeight(), mergedSize.getDepth(),
mergedSize.getOffsetX() - origin.getOffsetX(),
mergedSize.getOffsetY() - origin.getOffsetY(),
mergedSize.getOffsetZ() - origin.getOffsetZ());
return new FeatureTarget<>(hunk, mergedSize);
}
}
@@ -0,0 +1,78 @@
package com.volmit.iris.engine.feature;
import art.arcane.chrono.PrecisionStopwatch;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.platform.PlatformNamespaced;
import lombok.AllArgsConstructor;
import lombok.Builder;
import java.util.concurrent.Callable;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;
/**
* Continuously splits up a hunk of work in all 3 dimensions until the job size is within the
* specified limits. This allows a single hunk to be split until the ideal amount of tasks can run in parallel.
* @param <T> The namespaced object type
* @param <S> The feature state type
*/
@Builder
@AllArgsConstructor
public class FeatureTask<T extends PlatformNamespaced, S extends FeatureState> extends RecursiveTask<FeatureTarget<T>> implements Callable<FeatureTarget<T>> {
private final Engine engine;
private final Feature<T, S> feature;
private final FeatureStorage storage;
private final FeatureSizedTarget size;
private final FeatureTarget<T> origin;
private final int verticalPrepareSize;
private final int horizontalPrepareSize;
private final boolean heightAgnostic;
private final FeatureTaskTiming timings;
@Override
protected FeatureTarget<T> compute() {
FeatureTarget<T> result;
PrecisionStopwatch p = null;
if(timings != null) {
p = PrecisionStopwatch.start();
}
if(!heightAgnostic && size.getHeight() > verticalPrepareSize * 2) {
result = FeatureTarget.mergedTarget(size.splitY()
.map(i -> engine.getExecutor().getForks().submit((ForkJoinTask<FeatureTarget<T>>) with(i)))
.map(ForkJoinTask::join), origin, false, true, false);
}
else if(size.getWidth() > horizontalPrepareSize * 2) {
result = FeatureTarget.mergedTarget(size.splitX().map(i -> engine.getExecutor().getForks().submit((ForkJoinTask<FeatureTarget<T>>) with(i)))
.map(ForkJoinTask::join), origin, true, false, false);
}
else if(size.getDepth() > horizontalPrepareSize * 2) {
result = FeatureTarget.mergedTarget(size.splitZ().map(i -> engine.getExecutor().getForks().submit((ForkJoinTask<FeatureTarget<T>>) with(i)))
.map(ForkJoinTask::join), origin, false, false, true);
}
else {
IrisPreparedFeature<T, S> preparedFeature = new IrisPreparedFeature<>(engine, feature, size, feature.prepare(engine, size, storage));
result = preparedFeature.generate(origin, storage);
}
if(timings != null) {
timings.onCompleted(p.getMilliseconds());
}
return result;
}
private FeatureTask<T, S> with(FeatureSizedTarget size)
{
return new FeatureTask<>(engine, feature, storage, size, origin, verticalPrepareSize, horizontalPrepareSize, heightAgnostic, null);
}
@Override
public FeatureTarget<T> call() throws Exception {
return compute();
}
}
@@ -0,0 +1,6 @@
package com.volmit.iris.engine.feature;
@FunctionalInterface
public interface FeatureTaskTiming {
void onCompleted(double ms);
}
@@ -0,0 +1,21 @@
package com.volmit.iris.engine.feature;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.platform.PlatformNamespaced;
import lombok.Builder;
import lombok.Data;
@Builder
@Data
public class IrisPreparedFeature<T extends PlatformNamespaced, S extends FeatureState> {
private final Engine engine;
private final Feature<T, S> feature;
private final FeatureSizedTarget size;
private final S state;
public FeatureTarget<T> generate(FeatureTarget<T> origin, FeatureStorage storage) {
FeatureTarget<T> target = size.hunked(origin);
feature.generate(engine, state, target, storage);
return target;
}
}
@@ -0,0 +1,12 @@
package com.volmit.iris.engine.feature;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.feature.FeatureStorage;
import com.volmit.iris.engine.feature.FeatureTarget;
import com.volmit.iris.engine.feature.features.FeatureTerrain;
import com.volmit.iris.engine.resolver.EngineResolvable;
import com.volmit.iris.platform.PlatformNamespaced;
public interface SyntheticFeature<T extends PlatformNamespaced, V extends EngineResolvable, S extends FeatureState> {
void generate(Engine engine, V component, FeatureTarget<T> target, S state);
}
@@ -0,0 +1,38 @@
package com.volmit.iris.engine.feature.features;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.feature.Feature;
import com.volmit.iris.engine.feature.FeatureSizedTarget;
import com.volmit.iris.engine.feature.FeatureState;
import com.volmit.iris.engine.feature.FeatureStorage;
import com.volmit.iris.engine.feature.FeatureTarget;
import com.volmit.iris.platform.block.PlatformBlock;
import lombok.AllArgsConstructor;
import lombok.Data;
public class FeatureError extends Feature<PlatformBlock, FeatureError.State> {
private static final State DEFAULT_STATE = new State();
private final PlatformBlock ERROR_BLOCK;
public FeatureError(Engine engine) {
super("error", engine);
setOptimize(false);
ERROR_BLOCK = engine.block("red_sandstone");
}
@Override
public State prepare(Engine engine, FeatureSizedTarget target, FeatureStorage storage) {
return DEFAULT_STATE;
}
@Override
public void generate(Engine engine, State state, FeatureTarget<PlatformBlock> target, FeatureStorage storage) {
target.forXZ((x, z) -> target.forYCap((y -> target.getHunk().set(x, y, z, ERROR_BLOCK)), 1));
}
@Data
@AllArgsConstructor
public static class State implements FeatureState {
}
}
@@ -0,0 +1,44 @@
package com.volmit.iris.engine.feature.features;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.dimension.IrisBiome;
import com.volmit.iris.engine.feature.*;
import com.volmit.iris.platform.PlatformBiome;
import com.volmit.iris.util.NoiseCache;
import lombok.AllArgsConstructor;
import lombok.Data;
public class FeatureOriginBiome extends Feature<PlatformBiome, FeatureOriginBiome.State> {
public FeatureOriginBiome(Engine engine) {
super("biome-origin", engine);
}
@Override
public State prepare(Engine engine, FeatureSizedTarget target, FeatureStorage storage) {
final NoiseCache<IrisBiome> noise = storage.getBiome();
for(int x : target.x()) {
for(int z : target.z()) {
noise.set(x & storage.getW() - 1, z & storage.getH() - 1, null);
}
}
return new State(noise);
}
@Override
public void generate(Engine engine, State state, FeatureTarget<PlatformBiome> target, FeatureStorage storage) {
for(int x : target.x()) {
for(int z : target.z()) {
IrisBiome b = state.getBiomes().get(x, z);
target.getHunk().set(x, 0, z, b.toPlatformBiome());
}
}
}
@Data
@AllArgsConstructor
public static class State implements FeatureState {
private final NoiseCache<IrisBiome> biomes;
}
}
@@ -0,0 +1,73 @@
package com.volmit.iris.engine.feature.features;
import art.arcane.source.NoisePlane;
import art.arcane.source.interpolator.CubicInterpolator;
import art.arcane.source.interpolator.Interpolator;
import art.arcane.source.interpolator.LinearInterpolator;
import art.arcane.source.interpolator.StarcastInterpolator;
import art.arcane.source.noise.provider.MirroredCacheProvider;
import art.arcane.source.util.NoisePreset;
import art.arcane.spatial.hunk.Hunk;
import art.arcane.spatial.hunk.storage.ArrayHunk;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.feature.*;
import com.volmit.iris.platform.block.PlatformBlock;
import lombok.AllArgsConstructor;
import lombok.Data;
public class FeatureTerrain extends Feature<PlatformBlock, FeatureTerrain.State> {
private final PlatformBlock stone;
private final NoisePlane generator;
private final NoisePlane generator2;
public FeatureTerrain(Engine engine) {
super("terrain", engine);
setOptimize(true);
stone = engine.block("stone");
this.generator = NoisePreset.NATURAL.create(1234);
this.generator2 = NoisePreset.NATURAL.create(6664).fit(0, 1).scale(0.1);
}
@Override
public State prepare(Engine engine, FeatureSizedTarget target, FeatureStorage storage) {
Hunk<Double> snc = new ArrayHunk<>(target.getWidth(), target.getHeight(), target.getDepth());
short n;
int fdx,fdz;
for(int x : target.x()) {
fdx = Math.floorMod(x, target.getWidth());
for(int z : target.z()) {
fdz = Math.floorMod(z, target.getDepth());
n = (short) generator.noise(x, z);
for(int y = 0; y < n; y++) {
if(generator2.noise(x,y,z) > 0.5) {
snc.set(fdx, y, fdz, 1D);
}
}
}
}
return new State(snc);
}
@Override
public void generate(Engine engine, State state, FeatureTarget<PlatformBlock> target, FeatureStorage storage) {
int y;
for(int x : target.localX()) {
for(int z : target.localZ()) {
for(int i = 0; i < target.getHeight(); i++) {
Double v = state.getNoise().get(x, i, z);
v = v == null ? 0f : v;
if(v >= 0.5) {
target.getHunk().set(x,i, z, stone);
}
}
}
}
}
@Data
@AllArgsConstructor
public static class State implements FeatureState {
private final Hunk<Double> noise;
}
}
@@ -0,0 +1,17 @@
package com.volmit.iris.engine.feature.features.synthetic;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.dimension.IrisBiome;
import com.volmit.iris.engine.feature.FeatureStorage;
import com.volmit.iris.engine.feature.FeatureTarget;
import com.volmit.iris.engine.feature.SyntheticFeature;
import com.volmit.iris.engine.feature.features.FeatureTerrain;
import com.volmit.iris.platform.block.PlatformBlock;
public class SyntheticBiomeTerrain implements SyntheticFeature<PlatformBlock, IrisBiome, FeatureTerrain.State>
{
@Override
public void generate(Engine engine, IrisBiome component, FeatureTarget<PlatformBlock> target, FeatureTerrain.State state) {
}
}
@@ -0,0 +1,4 @@
package com.volmit.iris.engine.network;
public class Network {
}
@@ -0,0 +1,45 @@
package com.volmit.iris.engine.network.server;
import com.volmit.iris.engine.Engine;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class EngineServer extends Thread {
private final Engine engine;
private final ServerSocket server;
private final Map<UUID, EngineServerConnection> connections;
public EngineServer(Engine engine, int bindPort) throws IOException {
this.engine = engine;
this.connections = new HashMap<>();
this.server = new ServerSocket(bindPort);
this.server.setPerformancePreferences(0, 0, 1);
this.server.setSoTimeout(5000);
}
public void run() {
while(!interrupted()) {
try {
Socket socket = server.accept();
EngineServerConnection connection = new EngineServerConnection(this, socket);
connections.put(connection.getConnectionId(), connection);
}
catch(SocketTimeoutException e) {
continue;
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
}
public void close() throws IOException {
this.interrupt();
server.close();
}
}
@@ -0,0 +1,19 @@
package com.volmit.iris.engine.network.server;
import lombok.Getter;
import java.net.Socket;
import java.util.UUID;
@Getter
public class EngineServerConnection extends Thread {
private final EngineServer server;
private final Socket socket;
private final UUID connectionId;
public EngineServerConnection(EngineServer server, Socket socket) {
this.server = server;
this.socket = socket;
this.connectionId = UUID.randomUUID();
}
}
@@ -0,0 +1,63 @@
package com.volmit.iris.engine.optimizer;
import art.arcane.amulet.range.IntegerRange;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
public class HunkSlizeConfiguration {
private final int verticalSlice;
private final int horizontalSlize;
public String toString()
{
return "H" + horizontalSlize + "" + ((verticalSlice < 8192) ? ("V" + verticalSlice) : "");
}
public static List<HunkSlizeConfiguration> generateConfigurations(IntegerRange vertical, IntegerRange horizontal)
{
List<HunkSlizeConfiguration> configurations = new ArrayList<>();
for(int i : slice(vertical))
{
for(int j : slice(horizontal))
{
configurations.add(new HunkSlizeConfiguration(i, j));
}
}
return configurations;
}
public static List<HunkSlizeConfiguration> generateConfigurations(int vertical, IntegerRange horizontal)
{
List<HunkSlizeConfiguration> configurations = new ArrayList<>();
for(int j : slice(horizontal))
{
configurations.add(new HunkSlizeConfiguration(vertical, j));
}
return configurations;
}
private static List<Integer> slice(IntegerRange range)
{
List<Integer> v = new ArrayList<>();
v.add(range.getRightEndpoint());
v.add(range.getLeftEndpoint());
int i = (int) (range.getRightEndpoint() / 1.25);
while(i > range.getLeftEndpoint() && i >= 1)
{
v.add(i);
i /= 1.25;
}
return v.withoutDuplicates();
}
}
@@ -0,0 +1,38 @@
package com.volmit.iris.engine.optimizer;
import art.arcane.chrono.Average;
import art.arcane.spatial.hunk.storage.AtomicDoubleHunk;
import lombok.Data;
import java.util.concurrent.atomic.AtomicInteger;
@Data
public class IrisOptimizationAttempt<T> {
private double value;
private final AtomicInteger runs;
private final int testRuns;
private final T parameters;
public IrisOptimizationAttempt(T parameters, int testRuns)
{
this.parameters = parameters;
this.testRuns = testRuns;
this.value = 0;
this.runs = new AtomicInteger(0);
}
public double getAverageTime()
{
return value;
}
public boolean isComplete()
{
return runs.get() >= testRuns;
}
public void report(double ms) {
value += ms;
runs.incrementAndGet();
}
}
@@ -0,0 +1,88 @@
package com.volmit.iris.engine.optimizer;
import art.arcane.amulet.format.Form;
import art.arcane.chrono.Average;
import lombok.Builder;
import lombok.Data;
import lombok.Singular;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Data
public class IrisOptimizer<T> {
private final String optimizedFeatureName;
private final int testRuns;
private int dummyRuns;
private final List<T> options;
private final Map<T, Double> results;
private final Map<T, IrisOptimizationAttempt<T>> attempts = new ConcurrentHashMap<>();
private T defaultOption;
private final double chanceToTest;
private double bestTime;
public IrisOptimizer(int testRuns, List<T> options, T defaultOption, double chanceToTest, String optimizedFeatureName) {
this.bestTime = Double.MAX_VALUE;
this.dummyRuns = 1024;
this.testRuns = testRuns;
this.results = new HashMap<>();
this.options = options;
this.optimizedFeatureName = optimizedFeatureName;
this.defaultOption = defaultOption;
this.chanceToTest = chanceToTest;
for(T i : options) {
attempts.put(i, new IrisOptimizationAttempt<>(i, testRuns));
}
}
public String toString() {
return "optimizer";
}
public synchronized void report(T parameters, double ms)
{
if(dummyRuns-- > 0)
{
return;
}
IrisOptimizationAttempt<T> attempt = attempts.get(parameters);
if(attempt != null) {
attempt.report(ms);
if(attempt.isComplete()) {
results.put(parameters, attempt.getAverageTime());
attempts.remove(parameters);
double result = attempt.getAverageTime();
if(result < bestTime) {
bestTime = result;
defaultOption = attempt.getParameters();
}
d("Attempted " + optimizedFeatureName + " with " + defaultOption.toString() + " " + Form.duration(attempt.getAverageTime(), 2));
if(attempts.isEmpty()) {
d("Fully Optimized " + optimizedFeatureName + " with " + defaultOption.toString());
for(T i : results.keySet()) {
d(i.toString() + ": " + Form.duration(results.get(i), 2));
}
}
}
}
}
public T nextParameters() {
if(!attempts.isEmpty() && Math.r(chanceToTest)) {
return attempts.k().popRandom();
}
return defaultOption;
}
}
@@ -0,0 +1,28 @@
package com.volmit.iris.engine.pipeline;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.feature.FeatureSizedTarget;
import com.volmit.iris.engine.feature.FeatureStorage;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Singular;
import java.util.List;
@Data
@AllArgsConstructor
@Builder
public class EnginePipeline
{
@Singular
private final List<PipelinePhase> phases;
public void generate(Engine engine, FeatureSizedTarget target, PipedHunkStack stack) {
FeatureStorage storage = new FeatureStorage(engine.getConfiguration().getChunkSize(), engine.getConfiguration().getChunkSize());
for(PipelinePhase i : phases) {
i.generate(engine, target, stack, storage);
}
}
}
@@ -0,0 +1,33 @@
package com.volmit.iris.engine.pipeline;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.feature.FeatureSizedTarget;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Singular;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
public class EnginePlumbing {
private final Engine engine;
@Singular
private final List<EnginePipeline> pipelines;
private final EnginePipeline errorPipeline;
public void generate(Engine engine, FeatureSizedTarget target, PipedHunkStack stack) {
for(EnginePipeline i : pipelines) {
i.generate(engine, target, stack);
}
try {
}
catch(Throwable e) {
e.printStackTrace();
getErrorPipeline().generate(engine, target, stack);
}
}
}
@@ -0,0 +1,27 @@
package com.volmit.iris.engine.pipeline;
import com.volmit.iris.engine.feature.FeatureTarget;
import com.volmit.iris.platform.PlatformNamespaced;
import java.util.HashMap;
import java.util.Map;
public class PipedHunkStack {
private final Map<Class<? extends PlatformNamespaced>, FeatureTarget<? extends PlatformNamespaced>> hunks;
public PipedHunkStack()
{
this.hunks = new HashMap<>();
}
public void register(Class<? extends PlatformNamespaced> clazz, FeatureTarget<? extends PlatformNamespaced> hunk)
{
hunks.put(clazz, hunk);
}
@SuppressWarnings("unchecked")
public <T extends PlatformNamespaced> FeatureTarget<T> hunk(Class<?> hunk)
{
return (FeatureTarget<T>) hunks.get(hunk);
}
}
@@ -0,0 +1,34 @@
package com.volmit.iris.engine.pipeline;
import com.volmit.iris.engine.Engine;
import com.volmit.iris.engine.feature.FeatureSizedTarget;
import com.volmit.iris.engine.feature.FeatureStorage;
import com.volmit.iris.engine.feature.FeatureTarget;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Singular;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
@Data
@Builder
@AllArgsConstructor
public class PipelinePhase
{
@Singular
private final List<PipelineTask<?>> tasks;
public List<FeatureTarget<?>> generate(Engine engine, FeatureSizedTarget target, PipedHunkStack stack, FeatureStorage storage) {
return engine.getExecutor().getForks().invokeAll(tasks.stream().map(i -> i.task(target, stack.hunk(i.getTarget()), storage))
.collect(Collectors.toList())).stream().map(i -> {
try {
return i.get();
} catch(Throwable e) {
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
}
}
@@ -0,0 +1,44 @@
package com.volmit.iris.engine.pipeline;
import art.arcane.amulet.range.IntegerRange;
import com.volmit.iris.engine.feature.*;
import com.volmit.iris.engine.optimizer.HunkSlizeConfiguration;
import com.volmit.iris.engine.optimizer.IrisOptimizer;
import com.volmit.iris.platform.PlatformNamespaced;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
import static art.arcane.amulet.MagicalSugar.*;
@AllArgsConstructor
@Data
public class PipelineTask<T extends PlatformNamespaced>
{
private final Feature<T, ?> feature;
private final Class<T> target;
private final IntegerRange verticalEnvelope;
private final IntegerRange horizontalEnvelope;
private final IrisOptimizer<HunkSlizeConfiguration> optimizer;
public PipelineTask(Feature<T, ?> feature, Class<T> target, IntegerRange verticalEnvelope, IntegerRange horizontalEnvelope)
{
this.feature = feature;
this.target = target;
this.verticalEnvelope = verticalEnvelope;
this.horizontalEnvelope = horizontalEnvelope;
List<HunkSlizeConfiguration> configurations = feature.isHeightAgnostic() ? HunkSlizeConfiguration.generateConfigurations(Integer.MAX_VALUE, horizontalEnvelope)
: HunkSlizeConfiguration.generateConfigurations(verticalEnvelope, horizontalEnvelope);
this.optimizer = new IrisOptimizer<>(128, configurations, configurations[0], 1, feature.getName());
}
public PipelineTask(Feature<T, ?> feature, Class<T> target) {
this(feature, target, 1 to 16, 1 to 16);
}
public FeatureTask<T, ?> task(FeatureSizedTarget target, FeatureTarget<T> origin, FeatureStorage storage){
HunkSlizeConfiguration configuration = getFeature().isOptimize() ? optimizer.nextParameters() : optimizer.getDefaultOption();
return feature.task(target, origin, storage, configuration.getVerticalSlice(), configuration.getHorizontalSlize(), (ms) -> optimizer.report(configuration, ms));
}
}
@@ -0,0 +1,71 @@
package com.volmit.iris.engine.resolver;
import art.arcane.amulet.format.Form;
import com.volmit.iris.platform.PlatformNamespaceKey;
import lombok.Data;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Data
public class CompositeResolver<T extends Resolvable> implements Resolver<T> {
private final Map<String, Resolver<T>> resolvers;
private final String[] namespaces;
public CompositeResolver(Map<String, Resolver<T>> resolvers)
{
this.resolvers = resolvers;
this.namespaces = resolvers.keySet().toArray(new String[0]);
}
@Override
public boolean hasNamespace(String namespace) {
return resolvers.containsKey(namespace);
}
@Override
public T resolve(PlatformNamespaceKey key) {
return resolvers.get(key.getNamespace()).resolve(key);
}
@Override
public T resolve(String key) {
for(String i : getNamespaces()) {
if(resolvers.get(i).contains(i, key)) {
return resolvers.get(i).resolve(key);
}
}
return null;
}
@Override
public Resolver<T> and(String namespace, Resolver<T> resolver) {
Map<String, Resolver<T>> resolvers = this.resolvers.copy();
if(hasNamespace(namespace)) {
resolvers.put(namespace, resolvers.get(namespace).and(namespace, resolver));
}
else {
resolvers.put(namespace, resolver);
}
return new CompositeResolver<>(resolvers);
}
@Override
public void print(String type, Object printer, int indent) {
printer.i(Form.repeat(" ", indent) + "Composite[" + Arrays.toString(getNamespaces()) + "] " + type);
for(Resolver<T> i : getResolvers().values()) {
i.print(type, printer, indent + 2);
}
}
@Override
public void addAllKeys(List<PlatformNamespaceKey> keys) {
resolvers.forEach((k, v) -> v.addAllKeys(keys));
}
}
@@ -0,0 +1,9 @@
package com.volmit.iris.engine.resolver;
import com.volmit.iris.platform.PlatformNamespaceKey;
import lombok.Data;
@Data
public class EngineResolvable implements Resolvable {
private PlatformNamespaceKey key;
}
@@ -0,0 +1,55 @@
package com.volmit.iris.engine.resolver;
import art.arcane.amulet.format.Form;
import com.volmit.iris.platform.PlatformNamespaceKey;
import com.volmit.iris.util.NSK;
import lombok.Data;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Data
public class FrozenResolver<T extends Resolvable> implements Resolver<T> {
private final Map<String, T> registry;
private final String namespace;
public FrozenResolver(String namespace, Map<String, T> registry)
{
this.registry = Collections.unmodifiableMap(registry);
this.namespace = namespace;
}
@Override
public boolean hasNamespace(String namespace) {
return this.namespace.equals(namespace);
}
public T resolve(PlatformNamespaceKey key) {
return registry.get(key.getKey());
}
@Override
public T resolve(String key) {
return registry.get(key);
}
@Override
public void print(String type, Object printer, int indent) {
printer.i(Form.repeat(" ", indent) + "Frozen[" + namespace + "] " + type);
}
@Override
public void addAllKeys(List<PlatformNamespaceKey> keys) {
registry.keySet().forEach((k) -> keys.add(new NSK(getNamespace(), k)));
}
@Override
public Resolver<T> and(String namespace, Resolver<T> resolver) {
if(!namespace.equals(getNamespace())) {
return new CompositeResolver<>(Map.of(namespace, resolver, getNamespace(), this));
}
return new MergedNamespaceResolver<>(namespace, this, resolver);
}
}
@@ -0,0 +1,84 @@
package com.volmit.iris.engine.resolver;
import art.arcane.amulet.format.Form;
import com.github.benmanes.caffeine.cache.CacheLoader;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
import com.volmit.iris.platform.PlatformNamespaceKey;
import com.volmit.iris.util.NSK;
import lombok.Data;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@Data
public class HotResolver<T extends Resolvable> implements Resolver<T>, CacheLoader<String, T> {
private final LoadingCache<String, T> cache;
private final String namespace;
private final Function<String, T> loader;
private final Supplier<List<String>> keyGetter;
public HotResolver(String namespace, Function<String, T> loader, Supplier<List<String>> keyGetter)
{
this.namespace = namespace;
this.keyGetter = keyGetter;
this.loader = loader;
cache = Caffeine.newBuilder().build(this);
}
public T resolve(PlatformNamespaceKey key) {
return cache.get(key.getKey());
}
@Override
public T resolve(String key) {
return cache.get(key);
}
public boolean hasNamespace(String namespace) {
return this.namespace.equals(namespace);
}
public FrozenResolver<T> freeze()
{
cache.cleanUp();
Map<String, T> map = new HashMap<>((int) cache.estimatedSize());
Map<String, T> view = cache.asMap();
for(String i : view.keySet()) {
map.put(i, view.get(i));
}
return new FrozenResolver<>(getNamespace(), Collections.unmodifiableMap(map));
}
@Override
public @Nullable T load(String key) {
return loader.apply(key);
}
@Override
public Resolver<T> and(String namespace, Resolver<T> resolver) {
if(!namespace.equals(getNamespace())) {
return new CompositeResolver<>(Map.of(namespace, resolver, getNamespace(), this));
}
return new MergedNamespaceResolver<>(namespace, this, resolver);
}
@Override
public void print(String type, Object printer, int indent) {
printer.i(Form.repeat(" ", indent) + "Hot[" + namespace + "] " + type);
}
@Override
public void addAllKeys(List<PlatformNamespaceKey> keys) {
keys.addAll(keyGetter.get().stream().map(i -> new NSK(getNamespace(), i)).toList());
}
}
@@ -0,0 +1,85 @@
package com.volmit.iris.engine.resolver;
import art.arcane.amulet.format.Form;
import com.volmit.iris.platform.PlatformNamespaceKey;
import lombok.Data;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Data
public class MergedNamespaceResolver<T extends Resolvable> implements Resolver<T> {
private final String namespace;
private final List<Resolver<T>> resolvers;
public MergedNamespaceResolver(String namespace, Resolver<T>... resolvers)
{
this(namespace, Arrays.stream(resolvers).toList());
}
public MergedNamespaceResolver(String namespace, List<Resolver<T>> resolvers)
{
this.namespace = namespace;
this.resolvers = resolvers;
}
@Override
public boolean hasNamespace(String namespace) {
return this.namespace.equals(namespace);
}
@Override
public T resolve(PlatformNamespaceKey key) {
for(Resolver<T> i : resolvers) {
T t = i.resolve(key);
if(t != null)
{
return t;
}
}
return null;
}
@Override
public T resolve(String key) {
for(Resolver<T> i : resolvers) {
T t = i.resolve(key);
if(t != null)
{
return t;
}
}
return null;
}
@Override
public void print(String type, Object printer, int indent) {
printer.i(Form.repeat(" ", indent) + "Merged[" + namespace + "] " + type);
for(Resolver<T> i : getResolvers()) {
i.print(type, printer, indent + 2);
}
}
@Override
public void addAllKeys(List<PlatformNamespaceKey> keys) {
resolvers.forEach(i -> i.addAllKeys(keys));
}
@Override
public Resolver<T> and(String namespace, Resolver<T> resolver) {
if(namespace.equals(getNamespace()))
{
List<Resolver<T>> r = resolvers.copy();
r.add(resolver);
return new MergedNamespaceResolver<>(namespace, r);
}
return new CompositeResolver<>(Map.of(getNamespace(), this, namespace, resolver));
}
}
@@ -0,0 +1,257 @@
package com.volmit.iris.engine.resolver;
import art.arcane.amulet.format.Form;
import art.arcane.cram.PakResource;
import com.google.gson.*;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import com.volmit.iris.engine.EngineData;
import com.volmit.iris.platform.PlatformBiome;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.platform.PlatformNamespaced;
import com.volmit.iris.platform.PlatformNamespacedMutable;
import lombok.AllArgsConstructor;
import java.io.IOException;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.List;
public interface Resolvable extends PlatformNamespaced, PlatformNamespacedMutable, PakResource {
String SCHEMA = "http://json-schema.org/draft-07/schema#";
default String getSchemaId() {
return "https://art.arcane/iris/schemas/"+entity().getId()+".json";
}
default String getSchemaRefId() {
return entity().getId()+".json";
}
default JsonObject generateSchema(EngineData data) {
JsonObject object = new JsonObject();
Entity.ResolverEntityData entity = entity();
object.add("$schema", new JsonPrimitive(SCHEMA));
object.add("$id", new JsonPrimitive(getSchemaId()));
object.add("type", new JsonPrimitive("object"));
object.add("description", new JsonPrimitive("No Description for " + entity.getName()));
JsonObject properties = new JsonObject();
JsonObject definitions = new JsonObject();
for(Field i : getClass().getDeclaredFields()) {
i.access();
if (Modifier.isStatic(i.getModifiers()) || Modifier.isTransient(i.getModifiers())) {
continue;
}
properties.add(i.getName(), generateSchemaProperty(data, i.getName(), i.getType(), i.getDeclaredAnnotation(Type.class), i.getDeclaredAnnotation(PlatformType.class), definitions));
}
object.add("properties", properties);
object.add("definitions", definitions);
return object;
}
default String getSchemaDefinition(String name) {
return "D" + name.hashCode();
}
default JsonObject generateSchemaProperty(EngineData data, String name, Class<?> type, Type listType, PlatformType platformType, JsonObject definitions) {
JsonObject main = new JsonObject();
JsonArray anyOf = new JsonArray();
JsonObject object = new JsonObject();
anyOf.add(object);
object.add("description", new JsonPrimitive("No Description for field " + name));
if(type.isAssignableFrom(Resolvable.class) || Resolvable.class.isAssignableFrom(type)) {
Resolvable r = data.getInstance(type);
if(r != null) {
String def = getSchemaDefinition(r.getClass().simpleName());
object.add("$ref", new JsonPrimitive(r.getSchemaRefId()));
JsonObject registry = new JsonObject();
registry.add("description", new JsonPrimitive("No Description for field " + name));
String defName = getSchemaDefinition("resolve" + type.getCanonicalName());
registry.add("type", new JsonPrimitive("string"));
registry.add("$ref", new JsonPrimitive("#/definitions/" + defName));
if(!definitions.has(defName)) {
JsonObject enumDef = new JsonObject();
JsonArray enums = new JsonArray();
data.getAllKeys(type).forEach(i -> enums.add(i.toString()));
enumDef.add("enum", enums);
definitions.add(defName, enumDef);
}
anyOf.add(registry);
}
}
else if(type.isAssignableFrom(List.class) || List.class.isAssignableFrom(type)) {
if(listType != null) {
JsonObject internal = generateSchemaProperty(data, "list", listType.value(), null, platformType, definitions);
object.add("items", internal);
}
}
else if(type.isEnum()) {
String defName = getSchemaDefinition(type.getCanonicalName());
object.add("type", new JsonPrimitive("string"));
object.add("$ref", new JsonPrimitive("#/definitions/" + defName));
if(!definitions.has(defName)) {
try {
JsonObject enumDef = new JsonObject();
JsonArray enums = new JsonArray();
Arrays.stream((Enum<?>[])type.getDeclaredMethod("values").invoke(null)).forEach(i -> enums.add(i.name()));
enumDef.add("enum", enums);
definitions.add(defName, enumDef);
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
throw new RuntimeException(e);
}
}
}
else if(type.equals(String.class)) {
object.add("type", new JsonPrimitive("string"));
if(platformType != null) {
String defName = getSchemaDefinition(platformType.value().getCanonicalName());
object.add("$ref", new JsonPrimitive("#/definitions/" + defName));
if(!definitions.has(defName)) {
JsonObject enumDef = new JsonObject();
JsonArray enums = buildSchemaPlatformEnum(data, platformType.value());
enumDef.add("enum", enums);
definitions.add(defName, enumDef);
}
}
}
else if(type.equals(int.class) || type.equals(Integer.class)
|| type.equals(long.class) || type.equals(Long.class)
|| type.equals(byte.class) || type.equals(Byte.class)
|| type.equals(short.class) || type.equals(Short.class))
{
object.add("type", new JsonPrimitive("integer"));
if(type.equals(int.class) || type.equals(Integer.class)) {
object.add("minimum", new JsonPrimitive(Integer.MIN_VALUE));
object.add("maximum", new JsonPrimitive(Integer.MAX_VALUE));
}
else if(type.equals(long.class) || type.equals(Long.class)) {
object.add("minimum", new JsonPrimitive(Long.MIN_VALUE));
object.add("maximum", new JsonPrimitive(Long.MAX_VALUE));
}
else if(type.equals(short.class) || type.equals(Short.class)) {
object.add("minimum", new JsonPrimitive(Short.MIN_VALUE));
object.add("maximum", new JsonPrimitive(Short.MAX_VALUE));
}
else {
object.add("minimum", new JsonPrimitive(Byte.MIN_VALUE));
object.add("maximum", new JsonPrimitive(Byte.MAX_VALUE));
}
}
if(anyOf.size() == 1)
{
return object;
}
main.add("anyOf", anyOf);
return main;
}
default JsonArray buildSchemaPlatformEnum(EngineData data, Class<? extends PlatformNamespaced> value) {
JsonArray a = new JsonArray();
if(value.equals(PlatformBlock.class)) {
data.getEngine().getPlatform().getBlocks().map(i -> i.getKey().toString()).forEach(a::add);
}
else if(value.equals(PlatformBiome.class)) {
data.getEngine().getPlatform().getBiomes().map(i -> i.getKey().toString()).forEach(a::add);
}
return a;
}
default void apply(GsonBuilder builder) {
if(this instanceof TypeAdapterFactory f) {
builder.registerTypeAdapterFactory(f);
}
}
default Entity.ResolverEntityData entity() {
return new Entity.ResolverEntityData(getClass().getDeclaredAnnotation(Resolvable.Entity.class));
}
default <T> void writeSafeJson(TypeAdapter<T> delegate, JsonWriter out, T value) {
try {
delegate.write(out, value);
} catch (IOException e) {
try {
delegate.write(out, null);
} catch(IOException ex) {
throw new RuntimeException(ex);
}
}
}
@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface Entity {
String id();
String name() default "";
String namePlural() default "";
JsonToken[] jsonTypes() default JsonToken.BEGIN_OBJECT;
@AllArgsConstructor
@lombok.Data
class ResolverEntityData
{
private final Entity annotation;
public String getId() {
return annotation.id();
}
public String getName() {
return annotation.name().isEmpty() ? Form.capitalizeWords(getId().replaceAll("\\Q-\\E", " ")) : annotation.name();
}
public String getNamePlural() {
return annotation.namePlural().isEmpty() ? getName() + "s" : annotation.namePlural();
}
}
}
@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface TokenConstructor {
JsonToken[] value();
}
@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface Type {
Class<?> value();
}
@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface PlatformType {
Class<? extends PlatformNamespaced> value();
}
}
@@ -0,0 +1,120 @@
package com.volmit.iris.engine.resolver;
import art.arcane.cram.PakKey;
import art.arcane.cram.PakResource;
import com.google.gson.Gson;
import com.volmit.iris.platform.PlatformNamespaceKey;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
public interface Resolver<T extends Resolvable> {
@SuppressWarnings("unchecked")
static <F extends Resolvable> CompositeResolver<F> frozen(Map<PakKey, PakResource> resources, Predicate<PakResource> isTypePredicate) {
Map<String, Map<String, F>> resolvables = new HashMap<>();
Map<String, Resolver<F>> resolvers = new HashMap<>();
for(PakKey i : resources.keySet()) {
PakResource r = resources.get(i);
if(isTypePredicate.test(r)) {
Map<String, F> rs = resolvables.computeIfAbsent(i.getNamespace(), (k) -> new HashMap<>());
rs.put(i.getKey(), (F) i);
}
}
for(String i : resolvables.keySet()) {
resolvers.put(i, frozen(i, resolvables.get(i)));
}
return new CompositeResolver<>(resolvers);
}
static <F extends Resolvable> Resolver<F> frozen(String namespace, Map<String, F> map) {
return new FrozenResolver<>(namespace, map);
}
static <F extends Resolvable> Resolver<F> hot(String namespace, Function<String, F> loader, Supplier<List<String>> keyGetter) {
return new HotResolver<>(namespace, loader, keyGetter);
}
static <F extends Resolvable> Resolver<F> hotDirectoryJson(String namespace, Class<?> resolvableClass, File folder, Gson gson) {
return hotDirectory(namespace, (in) -> (F) gson.fromJson(new InputStreamReader(in), resolvableClass), folder, "json");
}
static <F extends Resolvable> Resolver<F> hotDirectory(String namespace, Function<InputStream, F> loader, File folder, String... extensions) {
return new HotResolver<>(namespace, (key) -> {
for(String i : extensions)
{
File f = new File(folder, key + "." + i);
if(f.exists())
{
try {
FileInputStream in = new FileInputStream(f);
F ff = loader.apply(in);
in.close();
return ff;
} catch(IOException e) {
throw new RuntimeException(e);
}
}
}
return null;
}, () -> {
List<String> s = new ArrayList<>();
for(File i : folder.listFiles())
{
if(i.isFile()) {
for(String j : extensions)
{
if(i.getName().endsWith(j))
{
s.add(i.getName().split("\\Q.\\E")[0]);
break;
}
}
}
}
return s;
});
}
boolean hasNamespace(String namespace);
T resolve(PlatformNamespaceKey key);
T resolve(String key);
default boolean contains(String namespace, String key) {
return hasNamespace(namespace) && resolve(key) != null;
}
default boolean contains(PlatformNamespaceKey key){
return hasNamespace(key.getNamespace()) && resolve(key) != null;
}
Resolver<T> and(String namespace, Resolver<T> resolver);
default void print(String type, Object printer)
{
print(type, printer, 0);
}
void print(String type, Object printer, int index);
void addAllKeys(List<PlatformNamespaceKey> keys);
}
@@ -0,0 +1,39 @@
package com.volmit.iris.platform;
import com.volmit.iris.platform.block.PlatformBlock;
import java.io.File;
import java.util.stream.Stream;
public interface IrisPlatform {
void logError(String k, Object o);
void logInfo(String k, Object o);
void logWarning(String k, Object o);
void logDebug(String k, Object o);
String getPlatformName();
Stream<PlatformBlock> getBlocks();
Stream<PlatformBiome> getBiomes();
boolean isWorldLoaded(String name);
PlatformWorld getWorld(String name);
PlatformBlock parseBlock(String raw);
PlatformNamespaceKey key(String namespace, String key);
default PlatformNamespaceKey key(String nsk)
{
return key("minecraft", nsk);
}
File getStudioFolder();
File getStudioFolder(String dimension);
}
@@ -0,0 +1,5 @@
package com.volmit.iris.platform;
public interface PlatformBiome extends PlatformNamespaced {
}
@@ -0,0 +1,9 @@
package com.volmit.iris.platform;
public interface PlatformChunk {
int getX();
int getZ();
void unload(boolean save, boolean force);
}
@@ -0,0 +1,16 @@
package com.volmit.iris.platform;
import art.arcane.cram.PakKey;
import com.volmit.iris.util.NSK;
public interface PlatformNamespaceKey {
String getNamespace();
String getKey();
String toString();
static PlatformNamespaceKey of(PakKey key) {
return new NSK(key.getNamespace(), key.getKey());
}
}
@@ -0,0 +1,5 @@
package com.volmit.iris.platform;
public interface PlatformNamespaced {
PlatformNamespaceKey getKey();
}
@@ -0,0 +1,5 @@
package com.volmit.iris.platform;
public interface PlatformNamespacedMutable {
void setKey(PlatformNamespaceKey key);
}
@@ -0,0 +1,23 @@
package com.volmit.iris.platform;
import art.arcane.amulet.geometry.Vec;
import java.util.UUID;
public interface PlatformPlayer {
UUID getUUID();
String getName();
Vec getLocation();
PlatformWorld getWorld();
boolean canUseIris();
void sendMessage(String message);
void sendActionBar(String message);
void sendTitleMessage(String title, String subtitle, int in, int stay, int out);
}
@@ -0,0 +1,37 @@
package com.volmit.iris.platform;
import art.arcane.amulet.format.Form;
import lombok.Data;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Data
public class PlatformRegistry<T extends PlatformNamespaced> {
private final Map<PlatformNamespaceKey, T> registry;
private final String name;
private final String namePlural;
public PlatformRegistry(String name, String namePlural, Stream<T> stream) {
this.name = name;
this.namePlural = namePlural;
registry = Collections.unmodifiableMap(stream.collect(Collectors.toMap(PlatformNamespaced::getKey, (t) -> t)));
i("Registered " + Form.f(registry.size()) + " " + namePlural);
}
public PlatformRegistry(String name, Stream<T> stream) {
this(name, name + "s", stream);
}
public T get(PlatformNamespaceKey key) {
return registry.get(key);
}
public Set<PlatformNamespaceKey> getKeys() {
return Collections.unmodifiableSet(registry.keySet());
}
}
@@ -0,0 +1,66 @@
package com.volmit.iris.platform;
import com.volmit.iris.platform.block.PlatformBlock;
import com.volmit.iris.util.WorldHeight;
import java.io.File;
public interface PlatformWorld {
WorldHeight getHeight();
String getName();
File getFolder();
Iterable<PlatformPlayer> getPlayers();
Iterable<PlatformChunk> getLoadedChunks();
PlatformChunk getOrLoadChunk(int x, int z);
PlatformBlock getBlock(int x, int y, int z);
PlatformBiome getBiome(int x, int y, int z);
long getSeed();
boolean isChunkLoaded(int x, int z);
void setBlock(int x, int y, int z, PlatformBlock block);
void setBiome(int x, int y, int z, PlatformBiome biome);
default File getWorldFolder(String subfolder) {
return new File(getFolder(), subfolder);
}
default File getRegionFolder() {
return getWorldFolder("region");
}
default File getIrisFolder() {
return getWorldFolder("iris");
}
default File getIrisDataFolder() {
File f = new File(getWorldFolder("iris"), "data");
f.mkdirs();
return f;
}
default boolean isRegionLoaded(int x, int z) {
for(PlatformChunk i : getLoadedChunks()) {
if(i.getX() >> 5 == x && i.getZ() >> 5 == z) {
return true;
}
}
return false;
}
default void unloadChunks(boolean save, boolean force) {
for(PlatformChunk i : getLoadedChunks()) {
i.unload(save, force);
}
}
}
@@ -0,0 +1,9 @@
package com.volmit.iris.platform.block;
import com.volmit.iris.platform.PlatformNamespaced;
import java.util.Map;
public interface PlatformBlock extends PlatformNamespaced {
Map<String, String> getProperties();
}
@@ -0,0 +1,22 @@
package com.volmit.iris.util;
public class FloatNoiseCache {
private final int width;
private final int height;
private final float[] cache;
public FloatNoiseCache(int width, int height)
{
this.width = width;
this.height = height;
cache = new float[width * height];
}
public void set(int x, int y, float v) {
this.cache[y % this.height * this.width + x % this.width] = v;
}
public float get(int x, int y) {
return this.cache[y % this.height * this.width + x % this.width];
}
}
@@ -0,0 +1,17 @@
package com.volmit.iris.util;
import art.arcane.source.NoisePlane;
import art.arcane.spatial.hunk.Hunk;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class HunkedNoisePlane implements NoisePlane {
private final Hunk<Double> noise;
@Override
public double noise(double x, double y, double z) {
Double d = noise.get(Math.floorMod((int)x, noise.getWidth()), Math.floorMod((int)y, noise.getHeight()), Math.floorMod((int)z, noise.getDepth()));
return d != null ? d : 0;
}
}
@@ -0,0 +1,32 @@
package com.volmit.iris.util;
import com.volmit.iris.platform.PlatformNamespaceKey;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class NSK implements PlatformNamespaceKey {
private final String namespace;
private final String key;
public NSK(String namespacedkey)
{
this(namespacedkey.contains(":") ? namespacedkey.split("\\Q:\\E")[0] : "minecraft",
namespacedkey.contains(":") ? namespacedkey.split("\\Q:\\E")[1] : namespacedkey);
}
@Override
public String getNamespace() {
return namespace;
}
@Override
public String getKey() {
return key;
}
public String toString() {
return namespace + ":" + key;
}
}
@@ -0,0 +1,23 @@
package com.volmit.iris.util;
public class NoiseCache<T> {
private final int width;
private final int height;
private final Object[] cache;
public NoiseCache(int width, int height)
{
this.width = width;
this.height = height;
cache = new Object[width * height];
}
public void set(int x, int y, T v) {
this.cache[y % this.height * this.width + x % this.width] = v;
}
@SuppressWarnings("unchecked")
public T get(int x, int y) {
return (T) this.cache[y % this.height * this.width + x % this.width];
}
}
@@ -0,0 +1,22 @@
package com.volmit.iris.util;
public class ShortNoiseCache {
private final int width;
private final int height;
private final short[] cache;
public ShortNoiseCache(int width, int height)
{
this.width = width;
this.height = height;
cache = new short[width * height];
}
public void set(int x, int y, short v) {
this.cache[(Math.floorMod(y,this.height) * this.width) + Math.floorMod(x, this.width)] = v;
}
public short get(int x, int y) {
return this.cache[(Math.floorMod(y,this.height) * this.width) + Math.floorMod(x,this.width)];
}
}
@@ -0,0 +1,19 @@
package com.volmit.iris.util;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class WorldHeight {
private final int minHeight;
private final int maxHeight;
public WorldHeight(int maxHeight) {
this(0, maxHeight);
}
public int getTotalHeight() {
return maxHeight - minHeight;
}
}
Binary file not shown.
+5
View File
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored
+234
View File
@@ -0,0 +1,234 @@
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
Vendored
+89
View File
@@ -0,0 +1,89 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

-201
View File
@@ -1,201 +0,0 @@
package ninja.bytecode.shuriken.json;
/*
Copyright (c) 2002 JSON.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The Software shall be used for Good, not Evil.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
import java.util.Iterator;
/**
* Convert an HTTP header to a JSONObject and back.
*
* @author JSON.org
* @version 2014-05-03
*/
public class HTTP
{
/** Carriage return/line feed. */
public static final String CRLF = "\r\n";
/**
* Convert an HTTP header string into a JSONObject. It can be a request
* header or a response header. A request header will contain
*
* <pre>
* {
* Method: "POST" (for example),
* "Request-URI": "/" (for example),
* "HTTP-Version": "HTTP/1.1" (for example)
* }
* </pre>
*
* A response header will contain
*
* <pre>
* {
* "HTTP-Version": "HTTP/1.1" (for example),
* "Status-Code": "200" (for example),
* "Reason-Phrase": "OK" (for example)
* }
* </pre>
*
* In addition, the other parameters in the header will be captured, using
* the HTTP field names as JSON names, so that
*
* <pre>
* Date: Sun, 26 May 2002 18:06:04 GMT
* Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
* Cache-Control: no-cache
* </pre>
*
* become
*
* <pre>
* {...
* Date: "Sun, 26 May 2002 18:06:04 GMT",
* Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
* "Cache-Control": "no-cache",
* ...}
* </pre>
*
* It does no further checking or conversion. It does not parse dates. It
* does not do '%' transforms on URLs.
*
* @param string
* An HTTP header string.
* @return A JSONObject containing the elements and attributes of the XML
* string.
* @throws JSONException
*/
public static JSONObject toJSONObject(String string) throws JSONException
{
JSONObject jo = new JSONObject();
HTTPTokener x = new HTTPTokener(string);
String token;
token = x.nextToken();
if(token.toUpperCase().startsWith("HTTP"))
{
// Response
jo.put("HTTP-Version", token);
jo.put("Status-Code", x.nextToken());
jo.put("Reason-Phrase", x.nextTo('\0'));
x.next();
} else
{
// Request
jo.put("Method", token);
jo.put("Request-URI", x.nextToken());
jo.put("HTTP-Version", x.nextToken());
}
// Fields
while(x.more())
{
String name = x.nextTo(':');
x.next(':');
jo.put(name, x.nextTo('\0'));
x.next();
}
return jo;
}
/**
* Convert a JSONObject into an HTTP header. A request header must contain
*
* <pre>
* {
* Method: "POST" (for example),
* "Request-URI": "/" (for example),
* "HTTP-Version": "HTTP/1.1" (for example)
* }
* </pre>
*
* A response header must contain
*
* <pre>
* {
* "HTTP-Version": "HTTP/1.1" (for example),
* "Status-Code": "200" (for example),
* "Reason-Phrase": "OK" (for example)
* }
* </pre>
*
* Any other members of the JSONObject will be output as HTTP fields. The
* result will end with two CRLF pairs.
*
* @param jo
* A JSONObject
* @return An HTTP header string.
* @throws JSONException
* if the object does not contain enough information.
*/
public static String toString(JSONObject jo) throws JSONException
{
Iterator<String> keys = jo.keys();
String string;
StringBuilder sb = new StringBuilder();
if(jo.has("Status-Code") && jo.has("Reason-Phrase"))
{
sb.append(jo.getString("HTTP-Version"));
sb.append(' ');
sb.append(jo.getString("Status-Code"));
sb.append(' ');
sb.append(jo.getString("Reason-Phrase"));
} else if(jo.has("Method") && jo.has("Request-URI"))
{
sb.append(jo.getString("Method"));
sb.append(' ');
sb.append('"');
sb.append(jo.getString("Request-URI"));
sb.append('"');
sb.append(' ');
sb.append(jo.getString("HTTP-Version"));
} else
{
throw new JSONException("Not enough material for an HTTP header.");
}
sb.append(CRLF);
while(keys.hasNext())
{
string = keys.next();
if(!"HTTP-Version".equals(string) && !"Status-Code".equals(string) && !"Reason-Phrase".equals(string) && !"Method".equals(string) && !"Request-URI".equals(string) && !jo.isNull(string))
{
sb.append(string);
sb.append(": ");
sb.append(jo.getString(string));
sb.append(CRLF);
}
}
sb.append(CRLF);
return sb.toString();
}
}
-91
View File
@@ -1,91 +0,0 @@
package ninja.bytecode.shuriken.json;
/*
Copyright (c) 2002 JSON.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The Software shall be used for Good, not Evil.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
/**
* The HTTPTokener extends the JSONTokener to provide additional methods for the
* parsing of HTTP headers.
*
* @author JSON.org
* @version 2014-05-03
*/
public class HTTPTokener extends JSONTokener
{
/**
* Construct an HTTPTokener from a string.
*
* @param string
* A source string.
*/
public HTTPTokener(String string)
{
super(string);
}
/**
* Get the next token or string. This is used in parsing HTTP headers.
*
* @throws JSONException
* @return A String.
*/
public String nextToken() throws JSONException
{
char c;
char q;
StringBuilder sb = new StringBuilder();
do
{
c = next();
} while(Character.isWhitespace(c));
if(c == '"' || c == '\'')
{
q = c;
for(;;)
{
c = next();
if(c < ' ')
{
throw syntaxError("Unterminated string.");
}
if(c == q)
{
return sb.toString();
}
sb.append(c);
}
}
for(;;)
{
if(c == 0 || Character.isWhitespace(c))
{
return sb.toString();
}
sb.append(c);
c = next();
}
}
}
-1252
View File
File diff suppressed because it is too large Load Diff
-50
View File
@@ -1,50 +0,0 @@
package ninja.bytecode.shuriken.json;
/**
* The JSONException is thrown by the JSON.org classes when things are amiss.
*
* @author JSON.org
* @version 2014-05-03
*/
public class JSONException extends RuntimeException
{
private static final long serialVersionUID = 0;
private Throwable cause;
/**
* Constructs a JSONException with an explanatory message.
*
* @param message
* Detail about the reason for the exception.
*/
public JSONException(String message)
{
super(message);
}
/**
* Constructs a new JSONException with the specified cause.
*
* @param cause
* The cause.
*/
public JSONException(Throwable cause)
{
super(cause.getMessage());
this.cause = cause;
}
/**
* Returns the cause of this exception or null if the cause is nonexistent
* or unknown.
*
* @return the cause of this exception or null if the cause is nonexistent
* or unknown.
*/
@Override
public Throwable getCause()
{
return this.cause;
}
}
-555
View File
@@ -1,555 +0,0 @@
package ninja.bytecode.shuriken.json;
/*
Copyright (c) 2008 JSON.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The Software shall be used for Good, not Evil.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
import java.util.Iterator;
/**
* This provides static methods to convert an XML text into a JSONArray or
* JSONObject, and to covert a JSONArray or JSONObject into an XML text using
* the JsonML transform.
*
* @author JSON.org
* @version 2014-05-03
*/
public class JSONML
{
/**
* Parse XML values and store them in a JSONArray.
*
* @param x
* The XMLTokener containing the source string.
* @param arrayForm
* true if array form, false if object form.
* @param ja
* The JSONArray that is containing the current tag or null if we
* are at the outermost level.
* @return A JSONArray if the value is the outermost tag, otherwise null.
* @throws JSONException
*/
private static Object parse(XMLTokener x, boolean arrayForm, JSONArray ja) throws JSONException
{
String attribute;
char c;
String closeTag = null;
int i;
JSONArray newja = null;
JSONObject newjo = null;
Object token;
String tagName = null;
// Test for and skip past these forms:
// <!-- ... -->
// <![ ... ]]>
// <! ... >
// <? ... ?>
while(true)
{
if(!x.more())
{
throw x.syntaxError("Bad XML");
}
token = x.nextContent();
if(token == XML.LT)
{
token = x.nextToken();
if(token instanceof Character)
{
if(token == XML.SLASH)
{
// Close tag </
token = x.nextToken();
if(!(token instanceof String))
{
throw new JSONException("Expected a closing name instead of '" + token + "'.");
}
if(x.nextToken() != XML.GT)
{
throw x.syntaxError("Misshaped close tag");
}
return token;
} else if(token == XML.BANG)
{
// <!
c = x.next();
if(c == '-')
{
if(x.next() == '-')
{
x.skipPast("-->");
} else
{
x.back();
}
} else if(c == '[')
{
token = x.nextToken();
if(token.equals("CDATA") && x.next() == '[')
{
if(ja != null)
{
ja.put(x.nextCDATA());
}
} else
{
throw x.syntaxError("Expected 'CDATA['");
}
} else
{
i = 1;
do
{
token = x.nextMeta();
if(token == null)
{
throw x.syntaxError("Missing '>' after '<!'.");
} else if(token == XML.LT)
{
i += 1;
} else if(token == XML.GT)
{
i -= 1;
}
} while(i > 0);
}
} else if(token == XML.QUEST)
{
// <?
x.skipPast("?>");
} else
{
throw x.syntaxError("Misshaped tag");
}
// Open tag <
} else
{
if(!(token instanceof String))
{
throw x.syntaxError("Bad tagName '" + token + "'.");
}
tagName = (String) token;
newja = new JSONArray();
newjo = new JSONObject();
if(arrayForm)
{
newja.put(tagName);
if(ja != null)
{
ja.put(newja);
}
} else
{
newjo.put("tagName", tagName);
if(ja != null)
{
ja.put(newjo);
}
}
token = null;
for(;;)
{
if(token == null)
{
token = x.nextToken();
}
if(token == null)
{
throw x.syntaxError("Misshaped tag");
}
if(!(token instanceof String))
{
break;
}
// attribute = value
attribute = (String) token;
if(!arrayForm && ("tagName".equals(attribute) || "childNode".equals(attribute)))
{
throw x.syntaxError("Reserved attribute.");
}
token = x.nextToken();
if(token == XML.EQ)
{
token = x.nextToken();
if(!(token instanceof String))
{
throw x.syntaxError("Missing value");
}
newjo.accumulate(attribute, XML.stringToValue((String) token));
token = null;
} else
{
newjo.accumulate(attribute, "");
}
}
if(arrayForm && newjo.length() > 0)
{
newja.put(newjo);
}
// Empty tag <.../>
if(token == XML.SLASH)
{
if(x.nextToken() != XML.GT)
{
throw x.syntaxError("Misshaped tag");
}
if(ja == null)
{
if(arrayForm)
{
return newja;
} else
{
return newjo;
}
}
// Content, between <...> and </...>
} else
{
if(token != XML.GT)
{
throw x.syntaxError("Misshaped tag");
}
closeTag = (String) parse(x, arrayForm, newja);
if(closeTag != null)
{
if(!closeTag.equals(tagName))
{
throw x.syntaxError("Mismatched '" + tagName + "' and '" + closeTag + "'");
}
tagName = null;
if(!arrayForm && newja.length() > 0)
{
newjo.put("childNodes", newja);
}
if(ja == null)
{
if(arrayForm)
{
return newja;
} else
{
return newjo;
}
}
}
}
}
} else
{
if(ja != null)
{
ja.put(token instanceof String ? XML.stringToValue((String) token) : token);
}
}
}
}
/**
* Convert a well-formed (but not necessarily valid) XML string into a
* JSONArray using the JsonML transform. Each XML tag is represented as a
* JSONArray in which the first element is the tag name. If the tag has
* attributes, then the second element will be JSONObject containing the
* name/value pairs. If the tag contains children, then strings and
* JSONArrays will represent the child tags. Comments, prologs, DTDs, and
* <code>&lt;[ [ ]]></code> are ignored.
*
* @param string
* The source string.
* @return A JSONArray containing the structured data from the XML string.
* @throws JSONException
*/
public static JSONArray toJSONArray(String string) throws JSONException
{
return toJSONArray(new XMLTokener(string));
}
/**
* Convert a well-formed (but not necessarily valid) XML string into a
* JSONArray using the JsonML transform. Each XML tag is represented as a
* JSONArray in which the first element is the tag name. If the tag has
* attributes, then the second element will be JSONObject containing the
* name/value pairs. If the tag contains children, then strings and
* JSONArrays will represent the child content and tags. Comments, prologs,
* DTDs, and <code>&lt;[ [ ]]></code> are ignored.
*
* @param x
* An XMLTokener.
* @return A JSONArray containing the structured data from the XML string.
* @throws JSONException
*/
public static JSONArray toJSONArray(XMLTokener x) throws JSONException
{
return (JSONArray) parse(x, true, null);
}
/**
* Convert a well-formed (but not necessarily valid) XML string into a
* JSONObject using the JsonML transform. Each XML tag is represented as a
* JSONObject with a "tagName" property. If the tag has attributes, then the
* attributes will be in the JSONObject as properties. If the tag contains
* children, the object will have a "childNodes" property which will be an
* array of strings and JsonML JSONObjects.
*
* Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code> are ignored.
*
* @param x
* An XMLTokener of the XML source text.
* @return A JSONObject containing the structured data from the XML string.
* @throws JSONException
*/
public static JSONObject toJSONObject(XMLTokener x) throws JSONException
{
return (JSONObject) parse(x, false, null);
}
/**
* Convert a well-formed (but not necessarily valid) XML string into a
* JSONObject using the JsonML transform. Each XML tag is represented as a
* JSONObject with a "tagName" property. If the tag has attributes, then the
* attributes will be in the JSONObject as properties. If the tag contains
* children, the object will have a "childNodes" property which will be an
* array of strings and JsonML JSONObjects.
*
* Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code> are ignored.
*
* @param string
* The XML source text.
* @return A JSONObject containing the structured data from the XML string.
* @throws JSONException
*/
public static JSONObject toJSONObject(String string) throws JSONException
{
return toJSONObject(new XMLTokener(string));
}
/**
* Reverse the JSONML transformation, making an XML text from a JSONArray.
*
* @param ja
* A JSONArray.
* @return An XML string.
* @throws JSONException
*/
public static String toString(JSONArray ja) throws JSONException
{
int i;
JSONObject jo;
String key;
Iterator<String> keys;
int length;
Object object;
StringBuilder sb = new StringBuilder();
String tagName;
String value;
// Emit <tagName
tagName = ja.getString(0);
XML.noSpace(tagName);
tagName = XML.escape(tagName);
sb.append('<');
sb.append(tagName);
object = ja.opt(1);
if(object instanceof JSONObject)
{
i = 2;
jo = (JSONObject) object;
// Emit the attributes
keys = jo.keys();
while(keys.hasNext())
{
key = keys.next();
XML.noSpace(key);
value = jo.optString(key);
if(value != null)
{
sb.append(' ');
sb.append(XML.escape(key));
sb.append('=');
sb.append('"');
sb.append(XML.escape(value));
sb.append('"');
}
}
} else
{
i = 1;
}
// Emit content in body
length = ja.length();
if(i >= length)
{
sb.append('/');
sb.append('>');
} else
{
sb.append('>');
do
{
object = ja.get(i);
i += 1;
if(object != null)
{
if(object instanceof String)
{
sb.append(XML.escape(object.toString()));
} else if(object instanceof JSONObject)
{
sb.append(toString((JSONObject) object));
} else if(object instanceof JSONArray)
{
sb.append(toString((JSONArray) object));
} else
{
sb.append(object.toString());
}
}
} while(i < length);
sb.append('<');
sb.append('/');
sb.append(tagName);
sb.append('>');
}
return sb.toString();
}
/**
* Reverse the JSONML transformation, making an XML text from a JSONObject.
* The JSONObject must contain a "tagName" property. If it has children,
* then it must have a "childNodes" property containing an array of objects.
* The other properties are attributes with string values.
*
* @param jo
* A JSONObject.
* @return An XML string.
* @throws JSONException
*/
public static String toString(JSONObject jo) throws JSONException
{
StringBuilder sb = new StringBuilder();
int i;
JSONArray ja;
String key;
Iterator<String> keys;
int length;
Object object;
String tagName;
String value;
// Emit <tagName
tagName = jo.optString("tagName");
if(tagName == null)
{
return XML.escape(jo.toString());
}
XML.noSpace(tagName);
tagName = XML.escape(tagName);
sb.append('<');
sb.append(tagName);
// Emit the attributes
keys = jo.keys();
while(keys.hasNext())
{
key = keys.next();
if(!"tagName".equals(key) && !"childNodes".equals(key))
{
XML.noSpace(key);
value = jo.optString(key);
if(value != null)
{
sb.append(' ');
sb.append(XML.escape(key));
sb.append('=');
sb.append('"');
sb.append(XML.escape(value));
sb.append('"');
}
}
}
// Emit content in body
ja = jo.optJSONArray("childNodes");
if(ja == null)
{
sb.append('/');
sb.append('>');
} else
{
sb.append('>');
length = ja.length();
for(i = 0; i < length; i += 1)
{
object = ja.get(i);
if(object != null)
{
if(object instanceof String)
{
sb.append(XML.escape(object.toString()));
} else if(object instanceof JSONObject)
{
sb.append(toString((JSONObject) object));
} else if(object instanceof JSONArray)
{
sb.append(toString((JSONArray) object));
} else
{
sb.append(object.toString());
}
}
}
sb.append('<');
sb.append('/');
sb.append(tagName);
sb.append('>');
}
return sb.toString();
}
}
-2072
View File
File diff suppressed because it is too large Load Diff
-21
View File
@@ -1,21 +0,0 @@
package ninja.bytecode.shuriken.json;
/**
* The <code>JSONString</code> interface allows a <code>toJSONString()</code>
* method so that a class can change the behavior of
* <code>JSONObject.toString()</code>, <code>JSONArray.toString()</code>, and
* <code>JSONWriter.value(</code>Object<code>)</code>. The
* <code>toJSONString</code> method will be used instead of the default behavior
* of using the Object's <code>toString()</code> method and quoting the result.
*/
public interface JSONString
{
/**
* The <code>toJSONString</code> method allows a class to produce its own
* JSON serialization.
*
* @return A strictly syntactically correct JSON text.
*/
public String toJSONString();
}

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