9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-28 03:29:06 +00:00

Compare commits

...

3386 Commits

Author SHA1 Message Date
Brian Neumann-Fopiano
5a8ef99afa forgot the overworld , this is the V+ 2023-10-04 03:30:55 -04:00
Brian Neumann-Fopiano
571729cfe4 v+ 2023-10-04 03:24:32 -04:00
Brian Fopiano
c1de316ed6 Merge pull request #1036 from CrazyDev05/teleport
Add Teleport Command
2023-10-04 03:22:29 -04:00
Brian Fopiano
1e316acd64 Merge pull request #1037 from CrazyDev05/jigsaw_piece_mantle_panic_fix
Fix IrisJigsawPiece tectonic plate panic
2023-10-04 03:21:43 -04:00
CrazyDev22
f89460538d Fix NullPointerException 2023-10-03 14:20:40 +02:00
CrazyDev22
0bf0062c2c Fix IrisJigsawPiece tectonic plate panic 2023-10-01 22:28:03 +02:00
CrazyDev22
540d1b5801 Add Color Gradient 2023-10-01 17:45:40 +02:00
CrazyDev22
8f0d1b7b7b Add NullablePlayerHandler
Add Teleport Command
2023-10-01 16:50:50 +02:00
Brian Fopiano
5061791dcf Merge pull request #1034 from RePixelatedMC/master
Fixed - /iris object undo / Added - IrisLootEvent
2023-09-27 08:15:06 -04:00
Brian Fopiano
ce98264552 Merge pull request #1033 from CrazyDev05/jigsaw_loot_fix_2
Better Jigsaw loot fix
2023-09-27 08:14:51 -04:00
RePixelatedMC
15e6750e11 Merge pull request #1
IrisLootEvent
2023-09-27 10:31:43 +02:00
RePixelatedMC
7a20421580 Added IrisLootEvent.java and some debugging to that 2023-09-27 10:15:11 +02:00
RePixelatedMC
f42f06226c Optimized it thx coco 2023-09-25 15:12:45 +02:00
RePixelatedMC
cce3d74c52 Merge remote-tracking branch 'origin/master' 2023-09-25 15:03:41 +02:00
RePixelatedMC
7b9fb880f4 Also changed the color for the /iris o paste cmd 2023-09-25 15:02:33 +02:00
RePixelatedMC
2a9b0a54d9 Merge branch 'VolmitSoftware:master' into master 2023-09-25 14:37:08 +02:00
RePixelatedMC
373e9e9755 Fixed - /iris object undo
also added some colors
2023-09-25 14:30:21 +02:00
BuildTools
4115dd5797 remove debug info 2023-09-18 13:48:19 +02:00
BuildTools
57bfd251dc better fix for jigsaw loot 2023-09-18 13:45:03 +02:00
Brian Neumann-Fopiano
d324790f66 forgot the v+ lol 2023-09-17 15:54:08 -04:00
Brian Fopiano
99d3dba440 Merge pull request #1026 from CocoTheOwner/jigsawRotationFix
Disable initial rotation if set to true
2023-09-17 13:47:51 -04:00
Brian Fopiano
5a44e79ad1 Merge pull request #1022 from CrazyDev05/jigsaw_loot_fix
Jigsaw loot fix
2023-09-17 13:47:26 -04:00
CocoTheOwner
86808017db Disable initial rotation if set to true 2023-09-06 18:24:15 +02:00
CrazyDev22
f735db9843 Fix not finding IrisObjectPlacement for jigsaw structures 2023-09-02 10:31:34 +02:00
CrazyDev22
5a333c23ac Fix Exact BlockData Filter 2023-09-02 10:30:44 +02:00
Brian Neumann-Fopiano
4d2d51edfa v+ 2023-08-31 14:50:49 -04:00
Brian Fopiano
dcfd5a0cd8 Merge pull request #1010 from theDAVID543/master
fix bug
2023-08-31 14:41:28 -04:00
theDAVID543
a821c0da50 fix bug 2023-08-18 11:53:06 +08:00
Brian Neumann-Fopiano
804147e2c4 overworld bump 2023-08-12 11:47:42 -04:00
Brian Neumann-Fopiano
ed346291f9 oops v+ 2023-07-29 06:13:42 -04:00
Brian Fopiano
2190f6eff8 Merge pull request #1003 from CocoTheOwner/better-pregen-pred
Predict the ETA for pregeneration more rapidly
2023-07-29 03:04:07 -07:00
Brian Fopiano
ce30e24e42 Merge pull request #1002 from CocoTheOwner/pregen-center-rescale
Fixes a scaling issue with pregen center
2023-07-29 03:03:27 -07:00
Brian Fopiano
d5e13541c8 Merge pull request #1000 from christolis/fix-macos-build-error
Fix unresolved dependency error
2023-07-29 03:03:11 -07:00
Brian Fopiano
2e707adaa0 Merge branch 'master' into fix-macos-build-error 2023-07-29 03:03:00 -07:00
Brian Fopiano
4d8e36cb05 Update bug.yml 2023-07-24 04:34:17 -04:00
Brian Neumann-Fopiano
73b710cdde oraxen update 2023-07-16 18:46:31 -04:00
Brian Neumann-Fopiano
09182bf3f3 V+ for iris overworld tweaks 2023-07-13 07:09:09 -04:00
CocoTheOwner
9a945837cd Actually just after 1 region is generated switch 2023-07-10 23:09:02 +02:00
CocoTheOwner
b64c821ef4 smooth into the warm-up generator 2023-07-10 23:00:28 +02:00
CocoTheOwner
a9ab3bc519 Predict pregen better 2023-07-10 22:49:50 +02:00
CocoTheOwner
94292cea6e shift pregen center to blocks instead of regions 2023-07-10 18:43:49 +02:00
Christolis
b5fdeb2a02 build: add extra dependency 2023-07-08 00:26:43 +03:00
Brian Neumann-Fopiano
fa3ac36e8c v+ 2023-07-03 23:27:18 -04:00
Brian Neumann-Fopiano
6632d1b65f inc the git 2023-07-03 23:24:55 -04:00
Brian Neumann-Fopiano
8805693800 1.20.1 inital update 2023-06-13 12:18:48 -04:00
Brian Neumann-Fopiano
93db7ee0ee coco's other pr 2023-06-11 14:09:15 -04:00
Brian Fopiano
9ba4dd4099 Merge pull request #995 from CocoTheOwner/printWrongSpawner
Better print information about wrong spawner on marker
2023-06-11 14:00:09 -04:00
Brian Neumann-Fopiano
36efacf43c inc dim 2023-06-11 13:36:35 -04:00
Brian Neumann-Fopiano
d9bf91afa5 1.20 2023-06-11 13:05:23 -04:00
Brian Neumann-Fopiano
b0c96be841 1.20 Baseline 2023-06-07 16:50:44 -04:00
Sjoerd van de Goor
673b08f174 Merge branch 'master' into printWrongSpawner 2023-06-06 19:19:47 +02:00
Sjoerd van de Goor
989778af26 print in case a wrong spawner is specified 2023-06-06 19:18:47 +02:00
Brian Neumann-Fopiano
f5a3a7eb1a wm 2023-06-01 14:11:41 -04:00
Brian Neumann-Fopiano
7a97928c21 added a configurable 2023-05-31 12:19:32 -04:00
Brian Neumann-Fopiano
12a6d022cf other updates! 2023-05-16 23:38:37 -04:00
Brian Neumann-Fopiano
e3d2dfa99e Merge remote-tracking branch 'origin/master' 2023-05-16 23:32:12 -04:00
Brian Neumann-Fopiano
35cc39e9e2 cleanup plugin 2023-05-16 23:32:01 -04:00
Brian Fopiano
006b0b4a03 Update README.md 2023-04-29 18:52:20 -04:00
Brian Neumann-Fopiano
ec939b9f78 updated dependencies 2023-04-25 12:21:11 -04:00
Brian Neumann-Fopiano
7a94f53735 V+ 2023-04-20 00:12:20 -04:00
Brian Neumann-Fopiano
a9efe146ba Probably fixed * 2023-04-13 21:28:46 -04:00
Vatuu
956e2f6b06 Fixed Oraxen integration. 2023-04-13 23:24:12 +02:00
Brian Neumann-Fopiano
72623e0acf V+ 2023-04-12 18:05:47 -04:00
Brian Neumann-Fopiano
e0f673bc3c Overworld Tag update to 3001 2023-04-12 18:05:08 -04:00
Brian Neumann-Fopiano
fe40f12d2e Merge remote-tracking branch 'origin/master' 2023-04-12 18:02:18 -04:00
Brian Fopiano
0fda7a8506 Merge pull request #990 from CrazyDev05/oraxen_implementation_fix 2023-04-11 00:06:06 -04:00
Brian Neumann-Fopiano
22887da769 Added IPECTER's nms line
should fix compiling
2023-04-10 18:14:57 -04:00
Vatuu
a1e0a8ffc1 Fixed ItemsAdder integration. 2023-04-10 19:26:29 +02:00
CrazyDev22
62010116d7 change split limit from '1' to '2' 2023-04-10 13:05:09 +02:00
Brian Neumann-Fopiano
6ebcd02ae6 Fixed the pregen error! 2023-04-08 00:26:05 -04:00
Brian Fopiano
051015656a Merge pull request #986 from CocoTheOwner/re-slope-condition
Patches an issue with slope conditions when placing with commands
2023-04-04 14:00:19 -04:00
Sjoerd van de Goor
ee082762c6 Update object placer to ignore some stuff when using commands 2023-04-03 21:22:08 +02:00
Brian Fopiano
e967b5e052 Merge pull request #982 from CocoTheOwner/re-slope-condition
Reimplement slope condition
2023-04-02 15:39:42 -04:00
Brian Neumann-Fopiano
36505e2fa1 forgot v+ 2023-04-02 15:19:58 -04:00
Vatuu
502aa054f6 🧌 Fixed Color and Seed Issue. 2023-04-02 21:10:44 +02:00
Sjoerd van de Goor
cc5a880fd7 reimplement slope condition 2023-03-29 21:36:18 +02:00
Vatuu
6f9ad8b0eb Update to 1.19.4 2023-03-27 23:24:58 +02:00
Vatuu
ac6ab74d48 🧌 CustomItems support is pretty scuffed. Make it a gradle dependency already. 2023-03-27 23:22:15 +02:00
Brian Neumann-Fopiano
807ed2b247 gradelized patch
I'm not including this until it can be gradle-ized for sake of public compilation
2023-03-16 14:10:32 -04:00
Brian Neumann-Fopiano
367de5a8fd v+ 2023-03-16 14:03:54 -04:00
Vatuu
5bf2da714a Whoops. 2023-03-13 19:28:02 +01:00
Vatuu
cc90f42deb Implement CustomItems support. 2023-03-13 13:19:37 +01:00
Vatuu
20ceaead09 Fixed Oraxen and IA Integration. 2023-03-10 19:08:46 +01:00
Brian Fopiano
3ec2f8fb7b Merge pull request #962 from CocoTheOwner/render-continent-v2
Replace continent renderer with biomeStream
2023-03-05 19:18:54 -05:00
Brian Fopiano
6c5fac154e Merge pull request #975 from CocoTheOwner/mm-fix
Fixed mythicmobs and implements it properly.
2023-03-05 19:18:10 -05:00
Sjoerd van de Goor
540ab8f0d2 If special then unknown default should still be skipped 2023-03-03 23:57:37 +01:00
Brian Fopiano
17d2ac8d70 Merge pull request #973 from CocoTheOwner/spawn-entity
Entity spawn command for testing
2023-03-03 14:38:23 -08:00
Brian Fopiano
a6ebdead19 Merge pull request #966 from CocoTheOwner/update-world-nice
nicer command :)
2023-03-03 14:37:31 -08:00
Brian Fopiano
aa7631ecd0 Merge pull request #974 from CocoTheOwner/copypastafix
Fix copy paste of string gone wrong
2023-03-03 14:37:04 -08:00
Sjoerd van de Goor
4e138cad9f Why 2023-03-03 23:23:19 +01:00
Sjoerd van de Goor
7e55b5fcee Import MM 2023-03-03 23:23:15 +01:00
Sjoerd van de Goor
e19e5278b4 shouldve seen that, oops. 2023-03-03 23:01:09 +01:00
Sjoerd van de Goor
dfcd2dc83e lol 2023-03-03 21:59:42 +01:00
Sjoerd van de Goor
8775f842e6 Spawn command 2023-03-03 21:57:13 +01:00
Sjoerd van de Goor
7b07a4ba6c Location context needed to spawn entities 2023-03-03 21:56:33 +01:00
Sjoerd van de Goor
d78e5973e9 nicer command :) 2023-02-23 19:13:14 +01:00
CocoTheOwner
110d296184 Replace bridge with stream used in /ir what biome 2023-02-17 11:51:27 +01:00
CocoTheOwner
23cd5c117b Replace continent renderer with bridgeStream 2023-02-17 11:25:26 +01:00
CocoTheOwner
131c4692bc Remove DEFER from InferredType
Unused
2023-02-17 11:25:10 +01:00
Brian Neumann-Fopiano
f6571367db v+ oops 2023-02-15 18:41:17 -05:00
Brian Fopiano
f5c64c7480 Merge pull request #960 from CocoTheOwner/render-continent
Continent (i.e. heightmap + ocean/land division) render
2023-02-15 14:47:14 -08:00
Brian Fopiano
085f63a915 Merge pull request #961 from CocoTheOwner/slopes-rotation
Implements slope rotation
2023-02-15 14:46:48 -08:00
Brian Fopiano
3e022e1931 Merge pull request #954 from CocoTheOwner/slopes
Slope condition
2023-02-15 14:46:28 -08:00
Brian Fopiano
0dba3725ae Merge pull request #953 from CocoTheOwner/mm-set-stuff
MM should set its own stuff
2023-02-15 14:44:42 -08:00
Brian Fopiano
8bb409df4e Merge pull request #952 from CocoTheOwner/fix-image-math
Fix image mapping math
2023-02-15 14:44:09 -08:00
Brian Fopiano
603168a147 Merge pull request #951 from CocoTheOwner/fix-decree-conv
Actually check for origin on command invoke
2023-02-15 14:42:57 -08:00
Sjoerd van de Goor
2a95edd860 further documentation and cleaner code 2023-02-15 14:14:26 +01:00
Sjoerd van de Goor
e94406fb45 Implement rotation, remove precise rotation. 2023-02-15 14:05:34 +01:00
Sjoerd van de Goor
e5a7b5d0c6 Reformulate todo 2023-02-15 13:12:34 +01:00
Sjoerd van de Goor
d6f816fe2f Flipped water / land 2023-02-15 13:00:13 +01:00
Sjoerd van de Goor
c15d4a349f map to 255 range 2023-02-15 12:55:43 +01:00
Sjoerd van de Goor
3ce832583c Continent (i.e. heightmap + ocean/land division) render 2023-02-15 12:49:20 +01:00
Sjoerd van de Goor
5514fd2645 Proper ordering 2023-02-08 01:51:39 +01:00
Sjoerd van de Goor
66d07dcaca Revert "Slope condition"
This reverts commit d4c0e07b1d.
2023-02-08 01:35:18 +01:00
Sjoerd van de Goor
c1cf8e88ee That is pretty necessary 2023-02-08 01:33:31 +01:00
Sjoerd van de Goor
684bd739b9 Slope rotation (unfinished) 2023-02-08 01:30:12 +01:00
Sjoerd van de Goor
d4c0e07b1d Slope condition 2023-02-08 01:29:30 +01:00
Sjoerd van de Goor
a6ea6fcfb2 better 2023-02-07 17:39:44 +01:00
Sjoerd van de Goor
c366ec0c40 MM should set its own stuff 2023-02-07 17:26:06 +01:00
CocoTheOwner
8d715e2e4e x != z 2023-02-06 15:43:27 +01:00
CocoTheOwner
dea3ec80ac Fix image mapping math
Fixes snippet code, prevents an NPE, fixes centered for coordinateScale scaled image noises, fixes tiling on negative numbers (-1 % 2 = -1, a free fuck you from java)
2023-02-06 15:39:28 +01:00
CocoTheOwner
4053f05ba9 Actually check for origin on command invoke 2023-02-06 14:58:17 +01:00
Brian Neumann-Fopiano
ef07ec2c62 Datapack Shenanigans 2023-02-04 14:38:30 -05:00
Brian Neumann-Fopiano
0ffc64231b V+ 2023-01-17 12:38:32 -05:00
Brian Neumann-Fopiano
fe112c3ba5 Actuator Cleanup 2023-01-17 12:35:40 -05:00
Brian Neumann-Fopiano
2fa03aac3b Tweaked Min/Max Values 2023-01-17 12:35:26 -05:00
Brian Neumann-Fopiano
6ac5ad880d Simplified 2023-01-17 12:35:13 -05:00
Brian Neumann-Fopiano
54f14392d9 Removed Redundant World Init 2023-01-17 12:35:03 -05:00
Brian Fopiano
c7ecdaf8a8 Merge pull request #944 from ColorsWind/Development
fix issue with `bukkit.yml` world-container option
2023-01-15 12:02:28 -08:00
ColorsWind
497c24a3b6 fix issue with bukkit.yml world-container option 2023-01-05 15:58:57 +08:00
Brian Fopiano
00aa26e602 oops 2022-12-28 13:27:24 -05:00
Brian Fopiano
3796381156 Merge remote-tracking branch 'origin/Development' into Development 2022-12-28 13:23:05 -05:00
Brian Fopiano
b0c5700cf5 Experimental Speedy things with New java 2022-12-28 13:23:00 -05:00
Brian Fopiano
78a4b1d2ce Clean 2022-12-28 13:05:32 -05:00
Brian Fopiano
e5e6b9848f Merge pull request #943 from simon44556/master
- Update ender eye usage to ignore portal frame clicks
2022-12-25 18:06:14 -05:00
simon44556
3e36f57f14 - Update ender eye usage to ignore portal frame clicks 2022-12-25 18:00:17 +01:00
Brian Fopiano
d794ede4d8 Vwoop 2022-12-22 15:09:37 -05:00
Brian Fopiano
7a4d97d76a Version Check? 2022-12-22 14:38:20 -05:00
Brian Fopiano
e76ab1d367 . 2022-12-22 14:23:52 -05:00
Brian Fopiano
9731feff7f hmmm 2022-12-19 20:36:36 -05:00
cyberpwn
4ce790082d Gource is cool 2022-12-11 12:32:05 -05:00
Brian Fopiano
065b748036 Merge pull request #938 from VolmitSoftware/Development
Development
2022-12-09 18:09:21 -08:00
Brian Neumann-Fopiano
76891d246f HUGE changes 2022-12-09 18:05:47 -08:00
Brian Neumann-Fopiano
0832007991 it compiles, not working 2022-12-08 19:40:13 -08:00
Brian Fopiano
87302a046c Merge pull request #933 from VolmitSoftware/Development
Development
2022-11-30 10:07:07 -08:00
Brian Neumann-Fopiano
f0f7453b32 V+ 2022-11-30 10:05:34 -08:00
Brian Neumann-Fopiano
2991bea248 updated pack 2022-11-30 10:04:25 -08:00
Brian Neumann-Fopiano
673b42c2f5 Papi and Biome location better 2022-11-30 08:55:27 -08:00
Brian Neumann-Fopiano
7d994e27e3 "A Biome" changed to be more desctiptive 2022-11-30 08:55:05 -08:00
Brian Fopiano
5f2b82aac7 Merge pull request #926 from VolmitSoftware/Development
Development
2022-11-12 13:34:06 -08:00
Brian Neumann-Fopiano
af1a03cb67 Optimization Overhaul 2022-11-12 13:31:39 -08:00
Vatuu
85fbbeca9d Preparing the POI System. 2022-11-05 15:12:17 +01:00
Brian Fopiano
a64272620f Merge pull request #920 from VolmitSoftware/Development
Development
2022-10-28 13:14:47 -07:00
Brian Neumann-Fopiano
ef9966d02b V+ 2022-10-28 13:07:11 -07:00
Vatuu
a28e5bb38a Updated overworld version. 2022-10-28 22:03:23 +02:00
Vatuu
34670759e9 Fixed eyes of enders not properly targeting strongholds. 2022-10-28 22:02:05 +02:00
Vatuu
7dd1d3881a Fixed strongholds not generating properly. 2022-10-28 22:01:23 +02:00
Brian Fopiano
7b93542014 Merge pull request #916 from VolmitSoftware/Development
Grad
2022-10-21 02:01:15 -07:00
Vatuu
ea1ac0a154 V+ 2022-10-21 08:38:56 +02:00
Vatuu
35c7068fa6 Merge remote-tracking branch 'origin/master' 2022-10-21 08:36:36 +02:00
Vatuu
db4cbb2ea6 Updated overworld tag. 2022-10-21 08:36:11 +02:00
Brian Neumann-Fopiano
fa7c073999 Grad 2022-10-12 03:13:25 -07:00
Brian Fopiano
72a077662d Merge pull request #915 from VolmitSoftware/Development
V+
2022-10-12 02:54:10 -07:00
Brian Neumann-Fopiano
137abb04b2 V+ 2022-10-12 02:52:49 -07:00
Vatuu
211b15332d Code Cleanup, the second. 2022-10-12 07:13:03 +02:00
Brian Fopiano
f6fbcade17 Merge pull request #913 from VolmitSoftware/Development
Development
2022-10-07 18:58:13 -07:00
Brian Fopiano
1ef115fee8 V+ 2022-10-07 18:51:45 -07:00
Vatuu
7973444fc5 Code Cleanup. 2022-10-07 23:58:21 +02:00
Vatuu
2bdb0bfa69 Fixed #901: Longs are now properly parsed by decree. 2022-10-05 04:20:08 +02:00
Vatuu
bfb6f82ea3 Fixed /iris create not installing datapacks. 2022-10-05 04:16:50 +02:00
Brian Fopiano
7729ce3753 Merge pull request #911 from VolmitSoftware/Development
Development
2022-09-30 21:19:06 -07:00
Brian Fopiano
f6ea171669 V+ 2022-09-30 21:18:58 -07:00
tanticle
ff081ebc11 Merge remote-tracking branch 'origin/Development' into Development 2022-09-28 02:41:14 +02:00
tanticle
0818f971fe Added #816: Whitelist and blacklist for decorators. 2022-09-28 02:40:52 +02:00
tanticle
27070f44c7 Fixed block drops. 2022-09-28 02:00:34 +02:00
Brian Fopiano
8331cbe375 Merge pull request #910 from VolmitSoftware/Development
Hotfix
2022-09-25 16:43:11 -07:00
Vatuu
f533ec34b0 Hotfix 2022-09-25 16:42:36 -07:00
Vatuu
23d4fcb827 Hotfix because Brian did a bad 2022-09-26 01:09:08 +02:00
Brian Fopiano
a248962f1b Merge pull request #909 from VolmitSoftware/Development
Development
2022-09-23 20:03:37 -07:00
Vatuu
afa8fad8e9 V+ 2022-09-24 04:54:32 +02:00
Vatuu
4c423bb493 Resolved #878: Certain values in settings are no longer ignored. 2022-09-24 04:52:42 +02:00
Vatuu
e660fe9e1e Resolved #892: Snow no longer replaces objects. 2022-09-24 04:43:47 +02:00
Vatuu
23c1d12e73 Removed deprecated repository. 2022-09-23 14:58:39 +02:00
Brian Fopiano
9cf2785626 Merge pull request #908 from VolmitSoftware/iris-go-fast-but-not-stable
Pregen improvements
2022-09-21 07:27:20 -07:00
Brian Fopiano
b8b65c7e3e Merge pull request #907 from VolmitSoftware/Development
Development
2022-09-21 07:13:01 -07:00
Vatuu
dcb467280a V+ 2022-09-21 01:52:20 +02:00
Vatuu
6aa802b42d Merge remote-tracking branch 'origin/Development' into Development 2022-09-21 01:49:58 +02:00
Vatuu
d78f6ca589 Resolved #900: Remaining time in days corrected. 2022-09-21 01:48:53 +02:00
Vatuu
493f8e0cc0 Resolved #897: Adjusted Y-Offset 2022-09-21 01:12:35 +02:00
Vatuu
119563c553 Resolved #871: Removed /iris std clean 2022-09-20 23:55:18 +02:00
cyberpwn
2d61e6af66 Pregen improvements 2022-09-16 09:09:23 -04:00
Brian Fopiano
aa1be934a9 Merge pull request #899 from VolmitSoftware/iris-go-fast-but-not-stable
Jesus Fucking Christ
2022-09-16 02:05:01 -07:00
Brian Fopiano
f9c98b0a60 Needs to be Sync now 2022-09-16 01:52:17 -07:00
Brian Fopiano
bd66fa3bf5 Tag Bump 2022-09-16 00:50:38 -07:00
Brian Fopiano
380f191f6a V+ 2022-09-16 00:48:27 -07:00
cyberpwn
7e217b5fba More permits 2022-09-16 03:40:31 -04:00
cyberpwn
c4a516a858 f 2022-09-16 03:37:36 -04:00
cyberpwn
bdf181e348 ff 2022-09-16 03:28:47 -04:00
cyberpwn
f4ea1343b4 m 2022-09-16 03:27:32 -04:00
cyberpwn
a37ccddd38 f 2022-09-16 03:26:23 -04:00
cyberpwn
243ef8c0be f 2022-09-16 03:24:56 -04:00
cyberpwn
00d099383b Fix 2022-09-16 03:22:56 -04:00
cyberpwn
dda3f0b8e9 Mhmmmmm 2022-09-16 03:16:57 -04:00
cyberpwn
00f4d8b1ee Hmm? 2022-09-16 03:16:04 -04:00
cyberpwn
2f5198d533 Safe 2022-09-15 02:35:34 -04:00
cyberpwn
148261f876 Dirrrrrrrrrrrrty 2022-09-15 02:32:29 -04:00
cyberpwn
60843b3bb9 f 2022-09-14 13:30:39 -04:00
DanMB
2ad9a525bd Biome holder injection post gen 2022-09-14 03:56:06 -04:00
DanMB
78e9f21439 f 2022-09-13 23:32:11 -04:00
DanMB
a66d60eaea woah 2022-09-13 23:06:52 -04:00
DanMB
3aa3c13477 Test speed 2022-09-13 22:55:26 -04:00
cyberpwn
cc850522e6 BRRRRRRRRRRRRRRRRRRR 2022-09-13 09:29:07 -04:00
Brian Fopiano
6d28f57f88 Merge pull request #894 from VolmitSoftware/master
d
2022-09-12 16:00:36 -07:00
Brian Fopiano
563e0a7cd4 V+ 2022-09-12 16:00:14 -07:00
Brian Fopiano
2f2f857e98 Merge pull request #893 from VolmitSoftware/Development
Development
2022-09-12 15:59:20 -07:00
cyberpwn
251c52a2ee Fix cave mod engine npe 2022-09-12 17:26:14 -04:00
cyberpwn
7528bd343b 3x 2022-09-12 07:06:45 -04:00
cyberpwn
06d9f279ac f 2022-09-11 23:00:15 -04:00
cyberpwn
044403b829 Fix incorrect object positions 2022-09-11 21:31:21 -04:00
Brian Fopiano
5a24dd3b49 Revert "Revert "Eat me""
This reverts commit 3189b3c7a5.
2022-09-11 21:00:55 -04:00
Brian Fopiano
3189b3c7a5 Revert "Eat me"
This reverts commit da777da476.
2022-09-11 21:00:38 -04:00
cyberpwn
3bf1c6a282 Merge remote-tracking branch 'origin/Development' into Development 2022-09-11 20:59:04 -04:00
cyberpwn
7c7309c3ab Unload mantle when not generating 2022-09-11 20:58:58 -04:00
Brian Fopiano
da777da476 Eat me 2022-09-11 17:57:08 -07:00
cyberpwn
3d0c0a11ed Merge remote-tracking branch 'origin/Development' into Development 2022-09-10 02:04:58 -04:00
cyberpwn
e545269b93 Even less waste work & prefetch caching 2022-09-10 02:03:59 -04:00
Brian Fopiano
141ca76647 Merge pull request #890 from VolmitSoftware/Development
Development
2022-09-09 18:05:56 -07:00
Brian Fopiano
94557830f5 v+ 2022-09-09 18:02:21 -07:00
Vatuu
49acb7faba Merge remote-tracking branch 'origin/Development' into Development 2022-09-09 21:42:53 +02:00
Vatuu
1904f67662 Fixed Issue #864: Mantle not retaining object placements. 2022-09-09 19:48:23 +02:00
Vatuu
5b2bf38344 Fixed Issue #884: Cache freaking out on global override. 2022-09-09 18:10:52 +02:00
cyberpwn
494c38a153 Merge remote-tracking branch 'origin/Development' into Development 2022-09-09 01:25:16 -04:00
cyberpwn
dd4b85cbfe Fixes 2022-09-09 01:24:20 -04:00
Brian Fopiano
8f7b54a5a4 Merge pull request #889 from VolmitSoftware/Development
Development
2022-09-08 17:26:41 -07:00
Vatuu
cec502340e V+ 2022-09-09 01:15:53 +02:00
Vatuu
64e27c7fb0 Disabled blockdrops as hotfix. 2022-09-09 01:15:07 +02:00
cyberpwn
b2bbd31548 Disable multicore chunks 2022-09-07 17:07:34 -04:00
Brian Fopiano
17df92a07c Merge pull request #887 from VolmitSoftware/Development
Development
2022-09-06 20:55:18 -07:00
Brian Fopiano
2b749b5ab7 NMS update / Compile 2022-09-06 20:51:59 -07:00
cyberpwn
28e3402d88 r 2022-09-05 14:17:56 -04:00
cyberpwn
d96bb061e0 Update repo 2022-09-05 14:14:50 -04:00
Brian Fopiano
e6def804f8 Merge pull request #883 from VolmitSoftware/Development
Development
2022-09-02 17:48:22 -07:00
Vatuu
a5be48c07c V+ 2022-09-02 23:35:38 +02:00
Vatuu
fe3909f594 Fixed block drops not firing for biomes. 2022-09-02 23:32:51 +02:00
Vatuu
f37d91a530 Fixed loot table object override not working. 2022-09-02 23:26:47 +02:00
Vatuu
614ef78771 Fixed reliance on outdated spigot api version. 2022-09-02 20:32:17 +02:00
Brian Fopiano
fb294fc03c Merge pull request #879 from VolmitSoftware/Development
Changelog:

- Fixed Vines, Again! for Floors
- Merged stability changes
- Made the folder checking system recursive
2022-08-30 10:20:38 -07:00
Vatuu
8c7e7c3d48 Merge remote-tracking branch 'origin/Development' into Development 2022-08-30 19:15:16 +02:00
Vatuu
98b6280652 V+ 2022-08-30 19:15:05 +02:00
Vatuu
7c4c2d6382 Fixed autocomplete only going two dirs deep. 2022-08-30 19:14:28 +02:00
Vatuu
1a29ea302e Fixed vines not properly generating using decorators. 2022-08-30 18:06:17 +02:00
Brian Fopiano
be39fce741 Merge pull request #876 from VolmitSoftware/Development
Changelog:

Fixed Versioning compilation issues
Forceblock nolonger Crashes
Forceblock Works now (as intended, as far as we can tell)
2022-08-26 16:10:38 -07:00
Brian Fopiano
4fed2e6e5f Merge branch 'master' into Development 2022-08-26 16:10:26 -07:00
Vatuu
14ae5809b0 Forceblock now properly works. 2022-08-26 19:05:33 +02:00
Vatuu
0f66aa47c9 Reverted generator change 2022-08-26 18:36:09 +02:00
Vatuu
cf85d300f4 Solving seed collisions on generators? 2022-08-26 17:54:56 +02:00
Vatuu
91d60e56df Fixed jar using the wrong version. 2022-08-26 17:27:49 +02:00
Brian Fopiano
1d3681beb4 Merge pull request #872 from VolmitSoftware/Development
Development
2022-08-23 18:51:22 -04:00
Vatuu
0b403cf329 Merge remote-tracking branch 'origin/Development' into Development 2022-08-23 17:22:17 +02:00
Vatuu
8ba75899e3 Fixed block drops. 2022-08-23 17:21:54 +02:00
Vatuu
4d4ed72159 _Maybe_ fixed mantle not retaining after restart? 2022-08-23 17:19:16 +02:00
Vatuu
b72bf072b3 _Maybe_ fixed mantle not retaining after restart? 2022-08-23 17:11:28 +02:00
Vatuu
4edcb54b31 Fixed /iris what biome not working. 2022-08-23 15:51:04 +02:00
Brian Fopiano
eae7fc0e53 V+ 2022-08-18 19:00:47 -07:00
Brian Fopiano
fddacd4410 Merge pull request #863 from VolmitSoftware/Development
Development Update
2022-08-18 19:00:04 -07:00
Brian Fopiano
de6c4b9a30 Merge remote-tracking branch 'origin/Development' into Development 2022-08-17 20:22:04 -07:00
Brian Fopiano
6990e34138 Removed SoftDepends, Fixed Auth 2022-08-17 20:21:59 -07:00
DanMB
d9883697ef Change dep to match nms version var 2022-08-16 19:14:35 -07:00
Brian Fopiano
05a26ff8b2 Revert "helping with version Nomners"
This reverts commit 0765c21cef.
2022-08-16 16:01:36 -07:00
Brian Fopiano
84bb082d44 Merge pull request #856 from VolmitSoftware/Development
Development
2022-08-16 13:06:00 -07:00
Brian Fopiano
a0db94d84f Merge branch 'master' into Development 2022-08-16 13:05:54 -07:00
Brian Fopiano
0367b4ecd7 v+ 2022-08-16 13:04:27 -07:00
Vatuu
dbc425dce6 Added autocomplete for enchantment types. 2022-08-16 16:08:25 +02:00
Vatuu
116c017c6d Fixed enchantments not applying to loot. 2022-08-16 15:45:48 +02:00
Vatuu
9c387475f0 Cleaned up IrisLoot. 2022-08-16 15:21:18 +02:00
Brian Fopiano
0765c21cef helping with version Nomners 2022-08-13 03:20:42 -07:00
Brian Fopiano
2871038584 v+ 2022-08-12 15:43:39 -07:00
Brian Fopiano
340885f939 Merge pull request #849 from VolmitSoftware/Development
Development
2022-08-12 15:43:09 -07:00
Vatuu
1e32e47f54 Merge remote-tracking branch 'origin/Development' into Development 2022-08-13 00:37:59 +02:00
Vatuu
3c759f3b01 Kinda fixed vine issues with PAINT. 2022-08-13 00:37:42 +02:00
DanMB
6615f34d20 Merge remote-tracking branch 'origin/Development' into Development 2022-08-12 08:05:53 -07:00
DanMB
3a4aac1ee4 Get all 2022-08-12 08:05:48 -07:00
Brian Fopiano
4d6c092615 Performance... 2022-08-11 18:34:38 -07:00
DanMB
93421a1dc9 An attempt 2022-08-11 18:18:00 -07:00
Brian Fopiano
209458a856 Merge pull request #847 from VolmitSoftware/Development
Development update
2022-08-09 13:50:26 -07:00
DanMB
82bd94620e Lock biomes first before generating to help cache 2022-08-07 16:10:49 -07:00
DanMB
af9f017871 Hold your horses pregenerator 2022-08-07 16:09:36 -07:00
Brian Fopiano
2f8922ea87 Updating Version and NMS 2022-08-07 14:14:39 -07:00
Brian Fopiano
0ea936f3fe Merge pull request #845 from VolmitSoftware/Development
Development
2022-08-04 08:50:17 -07:00
Brian Fopiano
d1870ee0a8 V+ 2022-08-04 08:43:03 -07:00
Vatuu
d2151690ad Fixed pregen memory leak. 2022-08-04 00:27:33 +02:00
Brian Fopiano
dff373e7d5 Merge pull request #843 from CocoTheOwner/sortedNoise
sort noise
2022-07-30 16:23:45 -07:00
CocoTheOwner
0aec2a664f sort noise 2022-07-30 22:19:02 +01:00
Brian Fopiano
723b696393 Merge pull request #838 from VolmitSoftware/Development
Development
2022-07-29 10:04:58 -07:00
Brian Fopiano
f5f89eb4e4 Merge branch 'master' into Development 2022-07-29 10:04:53 -07:00
Brian Fopiano
df15332c7f Merge pull request #832 from CocoTheOwner/noWarn
Remove warning on create
2022-07-29 10:04:22 -07:00
Vatuu
61d9e5a869 V+ 2022-07-29 19:03:18 +02:00
Brian Fopiano
9628b66a97 Merge pull request #837 from VolmitSoftware/Development
Development Update
2022-07-29 10:02:04 -07:00
Vatuu
5e041366d4 Update to 1.19.1 2022-07-28 18:29:01 +02:00
Vatuu
3ecae8d72c Removed debug printout. 2022-07-28 17:45:51 +02:00
Vatuu
5709ce9d82 Fixed the QOL command being a bitch. 2022-07-28 15:54:31 +02:00
Vatuu
ce3c334ac5 Fixed vines and derivatives not placing properly in objects. 2022-07-27 19:35:18 +02:00
Vatuu
2ed5aa8730 Removed leftover debug message. 2022-07-26 21:41:06 +02:00
Vatuu
8480a63dda Fixed sculk veins not being recognized as vines. 2022-07-26 21:40:28 +02:00
CocoTheOwner
132a1695f3 Bey 2022-07-24 14:20:12 +01:00
Brian Fopiano
21775630c3 Merge pull request #830 from VolmitSoftware/Development
Development
2022-07-21 19:38:44 -07:00
Brian Fopiano
eac2ef7c6d V+ 2022-07-21 19:38:14 -07:00
Vatuu
386997f646 Added forceBlock field for surface decorator. 2022-07-22 02:18:37 +02:00
Vatuu
637b90ad62 Fixed stilted facing blocks not rotating. 2022-07-22 02:06:44 +02:00
Vatuu
95d755c2ec Fixed underwater structures not being waterlogged. 2022-07-22 02:06:00 +02:00
Brian Fopiano
781aeebef6 Merge pull request #826 from CDFN/patch-1
Update bug template for 1.19
2022-07-17 13:17:56 -07:00
Brian Fopiano
5e133fd51a Merge pull request #827 from CocoTheOwner/commands
Add /iris remove command
2022-07-17 13:03:58 -07:00
Brian Fopiano
85f62a3b9d we really cant do this override 2022-07-17 11:08:02 -07:00
DanMB
a32de58c8b Lazy pregen 2022-07-17 08:52:56 -07:00
Brian Fopiano
1cb2ea6c17 Merge pull request #829 from VolmitSoftware/Development
Development
2022-07-16 15:46:30 -07:00
CocoTheOwner
6a37ab7af2 sync world unload 2022-07-16 12:39:42 +02:00
CocoTheOwner
e0f0aaf767 Add remove command 2022-07-16 12:36:28 +02:00
Vatuu
3d7c5b050a Revert "Revert "Added convenience command.""
This reverts commit 6bc57c255f.
2022-07-16 12:33:39 +02:00
Vatuu
6bc57c255f Revert "Added convenience command."
This reverts commit 6b32eb3441.
2022-07-16 11:53:40 +02:00
Vatuu
b82edfe688 V+ 2022-07-16 02:55:59 +02:00
Vatuu
6b32eb3441 Added convenience command. 2022-07-16 02:52:06 +02:00
Vatuu
23a07fa8a5 Fixed vines and glow lichen not generating properly. 2022-07-16 02:41:03 +02:00
Vatuu
b019faedd2 Made the creator not error without a sender. 2022-07-15 20:02:26 +02:00
Bartosz Stefańczyk
4430433a10 Update bug template for 1.19 2022-07-15 16:05:15 +02:00
Brian Fopiano
f52cd29e7b Merge pull request #821 from VolmitSoftware/Development
Development
2022-07-07 14:23:57 -07:00
Vatuu
6a44e593a6 V+ 2022-07-07 23:04:32 +02:00
Vatuu
f7065fe034 Datenpackete werden nun in allen registrierten Welten generiert. 2022-07-07 22:54:54 +02:00
Vatuu
0a247956f7 Fixed colour and printout. 2022-07-07 22:28:59 +02:00
DanMB
03836acded ffff 2022-07-07 13:12:59 -07:00
Brian Fopiano
b5fb277982 Merge pull request #819 from VolmitSoftware/Development
Development update 2.2.2
2022-07-01 16:11:20 -07:00
Vatuu
e523d3c166 V+ 2022-07-02 01:04:39 +02:00
Vatuu
41477e4aa6 Made the overworld use releases instead. (Hack) 2022-07-02 01:03:18 +02:00
Vatuu
fbaf42a8c4 Merge remote-tracking branch 'origin/Development' into Development 2022-07-01 21:00:17 +02:00
Vatuu
1c3668047b Fixed PlaceholderAPI issues. 2022-07-01 20:59:54 +02:00
Vatuu
7d78c69b6e /iris create now registers to bukkit.yml 2022-07-01 18:40:13 +02: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
CocoTheOwner
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
Andrew Baker
ecaa388bbe V+ for release 2021-03-29 10:26:24 -07:00
Andrew
4cfdc5bf30 Merge pull request #327 from stijnb1234/master
General cleanup
2021-03-15 10:40:17 -07:00
Andrew Baker
ed1090430a Re-add issue templates
Took 4 minutes
2021-03-15 10:39:12 -07:00
stijnb1234
3322cd73ea Readded packignore.ignore and added release/ to .gitignore 2021-03-15 17:35:16 +01:00
stijnb1234
824f6ac4aa Readded Iris.iml again 2021-03-15 17:22:39 +01:00
stijnb1234
d5dfa89fdd .gitignore fix 2021-03-15 17:21:48 +01:00
stijnb1234
9628a98568 Readded Iris.iml to resolve conflict 2021-03-15 17:21:29 +01:00
Andrew Baker
cc3428d24b Cleanup
Took 1 minute
2021-03-15 09:16:12 -07:00
stijnb1234
fe684e9bbd .gitignore update 2021-03-15 17:15:46 +01:00
stijnb1234
f31ea9b7cf General cleanup 2021-03-15 17:15:25 +01:00
Andrew Baker
7eeebb66ab Remove gource 2021-03-15 09:11:06 -07:00
Andrew Baker
e4f53c1daf Remove unused obfuscators 2021-03-15 09:08:39 -07:00
Andrew Baker
98bd58a92c Prepare for OS
Took 47 minutes
2021-03-13 13:09:57 -08:00
CocoTheOwner
f9a7c12620 Update PlannedStructure.java 2021-03-10 16:20:30 +01:00
CocoTheOwner
d04223e174 Revert "Update IrisJigsawPieceConnector.java"
This reverts commit e71c514ef6.
2021-03-10 16:13:29 +01:00
CocoTheOwner
e71c514ef6 Update IrisJigsawPieceConnector.java 2021-03-10 16:13:22 +01:00
CocoTheOwner
57b089ac89 Add entityCount in jigsaw, add chance in object replace 2021-03-10 13:04:34 +01:00
CocoTheOwner
b97ff6fe14 DevV+ 2021-03-10 13:04:08 +01:00
CocoTheOwner
c57ac4c9fe Remove villager building cancelling check
This reintroduces villages but they can spawn in the water
2021-03-10 10:52:01 +01:00
CocoTheOwner
9cf60ca227 Add more command aliases 2021-03-10 10:51:40 +01:00
CocoTheOwner
8c9684e35c Remove blindness when failed studio create 2021-03-09 23:27:04 +01:00
CocoTheOwner
00854e2ea7 Reduce blindess duration 2021-03-09 23:26:40 +01:00
CocoTheOwner
dcae312d2c DevV+ 2021-03-09 23:26:26 +01:00
CocoTheOwner
963a851382 Remove confusion effect when creating studio worlds 2021-03-09 20:54:48 +01:00
CocoTheOwner
1d233c5250 DevV+ 2021-03-09 20:54:38 +01:00
CocoTheOwner
34919ec961 Cleanup and prevent crash error 2021-03-09 20:36:05 +01:00
CocoTheOwner
d15228656f Move potion effects so they dont trigger on accident 2021-03-09 20:34:57 +01:00
CocoTheOwner
dd20a06f80 Make sure sender is player before applying effects 2021-03-09 15:21:25 +01:00
CocoTheOwner
a4bbad3243 Prevent opening desktop when in headless mode 2021-03-09 15:21:09 +01:00
CocoTheOwner
343ae99b54 Warn for smoothie's illegal reflective access 2021-03-09 15:20:55 +01:00
CocoTheOwner
41d1714d28 Cleanup and prevent some potential NPEs 2021-03-09 13:41:38 +01:00
CocoTheOwner
c20a2ecd9a Add 'd' to object dust command alias list 2021-03-09 10:30:56 +01:00
CocoTheOwner
b609daf89d DevV+ 2021-03-09 09:56:25 +01:00
CocoTheOwner
f1cdcdaf3e Move commands into folders 2021-03-09 09:56:21 +01:00
CocoTheOwner
01da323ddb Add effects to creating studio worlds 2021-03-08 23:06:14 +01:00
CocoTheOwner
9675a608a8 DevV+ 2021-03-08 22:24:39 +01:00
CocoTheOwner
8231f28ded Prevent NPE and fix stupid typo 2021-03-08 22:01:36 +01:00
CocoTheOwner
772ecea71a Update gen message 2021-03-08 20:48:44 +01:00
CocoTheOwner
63a74f2dc9 Prevent editbiome in non-studio world 2021-03-08 18:51:00 +01:00
CocoTheOwner
4f3286f520 Replace stacktrace spam with warning 2021-03-08 18:50:49 +01:00
CocoTheOwner
26ca025070 Requrienonnull and remove info 2021-03-08 18:50:39 +01:00
CocoTheOwner
49b1c553ba Min bore ex y to -1 2021-03-08 18:50:28 +01:00
CocoTheOwner
55948d5b79 Fix tooltip 2021-03-08 18:50:13 +01:00
CocoTheOwner
3aeee71873 RequireNonNull & ignore 2021-03-08 18:50:07 +01:00
CocoTheOwner
d669e733cd Updating -> Building workspace 2021-03-08 18:49:54 +01:00
CocoTheOwner
d9af34ee81 Non-negative blockdata getters 2021-03-08 18:49:45 +01:00
CocoTheOwner
8649dbda35 DevV+ 2021-03-08 18:49:26 +01:00
CocoTheOwner
c7d05fbdb1 Remove cave modified. It's bad 2021-03-08 15:24:49 +01:00
CocoTheOwner
f2cfd50a44 Patch cave gen enhancement 2021-03-08 15:14:26 +01:00
CocoTheOwner
a8146a2e81 More information on recursive and other parallax object placement issues 2021-03-08 15:14:13 +01:00
CocoTheOwner
d166cc2a4a Add desciption & cleanup 2021-03-07 12:16:35 +01:00
CocoTheOwner
4558cb4846 Modify message for hotloading 2021-03-07 12:13:43 +01:00
CocoTheOwner
143349be3a Add desc to dimension field 2021-03-07 12:13:19 +01:00
CocoTheOwner
82ac92dfed Remove biome specific fluid type 2021-03-07 11:01:58 +01:00
CocoTheOwner
2643eb2e37 Reduce studio world pregen size and increase update frequency 2021-03-07 11:01:41 +01:00
CocoTheOwner
ac03b9f539 Set player gamemode to spectator when tping to studio 2021-03-07 11:01:24 +01:00
CocoTheOwner
a4370ba55a Remove objects from iris goto 2021-03-07 11:01:11 +01:00
CocoTheOwner
7aa4a01355 DevV+ 2021-03-06 17:03:09 +01:00
CocoTheOwner
349a9de592 Add s to studio aliases 2021-03-06 16:48:48 +01:00
CocoTheOwner
58c0b45ac8 Update IrisCaveModifier.java 2021-03-06 16:40:08 +01:00
CocoTheOwner
af0a923210 Patch 2021-03-06 16:39:59 +01:00
CocoTheOwner
9bcaeee794 Prevent caves from breaching ground in biomes with gen.min below sea 2021-03-06 16:39:06 +01:00
CocoTheOwner
b6d8771792 Patch locate overwrite 2021-03-06 16:18:13 +01:00
CocoTheOwner
f5fed50e4d DevV+ 2021-03-06 16:00:54 +01:00
CocoTheOwner
5a00f56a39 Disable regen command (again) 2021-03-06 15:32:13 +01:00
CocoTheOwner
0bb48f8af0 Warn when not specifying object with jig place 2021-03-06 15:04:16 +01:00
CocoTheOwner
f3ceda1b3d Add entity spawn location setting
Also prevents entities from spawning when a building was not spawned
2021-03-06 14:54:28 +01:00
CocoTheOwner
24c4cbe901 DevV+ 2021-03-06 13:00:30 +01:00
CocoTheOwner
26e2b2507d Attempt getting sky biome, into ground, into derivative 2021-03-06 12:58:48 +01:00
CocoTheOwner
d3378c638a Add small inc/decr to chance to prevent line artifacts 2021-03-06 12:58:30 +01:00
CocoTheOwner
aa90274cc2 Prevent NPE with getting compound (may not exist) 2021-03-06 12:58:17 +01:00
CocoTheOwner
d0a281c116 Fix getgroundbiome to get ground biome not sky 2021-03-06 12:58:05 +01:00
CocoTheOwner
4cbf192e74 Update Interpolated.java
Reimplement blockdata (drop 1.15 for this to not cause issues with that version, because it will...)
2021-03-06 11:18:52 +01:00
CocoTheOwner
1edafc40d0 Properly rethrow an NPE so it doesn't get stuck in labda 2021-02-28 18:09:45 +01:00
CocoTheOwner
6a4a25db40 remove debug prints & add warning, replace throwable with exception 2021-02-28 17:52:54 +01:00
CocoTheOwner
e5ca66305c Send more info on startup (java version etc) 2021-02-28 16:34:18 +01:00
CocoTheOwner
3250566949 First step towards finding objects 2021-02-28 15:34:26 +01:00
CocoTheOwner
4ced362dd0 Comment out block data from Interpolated 2021-02-28 15:28:53 +01:00
CocoTheOwner
4b87ac2907 Prevent NPE in Data Manager 2021-02-28 15:27:35 +01:00
CocoTheOwner
44e1b8f159 See description
- Catch /locate to be rerouted to /ir std goto
- Add "/ir locate", also directly points to /ir std goto
2021-02-28 15:27:24 +01:00
CocoTheOwner
81b1f06eec Replace studio TP command to prevent overlap with goto 2021-02-28 15:23:33 +01:00
CocoTheOwner
441d36e2e3 Remove unused import 2021-02-28 15:22:49 +01:00
CocoTheOwner
7cba76b1e8 Fix typo 2021-02-27 18:19:46 +01:00
CocoTheOwner
c3304a78fb Give tips when facing issue with downloading pack 2021-02-27 14:35:02 +01:00
CocoTheOwner
e6113b4aa1 Add strongholds (POG) 2021-02-26 12:28:58 +01:00
CocoTheOwner
044c7f997d Typo 2021-02-26 12:13:40 +01:00
CocoTheOwner
abfba739a8 Prevent NPE when getting Engine 2021-02-26 10:13:32 +01:00
CocoTheOwner
cec67484e5 Prevent NPE when world already exists 2021-02-25 10:03:22 +01:00
CocoTheOwner
aafed9b1b7 Prevent NPE by not checking hotloader when null 2021-02-25 09:46:55 +01:00
CocoTheOwner
552a87462a Revert "Revert "Merge branch 'master' of https://github.com/VolmitSoftware/IrisPlugin""
This reverts commit 4c8013e6d2.
2021-02-24 23:15:49 +01:00
CocoTheOwner
4c8013e6d2 Revert "Merge branch 'master' of https://github.com/VolmitSoftware/IrisPlugin"
This reverts commit 4f5efba173, reversing
changes made to e0c94af535.
2021-02-24 23:15:42 +01:00
CocoTheOwner
4f5efba173 Merge branch 'master' of https://github.com/VolmitSoftware/IrisPlugin 2021-02-24 23:15:17 +01:00
CocoTheOwner
e0c94af535 V+ 2021-02-24 23:15:07 +01:00
Andrew
a8ff0b5e62 Create LICENSE.md 2021-02-24 13:35:56 -08:00
CocoTheOwner
21a6a19caf Prevent stack-trace spam when placing tile entities where none exist
Improper fix but it suppresses the harmless error.
2021-02-24 18:26:49 +01:00
CocoTheOwner
b1d25ec35c Patch NPE 2021-02-23 21:01:19 +01:00
CocoTheOwner
685de56fbb Add proper getval to iris create 2021-02-23 21:00:55 +01:00
CocoTheOwner
e8adb7d533 Oops 2021-02-23 20:45:04 +01:00
CocoTheOwner
c2af0e8b48 Fix /0 error (It's a poor fix but it works) 2021-02-23 20:13:38 +01:00
CocoTheOwner
8ea7b09482 Replace hint by query
Why would you call this hint???
2021-02-11 11:25:16 +01:00
CocoTheOwner
5180d1a17a Clean up environment getting 2021-02-11 11:21:14 +01:00
CocoTheOwner
d7e3493a59 Add get region name 2021-02-11 11:20:57 +01:00
CocoTheOwner
5ea0a53995 Remove required, add getEnv, hasFocus and getFocus 2021-02-11 11:20:47 +01:00
CocoTheOwner
dd4c66dbd8 remove unused variables 2021-02-11 11:20:22 +01:00
CocoTheOwner
0e8c2476b2 Add warning for creating worlds without MV or bukkit 2021-02-11 10:17:44 +01:00
CocoTheOwner
53fdcce361 Patch /locate override, reverting cosmetic changes that caused issues. 2021-02-07 20:22:15 +01:00
CocoTheOwner
a4a8d78b1f Fix index out of bounds error x2 2021-02-07 18:15:05 +01:00
CocoTheOwner
8b7bb7faa2 Fix index out of bounds error 2021-02-07 18:08:23 +01:00
CocoTheOwner
28430cc1c3 Fix /locate command override 2021-02-07 12:52:07 +01:00
CocoTheOwner
672f2d717d V+ 2021-02-07 11:35:06 +01:00
CocoTheOwner
8362800a54 Add pregen alternative worlds to tab options 2021-02-07 11:17:52 +01:00
CocoTheOwner
731908c265 Make pregen updates look better 2021-02-07 11:14:11 +01:00
CocoTheOwner
3eb864deb9 Add functionality for pregenerating from console and specifying a world you're not in 2021-02-07 11:06:08 +01:00
CocoTheOwner
cb27043d12 Give tooltip upon not finding pack to download it 2021-02-07 10:36:28 +01:00
CocoTheOwner
5b90fce1f5 Catch hosted server with gui 2021-02-03 16:09:14 +01:00
CocoTheOwner
7f49ee3db6 Update CommandLocate.java 2021-02-03 16:08:57 +01:00
CocoTheOwner
72b645916f Give error when using hosted server & gui. 2021-02-03 16:08:53 +01:00
CocoTheOwner
4700c3711c Create CommandLocate.java 2021-01-31 02:13:29 +01:00
CocoTheOwner
feaf21c702 Fix compat error by continuing the throw from Java's fileReader class 2021-01-30 17:21:59 +01:00
CocoTheOwner
4fa8fff3db Fix compat error by continuing the throw from Java's fileReader class 2021-01-30 16:42:07 +01:00
CocoTheOwner
4e670f85f5 Fix compat error 2021-01-30 16:34:08 +01:00
CocoTheOwner
11a484714a Fix "boar" instead of "bore", lol 2021-01-30 15:04:50 +01:00
CocoTheOwner
6c425947bf Fix max items computed in .code-workspace files 2021-01-30 13:19:00 +01:00
CocoTheOwner
e06d34f546 Fix translation not affecting bore 2021-01-30 02:12:57 +01:00
CocoTheOwner
9ffd0dcdbe Merge remote-tracking branch 'origin/master' into master 2021-01-30 00:53:28 +01:00
CocoTheOwner
0ce51709da Fix java 11 incompatibility 2021-01-30 00:52:47 +01:00
CocoTheOwner
073944dd96 Fix java 11 incompatibility 2021-01-30 00:52:27 +01:00
Daniel Mills
874589c772 Merge remote-tracking branch 'origin/master' 2021-01-28 00:28:57 -05:00
Daniel Mills
4a05031a0f Jigsaw fixes 2021-01-28 00:28:55 -05:00
CocoTheOwner
38185ef2f1 consistency 2021-01-15 12:39:41 +01:00
Daniel Mills
66dde6c215 V+ 2021-01-14 14:57:21 -05:00
Daniel Mills
a438817d00 Support rotating orientable blocks 2021-01-14 14:53:04 -05:00
Daniel Mills
a92e651b43 Fix chance stream for objects 2021-01-14 08:40:53 -05:00
Daniel Mills
618da86b44 sync copy op in objects 2021-01-14 08:37:52 -05:00
Daniel Mills
46d810eddf Parallax optimization for jigsaw radii 2021-01-14 08:37:40 -05:00
Daniel Mills
031601bfa6 Fix cache miss positonal features 2021-01-14 08:37:26 -05:00
Daniel Mills
bb5f777cea Cache feature distances 2021-01-14 08:37:15 -05:00
Daniel Mills
fa6c2fb63e Tile data support ids 2021-01-14 08:37:07 -05:00
Daniel Mills
d561348c4f Insert tile entity support 2021-01-14 08:36:57 -05:00
Daniel Mills
c290dba3bb use KMaps for mapped hunks (cme issues) 2021-01-14 08:36:42 -05:00
Daniel Mills
1477180fa5 Use mapped hunks for parallax slices (performance on insertion improved) 2021-01-14 08:36:28 -05:00
Daniel Mills
6cd4b7c433 Improve rotation performance for worlds using jigsaw 2021-01-14 08:36:04 -05:00
Daniel Mills
36f56c2040 Fix npe object for pieces 2021-01-14 08:35:52 -05:00
Daniel Mills
f763cc4020 Use copy on write array for feature lists 2021-01-14 08:35:37 -05:00
Daniel Mills
180d2addd0 Support klists of runnables for bursting multicore 2021-01-14 08:35:25 -05:00
Daniel Mills
8fe21d6d05 fix util method no need for xz 2021-01-14 08:35:12 -05:00
Daniel Mills
3274fb9615 V+ 2021-01-14 08:35:00 -05:00
Daniel Mills
1c5863e6de Tile data in the parallax layer 2021-01-13 09:45:01 -05:00
Daniel Mills
60b424c101 Pasdte tile data 2021-01-13 09:44:54 -05:00
Daniel Mills
2a51454682 Parallax support tile data 2021-01-13 09:44:49 -05:00
Daniel Mills
1d052231f0 Tile Data IO 2021-01-13 09:44:40 -05:00
Daniel Mills
f120c41518 Pasting and loading tile types 2021-01-13 09:33:49 -05:00
Daniel Mills
30b8619dd1 "Spawner Support" 2021-01-13 09:33:40 -05:00
Daniel Mills
1e832ed0eb Pasting & loading tile data support 2021-01-13 09:06:26 -05:00
Daniel Mills
6260c07cd6 V+ 2021-01-13 09:00:55 -05:00
Daniel Mills
241d8fd321 Tile sign data 2021-01-13 09:00:46 -05:00
Daniel Mills
5ddbddf5cc Tiledata 2021-01-13 09:00:40 -05:00
Daniel Mills
38854b7d6a Object conversion 2021-01-13 09:00:31 -05:00
CocoTheOwner
958c5ea195 Fix jigsaw edit tooltip 2021-01-13 12:34:29 +01:00
CocoTheOwner
4329623341 Add command help title 2021-01-13 12:24:00 +01:00
Daniel Mills
658b0595ff Use object placement options for jigsaw pieces 2021-01-12 18:33:02 -05:00
Daniel Mills
2869a2157b Support regions & dimensions + strongholds 2021-01-12 18:32:36 -05:00
Daniel Mills
11d5d74c11 Stronghold position calculation & storage 2021-01-12 18:32:16 -05:00
Daniel Mills
54dd379cf5 Memes 2021-01-12 16:54:57 -05:00
Daniel Mills
7eef4ed876 V+ 2021-01-12 06:39:15 -05:00
Daniel Mills
dd7a8bae16 Eradicate the old structure system 2021-01-12 06:05:37 -05:00
Daniel Mills
93508d7514 Rename to jigsawStructures 2021-01-12 05:57:42 -05:00
Daniel Mills
1493beb79b Allow placement options for pieces 2021-01-12 05:55:27 -05:00
Daniel Mills
b7b15a8f7b Prevent CMOD on feature iteration in parallax insertion 2021-01-12 05:44:42 -05:00
Daniel Mills
6cb15d004e Optimize template loads 2021-01-12 05:44:22 -05:00
Daniel Mills
22220b1b95 Add vacuum mode 2021-01-12 05:42:18 -05:00
Daniel Mills
7fe418d529 Spec rename for place options 2021-01-12 05:42:09 -05:00
Daniel Mills
ed8b0a078d Optimize Object placement data 2021-01-12 05:41:58 -05:00
Daniel Mills
71affb0a70 Support features on entire jigsaw structures 2021-01-12 05:41:46 -05:00
Daniel Mills
52f829f5d1 Support place modes for objects on plax 2021-01-12 05:41:34 -05:00
Daniel Mills
518d10fc8f Rename to features 2021-01-12 05:41:20 -05:00
Daniel Mills
62bbeb9471 Fix resource loader issues 2021-01-12 05:41:08 -05:00
Daniel Mills
36986d7ddd Loaders better verbose 2021-01-11 17:05:11 -05:00
Daniel Mills
b266b8b341 Fix jig counting for par layer 2021-01-11 17:05:03 -05:00
Daniel Mills
c95c4b5f7d Fix jigsaw counting 2021-01-11 17:04:40 -05:00
Daniel Mills
68c55086cf Planned structure test-placer in parallax worlds... not final solution.. 2021-01-11 09:54:51 -05:00
Daniel Mills
6b77bba46d Remove object finding for now 2021-01-11 09:54:32 -05:00
Daniel Mills
675c7f8572 Support vacuum objects & experimental support for jigsaw structures 2021-01-11 09:54:25 -05:00
Daniel Mills
7fff705897 Vacuum checking 2021-01-11 09:54:08 -05:00
Daniel Mills
45a7e6a6ea Placement fixes 2021-01-11 09:54:00 -05:00
Daniel Mills
1db0f3f536 Attempt to fix parallax radius for structures using jigsaw 2021-01-11 09:53:45 -05:00
Daniel Mills
2f086a335d Fix schema with jigasaw pieces 2021-01-11 09:53:27 -05:00
Daniel Mills
9fe9c2a9dd Jigsaw structure registry with biomes 2021-01-11 09:53:16 -05:00
Daniel Mills
2cd9a25791 Fix schema with dimensions 2021-01-11 09:53:06 -05:00
Daniel Mills
45cef6a752 Fix goto issues with objects 2021-01-11 09:52:53 -05:00
Daniel Mills
3811dd3554 Remove board manager showing features 2021-01-11 09:52:46 -05:00
Daniel Mills
b2c944af43 Jigsaw placements 2021-01-11 09:52:36 -05:00
Daniel Mills
76ca4f2183 bhg 2021-01-11 05:19:17 -05:00
Daniel Mills
72d7154a96 Fix jigsaw edit command & parallax tweaks 2021-01-10 09:25:34 -05:00
Daniel Mills
ee6e9b059a Jigsaw structures max dimension allowed 2021-01-10 09:12:20 -05:00
Daniel Mills
2afb468ae4 Terminal Pieces 2021-01-10 09:00:18 -05:00
Daniel Mills
125f705a6a Autoterminate 2021-01-10 08:56:52 -05:00
Daniel Mills
3884af64a7 Performance Improvements 2021-01-10 08:48:58 -05:00
Daniel Mills
6bf65c7c74 Fixe3s 2021-01-10 08:02:50 -05:00
Daniel Mills
7ddaa3ce65 Utils 2021-01-10 08:01:38 -05:00
Daniel Mills
5786fe78b2 Structure optimizations for jigsaw 2021-01-10 04:57:36 -05:00
Daniel Mills
f50a2fd0ad Piece optimizations for Jigsaw 2021-01-10 04:57:22 -05:00
Daniel Mills
3f5b799728 Allow outside access of direct write for nbt blocks 2021-01-10 04:57:12 -05:00
Daniel Mills
0cd4997174 Support signed positions for jigsaw 2021-01-10 04:57:01 -05:00
Daniel Mills
f70046bc73 Support connector targets 2021-01-10 04:56:52 -05:00
Daniel Mills
feb246c559 Support jigsaw directions 2021-01-10 04:56:42 -05:00
Daniel Mills
1dd18c3c0a Import Minecraft Structures into Iris Jigsaw format 2021-01-10 04:56:35 -05:00
Daniel Mills
36b3521b2a Jigsaw command & editor fixes 2021-01-09 02:02:07 -05:00
Daniel Mills
c0df132c93 Connector fixes for jigsaw 2021-01-09 02:01:57 -05:00
Daniel Mills
0a08b4b0b9 Rotation opts 2021-01-09 02:01:51 -05:00
Daniel Mills
8a4208ab18 Iris fixes 2021-01-09 02:01:43 -05:00
Daniel Mills
2b8d5541af Better gen hittests 2021-01-09 02:01:29 -05:00
Daniel Mills
b81765adda Piece support twists 2021-01-09 02:01:23 -05:00
Daniel Mills
f7bd48cc9a Fix axis alignedbb 2021-01-09 02:01:15 -05:00
Daniel Mills
db7681676e Jigsaw place command 2021-01-09 02:01:07 -05:00
Daniel Mills
7d9cfb6ff9 Support pos sub 2021-01-08 20:16:03 -05:00
Daniel Mills
14f0a3ce05 Positioning of pieces 2021-01-08 20:15:57 -05:00
Daniel Mills
3c650a7c50 Piece fixes 2021-01-08 20:15:51 -05:00
Daniel Mills
a9a964cc75 Iris pos util 2021-01-08 19:51:36 -05:00
Daniel Mills
5085c89c22 IO Rotation static construct 2021-01-08 19:51:30 -05:00
Daniel Mills
9720ada87f Improved Iris object AABB detection 2021-01-08 19:51:14 -05:00
Daniel Mills
9adbbcee93 Jigsaw piece clone 2021-01-08 19:51:01 -05:00
Daniel Mills
160eee04ff Direction support rot 2021-01-08 19:50:51 -05:00
Daniel Mills
8353c5105b Planned structure init 2021-01-08 19:50:43 -05:00
Daniel Mills
6fd53d6e95 Planned Piece with rotation 2021-01-08 19:50:36 -05:00
Daniel Mills
7530c586f7 Fix jigsaw positions 2021-01-08 19:50:27 -05:00
Daniel Mills
8deb326ea1 Pieces 2021-01-08 19:50:17 -05:00
Daniel Mills
4b76b592d3 RT Sets 2021-01-08 10:12:10 -05:00
Daniel Mills
3f9288c60f g 2021-01-08 03:19:56 -05:00
Daniel Mills
91e1b614f3 Performance 2021-01-08 02:50:35 -05:00
Daniel Mills
b6f3e3a62f Drop nms 2021-01-08 02:50:28 -05:00
Daniel Mills
4a30b6d264 Locking 2021-01-05 18:48:55 -05:00
Daniel Mills
73bfa9beb8 Locks 2021-01-05 14:32:32 -05:00
Daniel Mills
18e203f007 Fix command and sync parallax 2021-01-05 13:57:11 -05:00
Daniel Mills
c6aad25ef2 Fixes 2021-01-04 21:58:52 -05:00
Daniel Mills
bc8f25ff4b Parallax support for featuress 2021-01-04 20:55:06 -05:00
Daniel Mills
4627303008 COmplex support parallax zones (features) 2021-01-04 20:54:56 -05:00
Daniel Mills
e46a36d1c4 Support meta gen for features 2021-01-04 20:54:47 -05:00
Daniel Mills
62325d9784 Support features in iris biomes dimensions and regions 2021-01-04 20:54:37 -05:00
Daniel Mills
38d0894c36 Positional iris features 2021-01-04 20:54:19 -05:00
Daniel Mills
f7e379c83f Iris feature potentials 2021-01-04 20:54:12 -05:00
Daniel Mills
185cc994f7 Iris range class (json tools) 2021-01-04 20:54:06 -05:00
Daniel Mills
8815518af9 Zone to feature 2021-01-04 20:53:46 -05:00
Daniel Mills
233144eede Update parallax chunk meta to json 2021-01-04 20:53:33 -05:00
Daniel Mills
1028ebccbb Calculate true interpolation radius for specifc algos 2021-01-04 20:43:15 -05:00
Daniel Mills
791fd4bc55 Attempt to create an nms world but fallback if needed 2021-01-04 16:02:16 -05:00
Daniel Mills
5a557e6f00 Parallax optimization 2021-01-04 16:02:01 -05:00
Daniel Mills
948f823744 Fix bedrock bug 2021-01-04 16:01:51 -05:00
Daniel Mills
c05d22b550 Fix 162 Post out of control 2021-01-04 16:01:44 -05:00
Daniel Mills
f062d5b894 Fix v163 post out of control 2021-01-04 16:01:32 -05:00
Daniel Mills
1af7ee8e8d V+ 2021-01-04 16:01:17 -05:00
Daniel Mills
53e8c9141c Simplify parallax 2021-01-04 13:04:00 -05:00
Daniel Mills
64f27e7d39 Simplify composite generators 2021-01-04 13:03:54 -05:00
Daniel Mills
a77c99d050 Fix effect zones 2021-01-04 13:03:39 -05:00
Daniel Mills
9c4ccc51c7 Simplify compound stitching 2021-01-04 13:03:33 -05:00
Daniel Mills
7937d8d041 TP on create 2021-01-03 10:36:23 -05:00
Daniel Mills
cca66f1f32 V+ 2021-01-03 10:36:17 -05:00
Daniel Mills
dc4f0c1159 Parallax retry methods 2021-01-03 10:25:39 -05:00
Daniel Mills
fb07b280be Iris create now uses mv create 2021-01-03 10:25:31 -05:00
Daniel Mills
2915ef885e Better mv support 2021-01-03 10:25:21 -05:00
Daniel Mills
152a4af549 tweaks 2021-01-03 09:44:10 -05:00
Daniel Mills
c7508441ec Fix engine issues 2021-01-03 09:44:04 -05:00
Daniel Mills
3073d3aa9d Fix paper gen & spigot gen & shutdown issue 2021-01-03 09:43:58 -05:00
Daniel Mills
78eebc255e FX Zones 2021-01-02 12:26:21 -05:00
Daniel Mills
5e6ec3b217 v 2021-01-01 23:52:15 -05:00
Daniel Mills
a6d6814f27 Fix cellular noise 2021-01-01 23:27:33 -05:00
Daniel Mills
9d634ba4d7 Fix Parallax & update settings 2021-01-01 22:54:17 -05:00
Daniel Mills
fcf8a80b0a Amazing pregenerator! 2021-01-01 22:54:03 -05:00
Daniel Mills
dfaf361bf2 Rewrite iris settings 2021-01-01 22:53:56 -05:00
Daniel Mills
6c791c034b V+ 2021-01-01 22:53:44 -05:00
Daniel Mills
8935c51cc9 Remove old pregen crap 2021-01-01 22:53:40 -05:00
Daniel Mills
b148fa94c3 Fix bedrock off generating air 2021-01-01 19:08:36 -05:00
Daniel Mills
70fef94d15 Sync gen of engines 2021-01-01 19:07:29 -05:00
Daniel Mills
a921845ae3 Fixes 2021-01-01 18:53:32 -05:00
Daniel Mills
8dd858e813 V+ 2020-12-30 08:33:14 -05:00
Daniel Mills
634e7ad7ee Cleanup 2020-12-30 08:31:23 -05:00
Daniel Mills
e926a08def Fix mca gens 2020-12-30 07:09:39 -05:00
Daniel Mills
f4eb0cfbcb Writer fixes 2020-12-29 06:14:18 -05:00
Daniel Mills
ee557d8191 Pregenerator 2020-12-29 06:14:11 -05:00
Daniel Mills
7d37954495 Try smoothies for hunks 2020-12-29 05:08:07 -05:00
Daniel Mills
3dc7bd74fe Fix jigsaw save locations 2020-12-29 05:05:08 -05:00
Daniel Mills
56ae387f7b Fix the leak 2020-12-28 13:17:49 -05:00
Daniel Mills
5878128746 Ducttape 2020-12-28 12:14:21 -05:00
Daniel Mills
5994cc66b4 Fixes for plax 2020-12-28 12:13:47 -05:00
Daniel Mills
a9410d92a2 Identified leak 2020-12-28 07:56:18 -05:00
Daniel Mills
89da5fe08a Smoothiemaps for everyone 2020-12-28 06:22:45 -05:00
Daniel Mills
bb69ae887f Low footprint nbt 2020-12-28 06:13:59 -05:00
Daniel Mills
540656870a Optimizations 2020-12-28 06:10:46 -05:00
Daniel Mills
4f3b6e4029 Smoothiemaps & nbt 2020-12-28 06:10:41 -05:00
Daniel Mills
cec56c8406 Fix pregen sizes 2020-12-27 06:17:12 -05:00
Daniel Mills
7bbae51c7d Faster 2020-12-27 05:28:34 -05:00
Daniel Mills
3d00e96f89 RN to jigsaw 2020-12-27 02:02:23 -05:00
Daniel Mills
6f29da1926 Connect up jigsaw pools with pieces 2020-12-27 02:01:35 -05:00
Daniel Mills
6f028eae6e Fixes 2020-12-26 07:57:51 -05:00
Daniel Mills
b44501566c Fix parallax 2020-12-26 06:12:50 -05:00
Daniel Mills
5f50fa4202 Registry for jigsaw 2020-12-26 05:00:26 -05:00
Daniel Mills
5487cd7858 f 2020-12-23 19:47:30 -05:00
Daniel Mills
89e1af456f J 2020-12-21 01:43:25 -05:00
Daniel Mills
439838abd2 v 2020-12-20 23:28:19 -05:00
Daniel Mills
1cf60544e1 Bugfixes for generation 2020-12-20 21:04:11 -05:00
Daniel Mills
70ae1cce4b Optimize parallax 2020-12-20 21:04:02 -05:00
Daniel Mills
b5fa41cdc1 Fix nms environments for nether and end 2020-12-20 21:03:53 -05:00
Daniel Mills
0cce35908d Registry for structure pieces 2020-12-20 21:03:40 -05:00
Daniel Mills
5a1d8348d8 Fixed non normal environments 2020-12-20 18:32:57 -05:00
Daniel Mills
63cd793407 Fix bedrock placing stone if false 2020-12-20 18:30:17 -05:00
Daniel Mills
f5abee1f92 Fixes 2020-12-20 16:40:18 -05:00
CocoTheOwner
1b0ed90a54 Prevent IOException when creating new compat file 2020-12-20 20:50:23 +01:00
CocoTheOwner
5003f69e8e Prevent getting engine when disabled 2020-12-20 20:48:05 +01:00
CocoTheOwner
68214cf16f Patches my own previous code
Error prevention code was already in place but was misplaced. The method was ran prior to the null check.
2020-12-18 17:16:56 +01:00
CocoTheOwner
1365d442e9 Warn instead of NPE on open non-existing
When opening non-existing packs a NPE is raised, this should resolve that.
2020-12-18 17:14:52 +01:00
BuildTools
2f29953ccb Merge branch 'master' of https://github.com/cyberpwnn/Iris 2020-12-16 13:08:28 +01:00
BuildTools
9929479bf0 Fix compat file loading error by creating prior 2020-12-16 13:08:15 +01:00
Daniel Mills
b52c71c0f3 Mc fixes 2020-12-14 09:22:44 -05:00
CocoTheOwner
712be51888 Attempt patching correct dimension
I'm quite lost so this will probably not work / do much.
2020-12-14 10:12:09 +01:00
CocoTheOwner
3e4cc8841d Patch closing comp nullpoint 2020-12-14 09:30:49 +01:00
Daniel Mills
3742d5ef81 Fix decorant issues 2020-12-13 10:13:52 -05:00
Daniel Mills
310b12c81d Revert "Add vanilla cave support back"
This reverts commit ab64a8f8e2.
2020-12-13 09:57:50 -05:00
Daniel Mills
ab64a8f8e2 Add vanilla cave support back 2020-12-13 09:40:20 -05:00
Daniel Mills
9d18a1297b Merge remote-tracking branch 'origin/master' 2020-12-13 09:38:20 -05:00
Daniel Mills
e73534ba2f Fix IOOB Exception 2020-12-13 09:38:10 -05:00
Daniel Mills
73360bb66c Fix parallax deadlocking 2020-12-13 09:37:58 -05:00
Daniel Mills
5b74f8f836 Default on gleam! 2020-12-13 09:37:43 -05:00
Daniel Mills
0b87cd9aef Support gleam only if on paper 2020-12-13 09:37:37 -05:00
BuildTools
c5c971eeae Update create command alias "+" 2020-12-11 10:03:06 +01:00
BuildTools
b554e2ee6c Update structure commands
Simplicity
2020-12-11 09:48:54 +01:00
BuildTools
436a8c4d8e Add /ir pregen resume command 2020-12-07 16:54:43 +01:00
Daniel Mills
a5725439ee v+ 2020-12-06 06:30:42 -05:00
Daniel Mills
30bc725631 Fix post block modifier (async issues) 2020-12-06 06:10:29 -05:00
Daniel Mills
d261347b06 Support sea layers 2020-12-06 06:10:18 -05:00
Daniel Mills
9bc65601c0 Finalize regen command 2020-12-06 06:10:06 -05:00
Daniel Mills
4a82def974 Fix a bug causing issues with decorations 2020-12-06 06:09:57 -05:00
Daniel Mills
0755e8f618 Regen inf 2020-12-06 06:09:33 -05:00
Daniel Mills
44ef039321 Pregen gleam fixes 2020-12-06 06:09:14 -05:00
Daniel Mills
a7f5451ea4 Regen command 2020-12-06 06:08:51 -05:00
Daniel Mills
4902e5b9bb Fixes & Fixes 2020-12-04 05:07:44 -05:00
Daniel Mills
f3eb1bb45e V+ 2020-12-02 01:41:13 -05:00
Daniel Mills
01a9a13402 Fix seed breaking on restarts 2020-12-02 01:40:49 -05:00
Daniel Mills
ff6f76e018 Default world type is used from the settings now, not just overworld 2020-12-02 01:17:38 -05:00
Daniel Mills
01110d0835 Fix attempts being shown to get custom dim 2020-12-02 01:07:33 -05:00
Daniel Mills
b6fdde403a More fixes 2020-11-27 19:26:41 -05:00
Daniel Mills
ad01a157ce Fixes 2020-11-23 14:47:16 -05:00
Daniel Mills
ac04ef34d7 Base biome fixes 2020-11-23 13:37:13 -05:00
Daniel Mills
58845ae79f Hotload fixes 2020-11-23 02:38:49 -05:00
Daniel Mills
d6b7a4bdba Fixes 2020-11-22 13:00:24 -05:00
Daniel Mills
34040abc8f Support spigot 2020-11-22 11:41:43 -05:00
Daniel Mills
03f535e85e gdffdg 2020-11-22 09:06:25 -05:00
Daniel Mills
6ea0bb30e0 VANILLA STRUCTURES 2020-11-22 07:27:24 -05:00
Daniel Mills
dd083f73f7 V+ 2020-11-17 22:28:46 -05:00
Daniel Mills
8dee20295e Updates to biomes 2020-11-17 22:25:06 -05:00
Daniel Mills
6e47e4bcd2 Fix dim loading 2020-11-17 21:32:11 -05:00
Daniel Mills
ff825b85aa Metrics or something or other 2020-11-17 02:10:17 -05:00
Daniel Mills
802bc50102 Config hotloading 2020-11-17 01:32:34 -05:00
Daniel Mills
6d08faa30f Metrics 2020-11-15 23:36:33 -05:00
Daniel Mills
116ab72f4e d 2020-11-14 22:31:15 -05:00
Daniel Mills
44d86bc350 Entity spawns 2020-11-14 22:27:37 -05:00
Daniel Mills
e0fc4b9443 Fix regions 2020-11-14 21:40:19 -05:00
Daniel Mills
d9e18e0f3b Goto Object 2020-11-14 21:38:22 -05:00
Daniel Mills
6b8610b72d Fixes 2020-11-14 15:08:11 -05:00
Daniel Mills
468448ff6e Move legacy crap out (atomics) 2020-11-14 15:05:56 -05:00
Daniel Mills
b85efcd85a Move NMS out of legacy 2020-11-14 15:04:13 -05:00
Daniel Mills
657f581a3d fff 2020-11-14 12:29:15 -05:00
Daniel Mills
0dbff85bd8 Performance! 2020-11-12 21:02:09 -05:00
Daniel Mills
bf9c4c602b Works, but somehow i broke parallax 2020-11-11 20:58:47 -05:00
Daniel Mills
4c44957764 Performance & Fixes 2020-11-11 16:46:36 -05:00
Daniel Mills
ec39d7146c Fixes 2020-11-11 00:30:39 -05:00
Daniel Mills
c60a772e84 Tweaks 2020-11-10 02:54:06 -05:00
Daniel Mills
9ba47c1b6a ERADICATE V1 2020-11-10 01:07:28 -05:00
Daniel Mills
4fc8a5ad0c Forcefully shove stuff into other stuff 2020-11-10 00:49:28 -05:00
Daniel Mills
50ffcceaf4 v 2020-11-09 12:57:48 -05:00
Daniel Mills
05060e76cb 1.16.4 Support 2020-11-08 11:26:11 -05:00
Daniel Mills
5139b587f6 Maven volmit 2020-11-07 16:20:14 -05:00
Daniel Mills
63870b75a7 Even more imports 2020-11-07 11:06:15 -05:00
Daniel Mills
cf0a8b3e95 More imports 2020-11-07 11:06:05 -05:00
Daniel Mills
8006482c22 Fix imports 2020-11-07 11:05:55 -05:00
Daniel Mills
cda15170bd IML 2020-11-07 11:05:45 -05:00
Daniel Mills
9ececd80d6 NMS Support for 1.16.4 (R3) 2020-11-07 11:05:30 -05:00
Daniel Mills
5ea938a20b Fixes 2020-11-06 09:20:29 -05:00
Daniel Mills
f4056a3fca A proper structure mgr 2020-11-06 01:00:03 -05:00
Daniel Mills
23188c3898 Tweaks for v2 support 2020-11-06 00:54:42 -05:00
Daniel Mills
7322f1a9fb Fix npe in post 2020-11-06 00:54:35 -05:00
Daniel Mills
4f6a676c32 True fracturing allowed 2020-11-06 00:54:28 -05:00
Daniel Mills
f2e3914ad8 v2 structures 2020-11-06 00:54:15 -05:00
Daniel Mills
25f2189a08 ITJ Sucks 2020-11-04 18:28:34 -05:00
Daniel Mills
448c406e3e Block Updates 2020-11-04 18:26:35 -05:00
Daniel Mills
d7c9640dc9 Fix Coco 2020-11-04 18:23:51 -05:00
Daniel Mills
08949ab25f V+ 2020-11-04 18:23:47 -05:00
Daniel Mills
24ae8d1679 Support ModX and ModZ 2020-11-04 18:22:24 -05:00
Daniel Mills
adb7b13599 Engine parallelisms 2020-11-04 18:22:10 -05:00
Daniel Mills
eddf94a340 Post block modifier for V2! 2020-11-04 18:21:58 -05:00
Daniel Mills
3df741c4fc ModXz in actuators 2020-11-04 18:21:48 -05:00
Daniel Mills
12e7c51c39 New decorator implementations! 2020-11-04 18:21:34 -05:00
Daniel Mills
c8e2bcd6e4 Iris engine decorators 2020-11-04 18:21:24 -05:00
Daniel Mills
14d5286eb0 Engine decorators 2020-11-04 18:21:14 -05:00
Daniel Mills
397a2b0d82 Merge remote-tracking branch 'origin/master' 2020-11-04 18:21:00 -05:00
Daniel Mills
35cf439592 Fixes 2020-11-04 18:20:53 -05:00
BuildTools
2f6d69efac Fix empty parameters 2020-11-04 11:11:11 +01:00
Daniel Mills
d00ab3f8d6 Merge remote-tracking branch 'origin/master' 2020-11-03 13:36:43 -05:00
Daniel Mills
05d3adff36 Fixes 2020-11-03 13:36:38 -05:00
BuildTools
4c24c570a8 Fix pregen command parameters 2020-11-03 15:50:01 +01:00
Daniel Mills
19f78f769b Fixes 2020-11-02 13:28:23 -05:00
Daniel Mills
44358c122f Block Updates (not yet working) 2020-11-02 12:29:55 -05:00
Daniel Mills
8b720e103f Ravines & Caves 2020-11-02 11:39:53 -05:00
Daniel Mills
bd5ca76ef4 Ravines 2020-11-02 11:23:33 -05:00
Daniel Mills
5e4136d9a1 Cave decorations 2020-11-01 16:53:29 -05:00
Daniel Mills
14029aa60f f 2020-11-01 16:31:45 -05:00
Daniel Mills
fa99b967ed f 2020-11-01 16:31:35 -05:00
Daniel Mills
a9120edb70 Implement baseline caves 2020-11-01 13:22:54 -05:00
Daniel Mills
cfc8458841 Fixes 2020-11-01 10:14:50 -05:00
Daniel Mills
7a7fee1d8a Temp fixes 2020-11-01 09:46:56 -05:00
Daniel Mills
b87153a445 Fixes 2020-11-01 09:16:11 -05:00
Daniel Mills
f97cd10bf6 Compat fixes 2020-10-31 19:28:44 -04:00
Daniel Mills
736deca1fc Fixes 2020-10-31 19:26:06 -04:00
Daniel Mills
7f3b9ec89a Carving & undercarriage 2020-10-31 19:24:25 -04:00
Daniel Mills
f2339f26ca v2 parallax fixes! 2020-10-31 14:45:58 -04:00
Daniel Mills
b74a00de22 Dust mech 2020-10-31 14:45:50 -04:00
Daniel Mills
d71297a114 Dust command 2020-10-31 14:45:44 -04:00
Daniel Mills
fb006a3032 Idea 2020-10-31 14:43:49 -04:00
Daniel Mills
536ed2b967 Fix parallax sizes & imports 2020-10-31 08:47:47 -04:00
Daniel Mills
1173c3d053 Parallax engine impl 2020-10-31 08:30:37 -04:00
Daniel Mills
c7c1b2b8c1 Parallax tweaks 2020-10-31 08:30:28 -04:00
Daniel Mills
6c8db56474 Region slice fixes 2020-10-31 08:30:20 -04:00
Daniel Mills
3292dc47ab Engine parallax support 2020-10-31 08:30:10 -04:00
Daniel Mills
98889780b9 RNG Chance utils 2020-10-31 08:29:59 -04:00
Daniel Mills
11703afd6b Placer fixes 2020-10-31 08:29:52 -04:00
Daniel Mills
3c1597f42f IDea 2020-10-31 08:29:46 -04:00
Daniel Mills
9d828ad291 V+ 2020-10-31 08:29:41 -04:00
Daniel Mills
84506c65ad Fix biome issues 2020-10-30 08:52:12 -04:00
Daniel Mills
c5bd594798 Proper dimensional stacking 2020-10-30 06:14:43 -04:00
Daniel Mills
13805edba9 Performance tweaks 2020-10-29 09:12:27 -04:00
Daniel Mills
79bd586def f 2020-10-29 07:54:16 -04:00
Daniel Mills
0e86e942ce Engine fixes 2020-10-29 07:54:12 -04:00
Daniel Mills
708959a0c5 Engine compounds 2020-10-29 07:54:05 -04:00
Daniel Mills
3bf3e2605b v2 data manager support 2020-10-29 07:53:56 -04:00
Daniel Mills
39b539aaed Reorder scaffolds 2020-10-29 06:35:16 -04:00
Daniel Mills
c9648a5ec4 Dimensional composites 2020-10-29 06:33:56 -04:00
Daniel Mills
acaa93367f STOPPPIT 2020-10-29 05:26:18 -04:00
Daniel Mills
2c830eacdd Cleanup for new engine 2020-10-29 05:26:10 -04:00
Daniel Mills
4c0e918559 Engine impl 2020-10-29 05:25:58 -04:00
Daniel Mills
f79a3d15d1 Engine api 2020-10-29 05:25:50 -04:00
Daniel Mills
f2b44d8f99 Engine actuators 2020-10-29 05:25:40 -04:00
Daniel Mills
a319314d04 Fixes 2020-10-29 03:50:34 -04:00
Daniel Mills
2c8c23522b Auto stash before merge of "master" and "origin/master" 2020-10-29 01:17:39 -04:00
BuildTools
c05696df8c Turn studio mode to enable by default 2020-10-28 11:42:17 +01:00
Daniel Mills
97019f1a2a Command stuffs 2020-10-28 04:51:30 -04:00
Daniel Mills
aa7a1ddd4e Bugfixes 2020-10-28 02:10:59 -04:00
Daniel Mills
6bbe1c8518 Fix ewg 2020-10-28 01:31:29 -04:00
Daniel Mills
0cf0d68026 V+ 2020-10-28 01:29:39 -04:00
Daniel Mills
6ff583a916 REMOVE FBD 2020-10-28 01:28:52 -04:00
Daniel Mills
f1856afa77 Fix holes and crap 2020-10-28 01:28:43 -04:00
Daniel Mills
6a03b4b125 Delete fbd 2020-10-28 00:29:37 -04:00
Daniel Mills
9e062acafb Parallax 2 Backend & API Complete 2020-10-28 00:28:56 -04:00
Daniel Mills
aff7e49024 Hunk Slices! 2020-10-27 22:14:32 -04:00
Daniel Mills
39b4649a04 Parallax API 2020-10-27 21:19:47 -04:00
Daniel Mills
ca8c7229ce Hunks 2020-10-27 21:19:42 -04:00
Daniel Mills
4634284e77 Hunk IO 2020-10-27 21:19:38 -04:00
Daniel Mills
e92fa789e9 Parallax storage 2020-10-27 21:19:33 -04:00
Daniel Mills
d29b4e486d Move to parallax views 2020-10-27 21:19:23 -04:00
Daniel Mills
56eb0b8ef1 Data palettes 2020-10-27 21:19:10 -04:00
Daniel Mills
dcda5741f1 I have an idea 2020-10-27 21:19:00 -04:00
Daniel Mills
46dd19c326 Fix idea configs 2020-10-27 17:01:05 -04:00
BuildTools
5ef9ccb466 Merge branch 'master' of https://github.com/cyberpwnn/Iris 2020-10-27 21:29:42 +01:00
Daniel Mills
5fef1b3f30 Stupidities 2020-10-27 15:48:40 -04:00
Daniel Mills
5606da3449 Fix 2020-10-27 15:42:24 -04:00
BuildTools
844d500037 Update CommandIrisStructureCreate.java 2020-10-27 19:09:59 +01:00
BuildTools
672a66695e Fix no structure specified error 2020-10-27 13:23:19 +01:00
BuildTools
125a89b5f9 Fix parameterless object selection modificaitons
Defaults to 1
2020-10-27 12:20:17 +01:00
Daniel Mills
c65c197fbe Fixes 2020-10-27 05:55:25 -04:00
Daniel Mills
98b1302b77 ""Fix"" Mineshafts 2020-10-27 02:51:15 -04:00
Daniel Mills
e75afe6c41 ""Fix"" Parallax map null issues 2020-10-27 02:49:52 -04:00
Daniel Mills
361d02e075 Iris reports 2020-10-27 02:33:44 -04:00
Daniel Mills
1b20d3b6ac Experimentals 2020-10-27 01:16:04 -04:00
Daniel Mills
c4536d789b Decorations! 2020-10-27 01:10:19 -04:00
Daniel Mills
a7f8d9126e Renamings 2020-10-26 22:33:36 -04:00
Daniel Mills
84e39add27 Decoration! 2020-10-26 22:33:21 -04:00
Daniel Mills
4d352b231c More complex streams 2020-10-26 22:33:15 -04:00
Daniel Mills
59eda04949 Bitshifting streams 2020-10-26 22:33:07 -04:00
Daniel Mills
695cf24861 Fix hunk queues 2020-10-26 22:32:58 -04:00
Daniel Mills
85d4dd9491 Rename deco 2020-10-26 22:32:43 -04:00
Daniel Mills
3a0fcd1517 What a mess of hunks 2020-10-26 16:53:20 -04:00
Daniel Mills
e7e649ad66 fixes 2020-10-26 05:54:34 -04:00
Daniel Mills
b875a4898b Conversion support for EWG and Schematics 2020-10-26 05:11:15 -04:00
Daniel Mills
a33cd35ae8 v 2020-10-26 04:05:58 -04:00
Daniel Mills
6e294d1363 Bam 2020-10-26 03:51:03 -04:00
Daniel Mills
7d7269bfe6 Multicore utils 2020-10-26 03:50:53 -04:00
Daniel Mills
1306a5bca1 Old crap removed 2020-10-26 03:50:45 -04:00
Daniel Mills
0dd45cdfa2 Hunks Galore 2020-10-26 03:50:36 -04:00
Daniel Mills
4a11ac917b Fixes 2020-10-25 23:07:13 -04:00
Daniel Mills
460be03a20 Biome implosion 2020-10-25 15:57:27 -04:00
Daniel Mills
9f3e5fea38 Height fixes 2020-10-25 12:30:05 -04:00
Daniel Mills
49b494ed02 Pregen job remembers generally where it left off 2020-10-25 12:26:56 -04:00
Daniel Mills
c72559c31a Cleanup & Add bedrock option 2020-10-25 12:08:52 -04:00
CocoTheOwner
2b8e189966 Merge branch 'master' of https://github.com/cyberpwnn/Iris 2020-10-25 16:44:31 +01:00
CocoTheOwner
09e37f3951 Fix command and get 2020-10-25 16:44:18 +01:00
Daniel Mills
c90359716b Scaffolding changes 2020-10-25 11:43:30 -04:00
Daniel Mills
4a1ad1c625 Biome streams 2020-10-25 11:43:19 -04:00
Daniel Mills
27694036a5 . 2020-10-24 03:44:45 -04:00
Daniel Mills
ed40dc34cf Iris Complex 2020-10-24 01:59:53 -04:00
Daniel Mills
af29b2833f Better test root 2020-10-24 00:30:20 -04:00
Daniel Mills
0ee1f5c47f Iris test command 2020-10-24 00:29:46 -04:00
Daniel Mills
018eb2fdcd Streams 2020-10-24 00:29:40 -04:00
Daniel Mills
368a74dfc9 Layers 2020-10-24 00:29:35 -04:00
Daniel Mills
1a0475433c Hunky Stuff... 2020-10-24 00:29:31 -04:00
Daniel Mills
e841bfad68 Hunk Views 2020-10-24 00:29:20 -04:00
Daniel Mills
5d3faba762 Stream support 2020-10-24 00:29:13 -04:00
Daniel Mills
87cce116af f 2020-10-23 19:15:41 -04:00
Daniel Mills
356c97a4b2 Stop spawning OCEAN_RUIN 2020-10-23 18:42:19 -04:00
Andrew Baker
dd6c20ce74 Fix log colors. Closes #22 2020-10-23 11:00:36 -07:00
Daniel Mills
e939ffaf2d V+ 2020-10-23 13:13:48 -04:00
Daniel Mills
5a6f6fba2e Fixes & merge 2020-10-23 13:05:16 -04:00
Daniel Mills
99022055cf Fix non overworld environments using overworld as the environment... 2020-10-23 11:27:59 -04:00
Daniel Mills
68030a4ae7 Fix decorations 2020-10-23 11:25:38 -04:00
Daniel Mills
75ca9240a9 Tops 2020-10-23 11:25:13 -04:00
Daniel Mills
6d917b31e0 Support decoration tops for stack decorations 2020-10-23 10:21:39 -04:00
BuildTools
75e508bfd0 Add note 2020-10-23 14:08:41 +02:00
BuildTools
23136be280 Add thread count getter 2020-10-23 13:59:38 +02:00
BuildTools
527a0f5c70 Update CommandIrisStructure.java
Add warning for use of objects over procedural structures (naming is a bit counter-intuitive)
2020-10-23 11:10:42 +02:00
BuildTools
9fbf9539ee Update CommandIrisObject.java
Add alias for object "obj"
2020-10-23 11:08:55 +02:00
BuildTools
dab69b2ffe Update CommandIrisWhatBlock.java
Prevent duplicate message
Fix some whitespace
2020-10-23 10:20:42 +02:00
BuildTools
7fdbebfb70 Fix bugs (see desc)
#33
#26
#27
#28
2020-10-23 09:55:48 +02:00
Daniel Mills
06ffe5cd06 Fix ex for fluid height 2020-10-22 19:23:05 -04:00
Daniel Mills
56203c3ee2 30% Performance Improvement 2020-10-22 19:05:52 -04:00
BuildTools
4f5b562e04 Update CommandIrisPregen.java
Fix whitespace
2020-10-23 00:37:00 +02:00
BuildTools
e247753f96 Update CommandIrisRegen.java
fix whitespace
2020-10-23 00:34:49 +02:00
BuildTools
575b5482b6 Update CommandIrisStructureCreate.java
Fix creator arguments (I'm stoopid)
2020-10-23 00:30:06 +02:00
BuildTools
aa5a72b788 Update CommandIrisStructureCreate.java
Last fix (trust me)
2020-10-23 00:21:32 +02:00
BuildTools
d8cb9f2c03 Update CommandIrisStructureCreate.java
Fix even number entering
2020-10-23 00:18:04 +02:00
BuildTools
5241182520 Merge branch 'master' of https://github.com/cyberpwnn/Iris 2020-10-23 00:09:26 +02:00
BuildTools
61d8f2e1d4 Update CommandIrisStructureCreate.java
Fuck switch statements
2020-10-23 00:09:13 +02:00
Daniel Mills
a8031a510f Fix warnings 2020-10-22 18:08:57 -04:00
Daniel Mills
c191060b73 Fix command issues with not in iris world 2020-10-22 18:06:58 -04:00
Daniel Mills
bfe7cf0ed7 Repush 2020-10-22 17:57:01 -04:00
Daniel Mills
a4d72eefbc Merge remote-tracking branch 'origin/master' 2020-10-22 17:56:54 -04:00
Daniel Mills
7b98105a0f Terrain stream 2020-10-22 17:56:48 -04:00
BuildTools
e741dd6f65 Update CommandIrisStructureCreate.java
Prevent omitting parameters
2020-10-22 23:56:45 +02:00
Daniel Mills
9ef1c1935d Drop sky providers 2020-10-22 11:17:40 -04:00
Daniel Mills
43562580d6 Fixes 2020-10-22 11:16:28 -04:00
Dan
986250543e Merge pull request #18 from cyberpwnn/citizens
Merge pull request #17 from cyberpwnn/master
2020-10-22 11:10:21 -04:00
Dan
90ed2f084d Merge pull request #17 from cyberpwnn/master
Fixes
2020-10-22 11:09:24 -04:00
Dan
d353e186a5 Merge branch 'citizens' into master 2020-10-22 11:09:07 -04:00
Daniel Mills
a8b684d966 Fixes 2020-10-22 11:07:47 -04:00
Andrew Baker
3ec70f9fb3 Merge branch 'master' of https://github.com/cyberpwnn/Iris into citizens 2020-10-21 18:05:51 -07:00
BuildTools
6199256058 Poor attempt at adding pregen pausing
Please fix /command/CommandIrisPregen.java (has // TODO:)
and
/util/PregenJob.java
(has // TODO:)
2020-10-21 17:47:20 +02:00
Daniel Mills
265936a791 V+ 2020-10-21 11:11:32 -04:00
BuildTools
2422013ddf fix typo 2020-10-21 17:10:19 +02:00
Daniel Mills
2641220fb0 Fix pregen resume issue 2020-10-21 11:04:19 -04:00
Daniel Mills
68e1830d8e Fix std loot 2020-10-21 11:01:59 -04:00
Daniel Mills
fd3f20ed52 Fixes & revert 2020-10-21 10:28:40 -04:00
Daniel Mills
ccdb136b9a Tweaks 2020-10-21 10:03:15 -04:00
Daniel Mills
0a0617c5fc Command fixes 2020-10-21 10:02:36 -04:00
Daniel Mills
b3e1c48f97 Stupid spigot & paper 2020-10-20 10:52:30 -04:00
Daniel Mills
88d589bae5 1.16 NMS Support 2020-10-20 10:16:19 -04:00
Daniel Mills
0fb5cbdb06 Hmm 2020-10-20 09:51:48 -04:00
Daniel Mills
d47da11ce8 INMS 2020-10-20 09:22:14 -04:00
Daniel Mills
743a4f97ba NMS 2020-10-20 09:22:09 -04:00
Daniel Mills
eac1247f36 FIxes 2020-10-19 10:04:06 -04:00
Daniel Mills
57f60326f3 PF 2020-10-19 09:20:57 -04:00
Daniel Mills
3235f6e388 V+ 2020-10-19 06:10:41 -04:00
Daniel Mills
a607a6a137 Fix structure manager with paper & worldedit 2020-10-19 06:10:37 -04:00
Daniel Mills
2348d4a855 Fix block data issues 2020-10-19 06:10:27 -04:00
Daniel Mills
e16f6c87c2 Remove loot tries 2020-10-19 06:10:19 -04:00
Daniel Mills
598962f5f3 Entities support baby & panda genes 2020-10-19 06:10:11 -04:00
Daniel Mills
8a241bb671 Fix loot 2020-10-19 06:10:03 -04:00
Daniel Mills
8bcb3d9e0e Fix npe and cmod on parallax layer 2020-10-19 06:09:54 -04:00
Daniel Mills
2317220666 What block show more info 2020-10-19 06:09:41 -04:00
Daniel Mills
47c1b58aa5 Loot fixes 2020-10-19 06:09:34 -04:00
Daniel Mills
0039582f28 Summon command 2020-10-19 06:09:28 -04:00
Daniel Mills
60a529375c Fix Regen Crash 2020-10-19 03:46:05 -04:00
Daniel Mills
d42bcb0ab9 Fix fx and spawning before terrain is setup 2020-10-19 03:43:33 -04:00
Daniel Mills
4b11bcb77b Merge remote-tracking branch 'origin/master' 2020-10-19 03:28:04 -04:00
Daniel Mills
6775edddab Move listing to iris dims 2020-10-19 03:27:56 -04:00
Andrew
039a732148 Update .gitignore 2020-10-18 16:36:22 -07:00
Andrew
9aac70c734 Remove IDEA cancer 2020-10-18 16:35:49 -07:00
Andrew
dc6c38cf24 Update .gitignore 2020-10-18 16:33:57 -07:00
Andrew
a2b09cb2aa Remove Iris.iml from repo 2020-10-18 16:32:06 -07:00
Andrew
6e6453f897 Update .gitignore 2020-10-18 16:29:25 -07:00
Andrew
f16de65934 Remove .idea from repo 2020-10-18 16:27:54 -07:00
Daniel Mills
fa0a5efb25 VP 2020-10-18 16:42:03 -04:00
Daniel Mills
1ffb6b9395 WC 2020-10-18 16:41:40 -04:00
Andrew
16d746fb8d Add Citizens support to IrisEntity.java 2020-10-18 11:44:30 -07:00
Andrew
e8629fab66 Add CitizensLink class variable to Iris.java 2020-10-18 11:40:51 -07:00
Andrew
9cb9719461 Create Citizenslink 2020-10-18 11:27:31 -07:00
Daniel Mills
564f02b188 Reload config command 2020-10-18 13:22:50 -04:00
Daniel Mills
d67596117f Fixes 2020-10-18 08:39:26 -04:00
Daniel Mills
ffecbb2298 Merge remote-tracking branch 'origin/master' 2020-10-18 08:39:20 -04:00
Andrew
b5fe2bcc60 Add Citizens to pom.xml 2020-10-17 17:30:43 -07:00
Andrew
7641d6dbdf IDEA bs 2020-10-17 17:07:34 -07:00
Andrew
54c5e3a8e3 Merge remote-tracking branch 'origin/master' 2020-10-17 17:06:35 -07:00
Andrew
d8427cdbcd IDEA bs 2020-10-17 17:05:57 -07:00
Andrew
fe03a12bec Update README.md 2020-10-17 15:36:59 -07:00
Andrew
37fca3fc3e Update IDEA files 2020-10-17 13:45:12 -07:00
Daniel Mills
4dcdbdec3a Fix slabs 2020-10-17 13:29:07 -04:00
Daniel Mills
564c79c411 Bugfixes 2020-10-17 13:20:38 -04:00
Daniel Mills
ea46c78a15 Faster block data! 2020-10-17 02:03:41 -04:00
Daniel Mills
93529cda60 Attempt at faster block data 2020-10-17 00:02:15 -04:00
Daniel Mills
13bf6a89cb Fix ctc 2020-10-16 23:48:21 -04:00
Daniel Mills
468c69d2dd Bugfixes & Performance Improvements 2020-10-16 23:45:44 -04:00
Daniel Mills
4ccfa8c3b6 Bugfixes for 13 2020-10-16 09:50:27 -04:00
Dan
b9a447453f Merge pull request #16 from cyberpwnn/performance-passes
Fix pr
2020-10-16 02:00:13 -04:00
Andrew
3daf03d89a Revert "Performance pass 5 (String concatenation in loop)"
This reverts commit d9d0f426e4.
2020-10-16 01:59:44 -04:00
Andrew
1a7d4c2c37 Revert "Performance pass 4 (String concatenation as argument to 'StringBuilder.append()' call)"
This reverts commit 1b88d3d785.
2020-10-16 01:59:31 -04:00
Daniel Mills
c7f612dac0 Fixes 2020-10-16 01:59:18 -04:00
Dan
1a7aa1218a Revert "Merge pull request #15 from cyberpwnn/performance-passes"
This reverts commit e530e30878.
2020-10-16 01:58:56 -04:00
Dan
e530e30878 Merge pull request #15 from cyberpwnn/performance-passes
Performance passes
2020-10-16 01:57:47 -04:00
Andrew
c5ef4df15a Performance pass 7 ('Collection.toArray()' call style) 2020-10-15 22:47:46 -07:00
Andrew
dba07c1832 Performance pass 6 (Wrapper type may be primitive) 2020-10-15 22:46:25 -07:00
Andrew
d9d0f426e4 Performance pass 5 (String concatenation in loop) 2020-10-15 22:46:05 -07:00
Andrew
1b88d3d785 Performance pass 4 (String concatenation as argument to 'StringBuilder.append()' call) 2020-10-15 22:45:09 -07:00
Andrew
1e188fe737 Performance pass 3 (Manual array to collection copy) 2020-10-15 22:44:30 -07:00
Andrew
335d4abbe1 Performance pass 3 (Manual array copy) 2020-10-15 22:44:13 -07:00
Andrew
1087d27523 Performance pass 2 (Loop can be terminated after condition is met) 2020-10-15 22:43:05 -07:00
Andrew
f8f8b884bc Performance pass 1 (Fix array size) 2020-10-15 22:42:44 -07:00
Andrew
c84c462aeb Merge remote-tracking branch 'origin/master' 2020-10-15 22:38:06 -07:00
Andrew
3ba4384c84 Add .gitignore to .idea folder 2020-10-15 22:36:09 -07:00
Andrew
d4c72c34c3 Fix /iris what block NPE 2020-10-15 22:23:06 -07:00
Andrew
60e950abcb Fix /iris what hand NPE 2020-10-15 22:17:10 -07:00
Daniel Mills
6cb48e76a8 Fix npes 2020-10-15 23:47:32 -04:00
Andrew
5e811b188b Add support for IDEA Minecraft Development plugin 2020-10-15 14:47:06 -07:00
Daniel Mills
31320b4ab7 Mythic mobs support 2020-10-13 05:53:50 -04:00
Daniel Mills
38e62a9c98 Print errors 2020-10-13 04:33:28 -04:00
Daniel Mills
74e59fa47b Optimizations 2020-10-13 04:27:25 -04:00
Daniel Mills
80b1374a61 Idea Nitpick ""Optimizations"" 2020-10-13 03:35:40 -04:00
Daniel Mills
bd3e9d01ec Handle objects on ravines 2020-10-12 21:49:49 -04:00
Daniel Mills
f3e7d188f9 Ravines 2020-10-12 21:40:52 -04:00
Daniel Mills
c45044b5c2 More Settings 2020-10-12 20:04:32 -04:00
Daniel Mills
ac2dcee6c3 Fix crash issues 2020-10-12 19:59:24 -04:00
Daniel Mills
e72ea21b6b Fix commands & support regeneration 2020-10-12 00:18:05 -04:00
Daniel Mills
a46f57eaab Fixes 2020-10-06 17:08:07 -04:00
Daniel Mills
843b5d7154 Bugfixes 2020-10-06 16:54:36 -04:00
Daniel Mills
4f7d659700 Compat lists 2020-10-06 14:22:10 -04:00
Daniel Mills
0a195e0c11 Auto stash before rebase of "refs/heads/master" 2020-10-06 13:32:45 -04:00
Daniel Mills
9a9a21350e Function sharing 2020-09-19 16:08:25 -04:00
Daniel Mills
5a4cbc74f7 Bam 2020-09-18 15:33:11 -04:00
Daniel Mills
27e06ceb2c g 2020-09-18 15:30:58 -04:00
Daniel Mills
68f2640ceb f 2020-09-18 15:30:30 -04:00
Daniel Mills
cd9cf902bf NoAuth 2020-09-18 15:29:51 -04:00
Daniel Mills
03f3b4f8d3 Fix data managers 2020-09-18 15:28:54 -04:00
Daniel Mills
6e430861d7 fix 2020-09-16 17:58:11 -04:00
Daniel Mills
b7d658cff3 Merge remote-tracking branch 'origin/master' 2020-09-16 17:57:52 -04:00
Daniel Mills
b1b85e7135 Pregen after mvc 2020-09-16 08:50:14 -04:00
Brian Fopiano
f28bdccd0f %% 2020-09-15 07:57:19 -07:00
Daniel Mills
d2ea288009 BLOCK DATA CUSTOM SUPPORT & FIX DECAYS 2020-09-14 08:27:14 -04:00
Daniel Mills
e0a60e3ef3 Fixes 2020-09-13 16:59:05 -04:00
Daniel Mills
563bf12de0 f 2020-09-13 10:45:51 -04:00
Daniel Mills
ef4037274d Fixes 2020-09-13 09:15:04 -04:00
Daniel Mills
639294af2d Default values 2020-09-13 09:06:45 -04:00
Daniel Mills
9e51a1617f Ugh 2020-09-13 08:57:13 -04:00
Daniel Mills
d317ac5236 Fix decorations 2020-09-13 07:03:42 -04:00
Daniel Mills
42907b5a5d Schema good 2020-09-12 17:44:52 -04:00
Daniel Mills
5d35fc80d5 g 2020-09-12 01:51:52 -04:00
Daniel Mills
11cab800e3 Faster caching 2020-09-12 01:44:54 -04:00
Daniel Mills
9272765f3c Carving Biomes 2020-09-12 00:17:12 -04:00
Daniel Mills
30e1d9552c fg 2020-09-11 23:45:36 -04:00
Daniel Mills
1bafdf0feb Carving Objects 2020-09-11 12:59:37 -04:00
Daniel Mills
1618d54b70 More SPEED 2020-09-11 11:06:32 -04:00
Daniel Mills
be6739ecb8 Fix spawning (pandas) 2020-09-11 08:05:11 -04:00
Daniel Mills
200e576ba8 Fix loot 2020-09-10 02:42:10 -04:00
Daniel Mills
ed6fe5631a Items 2020-09-10 00:23:33 -04:00
Daniel Mills
b0ee9b27a1 Blockdata backups 2020-09-10 00:17:13 -04:00
Daniel Mills
eb0de84ce3 Bam 2020-09-10 00:14:52 -04:00
Daniel Mills
c52b3d27bc Blockdata 2020-09-09 23:01:02 -04:00
Daniel Mills
352adbc9cb Support weight 2020-09-09 22:52:29 -04:00
Daniel Mills
c418683b3d Start the pain 2020-09-09 22:45:55 -04:00
Daniel Mills
5bd22f25b8 God dammit lombok 2020-09-09 22:25:34 -04:00
Daniel Mills
087ab3815f CHAINS 2020-09-09 21:27:53 -04:00
Daniel Mills
6af2055fd2 All access constructor 2020-09-09 21:12:20 -04:00
Daniel Mills
05e351be9c hh 2020-09-09 08:53:38 -04:00
Daniel Mills
9bdcd6aace Fix 2020-09-09 08:38:12 -04:00
Daniel Mills
265807941a Async gen cap 2020-09-09 06:47:27 -04:00
Daniel Mills
88b60ea945 Yrand 2020-09-09 05:11:55 -04:00
Daniel Mills
f5854f9342 Cave fluids 2020-09-09 04:13:21 -04:00
Daniel Mills
8ffe6fa8fb Instant changes 2020-09-09 00:29:22 -04:00
Daniel Mills
1d11585fcd FIxes 2020-09-08 22:57:29 -04:00
Daniel Mills
b0d8b9a078 More 2020-09-08 22:26:34 -04:00
Daniel Mills
9f1b66fb91 Schema 2020-09-08 21:46:08 -04:00
Daniel Mills
55fde2d3fb Fix value noise 2020-09-08 21:15:01 -04:00
Daniel Mills
649becb98e ff 2020-09-08 19:29:19 -04:00
Daniel Mills
0b9ea265f0 FND 2020-09-08 19:28:55 -04:00
Daniel Mills
3e92154e27 Fixes 2020-09-07 23:00:29 -04:00
Daniel Mills
bdb86808a5 Prg 2020-09-07 20:10:22 -04:00
Daniel Mills
1993639bf6 Config options & fix cave slabs for 2x lines 2020-09-07 11:56:22 -04:00
Daniel Mills
90a5398e98 Initial spawns 2020-09-06 04:01:20 -04:00
Daniel Mills
c5ab77b8ac tweaks 2020-09-06 03:29:35 -04:00
Daniel Mills
7cd268bb4c Dont warn 2020-09-06 03:19:55 -04:00
Daniel Mills
036dc289d5 Iris doesnt need worlds anymore 2020-09-06 03:19:01 -04:00
Daniel Mills
035f2a0236 Move 2020-09-06 03:18:48 -04:00
Daniel Mills
86669fb6e8 Terrain Data 2020-09-05 23:14:59 -04:00
Daniel Mills
5a2bb741a7 Fixes 2020-09-05 23:14:55 -04:00
Daniel Mills
28e8a234e9 Experiment 2020-09-05 22:41:16 -04:00
Daniel Mills
bd48e77e7c Fix bugs 2020-09-05 04:30:22 -04:00
Daniel Mills
5b6f1182fe Custom fluids 2020-09-05 02:59:45 -04:00
Daniel Mills
44d800de1e Noise overlay support & Post Foliage Cleaner 2020-09-05 01:39:19 -04:00
Daniel Mills
fc55622cc8 Fix Post rounding 2020-09-05 00:33:30 -04:00
Daniel Mills
0e217e431b Fixes 2020-09-04 23:14:34 -04:00
Daniel Mills
e4cbfcfedc Fixes 2020-09-04 22:11:03 -04:00
Daniel Mills
ccd59278e5 Fixes 2020-09-04 21:50:49 -04:00
Daniel Mills
a27bb66fef Fixes 2020-09-04 21:13:39 -04:00
Daniel Mills
ef6036a7d0 Commands & Settings 2020-09-04 21:10:48 -04:00
Daniel Mills
b158ea9e78 Cleanup 2020-09-04 20:59:13 -04:00
Daniel Mills
fbc02881d7 1.14+ support 2020-09-04 07:33:00 -04:00
Daniel Mills
4340d584c1 Merge remote-tracking branch 'origin/master' 2020-09-04 03:48:59 -04:00
Daniel Mills
a4a8678116 Clean up plax gen 2020-09-04 03:48:56 -04:00
Daniel Mills
ab4bee5d69 Structure tile seed cohesion 2020-09-04 03:48:47 -04:00
Daniel Mills
fad17c9cd2 Structure Seed cohesion 2020-09-04 03:48:40 -04:00
Daniel Mills
e7f0ba1982 Regions support for objects 2020-09-04 03:48:31 -04:00
Brian Fopiano
92bee965f0 EyeFix 2020-09-04 00:48:02 -07:00
Daniel Mills
dd4edb8ba5 Support Getters instead of fields 2020-09-04 03:24:52 -04:00
Daniel Mills
b8f58b9cc7 Low memory mode support 2020-09-04 03:24:38 -04:00
Daniel Mills
f334b0137e Iris LMM Support 2020-09-04 03:24:22 -04:00
Daniel Mills
e732c8ff6a STD Register LMM 2020-09-04 03:24:15 -04:00
Daniel Mills
60bb232d2a LMM Command 2020-09-04 03:24:09 -04:00
Daniel Mills
4f18f26935 CTC 2020-09-04 03:24:03 -04:00
Daniel Mills
7dc095b87a CTC Rename 2020-09-04 03:23:57 -04:00
Daniel Mills
759780f10e Meta 2020-09-04 02:42:03 -04:00
Daniel Mills
77ff87a9c4 Prefs for style 2020-09-04 02:39:46 -04:00
Brian Fopiano
82d6719681 Additives 2020-09-03 23:32:49 -07:00
Daniel Mills
073998789c Run Profiles 2020-09-04 02:30:04 -04:00
Daniel Mills
3f4347289c Unused NMS 2020-09-04 02:28:10 -04:00
Brian Fopiano
dc2a3cde47 f 2020-09-03 23:23:35 -07:00
Daniel Mills
252eebe5d8 F 2020-09-04 02:18:16 -04:00
Daniel Mills
bdd0da82e7 A Splash of Iris 2020-09-04 02:15:36 -04:00
Daniel Mills
d144b9ba0b Smart Bore & Islands 2020-09-04 01:15:38 -04:00
Daniel Mills
b201cf1990 Attempt to fix stilting 2020-09-03 18:06:58 -04:00
Daniel Mills
286c4da2f3 f 2020-09-03 16:37:03 -04:00
Daniel Mills
959a5b5c70 Fixes 2020-09-03 16:15:09 -04:00
Daniel Mills
607a7be337 Supercarves 2020-09-03 03:59:03 -04:00
Daniel Mills
3663b9f957 Fixes 2020-09-03 00:09:31 -04:00
Daniel Mills
9aa6d1c0fc Optimization 2020-09-02 21:06:01 -04:00
Daniel Mills
e6b59bc16d Fix holes 2020-09-02 18:16:12 -04:00
Daniel Mills
a478428721 Custom entity spawns 2020-09-02 16:46:11 -04:00
Daniel Mills
8bb01a2412 Fixes 2020-09-02 14:22:58 -04:00
Daniel Mills
4a98fb6c9d Multiverse Support 2020-09-02 13:47:20 -04:00
Daniel Mills
ea5dd69719 Fixes 2020-09-02 12:29:51 -04:00
Daniel Mills
6d3a35517b Rivers & Lakes 2020-09-02 02:31:17 -04:00
Daniel Mills
9be6e12a5c Perf 2020-09-01 21:47:18 -04:00
Daniel Mills
e8addbc954 Performance 2020-09-01 20:41:26 -04:00
Daniel Mills
683becabda Font render correction 2020-08-31 16:48:12 -04:00
Daniel Mills
8c0cbfe93a Fix text renderer 2020-08-31 16:20:24 -04:00
Daniel Mills
57cb8d5bda fAILS AT FONTS 2020-08-31 15:33:51 -04:00
Daniel Mills
0b583bcf80 Obfuscation fixes 2020-08-30 16:09:22 -04:00
Daniel Mills
9880248e49 Beautiful Interpolation 2020-08-29 18:01:00 -04:00
Daniel Mills
20b715f7cb noriver 2020-08-29 14:30:12 -04:00
Daniel Mills
ed9ddc0825 More fix 2020-08-26 09:33:05 -04:00
Daniel Mills
5ab2bae5d7 Loads o fix 2020-08-26 09:32:59 -04:00
Daniel Mills
8a2b69464f g 2020-08-25 17:12:48 -04:00
Daniel Mills
ff78830ead WORKING 2020-08-25 16:39:24 -04:00
Daniel Mills
01fd89f60c WORKING 2020-08-25 15:55:46 -04:00
Daniel Mills
44b6396b78 Loading & Saving! 2020-08-24 12:57:25 -04:00
Daniel Mills
998e1b62a5 ggg 2020-08-24 12:35:57 -04:00
Daniel Mills
273f7c7a73 GUI & Tasking utils 2020-08-24 08:03:05 -04:00
Daniel Mills
e9544bb610 Move wand manager 2020-08-24 08:02:58 -04:00
Daniel Mills
fecf7f987d Fixes 2020-08-23 04:02:11 -04:00
Daniel Mills
308395aa86 Fix 2020-08-23 03:25:12 -04:00
Daniel Mills
69218b6710 Faster 2020-08-22 11:27:06 -04:00
Daniel Mills
8bf7fcff28 f 2020-08-22 09:52:23 -04:00
Daniel Mills
416fbc093f Prep 2020-08-22 09:52:11 -04:00
Daniel Mills
2500fa54e4 Parallax 2 2020-08-22 09:51:54 -04:00
Daniel Mills
ccc7a947cd Fix tiles & decor 2020-08-21 23:50:07 -04:00
Daniel Mills
83772bed42 Loot table fixes 2020-08-21 12:42:21 -04:00
Daniel Mills
7f3b7df710 Rarity stuffs 2020-08-21 04:35:56 -04:00
Daniel Mills
39b7563d3a Loot 2020-08-21 03:48:53 -04:00
Daniel Mills
7b94d753b8 Block Updates 2020-08-20 22:44:16 -04:00
Daniel Mills
ab89d6a22f +3 depth dir finding for objects 2020-08-20 22:10:17 -04:00
Daniel Mills
bff242dc99 mm 2020-08-20 01:48:27 -04:00
Daniel Mills
ec452125e2 Fixes 2020-08-19 03:09:57 -04:00
Daniel Mills
faa4ca33ad Sea layer fixes 2020-08-19 02:48:26 -04:00
Daniel Mills
0b2284f163 Fix beach sea layers 2020-08-19 02:35:09 -04:00
Daniel Mills
b8c4d66160 Tweaks 2020-08-19 02:18:31 -04:00
Daniel Mills
4dfd033435 Cleanup 2020-08-18 16:02:07 -04:00
Daniel Mills
9ca8739514 Fix Interpolation 2020-08-18 01:16:30 -04:00
Dan
1d8691fed8 Merge pull request #14 from cyberpwnn/Blink
Blink
2020-08-17 20:25:37 -04:00
Daniel Mills
522aec1d3a Fixes 2020-08-17 20:25:01 -04:00
Daniel Mills
6153b25bc7 Fix noise 2020-08-17 15:52:50 -04:00
Daniel Mills
bb7e277f19 Fix placement 2020-08-17 00:54:52 -04:00
Daniel Mills
8a7bc3c17d Fixes 2020-08-17 00:26:21 -04:00
Daniel Mills
af22751210 Remove Ceiling Gen & Post Block Sep 2020-08-16 22:08:57 -04:00
Daniel Mills
81f6ce26d4 Stop overlocking 2020-08-16 21:26:27 -04:00
Daniel Mills
633fea8c68 Merge BiomeChunkGenerator -> TerrainChunkGenerator 2020-08-16 21:21:19 -04:00
Daniel Mills
0c5855a82d Alright 2020-08-16 21:14:40 -04:00
Daniel Mills
c07b4e9f98 WSU 2020-08-16 16:15:58 -04:00
Daniel Mills
2407c3f2f8 Schemas 2020-08-16 13:18:02 -04:00
Daniel Mills
d89371a279 Fixes 2020-08-16 02:23:53 -04:00
Daniel Mills
86be84b015 Fixes 2020-08-15 23:07:39 -04:00
Dan Macbook
da79b4e2ea ddd 2020-08-15 19:05:08 -04:00
Dan Macbook
e54f7d9c06 Hmmmmmmmmmmmm 2020-08-14 17:39:22 -04:00
Dan Macbook
c0991e46ec Hmmmmm 2020-08-14 17:39:11 -04:00
Dan Macbook
ddd29529ea Hmmm 2020-08-14 17:39:06 -04:00
Dan Macbook
a1d6431348 Mapping 2020-08-14 08:18:10 -04:00
Dan Macbook
31bd6a0c0d Biome Styling 2020-08-14 05:43:58 -04:00
Dan Macbook
7f98aff531 Caching Revisited 2020-08-14 05:16:58 -04:00
Dan Macbook
948317c27a No Caching 2020-08-14 03:39:35 -04:00
Dan Macbook
7406da66a7 ZPan 2020-08-13 14:59:30 -04:00
Dan Macbook
8586ec67b6 Lint 2020-08-13 10:45:59 -04:00
Dan Macbook
991aaa8677 MOAR 2020-08-13 08:10:48 -04:00
Dan Macbook
a4d1b5b972 Noise 2020-08-13 07:29:43 -04:00
Dan Macbook
887d355dea CNG Bakn 2020-08-13 07:04:50 -04:00
Dan Macbook
93866dc466 NVIS 2020-08-13 06:01:06 -04:00
Dan Macbook
6c014e25b5 NV 2020-08-13 05:42:02 -04:00
Dan Macbook
b1663c040f Noise fix 2020-08-13 02:49:35 -04:00
Dan Macbook
1f63b47500 normalize 2020-08-12 13:44:34 -04:00
Dan Macbook
ce0249f28e New Noise System 2020-08-11 16:27:48 -04:00
Dan Macbook
5d096092b9 Noise 2020-08-10 23:09:57 -04:00
Dan Macbook
a6b65c8d76 M 2020-08-10 23:09:52 -04:00
Daniel Mills
d3a4b0451d fixes 2020-08-09 01:24:58 -04:00
Daniel Mills
e0714637ff Schema 2020-08-08 19:14:12 -04:00
Daniel Mills
e777566339 Update docs 2020-08-08 19:07:08 -04:00
Daniel Mills
185d0d8817 Schema system 2020-08-08 18:56:01 -04:00
Daniel Mills
4132c0552f Object writing and whatnot 2020-08-07 14:36:07 -04:00
Daniel Mills
c158e74fb5 Region rarity 2020-08-07 13:36:41 -04:00
Daniel Mills
e5384509cf Localdata 2020-08-07 03:56:30 -04:00
Daniel Mills
60324c041c Structures 2020-08-07 01:29:05 -04:00
Daniel Mills
5be89f3f31 Fixes 2020-08-06 16:43:02 -04:00
Daniel Mills
4207330dcf Revert "Revert "Block Compat""
This reverts commit 05ab44d50b.
2020-08-06 16:02:01 -04:00
Daniel Mills
05ab44d50b Revert "Block Compat"
This reverts commit 2a849c417f.
2020-08-06 15:59:24 -04:00
Daniel Mills
2a849c417f Block Compat 2020-08-06 15:58:21 -04:00
Daniel Mills
d5d7e9a952 More Performance 2020-08-06 14:48:02 -04:00
Daniel Mills
f1e3210c7a Performance Improvements 2020-08-06 02:58:40 -04:00
Daniel Mills
cd07f29038 Loads of fixes 2020-08-05 02:56:18 -04:00
Daniel Mills
a7428838b3 Fixes 2020-08-04 00:34:52 -04:00
Daniel Mills
58b00b6ed5 Revert "Revert "Decorate""
This reverts commit 9d2544f8cb.
2020-08-03 23:31:36 -04:00
Daniel Mills
9d2544f8cb Revert "Decorate"
This reverts commit aca279c951.
2020-08-03 23:30:14 -04:00
Daniel Mills
4f99743db7 f 2020-08-03 23:30:03 -04:00
Daniel Mills
e5d622780e Revert "Revert ""Fix" ores""
This reverts commit 905625d18e.
2020-08-03 23:25:41 -04:00
Daniel Mills
905625d18e Revert ""Fix" ores"
This reverts commit b529cc5691.
2020-08-03 23:24:30 -04:00
Daniel Mills
b529cc5691 "Fix" ores 2020-08-03 23:24:23 -04:00
Daniel Mills
aca279c951 Decorate 2020-08-03 23:24:09 -04:00
Daniel Mills
086bb764a5 Fixes 2020-08-03 22:30:23 -04:00
Daniel Mills
4304cad029 Standalones 2020-08-03 13:56:51 -04:00
Daniel Mills
79e2bdb587 Standalones 2020-08-03 13:39:15 -04:00
Daniel Mills
51d55eed05 No BSky 2020-08-03 12:31:13 -04:00
Daniel Mills
ef5115b76c Fix locking 2020-08-03 10:44:39 -04:00
Daniel Mills
58a5aaed30 ATOMIC MAYHEM 2020-08-03 10:44:34 -04:00
Daniel Mills
b6592582b3 Fixes 2020-08-02 16:17:02 -04:00
Dan Macbook
7863660a47 fix 2020-08-02 11:35:35 -04:00
Daniel Mills
ea3e7f9ace Worlds 2020-08-01 12:16:42 -04:00
Daniel Mills
92e7ac7f20 Fix cmds 2020-08-01 11:11:53 -04:00
Daniel Mills
75f6a93024 fff 2020-08-01 10:13:23 -04:00
Daniel Mills
d679660e8a Move 2020-08-01 09:57:42 -04:00
Daniel Mills
f3d87f09d7 Total rotation support 2020-08-01 08:46:52 -04:00
Daniel Mills
71c90c6d31 Block type fixes 2020-08-01 07:20:54 -04:00
Daniel Mills
3b76bb64a9 Oh the commands 2020-08-01 04:36:57 -04:00
Daniel Mills
e5cdd9a7f1 f 2020-07-31 13:45:41 -04:00
Daniel Mills
121653a8f2 Fixes & Mem improvements 2020-07-31 01:02:00 -04:00
Daniel Mills
9d326d240a Fixes 2020-07-30 03:52:35 -04:00
Daniel Mills
d92c96ecc2 Fixes 2020-07-30 03:52:23 -04:00
Daniel Mills
aec5486144 Fixes 2020-07-30 02:58:08 -04:00
Daniel Mills
773dd2fd1a Biome Rarity 2020-07-29 23:18:37 -04:00
Daniel Mills
36e5fec284 Loads of bugfixes & Seed cohesion 2020-07-29 22:31:16 -04:00
Daniel Mills
84e81e9ce0 Now on hotload: Post Processing! 2020-07-29 00:53:30 -04:00
Daniel Mills
0ecde9531e Fix post 2020-07-29 00:23:48 -04:00
Daniel Mills
7d4b980e59 Speed 2020-07-28 20:49:35 -04:00
Daniel Mills
bccb4e154d Cave Biomes 2020-07-28 03:13:33 -04:00
Daniel Mills
45dd039c53 Start biome remodel 2020-07-28 00:02:30 -04:00
Daniel Mills
108499706a Cleanup 2020-07-27 20:49:26 -04:00
Daniel Mills
1ae1cebab6 Build script for release 2020-07-27 20:49:20 -04:00
Daniel Mills
77786af4d7 JSON 2020-07-27 20:49:09 -04:00
Daniel Mills
809959fde8 Proguard 2020-07-27 20:49:03 -04:00
Daniel Mills
a47ea13a9b Proguard 2020-07-27 20:48:37 -04:00
Daniel Mills
dddbcdf088 Reorganize 2020-07-27 20:48:00 -04:00
Daniel Mills
e1067aeb83 Fixes 2020-07-27 05:15:21 -04:00
Daniel Mills
e5e46f3239 Shatter Me 2020-07-26 20:44:36 -04:00
Daniel Mills
a28c08be99 Opts 2020-07-26 18:02:49 -04:00
Daniel Mills
279fcad10a More fixes 2020-07-26 14:17:20 -04:00
Daniel Mills
7505d645eb Fix 2020-07-26 13:24:54 -04:00
Daniel Mills
5af98c5683 Fix 2020-07-26 05:28:22 -04:00
Daniel Mills
f8cb0caa80 Decorate "spot": Shore Line 2020-07-25 14:03:12 -04:00
Daniel Mills
e3747d3cfd Fix Beaches 2020-07-25 14:02:58 -04:00
Daniel Mills
ebe96c0dad Dont log deposits 2020-07-25 13:23:40 -04:00
Daniel Mills
bbd394b95e Fix deposit placements 2020-07-25 13:23:05 -04:00
Daniel Mills
e1824ffda1 Caves fixed 2020-07-25 12:56:56 -04:00
Daniel Mills
d42be730c3 Fixes & Performance 2020-07-25 00:04:41 -04:00
Daniel Mills
a75817dde1 Revert "F"
This reverts commit 066fb7fba0.
2020-07-24 12:20:10 -04:00
Daniel Mills
066fb7fba0 F 2020-07-24 10:57:19 -04:00
Daniel Mills
30dc6e865f lol dual universe 2020-07-23 20:28:08 -04:00
Daniel Mills
ae5d0b282c Revert "Rarity System"
This reverts commit a9ce316d28.
2020-07-22 15:28:16 -04:00
Daniel Mills
a9ce316d28 Rarity System 2020-07-22 15:04:28 -04:00
Daniel Mills
6c28e270d2 Fixes 2020-07-22 11:10:03 -04:00
Daniel Mills
72d4c7eb40 Kboom 2020-07-21 04:23:02 -04:00
Daniel Mills
921e5912b3 Caves 2020-07-21 02:25:36 -04:00
Dan
aa168fab8c Merge pull request #13 from cyberpwnn/iris-2
Kablamalakazamshazam... fam
2020-07-21 01:32:00 -04:00
Daniel Mills
dffa357c0a Docs and crap 2020-07-21 01:30:47 -04:00
Daniel Mills
7c6442d51f Fixes 2020-07-20 14:58:32 -04:00
Daniel Mills
f995f6568c Bugfixes 2020-07-19 04:09:42 -04:00
Daniel Mills
5b8d812fc8 Fixes 2020-07-18 07:28:43 -04:00
Daniel Mills
27ce6ad5ba Surface decorators (including bisected blocks) 2020-07-17 18:56:12 -04:00
Daniel Mills
58dcb72adc Bam 2020-07-17 04:15:43 -04:00
Daniel Mills
202a7106a7 Bump 2020-05-19 04:28:47 -04:00
Daniel Mills
b8f79f6559 Fixes 2020-05-17 22:21:32 -04:00
Daniel Mills
e491401ca0 Generators 2020-05-16 04:41:45 -04:00
Daniel Mills
89b236ae9e fix 2020-05-15 00:57:28 -04:00
Daniel Mills
0566b30406 Rotation 2020-05-14 16:39:08 -04:00
Daniel Mills
14e63bd47d PAr fixes 2020-05-13 21:32:13 -04:00
Daniel Mills
1b2ce750ca Parallax 2020-05-11 10:09:23 -04:00
Daniel Mills
17df8f23c5 Cleanup 2020-05-10 20:43:30 -04:00
Daniel Mills
eca3174214 Deps 2020-05-10 17:16:44 -04:00
Daniel Mills
5d7126f772 Fix 2020-04-07 00:52:09 -04:00
Daniel Mills
a82ba6503f Max biomes 2020-03-21 03:26:55 -04:00
Daniel Mills
cecbad2eb9 Scaffolding 2020-03-20 10:17:51 -04:00
Daniel Mills
a97cb3df4f Moar 2020-03-16 17:11:31 -04:00
Daniel Mills
59f29eb6b4 RV 2020-03-16 11:55:17 -04:00
Daniel Mills
ba9cb41d47 Fixes 2020-03-15 19:35:07 -04:00
Daniel Mills
67a2ad708f Caverns 2020-03-14 23:01:06 -04:00
Daniel Mills
e385e3cec8 Fixes 2020-02-01 20:56:34 -05:00
Daniel Mills
6373478d13 Fuck bukkit's stupid classloaders 2020-01-31 13:43:28 -05:00
Daniel Mills
7cc6dd03ff Ores 2020-01-27 01:17:57 -05:00
Daniel Mills
30ffc8cd11 Support double plants and fix scatter chances 2020-01-26 23:17:55 -05:00
Daniel Mills
b61a71b3b4 Noise updates 2020-01-26 21:53:55 -05:00
Daniel Mills
1c7a7f6edf Never place decaying leaves 2020-01-26 18:05:15 -05:00
Daniel Mills
5d410764e1 Better placement 2020-01-26 16:42:19 -05:00
Daniel Mills
f645589cda Deep ocean tech 2020-01-25 17:45:06 -05:00
Daniel Mills
b49c1e6e47 Caves 2020-01-25 17:20:32 -05:00
Daniel Mills
58558732be Cobble steps 2020-01-24 19:31:21 -05:00
Daniel Mills
784ef277fc Slabs 2020-01-24 18:34:54 -05:00
Daniel Mills
eb359f79cb Lushness 2020-01-24 17:54:46 -05:00
Daniel Mills
31bf39d2e5 Patch 2020-01-24 14:39:55 -05:00
Daniel Mills
08159923d6 Fixes 2020-01-24 14:19:52 -05:00
Daniel Mills
7b8b8d6b75 Fixes 2020-01-24 08:20:47 -05:00
Daniel Mills
e52f5571a7 Fix pom 2020-01-23 19:48:42 -05:00
Daniel Mills
ea458935f0 Deployments 2020-01-23 17:42:02 -05:00
Daniel Mills
64674026a6 K 2020-01-23 08:20:45 -05:00
Daniel Mills
ea71474b62 Fix pom 2020-01-23 08:14:57 -05:00
Daniel Mills
5d6348b83c New biome system 2020-01-22 18:55:53 -05:00
Daniel Mills
199a26afbc f 2020-01-22 14:31:00 -05:00
Daniel Mills
c1971bffa8 Fix regen 2020-01-22 11:30:10 -05:00
Daniel Mills
51832005de Tweaks on height 2020-01-21 20:40:30 -05:00
Daniel Mills
9d5ae41c49 Fixes 2020-01-21 20:06:44 -05:00
Daniel Mills
fa1d2416e0 Parallaxes 2020-01-21 18:50:17 -05:00
Daniel Mills
c212bc294b Opts 2020-01-21 18:49:57 -05:00
Daniel Mills
ca21758889 Fix parallax 2020-01-21 18:43:00 -05:00
Daniel Mills
75da6d4df1 No warnings 2020-01-21 17:49:59 -05:00
Daniel Mills
0483bc0afe "Perfection" 2020-01-21 17:49:20 -05:00
Daniel Mills
0e12c6906f Fixes 2020-01-21 15:43:00 -05:00
Brian Fopiano
1e633278dd Mapping 2020-01-21 12:16:16 -08:00
Brian Fopiano
554756851f f 2020-01-21 11:33:17 -08:00
Daniel Mills
ac8ac06c8a f 2020-01-21 14:32:37 -05:00
Daniel Mills
f6780fcb76 Iris is 50%-200% faster & now has timings 2020-01-21 07:45:20 -05:00
Daniel Mills
31c2ea888b f 2020-01-21 05:15:20 -05:00
Daniel Mills
2702c0f2e4 f 2020-01-20 19:46:20 -05:00
Daniel Mills
2aef5f94c0 "fast" mode 2020-01-20 15:02:48 -05:00
Daniel Mills
a4b571ccbc Parallax Object Generation 2020-01-20 14:38:07 -05:00
Daniel Mills
fd561cd45d Fixes 2020-01-20 01:53:43 -05:00
Daniel Mills
1357d817e6 Fix Priority 2020-01-19 08:06:07 -05:00
Daniel Mills
ba2613d3c7 Push Fixes 2020-01-19 07:54:08 -05:00
Daniel Mills
b2e1717dc3 Swirls 2020-01-19 07:51:45 -05:00
Daniel Mills
ace5abea23 Fix missing blocks in schematic bug 2020-01-19 07:23:17 -05:00
Daniel Mills
2ea1bd5e67 Schematics 2020-01-19 07:11:11 -05:00
Daniel Mills
8ced379e44 Schematics Support Priority, Rotated Blocks, Sink & NoRotate 2020-01-19 04:56:26 -05:00
Daniel Mills
f5ab7f3102 Smashed the Stupid out of Memory 2020-01-19 02:58:29 -05:00
Daniel Mills
445ce46357 Fixed 2020-01-19 02:45:28 -05:00
Daniel Mills
1b9c7d48e4 Massive biome improvements 2020-01-18 07:16:33 -05:00
Daniel Mills
596c3368e0 Fix Warnings & Setup noise biome tests 2020-01-18 02:49:28 -05:00
Daniel Mills
3a699d34eb Tweaks 2020-01-17 10:40:45 -05:00
Daniel Mills
451eca0aa9 Biome specific generators 2020-01-17 09:19:41 -05:00
Daniel Mills
165517608d Fixes (for now) 2020-01-17 00:11:35 -05:00
Daniel Mills
05eb0b20be Tweaks 2020-01-16 20:36:17 -05:00
Daniel Mills
c47526ce8e Junk 2020-01-16 04:12:48 -05:00
Daniel Mills
75d9bf458a Fixes? 2020-01-16 03:55:54 -05:00
Daniel Mills
3b90a58418 Fixes for biome derivatives 2020-01-16 01:49:19 -05:00
Daniel Mills
84e49a266d Fixes 2020-01-16 01:31:36 -05:00
Daniel Mills
446430be4f Surfaces and subsurfaces 2020-01-16 01:17:45 -05:00
Daniel Mills
e0a5ecc156 RTP Fixes 2020-01-15 22:34:02 -05:00
Dan
59e8ba2297 Merge pull request #1 from VolmitSoftware/redesign-noise
Redesign noise
2020-01-15 21:33:27 -05:00
Daniel Mills
9f8caff571 Fixes 2020-01-15 06:49:41 -05:00
Daniel Mills
f68c206a17 Reimpl 2020-01-15 05:21:28 -05:00
Daniel Mills
8c5fdd4673 Cubic & Hermite 2020-01-15 04:14:27 -05:00
Daniel Mills
c62be9573d Back to linear 2020-01-15 03:19:22 -05:00
Daniel Mills
c4d2e16433 Sample radii & Remove ridges 2020-01-15 03:02:01 -05:00
Daniel Mills
ccf36f23c3 Unscramble Biomes 2020-01-15 02:46:22 -05:00
Daniel Mills
495dcd94d8 Disable features for noise testing 2020-01-15 02:39:07 -05:00
Daniel Mills
417a759c40 Gen Features 2020-01-14 21:11:46 -05:00
Daniel Mills
90846401a5 Tweaking carves 2020-01-14 01:16:33 -05:00
Daniel Mills
8e28c59163 PreHash 2020-01-13 21:23:45 -05:00
Daniel Mills
a3eb0bb9fc Terrain 3D Carving (noise) for overhangs & cliffs. Also performance stuf 2020-01-13 02:10:11 -05:00
Daniel Mills
9aac129aad Loads of fixes 2020-01-12 17:49:18 -05:00
Daniel Mills
9a6e3a80c7 Delete Pack (LOOK IN THE RESOURCES FOLDER) 2020-01-11 04:53:17 -05:00
Daniel Mills
7e45835424 Fixes 2020-01-11 04:45:31 -05:00
Daniel Mills
58632b8da3 Biome Regions (group biomes such as hot, cold) so less random gen 2020-01-11 04:30:38 -05:00
Daniel Mills
acaf95c017 Fixes 2020-01-11 03:54:51 -05:00
Daniel Mills
1c3ad6a925 Fix issues 2020-01-08 19:38:31 -05:00
Daniel Mills
9bf49d8732 Merge remote-tracking branch 'origin/master' 2020-01-08 19:31:35 -05:00
Daniel Mills
6895390f2b Biome List 2020-01-08 19:31:30 -05:00
Brian Fopiano
116831f6d9 Merge remote-tracking branch 'origin/master' 2020-01-08 16:31:21 -08:00
Brian Fopiano
51c401d6db missed a " " 2020-01-08 16:31:10 -08:00
Brian Fopiano
b13bc0060b " " 2020-01-08 16:30:49 -08:00
Daniel Mills
e68d573209 Merge remote-tracking branch 'origin/master' 2020-01-08 19:25:19 -05:00
Daniel Mills
2d6f3db8fe Replace flag 2020-01-08 19:25:15 -05:00
Brian Fopiano
1a68a60479 Sink Space 2020-01-08 16:23:11 -08:00
Daniel Mills
da55612726 Reloading & Resource copying 2020-01-08 19:07:28 -05:00
Daniel Mills
1b88e132cc Merge remote-tracking branch 'origin/master' 2020-01-08 18:53:12 -05:00
Daniel Mills
6179dbda8a Massive enhancements 2020-01-08 18:53:08 -05:00
Daniel Mills
2a7b2343b2 Gen renames 2020-01-08 18:53:01 -05:00
Brian Fopiano
f7de416070 testing 2020-01-08 15:11:58 -08:00
Brian Fopiano
ead4b9e695 AltDir fix 2020-01-08 14:24:43 -08:00
Brian Fopiano
362adedae6 path fix 2020-01-08 14:23:20 -08:00
Brian Fopiano
4d88c1f798 seru trees
jap trees
2020-01-08 14:22:03 -08:00
Brian Fopiano
f664142094 better birch fix 2020-01-08 12:04:02 -08:00
Brian Fopiano
0d533a71b6 Fixing birch gen 2020-01-08 11:49:47 -08:00
Brian Fopiano
d88a6c5db8 Merge remote-tracking branch 'origin/master' 2020-01-08 11:43:32 -08:00
Daniel Mills
4379deaca2 Opts 2020-01-08 14:42:57 -05:00
Brian Fopiano
67325fdb79 Merge remote-tracking branch 'origin/master' 2020-01-08 11:33:06 -08:00
Daniel Mills
77b6239b16 Log Colors 2020-01-08 14:32:09 -05:00
Daniel Mills
248f2ca3c4 Less spam 2020-01-08 14:24:28 -05:00
Brian Fopiano
8b672a68e6 Merge remote-tracking branch 'origin/master' 2020-01-08 11:20:59 -08:00
Daniel Mills
ce8127456c fIXES 2020-01-08 14:20:42 -05:00
Brian Fopiano
30185626a6 Merge remote-tracking branch 'origin/master' 2020-01-08 11:18:09 -08:00
Daniel Mills
431eea9152 Merge remote-tracking branch 'origin/master' 2020-01-08 14:17:21 -05:00
Daniel Mills
d53ec07857 Schematic fixes & timings 2020-01-08 14:17:18 -05:00
Brian Fopiano
2670a41545 integrated birch 2020-01-08 11:16:16 -08:00
Brian Fopiano
4825b21951 birch shit 2020-01-08 11:09:27 -08:00
Brian Fopiano
ac2974d290 houses 2020-01-08 10:53:17 -08:00
Daniel Mills
ad7a4503e0 Faster Schematic Placement 2020-01-08 13:50:43 -05:00
Daniel Mills
4094034aaf Settings & Schematic Fixes 2020-01-08 08:20:17 -05:00
Daniel Mills
11e74ef6cc Additional structures in biomes 2020-01-08 08:20:05 -05:00
Brian Fopiano
1930b911b3 Fantasy shit 2020-01-08 03:14:14 -08:00
Daniel Mills
7e9417b186 Update pack 2020-01-08 06:13:01 -05:00
Daniel Mills
c620a9388f Placement flags 2020-01-08 04:01:05 -05:00
Daniel Mills
0d55247dd9 Schematic Placement 2020-01-08 03:10:26 -05:00
Brian Fopiano
9940e61fec Godtree Packaged 2020-01-08 00:08:03 -08:00
Daniel Mills
feb4f77e39 scm loading 2020-01-08 02:42:50 -05:00
Daniel Mills
d1925201ef Ye 2020-01-07 08:26:39 -05:00
Daniel Mills
7e9cea94f3 Biome Systems 2020-01-07 07:47:42 -05:00
Daniel Mills
152b1bd24e Logs 2020-01-07 01:56:47 -05:00
Daniel Mills
5d6da6034d Random Objects 2020-01-07 01:54:18 -05:00
Daniel Mills
6ea203f6b9 Stumps 2020-01-07 01:45:49 -05:00
Daniel Mills
79aabc6feb Small & Medium Palm 2020-01-07 01:44:08 -05:00
Daniel Mills
0ef5b017df Medium Dead Spruce 2020-01-07 01:41:21 -05:00
Daniel Mills
8ab969688e Medium Spruce 2020-01-07 01:41:14 -05:00
Daniel Mills
7e5b94cc5f Medium Birch 2020-01-07 01:41:08 -05:00
Daniel Mills
8cd02543bc Oak Medium 2020-01-07 01:30:04 -05:00
Daniel Mills
6f68e8b2c7 Commands and objects 2020-01-07 01:28:46 -05:00
Daniel Mills
e7baa90792 Schem 2020-01-06 21:49:18 -05:00
Daniel Mills
4199824275 sdf 2020-01-06 21:27:24 -05:00
Daniel Mills
fc2abb0f3c G 2020-01-06 20:59:10 -05:00
Daniel Mills
5b275e4170 ffs 2020-01-06 20:57:21 -05:00
Daniel Mills
a7e58b715b Fixes 2020-01-06 01:40:16 -05:00
Daniel Mills
8b8d59065f Fixes 2020-01-06 01:07:19 -05:00
Daniel Mills
ed0efec628 Rotation of schematics 2020-01-04 17:54:34 -05:00
Daniel Mills
f8a40b8fb3 Variants 2020-01-04 17:06:49 -05:00
Brian Fopiano
ef8d48846c bY pAthS 2020-01-04 14:03:43 -08:00
Daniel Mills
8f973c8dc1 Paths 2020-01-04 16:54:08 -05:00
Daniel Mills
e1e47caf72 Tweaks 2020-01-04 16:48:44 -05:00
Daniel Mills
c2d7fe8612 Terrain improvements 2020-01-04 15:24:03 -05:00
Daniel Mills
93e02093be Schems 2020-01-04 14:01:10 -05:00
Daniel Mills
7934be70ee Epic Gens 2020-01-04 00:28:19 -05:00
Daniel Mills
ec43d2012e Schematics 2020-01-03 01:05:10 -05:00
Daniel Mills
e2c8b6ae02 Fix Biomes 2020-01-02 12:41:12 -05:00
Daniel Mills
4ce37da17e Cleanup & Fix seed issues 2020-01-02 12:40:55 -05:00
Daniel Mills
92ce6e5a8d WAAAAAAVVVVVSSSSSS 2020-01-02 01:09:10 -05:00
Daniel Mills
fd16fd2890 Pops 2020-01-01 20:52:10 -05:00
Daniel Mills
9f66725b4a f 2019-11-01 04:45:59 -04:00
Daniel Mills
373d75609a f 2019-11-01 04:27:47 -04:00
Daniel Mills
00d4f7640e v 2019-10-31 07:29:39 -04:00
Daniel Mills
98a26a40b1 f 2019-10-18 13:56:01 -04:00
Daniel Mills
ba84ac56e9 1.12.2 Stupid Speeds 2019-10-17 10:17:06 -04:00
Daniel Mills
05f501a66a f 2019-10-17 09:44:03 -04:00
959 changed files with 126019 additions and 1798 deletions

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

67
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View File

@@ -0,0 +1,67 @@
name: Iris Bug Report
description: File a bug report for Iris
labels: [ bug ]
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to fill this out!
If this does not work for you, feel free to use the [blank](https://github.com/VolmitSoftware/Iris/issues/new) format.
- type: textarea
id: how
attributes:
label: Problem
description: Please give a text description of how you reached the problem
value: |
1. Install Iris...
2. Do this...
3. Do that...
4. Observe the error...
validations:
required: true
- type: textarea
id: what
attributes:
label: Solution
description: Explain where you think the problem comes from (optional)
placeholder: The code to place a is missing b and c...
validations:
required: false
- type: dropdown
id: mcversion
attributes:
label: Minecraft Version
description: What version of Minecraft is the server on?
options:
- 1.14.X
- 1.15.X
- 1.16.X
- 1.17
- 1.17.1
- 1.18
- 1.19
- 1.20
- 1.21
- 1.22
validations:
required: true
- type: input
id: irisversion
attributes:
label: Iris Version
description: What version of Iris are you running? (see console)
placeholder: DO NOT SAY "LATEST"
validations:
required: true
- type: input
id: logs
attributes:
label: Log
description: Paste a full log. Always use [mclogs](https://mclo.gs) Or [Pastebin](https://pastebin.com/). Must not be a crash report. Must be a full log. Must not be a screenshot of a log.
placeholder: https://mslog.gs/...
validations:
required: true
- type: markdown
id: thanks
attributes:
value: "Thank you for filling out the form! We will be with you soon. Please do not ask support to review your report."

46
.github/ISSUE_TEMPLATE/feature.yml vendored Normal file
View File

@@ -0,0 +1,46 @@
name: Iris Feature Request
description: File a feature request for Iris. If you want to report a bug this is not the place.
labels: [ feature ]
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to fill this out!
If this does not work for you, feel free to use the [blank](https://github.com/VolmitSoftware/Iris/issues/new) format.
- type: dropdown
id: arc
attributes:
label: Adding, Removing, or Changing
description: What are you doing
options:
- Adding
- Removing
- Changing
validations:
required: true
- type: input
id: atype
attributes:
label: Type of Modification
description: What is it for?
value: I want to ...
validations:
required: true
- type: textarea
id: desc
attributes:
label: What are you trying to modify
description: Give as detailed of a description as you can for the modification that you want done (include pictures if applicable)
value: The way I would implement this is ...
validations:
required: true
- type: textarea
id: alternative
attributes:
label: Alternatives
description: What alternatives have you considered?
value: If this could not be implemented I would ...
- type: markdown
id: thanks
attributes:
value: "Thank you for filling out the form! We will be with you soon. Please do not ask support to review your report."

14
.gitignore vendored
View File

@@ -1,3 +1,13 @@
/target/
lib/
build/
libs/
.gradle/
.idea/
.DS_Store
collection/
src/main/java/com/volmit/iris/util/uniques/

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Iris</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>

View File

@@ -1,4 +0,0 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding/<project>=UTF-8

View File

@@ -1,8 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8

View File

@@ -1,4 +0,0 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

BIN
IRIS.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

518
LICENSE.md Normal file
View File

@@ -0,0 +1,518 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for software and other kinds of works.
The licenses for most software and other practical works are designed to take away your freedom to share and change the
works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all
versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use
the GNU General Public License for most of our software; it applies also to any other work released this way by its
authors. You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make
sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive
source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and
that you know you can do these things.
To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights.
Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it:
responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients
the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must
show them these terms so they know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute
and/or modify it.
For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software.
For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems
will not be attributed erroneously to authors of previous versions.
Some devices are designed to deny users access to install or run modified versions of the software inside them, although
the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the
software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely
where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we stand ready to extend this provision to those
domains in future versions of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents. States should not allow patents to restrict
development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger
that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "
Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission,
other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a
work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based on the Program.
To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily
liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy.
Propagation includes copying, distribution (with or without modification), making available to the public, and in some
countries other activities as well.
To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction
with a user through a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright
notice, and (2)
tells the user that there is no warranty for the work (except to the extent that warranties are provided), that
licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a
list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means
any non-source form of a work.
A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body,
or, in the case of interfaces specified for a particular programming language, one that is widely used among developers
working in that language.
The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in
the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to
enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is
available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used
to run it.
The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (
for an executable work) run the object code and to modify the work, including scripts to control those activities.
However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs
which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding
Source includes interface definition files associated with source files for the work, and the source code for shared
libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data
communication or control flow between those subprograms and other parts of the work.
The Corresponding Source need not include anything that users can regenerate automatically from other parts of the
Corresponding Source.
The Corresponding Source for a work in source code form is that same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided
the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program.
The output from running a covered work is covered by this License only if the output, given its content, constitutes a
covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey, without conditions so long as your license
otherwise remains in force. You may convey covered works to others for the sole purpose of having them make
modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do not control copyright. Those thus making or running
the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that
prohibit them from making any copies of your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not
allowed; section 10 makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling
obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or
restricting circumvention of such measures.
When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the
extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you
disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users,
your or third parties' legal rights to forbid circumvention of technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating
that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices
of the absence of any warranty; and give all recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for
a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source
code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of
the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or
distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the
compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause
this License to apply to the other parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License, in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library,
need not be included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used
for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In
determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a
particular product received by a particular user, "normally used" refers to a typical or common use of that class of
product, regardless of the status of the particular user or of the way in which the particular user actually uses, or
expects or is expected to use, the product. A product is a consumer product regardless of whether the product has
substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of
the product.
"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information
required to install and execute modified versions of a covered work in that User Product from a modified version of its
Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code
is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the
conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to
the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding
Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not
apply if neither you nor any third party retains the ability to install modified object code on the User Product (for
example, the work has been installed in ROM).
The requirement to provide Installation Information does not include a requirement to continue to provide support
service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product
in which it has been modified or installed. Access to a network may be denied when the modification itself materially
and adversely affects the operation of the network or violates the rules and protocols for communication across the
network.
Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format
that is publicly documented (and with an implementation available to the public in source code form), and must require
no special password or key for unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of
its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were
included in this License, to the extent that they are valid under applicable law. If additional permissions apply only
to part of the Program, that part may be used separately under those permissions, but the entire Program remains
governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or
from any part of it. (Additional permissions may be written to require their own removal in certain cases when you
modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have
or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by
the copyright holders of that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the
Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with
a term that is a further restriction, you may remove that term. If a license document contains a further restriction but
permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of
that license document, provided that the further restriction does not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a
statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as
exceptions; the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to
propagate or modify it is void, and will automatically terminate your rights under this License (including any patent
licenses granted under the third paragraph of section 11).
However, if you cease all violation of this License, then your license from a particular copyright holder is
reinstated (a)
provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b)
permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days
after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you
of the violation by some reasonable means, this is the first time you have received notice of violation of this
License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the
notice.
Termination of your rights under this section does not terminate the licenses of parties who have received copies or
rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not
qualify to receive new licenses for the same material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a
covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not
require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered
work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run,
modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third
parties with this License.
An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or
subdividing an organization, or merging organizations. If propagation of a covered work results from an entity
transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work
the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with
reasonable efforts.
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For
example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License,
and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using,
selling, offering for sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the
Program is based. The work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already
acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or
selling its contributor version, but do not include claims that would be infringed only as a consequence of further
modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent
sublicenses in a manner consistent with the requirements of this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential
patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its
contributor version.
In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not
to enforce a patent
(such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a
patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not
available for anyone to copy, free of charge and under the terms of this License, through a publicly available network
server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available,
or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a
manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "
Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in
a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in
that country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring
conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing
them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is
automatically extended to all recipients of the covered work and works based on it.
A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of,
or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You
may not convey a covered work if you are a party to an arrangement with a third party that is in the business of
distributing software, under which you make payment to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a
discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from
those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered
work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to
infringement that may otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this
License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to
satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence
you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further
conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License
would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work
licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the
resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special
requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply
to the combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to
time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new
problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the
GNU General Public License "or any later version" applies to it, you have the option of following the terms and
conditions either of that numbered version or of any later version published by the Free Software Foundation. If the
Program does not specify a version number of the GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used,
that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the
Program.
Later license versions may give you additional or different permissions. However, no additional obligations are imposed
on any author or copyright holder as a result of your choosing to follow a later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING
THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU
ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO
MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to
their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil
liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program
in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve
this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to
most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer
to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of
course, your program's commands might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for
the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is
a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If
this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

View File

@@ -1,2 +1,79 @@
# Iris
World Generator
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 Iris 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 Iris on spigot! We work hard to make Iris the best it can be for everyone.
## Preface: if you need help compiling and you are a developer / intend to help out in the community or with development we would love to help you regardless in the discord! however do not come to the discord asking for free copies, or a tutorial on how to compile.
### 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 Iris for MC 1.18+ run `gradlew setup` inside the root Iris 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 Iris jar will be placed in `Iris/build/Iris-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 Iris into your plugins folder if you
prefer.
* Resync the project & run your newly created task (under the development folder in gradle tasks!)
# Iris 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();
```

335
build.gradle Normal file
View File

@@ -0,0 +1,335 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
plugins {
id 'java'
id 'java-library'
id "io.freefair.lombok" version "6.3.0"
id "com.github.johnrengelman.shadow" version "7.1.2"
id "de.undercouch.download" version "5.0.1"
}
version '2.8.0-1.20.1'
def nmsVersion = '1.20.1' //[NMS]
def apiVersion = '1.20'
def specialSourceVersion = '1.11.0' //[NMS]
def spigotJarVersion = '1.20.1-R0.1-SNAPSHOT' //[NMS]
def name = getRootProject().getName() // Defined in settings.gradle
def main = 'com.volmit.iris.Iris'
// ADD YOURSELF AS A NEW LINE IF YOU WANT YOUR OWN BUILD TASK GENERATED
// ======================== WINDOWS =============================
registerCustomOutputTask('Cyberpwn', 'C://Users/cyberpwn/Documents/development/server/plugins')
registerCustomOutputTask('Psycho', 'C://Dan/MinecraftDevelopment/Server/plugins')
registerCustomOutputTask('ArcaneArts', 'C://Users/arcane/Documents/development/server/plugins')
registerCustomOutputTask('Coco', 'D://mcsm/plugins')
registerCustomOutputTask('Strange', 'D://Servers/1.17 Test Server/plugins')
registerCustomOutputTask('Vatuu', 'D://Minecraft/Servers/1.19.4/plugins')
registerCustomOutputTask('CrazyDev22', 'C://Users/Julian/Desktop/server/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()
)
}
}
/**
* Unified repo
*/
repositories {
mavenLocal {
content {
includeGroup("org.bukkit")
includeGroup("org.spigotmc")
}
}
mavenCentral()
maven { url "https://arcanearts.jfrog.io/artifactory/archives" }
maven { url "https://mvn.lumine.io/repository/maven-public/" }
maven { url "https://jitpack.io"}
maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots" }
maven { url "https://mvn.lumine.io/repository/maven/" }
maven { url "https://repo.triumphteam.dev/snapshots" }
maven { url "https://repo.mineinabyss.com/releases" }
maven { url = 'https://hub.jeff-media.com/nexus/repository/jeff-media-public/' }
}
/**
* We need parameter meta for the decree command system
*/
compileJava {
options.compilerArgs << '-parameters'
}
/**
* Configure Iris for shading
*/
shadowJar {
//minimize()
append("plugin.yml")
relocate 'com.dfsek.paralithic', 'com.volmit.iris.util.paralithic'
relocate 'io.papermc.lib', 'com.volmit.iris.util.paper'
relocate 'net.kyori', 'com.volmit.iris.util.kyori'
dependencies {
include(dependency('io.papermc:paperlib'))
include(dependency('com.dfsek:Paralithic'))
include(dependency('net.kyori:'))
}
}
configurations.all {
resolutionStrategy.cacheChangingModulesFor 60, 'minutes'
resolutionStrategy.cacheDynamicVersionsFor 60, 'minutes'
}
/**
* Dependencies.
*
* Provided or classpath dependencies are not shaded and are available on the runtime classpath
*
* Shaded dependencies are not available at runtime, nor are they available on mvn central so they
* need to be shaded into the jar (increasing binary size)
*
* Dynamically loaded dependencies are defined in the plugin.yml (updating these must be updated in the
* plugin.yml also, otherwise they wont be available). These do not increase binary size). Only declare
* these dependencies if they are available on mvn central.
*/
dependencies {
// Provided or Classpath
compileOnly 'org.projectlombok:lombok:1.18.24'
annotationProcessor 'org.projectlombok:lombok:1.18.24'
implementation 'org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT'
implementation 'org.bukkit:craftbukkit:1.20.1-R0.1-SNAPSHOT:remapped-mojang' //[NMS]
// Third Party Integrations
implementation 'com.ticxo.playeranimator:PlayerAnimator:R1.2.7'
implementation 'com.github.oraxen:oraxen:1.158.0'
implementation 'com.github.LoneDev6:api-itemsadder:3.4.1-r4'
implementation 'me.clip:placeholderapi:2.11.3'
//implementation files('libs/CustomItems.jar')
// Shaded
implementation 'com.dfsek:Paralithic:0.4.0'
implementation 'io.papermc:paperlib:1.0.5'
implementation "net.kyori:adventure-text-minimessage:4.13.1"
implementation 'net.kyori:adventure-platform-bukkit:4.3.0'
implementation 'net.kyori:adventure-api:4.13.1'
implementation 'io.lumine:Mythic-Dist:5.2.1'
// Dynamically Loaded
implementation 'io.timeandspace:smoothie-map:2.0.2'
implementation 'it.unimi.dsi:fastutil:8.5.8'
implementation 'com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2'
implementation 'org.zeroturnaround:zt-zip:1.14'
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'org.ow2.asm:asm:9.2'
implementation 'com.google.guava:guava:31.1-jre'
implementation 'bsf:bsf:2.4.0'
implementation 'rhino:js:1.7R2'
implementation 'com.github.ben-manes.caffeine:caffeine:3.0.6'
implementation 'org.apache.commons:commons-lang3:3.12.0'
}
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);
}
def buildToolsJar = new File(buildDir, "buildtools/BuildTools.jar");
def specialSourceJar = new File(buildDir, "specialsource/SpecialSource.jar");
def buildToolsFolder = new File(buildDir, "buildtools");
def specialSourceFolder = new File(buildDir, "specialsource");
def buildToolsHint = new File(buildDir, "buildtools/craftbukkit-" + nmsVersion + ".jar");
def outputShadeJar = new File(buildDir, "libs/Iris-" + version + "-all.jar");
def ssiJar = new File(buildDir, "specialsource/Iris-" + version + "-all.jar");
def ssobfJar = new File(buildDir, "specialsource/Iris-" + version + "-rmo.jar");
def ssJar = new File(buildDir, "specialsource/Iris-" + version + "-rma.jar");
def homePath = System.properties['user.home']
def m2 = new File(homePath + "/.m2/repository")
def m2s = m2.getAbsolutePath();
// ======================== Building Mapped Jars =============================
task downloadBuildtools(type: Download) {
group "remapping"
src 'https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar'
dest buildToolsJar
onlyIf {
!buildToolsJar.exists()
}
}
task downloadSpecialSource(type: Download) {
group "remapping"
src 'https://repo.maven.apache.org/maven2/net/md-5/SpecialSource/' + specialSourceVersion + '/SpecialSource-'+specialSourceVersion+'-shaded.jar'
dest specialSourceJar
onlyIf {
!specialSourceJar.exists()
}
}
task executeBuildTools(dependsOn: downloadBuildtools, type: JavaExec)
{
group "remapping"
classpath = files(buildToolsJar)
workingDir = buildToolsFolder
args = [
"--rev",
nmsVersion,
"--compile",
"craftbukkit",
"--remap"
]
onlyIf {
!buildToolsHint.exists()
}
}
task copyBuildToSpecialSource(type: Copy)
{
group "remapping"
from outputShadeJar
into specialSourceFolder
dependsOn(downloadSpecialSource, shadowJar)
}
task specialSourceRemapObfuscate(type: JavaExec)
{
group "remapping"
dependsOn(copyBuildToSpecialSource, downloadSpecialSource, shadowJar)
workingDir = specialSourceFolder
classpath = files(specialSourceJar,
new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-mojang.jar"))
mainClass = "net.md_5.specialsource.SpecialSource"
args = [
"--live",
"-i",
ssiJar.getName(),
"-o",
ssobfJar.getName(),
"-m",
m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-mojang.txt",
"--reverse",
]
}
task specialSourceRemap(type: JavaExec)
{
group "remapping"
dependsOn(specialSourceRemapObfuscate)
workingDir = specialSourceFolder
classpath = files(specialSourceJar,
new File(m2s + "/org/spigotmc/spigot/" + spigotJarVersion + "/spigot-" + spigotJarVersion + "-remapped-obf.jar"))
mainClass = "net.md_5.specialsource.SpecialSource"
args = [
"--live",
"-i",
ssobfJar.getName(),
"-o",
ssJar.getName(),
"-m",
m2s + "/org/spigotmc/minecraft-server/" + spigotJarVersion + "/minecraft-server-" + spigotJarVersion + "-maps-spigot.csrg"
]
}
tasks.compileJava.dependsOn(executeBuildTools)
compileJava {
options.encoding = "UTF-8"
}
task setup()
{
group("iris")
dependsOn(clean, executeBuildTools)
}
task iris(type: Copy)
{
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")
}
}
}

View File

@@ -1,116 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>bytecode.ninja</groupId>
<artifactId>Iris</artifactId>
<name>Iris</name>
<version>1.0</version>
<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.yml</include>
<include>**/*.txt</include>
<include>**/*.properties</include>
<include>**/*.html</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>runbatchfile</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>${skip.copy}</skip>
<executable>${project.basedir}/scripts/copy.bat</executable>
<arguments>
<argument>${project.basedir}\target\${project.name}-${project.version}.jar</argument>
<argument>${development.location}</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>pub</id>
<url>http://nexus.mpm.care/content/repositories/pub</url>
</repository>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>volmit</id>
<url>http://nexus.volmit.com/content/repositories/volmit</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.14.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>commons-lang</artifactId>
<groupId>commons-lang</groupId>
</exclusion>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
<exclusion>
<artifactId>bungeecord-chat</artifactId>
<groupId>net.md-5</groupId>
</exclusion>
<exclusion>
<artifactId>snakeyaml</artifactId>
<groupId>org.yaml</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>cb</groupId>
<artifactId>craftbukkit-1.14.4</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/craftbukkit-1.14.4.jar</systemPath>
</dependency>
</dependencies>
<properties>
<development.location>${user.home}\Documents\development\server\plugins\${project.name}.jar</development.location>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>

3
gource.bat Normal file
View File

@@ -0,0 +1,3 @@
@echo off
cd gource
gource -f -a 1 -s 0.01 -t 100000 --colour-images --max-file-lag 35 --title MyGuide --user-scale 1.67 --max-user-speed 725 --filename-time 11 -title Chimera --user-friction 2.5 --padding 1.2 --user-scale 1.25 --filename-time 2 --bloom-intensity 0.1 --bloom-multiplier 3 --hide filenames,dirnames

674
gource/COPYING.txt Normal file
View File

@@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

298
gource/ChangeLog.txt Normal file
View File

@@ -0,0 +1,298 @@
0.51:
* Fixed --font-file relative path handling.
* Fixed a bug in resolving the repository root directory from a relative path.
0.50:
* Right mouse button rotation now pivots around the camera.
* Added --font-file option.
* Added --enable-font-file option to configure.
* Added --no-time-travel option (Lars Schmertmann).
* Added --dir-name-position option (Lars Schmertmann).
* Added --file-extension-fallback option (Lars Schmertmann).
* Added --user-show-filter option (Victor Lopez).
* Added --disable-input option (Joey Parrish).
* Added --loop-delay-seconds option (Joey Parrish).
* Added --font-scale option.
* Added filename, dirname and user font size options (Carl Colena).
* Added workaround for FFMpeg error parsing Gource PPM video output.
* Fixed a bug in the Mercurial log parser that caused changes to be missed.
* Fixed file removal being cancelled by an action with an earlier timestamp.
* Fixed a bug in the log file format detection that could result in the wrong
first entry being displayed for a custom log.
* Fixed a bug where automatically cycling through a config with multiple
repositories reset settings to their defaults.
0.49:
* Fixed compatibility with GLM 0.9.9.0.
0.48:
* Can now generate logs from git sub module directories.
0.47:
* Fixed low mouse movement speed with some mice while repositioning camera.
0.46:
* Added --screen option.
0.45:
* Added --window-position XxY option.
* Added --frameless option.
* Added --file-show-filter REGEX option (swoogles).
* Added --filename-time and filename-colour options (gh2k).
* Improved handling of very low seconds-per-day values (malengrin).
* Fixed crash when SVN log lacks author information (obarthel).
* Additional git log command validation (cym13).
* Allow lower case hex colours in custom logs (HSorensen).
* Enabled STDOUT support with --output-stream '-' on Windows (circulosmeos).
* Now requires SDL 2 to build (deprecated SDL 1.2 support removed).
0.44:
* Fixed crash when taking a screenshot with an odd resolution.
* Fixed type deduction compilation error with newer versions of GCC.
* Documentation improvements.
0.43:
* Updated boost autoconf macros to fix multi-arch detection.
0.42:
* Fixed bzr log command when no start date was specified (chrisf).
* Fixed hg log commit order when date range specified.
* Fixed hg log command line on Windows.
* Fixed parser bug in date range filtering code.
0.41:
* Multi-monitor support using SDL 2.0 when available.
* SDL 1.2 support is deprecated.
* Full screen mode now uses desktop resolution by default.
* Added --start-date, --stop-date 'YYYY-MM-DD hh:mm:ss' options.
* Added --dir-name-depth option.
* Changed --file-idle-time default value to 0.
* Changed screenshot format to PNG.
0.40:
* Added caption support.
* Improved command line interoperability on Windows.
* Fixed directory deletion short circuiting processing the rest of a commit.
* Fixed issue loading non-ascii user image filenames on windows.
* Ignore UTF-8 byte order mark at the start of lines in custom log files.
* Fix to boost macros for Macs and non-GNU systems (mistydemeo).
* Autotools improvements (flameeyes).
0.39:
* Fixed blurry non power of 2 logos.
* File colour changes now supported in custom logs (rmyorston).
* Fixed building against Boost 1.50 (svenstaro).
* Updated boost autoconf macros (flameeyes).
* Autogen script (matthiaskrgr).
0.38:
* New high quality sprites.
* Fullscreen toggle with alt + enter.
* Window is now resizable. -WIDTHxHEIGHT! creates a non-resizable window.
* Lowered minimum zoom distance.
* Use AM_CPPFLAGS in Makefile.am to allow passing custom CPPFLAGS.
* Don't add files that match the path of a known directory.
* Fixed divide by zero in text shader causing artifacts on some video cards.
* Recursively search for repository directory when log-format not specified
(thanks to Jörg Bachmann for original concept / prototype).
* New dependency on Boost Filesystem.
* Doubled the maximum zoom out distance.
* Allow negative timestamps before 1970 in custom log (artzub).
* Fix for UTF8-CPP checked.h compilation issue (vszakats).
* Fixed bug causing missing characters in text.
* Fixed --highlight-users option not using highlight-colour.
* highlight-colour default changed to white.
* Added --selection-colour option (applied to selected users and files).
* Added --dir-colour option (applied to directories).
0.37:
* Made SVN log GMT timestamp conversion fix portable.
0.36:
* Fixed SVN log GMT timestamp conversion.
* Fixed issue with sub-dirs of deleted dir not being removed in some cases.
0.35:
* Added long file extension truncation handling to file key (--key).
* Treat changes in Mercurial log files with the same time/user as one commit.
* Fixed handling of spaces in directory names with Mercurial.
* Fixed --font-colour option.
0.34:
* Now using VBOs and shaders for faster rendering when OpenGL 2.0 is available.
* Eliminated bloom colour banding artifacts (requires OpenGL 2.0).
* New font rendering library derived from FTGL (FTGL no longer required).
* Single pass font/shadow rendering (with lots of help from Chris Forbes).
* Added --no-vsync option.
* Fixed bug where tree is out of alignment with object positions in windowed
mode due to using the wrong display dimensions internally.
* Removed default max-files limit.
0.33:
* Added --hide root option to not draw branches from the root directory.
* Fixed log parsing of Bazaar merges and tagged commits.
* --output-custom-log now skips unparsed log entries instead of exiting.
0.32:
* Fixed behaviour of user camera tracking.
0.31:
* Added --with-tinyxml option to configure (use the system TinyXML library).
0.30:
* Fixed crash when SVN log entry contains no 'paths' element.
* Handle directory deletion (happens in SVN logs).
0.29:
* SVN built-in support.
* cvs2cl log support (cvs-exp support is now deprecated).
* Made camera behaviour when zooming and selecting objects more intuitive.
* Improved interactive performance.
* Added file extension key (--key or toggled with 'K').
* Added mouse-over tool tips.
* Added --highlight-colour option.
* Added --hash-seed option. The S key now randomizes colours.
* Added --output-custom-log option.
* Exposed --time-scale option (previously only available interactively).
* Removed arbitrary 1024 maximum length limit for log lines.
* Fixed two file colouring bugs (quoted files from git, period in file path).
* Fix handling of avatars for UTF-8 usernames on MACOSX (Christian Köstlin).
* Recover from video mode failing to set due to multi-sampling (Siddhesh Poyarekar).
0.28:
* Bazaar support for merged commits (Nick Moffit).
* C++ efficiency improvements (Oliver Smith).
* Improved cvs-exp log compatibility.
* Re-show name of user when adding a new action if user is idle.
* Added --padding option to control camera view padding.
* More accurate camera tracking (tracks the bounding boxes of objects).
* Improved automatic rotation logic.
0.27:
* Display time stops at the time of the last commit.
* Users fade out when end reached rather than ending abruptly.
* Position slider is now hidden by default if recording a video.
* Automatic camera rotation for better use of screen space.
* Support international keyboards (Peter Kjellerstedt).
* C++ efficiency improvements (Jacob Metcalfe).
* Fixed crash when reading from STDIN.
* Fixed intermittent crash closing Gource when using --output-ppm-stream.
* Added ini style config file support (see --load/save-config).
* Added screenshot button (F12). Screenshots respect the alpha channel.
* Added --transparent to make the background see-through (for screenshots).
* Added --logo and --background-image options.
* Added --dont-stop option for manual exiting when recording videos.
* Added --stop-at-time option to stop Gource after a number of seconds.
* Added --hide 'mouse' option.
* Added --highlight-dirs option.
* Added --file-extensions to show filename extensions only.
* Added --user-filter REGEX option.
* Allow --file-idle-time 0 (files will never expire).
* Allow --start-position 'random' to set a random start position.
* --log-command VCS replaces multiple --log-command-VCS options.
* Replaced --disable-progress and --disable-bloom with arguments to --hide.
0.26a:
* Updated to latest version of GL autoconf macros.
0.26:
* Improved mouse dragging.
* Holding right mouse button and moving the mouse rotates the view.
* The middle mouse button now toggles the camera mode.
* Username positions now scale correctly.
* Simulation time no longer incremented while paused, counting towards file time lag.
* M key now toggles mouse visibility.
* Added --hide option to use instead of multiple --hide-ELEMENT options.
0.25:
* Bazaar support (John Arbash Meinel).
* Dragging the mouse on the background moves the camera.
* Added --camera-mode option (track,overview).
* Support DOS line endings in logs.
* Improved compatibility of hg log command (Brendan Cully).
* Fixed PPM exporter producing blank images on some video cards.
* Fixed parsing of negative timezones from cvs-exp.pl logs.
* Fixed various gdb and compiler warnings.
0.24:
* PPM output speed improvements, including using a second thread (HighlandSun).
* Now using standard autotools (Flameeyes).
* Fixed --max-file-lag not working with some custom log files.
* Gource will stop at the end of the log by default when recording a video.
* Fixed STDIN stopping working after the first lot of records with tail -f.
* Added proper exception handling.
* Print errors to stderr.
0.23:
* Hiding filenames no longer hides directory names.
* Fixed --stop-on-idle option.
* Added --stop-at-end option (more intuitive than --stop-position 1.0).
0.22:
* Fixed Mercurial log order.
0.21b:
* Fixed windows build.
0.21:
* Some documentation fixes.
0.20:
* Added bloom effect (turn off with --disable-bloom).
* Added support for Mercurial (thanks to Justin Love for gource.style).
* --start-position option now works in combination with --disable-progress.
0.19:
* Use time_t instead of long for timestamps.
0.18:
* Fixed camera movement while the simulation is paused.
0.17:
* Show correct month for CVS logs.
* Added time scaling (Bitshifter).
0.16:
* Added --hide-dirnames option.
* Added --user-scale option.
* Added --date-format option (Pat Notz).
* Fix bug when encountering long log lines.
* Fixed incorrect parsing of trivial merges.
* Fixed building issues on OSX.
0.15:
* Added PPM output support for creating videos (Johannes Schindelin).
* Added experimental Apache combined access log support (--log-format apache).
* Added --stop-position and --stop-on-idle options (useful for making videos).
* Added --max-file-lag option to limit how long after a commit file changes can take to appear.
* Added --no-renames to the git log command as they don't display correctly.
* Added --max-user-speed and --user-friction as options.
* Now builds on OSX Leopard (with the required libaries installed).
* Caught raw exception from replace_invalid().
* Added CXXFLAGS. You may want to override the default (eg CXXFLAGS=-O3 ./configure).
0.14:
* Updated SVN instructions.
0.13:
* Removed single quotes from log command (fixes running gource --git-log-command in back ticks)
* Added SVN instructions.
* Fixed manpage hyphens.
0.12:
* Added --enable-ttf-font-dir=DIR option to configure (to specify the ttf-freefont directory).
* UTF-8 support using UTF8-CPP (http://utfcpp.sourceforge.net/).
* Changed the git log command (see --git-log-command) to require less work to parse.
Log files generated with the previous git-log command used by gource should continue to work.
* Allow --seconds-per-day value less than 1.0.
* Added --git-branch command.
* Added --loop command.
* Added --crop command.
0.11:
* Made N key skip to next entry.
* Documented --user-image-dir flag.
* temp file name now uses uid instead of time
0.1:
* First release.

469
gource/README.txt Normal file
View File

@@ -0,0 +1,469 @@
Gource
software version control visualization
Copyright (C) 2009 Andrew Caudwell
http://gource.io
Contents
========
1. Description
2. Requirements
3. Using Gource
4. Copyright
1. Description
==============
OpenGL-based 3D visualisation tool for source control repositories.
The repository is displayed as a tree where the root of the repository is the
centre, directories are branches and files are leaves. Contributors to the
source code appear and disappear as they contribute to specific files and
directories.
2. Requirements
===============
Gource's display is rendered using OpenGL and requires a 3D accelerated video
card to run.
3. Using Gource
===============
gource [options] [path]
options:
-h, --help
Help ('-H' for extended help).
-WIDTHxHEIGHT, --viewport WIDTHxHEIGHT
Set the viewport size. If -f is also supplied, will attempt to set
the video mode to this also. Add ! to make the window non-resizable.
--screen SCREEN
Set the number of the screen to display on.
--window-position XxY
Initial window position on your desktop which may be made up of
multiple monitors.
This will override the screen setting so don't specify both.
--frameless
Frameless window.
-f, --fullscreen
Fullscreen.
-w, --windowed
Windowed.
--transparent
Make the background transparent. Only really useful for screenshots.
--start-date "YYYY-MM-DD hh:mm:ss +tz"
Start with the first entry after the supplied date and optional time.
If a time zone offset isn't specified the local time zone is used.
Example accepted formats:
"2012-06-30"
"2012-06-30 12:00"
"2012-06-30 12:00:00 +12"
--stop-date "YYYY-MM-DD hh:mm:ss +tz"
Stop after the last entry prior to the supplied date and optional time.
Uses the same format as --start-date.
-p, --start-position POSITION
Begin at some position in the log (between 0.0 and 1.0 or 'random').
--stop-position POSITION
Stop (exit) at some position in the log (does not work with STDIN).
-t, --stop-at-time SECONDS
Stop (exit) after a specified number of seconds.
--stop-at-end
Stop (exit) at the end of the log / stream.
--loop
Loop back to the start of the log when the end is reached.
--loop-delay-seconds
Seconds to delay before looping.
-a, --auto-skip-seconds SECONDS
Skip to next entry if nothing happens for a number of seconds.
-s, --seconds-per-day SECONDS
Speed of simulation in seconds per day.
--realtime
Realtime playback speed.
--no-time-travel
Use the time of the last commit if the time of a commit is in the past.
-c, --time-scale SCALE
Change simulation time scale.
-i, --file-idle-time SECONDS
Time in seconds files remain idle before they are removed or 0
for no limit.
-e, --elasticity FLOAT
Elasticity of nodes.
-b, --background-colour FFFFFF
Background colour in hex.
--background-image IMAGE
Set a background image.
--logo IMAGE
Logo to display in the foreground.
--logo-offset XxY
Offset position of the logo.
--title TITLE
Set a title.
--font-file FILE
Specify the font. Should work with most font file formats supported by FreeType, such as TTF and OTF, among others.
--font-scale SCALE
Scale the size of all fonts.
--font-size SIZE
Font size used by the date and title.
--file-font-size SIZE
Font size of filenames.
--dir-font-size SIZE
Font size of directory names
--user-font-size SIZE
Font size of user names.
--font-colour FFFFFF
Font colour used by the date and title in hex.
--key
Show file extension key.
--date-format FORMAT
Specify display date string (strftime format).
--log-command VCS
Show the VCS log command used by gource (git,svn,hg,bzr,cvs2cl).
--log-format VCS
Specify the log format (git,svn,hg,bzr,cvs2cl,custom).
Required when reading from STDIN.
--git-branch
Get the git log of a branch other than the current one.
--follow-user USER
Have the camera automatically follow a particular user.
--highlight-dirs
Highlight the names of all directories.
--highlight-user USER
Highlight the names of a particular user.
--highlight-users
Highlight the names of all users.
--highlight-colour FFFFFF
Font colour for highlighted users in hex.
--selection-colour FFFFFF
Font colour for selected users and files.
--filename-colour FFFFFF
Font colour for filenames.
--dir-colour FFFFFF
Font colour for directories.
--dir-name-depth DEPTH
Draw names of directories down to a specific depth in the tree.
--dir-name-position FLOAT
Position along edge of the directory name
(between 0.1 and 1.0, default is 0.5).
--filename-time SECONDS
Duration to keep filenames on screen (>= 2.0).
--file-extensions
Show filename extensions only.
--file-extension-fallback
Use filename as extension if the extension is missing or empty.
--file-filter REGEX
Filter out file paths matching the specified regular expression.
--file-show-filter REGEX
Show only file paths matching the specified regular expression.
--user-filter REGEX
Filter usernames matching the specified regular expression.
--user-show-filter REGEX
Show only usernames matching the specified regular expression.
--user-image-dir DIRECTORY
Directory containing .jpg or .png images of users
(eg "Full Name.png") to use as avatars.
--default-user-image IMAGE
Path of .jpg or .png to use as the default user image.
--colour-images
Colourize user images.
--crop AXIS
Crop view on an axis (vertical,horizontal).
--padding FLOAT
Camera view padding.
--multi-sampling
Enable multi-sampling.
--no-vsync
Disable vsync.
--bloom-multiplier FLOAT
Adjust the amount of bloom.
--bloom-intensity FLOAT
Adjust the intensity of the bloom.
--max-files NUMBER
Set the maximum number of files or 0 for no limit.
Excess files will be discarded.
--max-file-lag SECONDS
Max time files of a commit can take to appear.
Use -1 for no limit.
--max-user-speed UNITS
Max speed users can travel per second.
--user-friction SECONDS
Time users take to come to a halt.
--user-scale SCALE
Change scale of user avatars.
--camera-mode MODE
Camera mode (overview,track).
--disable-auto-rotate
Disable automatic camera rotation.
--disable-input
Disable keyboard and mouse input.
--hide DISPLAY_ELEMENT
Hide one or more display elements from the list below:
bloom - bloom effect
date - current date
dirnames - names of directories
files - file icons
filenames - names of files
mouse - mouse cursor
progress - progress bar widget
root - root directory of tree
tree - animated tree structure
users - user avatars
usernames - names of users
Separate multiple elements with commas (eg "mouse,progress")
--hash-seed SEED
Change the seed of hash function.
--caption-file FILE
Caption file (see Caption Log Format).
--caption-size SIZE
Caption size.
--caption-colour FFFFFF
Caption colour in hex.
--caption-duration SECONDS
Caption duration.
--caption-offset X
Caption horizontal offset (0 to centre captions).
-o, --output-ppm-stream FILE
Output a PPM image stream to a file ('-' for STDOUT).
This will automatically hide the progress bar initially and
enable 'stop-at-end' unless other behaviour is specified.
-r, --output-framerate FPS
Framerate of output (25,30,60). Used with --output-ppm-stream.
--output-custom-log FILE
Output a custom format log file ('-' for STDOUT).
--load-config CONFIG_FILE
Load a gource conf file.
--save-config CONFIG_FILE
Save a gource conf file with the current options.
--path PATH
path Either a supported version control directory, a pre-generated log
file (see log commands or the custom log format), a Gource conf
file or '-' to read STDIN.
If path is omitted, gource will attempt to read a log from the
current directory.
Git, Bazaar, Mercurial and SVN Examples:
View the log of the repository in the current path:
gource
View the log of a project in the specified directory:
gource my-project-dir
For large projects, generating a log of the project history may take a long
time. For centralized VCS like SVN, generating the log may also put load on
the central VCS server.
In these cases, you may like to save a copy of the log for later use.
You can generate a log in the VCS specific log format using
the --log-command VCS option:
cd my-svn-project
`gource --log-command svn` > my-svn-project.log
gource my-svn-project.log
You can also have Gource write a copy of the log file in its own format:
gource --output-custom-log my-project-custom.log
CVS Support:
Use 'cvs2cl' to generate the log and then pass it to Gource:
cvs2cl --chrono --stdout --xml -g-q > my-cvs-project.log
gource my-cvs-project.log
Custom Log Format:
If you want to use Gource with something other than the supported systems,
there is a pipe ('|') delimited custom log format:
timestamp - A unix timestamp of when the update occured.
username - The name of the user who made the update.
type - initial for the update type - (A)dded, (M)odified or (D)eleted.
file - Path of the file updated.
colour - A colour for the file in hex (FFFFFF) format. Optional.
Caption Log Format:
Gource can display captions along the timeline by specifying a caption file
(using --caption-file) in the pipe ('|') delimited format below:
timestamp - A unix timestamp of when to display the caption.
caption - The caption
Recording Videos:
See the guide on the homepage for examples of recording videos with Gource:
https://github.com/acaudwell/Gource/wiki/Videos
More Information:
Visit the Gource homepage for guides and examples of using Gource with various
version control systems:
http://gource.io
Interface:
The time shown in the top left of the screen is set initially from the first
log entry read and is incremented according to the simulation speed
(--seconds-per-day).
Pressing SPACE at any time will pause/resume the simulation. While paused you
may use the mouse to inspect the detail of individual files and users.
TAB cycles through selecting the current visible users.
The camera mode, either tracking activity or showing the entire code tree, can
be toggled using the Middle mouse button.
You can drag the left mouse button to manually control the camera. The right
mouse button rotates the view.
Interactive keyboard commands:
(V) Toggle camera mode
(C) Displays Gource logo
(K) Toggle file extension key
(M) Toggle mouse visibility
(N) Jump forward in time to next log entry
(S) Randomize colours
(D) Toggle directory name display mode
(F) Toggle file name display mode
(U) Toggle user name display mode
(G) Toggle display of users
(T) Toggle display of directory tree edges
(R) Toggle display of root directory edges
(+-) Adjust simulation speed
(<>) Adjust time scale
(TAB) Cycle through visible users
(F12) Screenshot
(Alt+Enter) Fullscreen toggle
(ESC) Quit
4. Copyright
============
Gource - software version control visualization
Copyright (C) 2009 Andrew Caudwell <acaudwell@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

BIN
gource/SDL2.dll Normal file

Binary file not shown.

BIN
gource/SDL2_image.dll Normal file

Binary file not shown.

1
gource/THANKS.txt Normal file
View File

@@ -0,0 +1 @@
Cheers to everyone at Catalyst IT for their support and encouragement.

3
gource/cmd/gource Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
GOURCE_CMD_DIR=`dirname "$0"`
"$GOURCE_CMD_DIR/../gource.exe" "$@"

2
gource/cmd/gource.cmd Normal file
View File

@@ -0,0 +1,2 @@
@echo off
"%~dp0\..\gource.exe" %*

BIN
gource/data/beam.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

BIN
gource/data/bloom.tga Normal file

Binary file not shown.

BIN
gource/data/bloom_alpha.tga Normal file

Binary file not shown.

BIN
gource/data/file.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

View File

@@ -0,0 +1,108 @@
-*-text-*-
GNU FreeFont
The GNU FreeFont project aims to provide a useful set of free scalable
(i.e., OpenType) fonts covering as much as possible of the ISO 10646/Unicode
UCS (Universal Character Set).
Statement of Purpose
--------------------
The practical reason for putting glyphs together in a single font face is
to conveniently mix symbols and characters from different writing systems,
without having to switch fonts.
Coverage
--------
FreeFont covers the following character sets
* ISO 8859 parts 1-15
* CEN MES-3 European Unicode Subset
http://www.evertype.com/standards/iso10646/pdf/cwa13873.pdf
* IBM/Microsoft code pages 437, 850, 852, 1250, 1252 and more
* Microsoft/Adobe Windows Glyph List 4 (WGL4)
http://www.microsoft.com/typography/otspec/WGL4.htm
* KOI8-R and KOI8-RU
* DEC VT100 graphics symbols
* International Phonetic Alphabet
* Arabic, Hebrew, Armenian, Georgian, Ethiopian and Thai alphabets,
including Arabic presentation forms A/B
* mathematical symbols, including the whole TeX repertoire of symbols
* APL symbols
etc.
Editing
-------
The free outline font editor, George Williams's FontForge
<http://fontforge.sourceforge.net/> is used for editing the fonts.
Design Issues
-------------
Which font shapes should be made? Historical style terms like Renaissance
or Baroque letterforms cannot be applied beyond Latin/Cyrillic/Greek
scripts to any greater extent than Kufi or Nashki can be applied beyond
Arabic script; "italic" is really only meaningful for Latin letters.
However, most modern writing systems have typographic formulations for
contrasting uniform and modulated character stroke widths, and have some
history with "oblique", faces. Since the advent of the typewriter, most
have developed a typographic style with uniform-width characters.
Accordingly, the FreeFont family has one monospaced - FreeMono - and two
proportional faces (one with uniform stroke - FreeSans - and one with
modulated stroke - FreeSerif).
To make text from different writing systems look good side-by-side, each
FreeFont face is meant to contain characters of similar style and weight.
Licensing
---------
Free UCS scalable fonts is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
The fonts are distributed in the hope that they will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
As a special exception, if you create a document which uses this font, and
embed this font or unaltered portions of this font into the document, this
font does not by itself cause the resulting document to be covered by the
GNU General Public License. This exception does not however invalidate any
other reasons why the document might be covered by the GNU General Public
License. If you modify this font, you may extend this exception to your
version of the font, but you are not obligated to do so. If you do not
wish to do so, delete this exception statement from your version.
Files and their suffixes
------------------------
The files with .sfd (Spline Font Database) are in FontForge's native format.
Please use these if you plan to modify the font files.
TrueType fonts for immediate consumption are the files with the .ttf
(TrueType Font) suffix. These are ready to use in Xwindows based
systems using FreeType, on Mac OS, and on older Windows systems.
OpenType fonts (with suffix .otf) are for use in Windows Vista.
Note that although they can be installed on Linux, but many applications
in Linux still don't support them.
--------------------------------------------------------------------------
Primoz Peterlin, <primoz.peterlin@biofiz.mf.uni-lj.si>
Steve White <stevan.white@googlemail.com>
Free UCS scalable fonts: http://savannah.gnu.org/projects/freefont/
$Id: README,v 1.7 2009/01/13 08:43:23 Stevan_White Exp $

5
gource/data/gource.style Normal file
View File

@@ -0,0 +1,5 @@
changeset = '{file_adds}{file_copies}{file_mods}{file_dels}'
file_mod = "{date|hgdate}|{author|person}|M|{file_mod}\n"
file_add = "{date|hgdate}|{author|person}|A|{file_add}\n"
file_del = "{date|hgdate}|{author|person}|D|{file_del}\n"
file_copy = "{date|hgdate}|{author|person}|A|{name}\n"

View File

@@ -0,0 +1,16 @@
varying vec3 pos;
void main()
{
float r = fract(sin(dot(pos.xy ,vec2(11.3713,67.3219))) * 2351.3718);
float offset = (0.5 - r) * gl_TexCoord[0].x * 0.045;
float intensity = min(1.0, cos((length(pos*2.0)+offset)/gl_TexCoord[0].x));
float gradient = intensity * smoothstep(0.0, 2.0, intensity);
gradient *= smoothstep(1.0,0.67+r*0.33, 1.0-intensity);
gl_FragColor = gl_Color * gradient;
}

View File

@@ -0,0 +1,10 @@
varying vec3 pos;
void main()
{
pos = gl_Vertex.xyz - gl_MultiTexCoord0.yzw;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_FrontColor = gl_Color;
gl_Position = ftransform();
}

View File

@@ -0,0 +1,9 @@
uniform sampler2D tex;
uniform float shadow_strength;
void main(void)
{
vec4 colour = texture2D(tex,gl_TexCoord[0].st);
gl_FragColor = vec4(0.0, 0.0, 0.0, gl_Color.w * colour.w * shadow_strength);
}

View File

@@ -0,0 +1,6 @@
void main(void)
{
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_FrontColor = gl_Color;
gl_Position = ftransform();
}

View File

@@ -0,0 +1,15 @@
uniform sampler2D tex;
uniform float shadow_strength;
uniform float texel_size;
void main(void)
{
float colour_alpha = texture2D(tex,gl_TexCoord[0].xy).w;
float shadow_alpha = texture2D(tex,gl_TexCoord[0].xy - vec2(texel_size)).w * shadow_strength;
float combined_alpha = 1.0 - (1.0-shadow_alpha)*(1.0-colour_alpha);
if(combined_alpha > 0.0) colour_alpha /= combined_alpha;
gl_FragColor = gl_Color * vec4(vec3(colour_alpha), combined_alpha);
}

View File

@@ -0,0 +1,6 @@
void main(void)
{
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_FrontColor = gl_Color;
gl_Position = ftransform();
}

BIN
gource/data/user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
gource/glew32.dll Normal file

Binary file not shown.

BIN
gource/gource.exe Normal file

Binary file not shown.

Binary file not shown.

BIN
gource/libbz2-1.dll Normal file

Binary file not shown.

BIN
gource/libfreetype-6.dll Normal file

Binary file not shown.

BIN
gource/libgcc_s_seh-1.dll Normal file

Binary file not shown.

BIN
gource/libglib-2.0-0.dll Normal file

Binary file not shown.

BIN
gource/libgraphite2.dll Normal file

Binary file not shown.

BIN
gource/libharfbuzz-0.dll Normal file

Binary file not shown.

BIN
gource/libiconv-2.dll Normal file

Binary file not shown.

BIN
gource/libintl-8.dll Normal file

Binary file not shown.

BIN
gource/libjpeg-8.dll Normal file

Binary file not shown.

BIN
gource/liblzma-5.dll Normal file

Binary file not shown.

BIN
gource/libpcre-1.dll Normal file

Binary file not shown.

BIN
gource/libpng16-16.dll Normal file

Binary file not shown.

BIN
gource/libstdc++-6.dll Normal file

Binary file not shown.

BIN
gource/libtiff-5.dll Normal file

Binary file not shown.

BIN
gource/libwebp-7.dll Normal file

Binary file not shown.

BIN
gource/libwinpthread-1.dll Normal file

Binary file not shown.

BIN
gource/libzstd.dll Normal file

Binary file not shown.

BIN
gource/zlib1.dll Normal file

Binary file not shown.

22
gradle.properties Normal file
View File

@@ -0,0 +1,22 @@
#
# Iris is a World Generator for Minecraft Bukkit Servers
# Copyright (c) 2022 Arcane Arts (Volmit Software)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx3072m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.caching=true
org.gradle.configureondemand=false

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

234
gradlew vendored Executable file
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" "$@"

89
gradlew.bat vendored Normal file
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
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

10
listing.json Normal file
View File

@@ -0,0 +1,10 @@
[
"overworld IrisDimensions/overworld",
"vanilla IrisDimensions/vanilla",
"flat IrisDimensions/flat",
"redstone IrisDimensions/redstone",
"mars IrisDimensions/mars",
"example IrisDimensions/example"
"newhorizons IrisDimensions/newhorizons",
"theend IrisDimensions/theend"
]

2
lombok.config Normal file
View File

@@ -0,0 +1,2 @@
# This file is generated by the 'io.freefair.lombok' Gradle plugin
config.stopBubbling = true

View File

@@ -0,0 +1,21 @@
name: ${name}
version: ${version}
main: ${main}
load: STARTUP
authors: [ cyberpwn, NextdoorPsycho ]
website: volmit.com
description: More than a Dimension!
libraries:
- org.zeroturnaround:zt-zip:1.14
- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2
- org.ow2.asm:asm:9.2
- com.google.code.gson:gson:2.8.7
- it.unimi.dsi:fastutil:8.5.4
- com.google.guava:guava:30.1.1-jre
- bsf:bsf:2.4.0
- rhino:js:1.7R2
commands:
iris:
aliases: [ ir, irs ]
api-version: ${apiversion}
hotload-dependencies: false

3
packignore.ignore Normal file
View File

@@ -0,0 +1,3 @@
.DS_Store
*.code-workspace
*.txt

104
pom.xml
View File

@@ -1,104 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>bytecode.ninja</groupId>
<artifactId>Iris</artifactId>
<version>1.0</version>
<name>Iris</name>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<development.location>${user.home}\Documents\development\server\plugins\${project.name}.jar</development.location>
</properties>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.yml</include>
<include>**/*.txt</include>
<include>**/*.properties</include>
<include>**/*.html</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>runbatchfile</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>${skip.copy}</skip>
<executable>${project.basedir}/scripts/copy.bat</executable>
<arguments>
<argument>${project.basedir}\target\${project.name}-${project.version}.jar</argument>
<argument>${development.location}</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>pub</id>
<url>http://nexus.mpm.care/content/repositories/pub</url>
</repository>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>volmit</id>
<url>http://nexus.volmit.com/content/repositories/volmit</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>ninja.bytecode</groupId>
<artifactId>Shuriken</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.14.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<artifactId>craftbukkit-1.14.4</artifactId>
<groupId>cb</groupId>
<version>1</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/craftbukkit-1.14.4.jar</systemPath>
</dependency>
</dependencies>
</project>

View File

@@ -1,3 +0,0 @@
@Echo off
echo Apply Script: COPY
echo F|xcopy /y /s /f /q "%1" "%2"

25
settings.gradle Normal file
View File

@@ -0,0 +1,25 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2021 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
}
rootProject.name = 'Iris'

View File

@@ -0,0 +1,771 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonParser;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.ServerConfigurator;
import com.volmit.iris.core.link.IrisPapiExpansion;
import com.volmit.iris.core.link.MultiverseCoreLink;
import com.volmit.iris.core.link.MythicMobsLink;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.nms.v20.NMSBinding1_20_1;
import com.volmit.iris.core.pregenerator.LazyPregenerator;
import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.EnginePanic;
import com.volmit.iris.engine.object.IrisCompat;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.object.IrisWorld;
import com.volmit.iris.engine.platform.BukkitChunkGenerator;
import com.volmit.iris.engine.platform.DummyChunkGenerator;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.exceptions.IrisException;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.function.NastyRunnable;
import com.volmit.iris.util.io.FileWatcher;
import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.io.InstanceState;
import com.volmit.iris.util.io.JarScanner;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.plugin.IrisService;
import com.volmit.iris.util.plugin.Metrics;
import com.volmit.iris.util.plugin.VolmitPlugin;
import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.reflect.ShadeFix;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.Queue;
import com.volmit.iris.util.scheduling.ShurikenQueue;
import io.papermc.lib.PaperLib;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.serializer.ComponentSerializer;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.WorldCreator;
import org.bukkit.block.data.BlockData;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.generator.BiomeProvider;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.IllegalPluginAccessException;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.*;
import java.lang.annotation.Annotation;
import java.net.URL;
import java.util.Date;
import java.util.Map;
@SuppressWarnings("CanBeFinal")
public class Iris extends VolmitPlugin implements Listener {
public static final String OVERWORLD_TAG = "3700";
private static final Queue<Runnable> syncJobs = new ShurikenQueue<>();
public static Iris instance;
public static BukkitAudiences audiences;
public static MultiverseCoreLink linkMultiverseCore;
public static MythicMobsLink linkMythicMobs;
public static IrisCompat compat;
public static FileWatcher configWatcher;
private static VolmitSender sender;
static {
try {
fixShading();
InstanceState.updateInstanceId();
} catch (Throwable ignored) {
}
}
private final KList<Runnable> postShutdown = new KList<>();
private KMap<Class<? extends IrisService>, IrisService> services;
public static VolmitSender getSender() {
return sender;
}
@SuppressWarnings("unchecked")
public static <T> T service(Class<T> c) {
return (T) instance.services.get(c);
}
public static void callEvent(Event e) {
if (!e.isAsynchronous()) {
J.s(() -> Bukkit.getPluginManager().callEvent(e));
} else {
Bukkit.getPluginManager().callEvent(e);
}
}
public static KList<Object> initialize(String s, Class<? extends Annotation> slicedClass) {
JarScanner js = new JarScanner(instance.getJarFile(), s);
KList<Object> v = new KList<>();
J.attempt(js::scan);
for (Class<?> i : js.getClasses()) {
if (slicedClass == null || i.isAnnotationPresent(slicedClass)) {
try {
v.add(i.getDeclaredConstructor().newInstance());
} catch (Throwable ignored) {
}
}
}
return v;
}
public static KList<Class<?>> getClasses(String s, Class<? extends Annotation> slicedClass) {
JarScanner js = new JarScanner(instance.getJarFile(), s);
KList<Class<?>> v = new KList<>();
J.attempt(js::scan);
for (Class<?> i : js.getClasses()) {
if (slicedClass == null || i.isAnnotationPresent(slicedClass)) {
try {
v.add(i);
} catch (Throwable ignored) {
}
}
}
return v;
}
public static KList<Object> initialize(String s) {
return initialize(s, null);
}
public static void sq(Runnable r) {
synchronized (syncJobs) {
syncJobs.queue(r);
}
}
public static File getTemp() {
return instance.getDataFolder("cache", "temp");
}
public static void msg(String string) {
try {
sender.sendMessage(string);
} catch (Throwable e) {
try {
System.out.println(instance.getTag() + string.replaceAll("(<([^>]+)>)", ""));
} catch (Throwable ignored1) {
}
}
}
public static File getCached(String name, String url) {
String h = IO.hash(name + "@" + url);
File f = Iris.instance.getDataFile("cache", h.substring(0, 2), h.substring(3, 5), h);
if (!f.exists()) {
try (BufferedInputStream in = new BufferedInputStream(new URL(url).openStream()); FileOutputStream fileOutputStream = new FileOutputStream(f)) {
byte[] dataBuffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) {
fileOutputStream.write(dataBuffer, 0, bytesRead);
Iris.verbose("Aquiring " + name);
}
} catch (IOException e) {
Iris.reportError(e);
}
}
return f.exists() ? f : null;
}
public static String getNonCached(String name, String url) {
String h = IO.hash(name + "*" + url);
File f = Iris.instance.getDataFile("cache", h.substring(0, 2), h.substring(3, 5), h);
try (BufferedInputStream in = new BufferedInputStream(new URL(url).openStream()); FileOutputStream fileOutputStream = new FileOutputStream(f)) {
byte[] dataBuffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) {
fileOutputStream.write(dataBuffer, 0, bytesRead);
}
} catch (IOException e) {
Iris.reportError(e);
}
try {
return IO.readAll(f);
} catch (IOException e) {
Iris.reportError(e);
}
return "";
}
public static File getNonCachedFile(String name, String url) {
String h = IO.hash(name + "*" + url);
File f = Iris.instance.getDataFile("cache", h.substring(0, 2), h.substring(3, 5), h);
Iris.verbose("Download " + name + " -> " + url);
try (BufferedInputStream in = new BufferedInputStream(new URL(url).openStream()); FileOutputStream fileOutputStream = new FileOutputStream(f)) {
byte[] dataBuffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) {
fileOutputStream.write(dataBuffer, 0, bytesRead);
}
fileOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
Iris.reportError(e);
}
return f;
}
public static void warn(String format, Object... objs) {
msg(C.YELLOW + String.format(format, objs));
}
public static void error(String format, Object... objs) {
msg(C.RED + String.format(format, objs));
}
public static void debug(String string) {
if (!IrisSettings.get().getGeneral().isDebug()) {
return;
}
try {
throw new RuntimeException();
} catch (Throwable e) {
try {
String[] cc = e.getStackTrace()[1].getClassName().split("\\Q.\\E");
if (cc.length > 5) {
debug(cc[3] + "/" + cc[4] + "/" + cc[cc.length - 1], e.getStackTrace()[1].getLineNumber(), string);
} else {
debug(cc[3] + "/" + cc[4], e.getStackTrace()[1].getLineNumber(), string);
}
} catch (Throwable ex) {
debug("Origin", -1, string);
}
}
}
public static void debug(String category, int line, String string) {
if (!IrisSettings.get().getGeneral().isDebug()) {
return;
}
if (IrisSettings.get().getGeneral().isUseConsoleCustomColors()) {
msg("<gradient:#095fe0:#a848db>" + category + " <#bf3b76>" + line + "<reset> " + C.LIGHT_PURPLE + string.replaceAll("\\Q<\\E", "[").replaceAll("\\Q>\\E", "]"));
} else {
msg(C.BLUE + category + ":" + C.AQUA + line + C.RESET + C.LIGHT_PURPLE + " " + string.replaceAll("\\Q<\\E", "[").replaceAll("\\Q>\\E", "]"));
}
}
public static void verbose(String string) {
debug(string);
}
public static void success(String string) {
msg(C.IRIS + string);
}
public static void info(String format, Object... args) {
msg(C.WHITE + String.format(format, args));
}
@SuppressWarnings("deprecation")
public static void later(NastyRunnable object) {
try {
Bukkit.getScheduler().scheduleAsyncDelayedTask(instance, () ->
{
try {
object.run();
} catch (Throwable e) {
e.printStackTrace();
Iris.reportError(e);
}
}, RNG.r.i(100, 1200));
} catch (IllegalPluginAccessException ignored) {
}
}
public static int jobCount() {
return syncJobs.size();
}
public static void clearQueues() {
synchronized (syncJobs) {
syncJobs.clear();
}
}
private static int getJavaVersion() {
String version = System.getProperty("java.version");
if (version.startsWith("1.")) {
version = version.substring(2, 3);
} else {
int dot = version.indexOf(".");
if (dot != -1) {
version = version.substring(0, dot);
}
}
return Integer.parseInt(version);
}
public static void reportErrorChunk(int x, int z, Throwable e, String extra) {
if (IrisSettings.get().getGeneral().isDebug()) {
File f = instance.getDataFile("debug", "chunk-errors", "chunk." + x + "." + z + ".txt");
if (!f.exists()) {
J.attempt(() -> {
PrintWriter pw = new PrintWriter(f);
pw.println("Thread: " + Thread.currentThread().getName());
pw.println("First: " + new Date(M.ms()));
e.printStackTrace(pw);
pw.close();
});
}
Iris.debug("Chunk " + x + "," + z + " Exception Logged: " + e.getClass().getSimpleName() + ": " + C.RESET + "" + C.LIGHT_PURPLE + e.getMessage());
}
}
public static void reportError(Throwable e) {
if (IrisSettings.get().getGeneral().isDebug()) {
String n = e.getClass().getCanonicalName() + "-" + e.getStackTrace()[0].getClassName() + "-" + e.getStackTrace()[0].getLineNumber();
if (e.getCause() != null) {
n += "-" + e.getCause().getStackTrace()[0].getClassName() + "-" + e.getCause().getStackTrace()[0].getLineNumber();
}
File f = instance.getDataFile("debug", "caught-exceptions", n + ".txt");
if (!f.exists()) {
J.attempt(() -> {
PrintWriter pw = new PrintWriter(f);
pw.println("Thread: " + Thread.currentThread().getName());
pw.println("First: " + new Date(M.ms()));
e.printStackTrace(pw);
pw.close();
});
}
Iris.debug("Exception Logged: " + e.getClass().getSimpleName() + ": " + C.RESET + "" + C.LIGHT_PURPLE + e.getMessage());
}
}
public static void dump() {
try {
File fi = Iris.instance.getDataFile("dump", "td-" + new java.sql.Date(M.ms()) + ".txt");
FileOutputStream fos = new FileOutputStream(fi);
Map<Thread, StackTraceElement[]> f = Thread.getAllStackTraces();
PrintWriter pw = new PrintWriter(fos);
for (Thread i : f.keySet()) {
pw.println("========================================");
pw.println("Thread: '" + i.getName() + "' ID: " + i.getId() + " STATUS: " + i.getState().name());
for (StackTraceElement j : f.get(i)) {
pw.println(" @ " + j.toString());
}
pw.println("========================================");
pw.println();
pw.println();
}
pw.close();
System.out.println("DUMPED! See " + fi.getAbsolutePath());
} catch (Throwable e) {
e.printStackTrace();
}
}
public static void panic() {
EnginePanic.panic();
}
public static void addPanic(String s, String v) {
EnginePanic.add(s, v);
}
private static void fixShading() {
ShadeFix.fix(ComponentSerializer.class);
}
private void enable() {
instance = this;
services = new KMap<>();
initialize("com.volmit.iris.core.service").forEach((i) -> services.put((Class<? extends IrisService>) i.getClass(), (IrisService) i));
INMS.get();
IO.delete(new File("iris"));
setupAudience();
sender = new VolmitSender(Bukkit.getConsoleSender());
sender.setTag(getTag());
instance = this;
compat = IrisCompat.configured(getDataFile("compat.json"));
linkMultiverseCore = new MultiverseCoreLink();
linkMythicMobs = new MythicMobsLink();
configWatcher = new FileWatcher(getDataFile("settings.json"));
services.values().forEach(IrisService::onEnable);
services.values().forEach(this::registerListener);
J.s(() -> {
J.a(() -> PaperLib.suggestPaper(this));
J.a(() -> IO.delete(getTemp()));
J.a(LazyPregenerator::loadLazyGenerators, 100);
J.a(this::bstats);
J.ar(this::checkConfigHotload, 60);
J.sr(this::tickQueue, 0);
J.s(this::setupPapi);
J.a(ServerConfigurator::configure, 20);
splash();
autoStartStudio();
checkForBukkitWorlds();
IrisToolbelt.retainMantleDataForSlice(String.class.getCanonicalName());
IrisToolbelt.retainMantleDataForSlice(BlockData.class.getCanonicalName());
});
}
private void checkForBukkitWorlds() {
FileConfiguration fc = new YamlConfiguration();
try {
fc.load(new File("bukkit.yml"));
ConfigurationSection section = fc.getConfigurationSection("worlds");
if (section == null) {
return;
}
for (String s : section.getKeys(false)) {
ConfigurationSection entry = section.getConfigurationSection(s);
if (!entry.contains("generator", true)) {
continue;
}
String generator = entry.getString("generator");
if (generator.startsWith("Iris:")) {
generator = generator.split("\\Q:\\E")[1];
} else if (generator.equalsIgnoreCase("Iris")) {
generator = IrisSettings.get().getGenerator().getDefaultWorldType();
} else {
continue;
}
Iris.info("2 World: %s | Generator: %s", s, generator);
if (Bukkit.getWorlds().stream().anyMatch(w -> w.getName().equals(s))) {
continue;
}
Iris.info(C.LIGHT_PURPLE + "Preparing Spawn for " + s + "' using Iris:" + generator + "...");
new WorldCreator(s)
.generator(getDefaultWorldGenerator(s, generator))
.environment(IrisData.loadAnyDimension(generator).getEnvironment())
.createWorld();
Iris.info(C.LIGHT_PURPLE + "Loaded " + s + "!");
}
} catch (Throwable e) {
e.printStackTrace();
}
}
private void autoStartStudio() {
if (IrisSettings.get().getStudio().isAutoStartDefaultStudio()) {
Iris.info("Starting up auto Studio!");
try {
Player r = new KList<>(getServer().getOnlinePlayers()).getRandom();
Iris.service(StudioSVC.class).open(r != null ? new VolmitSender(r) : sender, 1337, IrisSettings.get().getGenerator().getDefaultWorldType(), (w) -> {
J.s(() -> {
for (Player i : getServer().getOnlinePlayers()) {
i.setGameMode(GameMode.SPECTATOR);
i.teleport(new Location(w, 0, 200, 0));
}
});
});
} catch (IrisException e) {
e.printStackTrace();
}
}
}
private void setupAudience() {
try {
audiences = BukkitAudiences.create(this);
} catch (Throwable e) {
e.printStackTrace();
IrisSettings.get().getGeneral().setUseConsoleCustomColors(false);
IrisSettings.get().getGeneral().setUseCustomColorsIngame(false);
Iris.error("Failed to setup Adventure API... No custom colors :(");
}
}
public void postShutdown(Runnable r) {
postShutdown.add(r);
}
public void onEnable() {
enable();
super.onEnable();
Bukkit.getPluginManager().registerEvents(this, this);
setupChecks();
}
public void onDisable() {
services.values().forEach(IrisService::onDisable);
Bukkit.getScheduler().cancelTasks(this);
HandlerList.unregisterAll((Plugin) this);
postShutdown.forEach(Runnable::run);
services.clear();
MultiBurst.burst.close();
super.onDisable();
}
private void setupPapi() {
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
new IrisPapiExpansion().register();
}
}
@Override
public void start() {
}
@Override
public void stop() {
}
@Override
public String getTag(String subTag) {
return C.BOLD + "" + C.DARK_GRAY + "[" + C.BOLD + "" + C.IRIS + "Iris" + C.BOLD + C.DARK_GRAY + "]" + C.RESET + "" + C.GRAY + ": ";
}
private boolean setupChecks() {
boolean passed = true;
Iris.info("Version Information: " + instance.getServer().getVersion() + " | " + instance.getServer().getBukkitVersion());
if (!instance.getServer().getBukkitVersion().contains(NMSBinding1_20_1.NMS_VERSION)) {
passed = false;
Iris.warn("============================================");
Iris.warn("=");
Iris.warn("=");
Iris.warn("=");
Iris.warn("Iris is not compatible with this version of Minecraft.\nPlease use " + NMSBinding1_20_1.NMS_VERSION + " or use an older version of Iris.");
Iris.warn("=");
Iris.warn("=");
Iris.warn("=");
Iris.warn("============================================");
}
if (!instance.getServer().getVersion().contains("Purpur")) {
passed = false;
Iris.info("We recommend using Purpur for the best experience with Iris.");
Iris.info("Purpur is a fork of Paper that is optimized for performance and stability.");
Iris.info("Plugins that work on Spigot / Paper work on Purpur.");
Iris.info("You can download it here: https://purpurmc.org");
}
return passed;
}
private void checkConfigHotload() {
if (configWatcher.checkModified()) {
IrisSettings.invalidate();
IrisSettings.get();
configWatcher.checkModified();
Iris.info("Hotloaded settings.json ");
}
}
private void tickQueue() {
synchronized (Iris.syncJobs) {
if (!Iris.syncJobs.hasNext()) {
return;
}
long ms = M.ms();
while (Iris.syncJobs.hasNext() && M.ms() - ms < 25) {
try {
Iris.syncJobs.next().run();
} catch (Throwable e) {
e.printStackTrace();
Iris.reportError(e);
}
}
}
}
private void bstats() {
if (IrisSettings.get().getGeneral().isPluginMetrics()) {
J.s(() -> new Metrics(Iris.instance, 8757));
}
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return super.onCommand(sender, command, label, args);
}
public void imsg(CommandSender s, String msg) {
s.sendMessage(C.IRIS + "[" + C.DARK_GRAY + "Iris" + C.IRIS + "]" + C.GRAY + ": " + msg);
}
@Nullable
@Override
public BiomeProvider getDefaultBiomeProvider(@NotNull String worldName, @Nullable String id) {
Iris.debug("Biome Provider Called for " + worldName + " using ID: " + id);
return super.getDefaultBiomeProvider(worldName, id);
}
@Override
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
Iris.debug("Default World Generator Called for " + worldName + " using ID: " + id);
if (worldName.equals("test")) {
try {
throw new RuntimeException();
} catch (Throwable e) {
Iris.info(e.getStackTrace()[1].getClassName());
if (e.getStackTrace()[1].getClassName().contains("com.onarandombox.MultiverseCore")) {
Iris.debug("MVC Test detected, Quick! Send them the dummy!");
return new DummyChunkGenerator();
}
}
}
IrisDimension dim;
if (id == null || id.isEmpty()) {
dim = IrisData.loadAnyDimension(IrisSettings.get().getGenerator().getDefaultWorldType());
} else {
dim = IrisData.loadAnyDimension(id);
}
Iris.debug("Generator ID: " + id + " requested by bukkit/plugin");
if (dim == null) {
Iris.warn("Unable to find dimension type " + id + " Looking for online packs...");
service(StudioSVC.class).downloadSearch(new VolmitSender(Bukkit.getConsoleSender()), id, true);
dim = IrisData.loadAnyDimension(id);
if (dim == null) {
throw new RuntimeException("Can't find dimension " + id + "!");
} else {
Iris.info("Resolved missing dimension, proceeding with generation.");
}
}
Iris.debug("Assuming IrisDimension: " + dim.getName());
IrisWorld w = IrisWorld.builder()
.name(worldName)
.seed(1337)
.environment(dim.getEnvironment())
.worldFolder(new File(Bukkit.getWorldContainer(), worldName))
.minHeight(dim.getMinHeight())
.maxHeight(dim.getMaxHeight())
.build();
Iris.debug("Generator Config: " + w.toString());
File ff = new File(w.worldFolder(), "iris/pack");
if (!ff.exists() || ff.listFiles().length == 0) {
ff.mkdirs();
service(StudioSVC.class).installIntoWorld(sender, dim.getLoadKey(), ff.getParentFile());
}
return new BukkitChunkGenerator(w, false, ff, dim.getLoadKey());
}
public void splash() {
if (!IrisSettings.get().getGeneral().isSplashLogoStartup()) {
return;
}
// @NoArgsConstructor
String padd = Form.repeat(" ", 8);
String padd2 = Form.repeat(" ", 4);
String[] info = {"", "", "", "", "", padd2 + C.IRIS + " Iris", padd2 + C.GRAY + " by " + "<rainbow>Volmit Software", padd2 + C.GRAY + " v" + C.IRIS + getDescription().getVersion(),
};
String[] splash = {
padd + C.GRAY + " @@@@@@@@@@@@@@" + C.DARK_GRAY + "@@@",
padd + C.GRAY + " @@&&&&&&&&&" + C.DARK_GRAY + "&&&&&&" + C.IRIS + " .(((()))). ",
padd + C.GRAY + "@@@&&&&&&&&" + C.DARK_GRAY + "&&&&&" + C.IRIS + " .((((((())))))). ",
padd + C.GRAY + "@@@&&&&&" + C.DARK_GRAY + "&&&&&&&" + C.IRIS + " ((((((((())))))))) " + C.GRAY + " @",
padd + C.GRAY + "@@@&&&&" + C.DARK_GRAY + "@@@@@&" + C.IRIS + " ((((((((-))))))))) " + C.GRAY + " @@",
padd + C.GRAY + "@@@&&" + C.IRIS + " ((((((({ })))))))) " + C.GRAY + " &&@@@",
padd + C.GRAY + "@@" + C.IRIS + " ((((((((-))))))))) " + C.DARK_GRAY + "&@@@@@" + C.GRAY + "&&&&@@@",
padd + C.GRAY + "@" + C.IRIS + " ((((((((())))))))) " + C.DARK_GRAY + "&&&&&" + C.GRAY + "&&&&&&&@@@",
padd + C.GRAY + "" + C.IRIS + " '((((((()))))))' " + C.DARK_GRAY + "&&&&&" + C.GRAY + "&&&&&&&&@@@",
padd + C.GRAY + "" + C.IRIS + " '(((())))' " + C.DARK_GRAY + "&&&&&&&&" + C.GRAY + "&&&&&&&@@",
padd + C.GRAY + " " + C.DARK_GRAY + "@@@" + C.GRAY + "@@@@@@@@@@@@@@"
};
//@done
Iris.info("Server type & version: " + Bukkit.getVersion());
Iris.info("Bukkit version: " + Bukkit.getBukkitVersion());
Iris.info("Java version: " + getJavaVersion());
Iris.info("Custom Biomes: " + INMS.get().countCustomBiomes());
setupChecks();
printPacks();
for (int i = 0; i < info.length; i++) {
splash[i] += info[i];
}
Iris.info("\n\n " + new KList<>(splash).toString("\n") + "\n");
}
private void printPacks() {
File packFolder = Iris.service(StudioSVC.class).getWorkspaceFolder();
File[] packs = packFolder.listFiles(File::isDirectory);
if (packs == null || packs.length == 0)
return;
Iris.info("Custom Dimensions: " + packs.length);
for (File f : packs)
printPack(f);
}
private void printPack(File pack) {
String dimName = pack.getName();
String version = "???";
try (FileReader r = new FileReader(new File(pack, "dimensions/" + dimName + ".json"))) {
JsonObject json = JsonParser.parseReader(r).getAsJsonObject();
if (json.has("version"))
version = json.get("version").getAsString();
} catch (IOException | JsonParseException ignored) {
}
Iris.info(" " + dimName + " v" + version);
}
}

View File

@@ -0,0 +1,188 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.json.JSONException;
import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.plugin.VolmitSender;
import lombok.Data;
import java.io.File;
import java.io.IOException;
@SuppressWarnings("SynchronizeOnNonFinalField")
@Data
public class IrisSettings {
public static IrisSettings settings;
private IrisSettingsGeneral general = new IrisSettingsGeneral();
private IrisSettingsWorld world = new IrisSettingsWorld();
private IrisSettingsGUI gui = new IrisSettingsGUI();
private IrisSettingsAutoconfiguration autoConfiguration = new IrisSettingsAutoconfiguration();
private IrisSettingsGenerator generator = new IrisSettingsGenerator();
private IrisSettingsConcurrency concurrency = new IrisSettingsConcurrency();
private IrisSettingsStudio studio = new IrisSettingsStudio();
private IrisSettingsPerformance performance = new IrisSettingsPerformance();
public static int getThreadCount(int c) {
return switch (c) {
case -1, -2, -4 -> Runtime.getRuntime().availableProcessors() / -c;
case 0, 1, 2 -> 1;
default -> Math.max(c, 2);
};
}
public static IrisSettings get() {
if (settings != null) {
return settings;
}
settings = new IrisSettings();
File s = Iris.instance.getDataFile("settings.json");
if (!s.exists()) {
try {
IO.writeAll(s, new JSONObject(new Gson().toJson(settings)).toString(4));
} catch (JSONException | IOException e) {
e.printStackTrace();
Iris.reportError(e);
}
} else {
try {
String ss = IO.readAll(s);
settings = new Gson().fromJson(ss, IrisSettings.class);
try {
IO.writeAll(s, new JSONObject(new Gson().toJson(settings)).toString(4));
} catch (IOException e) {
e.printStackTrace();
}
} catch (Throwable ee) {
// Iris.reportError(ee); causes a self-reference & stackoverflow
Iris.error("Configuration Error in settings.json! " + ee.getClass().getSimpleName() + ": " + ee.getMessage());
}
}
return settings;
}
public static void invalidate() {
synchronized (settings) {
settings = null;
}
}
public void forceSave() {
File s = Iris.instance.getDataFile("settings.json");
try {
IO.writeAll(s, new JSONObject(new Gson().toJson(settings)).toString(4));
} catch (JSONException | IOException e) {
e.printStackTrace();
Iris.reportError(e);
}
}
@Data
public static class IrisSettingsAutoconfiguration {
public boolean configureSpigotTimeoutTime = true;
public boolean configurePaperWatchdogDelay = true;
public boolean autoRestartOnCustomBiomeInstall = true;
}
@Data
public static class IrisAsyncTeleport {
public boolean enabled = false;
public int loadViewDistance = 2;
public boolean urgent = false;
}
@Data
public static class IrisSettingsWorld {
public IrisAsyncTeleport asyncTeleport = new IrisAsyncTeleport();
public boolean postLoadBlockUpdates = true;
public boolean forcePersistEntities = true;
public boolean anbientEntitySpawningSystem = true;
public long asyncTickIntervalMS = 700;
public double targetSpawnEntitiesPerChunk = 0.95;
public boolean markerEntitySpawningSystem = true;
public boolean effectSystem = true;
public boolean worldEditWandCUI = true;
}
@Data
public static class IrisSettingsConcurrency {
public int parallelism = -1;
}
@Data
public static class IrisSettingsPerformance {
public boolean trimMantleInStudio = false;
public int mantleKeepAlive = 30;
public int cacheSize = 4_096;
public int resourceLoaderCacheSize = 1_024;
public int objectLoaderCacheSize = 4_096;
public int scriptLoaderCacheSize = 512;
}
@Data
public static class IrisSettingsGeneral {
public boolean commandSounds = true;
public boolean debug = false;
public boolean disableNMS = false;
public boolean pluginMetrics = true;
public boolean splashLogoStartup = true;
public boolean useConsoleCustomColors = true;
public boolean useCustomColorsIngame = true;
public String forceMainWorld = "";
public int spinh = -20;
public int spins = 7;
public int spinb = 8;
public String cartographerMessage = "Iris does not allow cartographers in its world due to crashes.";
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
public boolean canUseCustomColors(VolmitSender volmitSender) {
return volmitSender.isPlayer() ? useCustomColorsIngame : useConsoleCustomColors;
}
}
@Data
public static class IrisSettingsGUI {
public boolean useServerLaunchedGuis = true;
public boolean maximumPregenGuiFPS = false;
}
@Data
public static class IrisSettingsGenerator {
public String defaultWorldType = "overworld";
public int maxBiomeChildDepth = 4;
public boolean preventLeafDecay = true;
}
@Data
public static class IrisSettingsStudio {
public boolean studio = true;
public boolean openVSCode = true;
public boolean disableTimeAndWeather = true;
public boolean autoStartDefaultStudio = false;
}
}

View File

@@ -0,0 +1,241 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core;
import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisBiomeCustom;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.J;
import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class ServerConfigurator {
public static void configure() {
IrisSettings.IrisSettingsAutoconfiguration s = IrisSettings.get().getAutoConfiguration();
if (s.isConfigureSpigotTimeoutTime()) {
J.attempt(ServerConfigurator::increaseKeepAliveSpigot);
}
if (s.isConfigurePaperWatchdogDelay()) {
J.attempt(ServerConfigurator::increasePaperWatchdog);
}
installDataPacks(true);
}
private static void increaseKeepAliveSpigot() throws IOException, InvalidConfigurationException {
File spigotConfig = new File("config/spigot.yml");
FileConfiguration f = new YamlConfiguration();
f.load(spigotConfig);
long tt = f.getLong("settings.timeout-time");
if (tt < TimeUnit.MINUTES.toSeconds(5)) {
Iris.warn("Updating spigot.yml timeout-time: " + tt + " -> " + TimeUnit.MINUTES.toSeconds(5) + " (5 minutes)");
Iris.warn("You can disable this change (autoconfigureServer) in Iris settings, then change back the value.");
f.set("settings.timeout-time", TimeUnit.MINUTES.toSeconds(5));
f.save(spigotConfig);
}
}
private static void increasePaperWatchdog() throws IOException, InvalidConfigurationException {
File spigotConfig = new File("config/paper-global.yml");
FileConfiguration f = new YamlConfiguration();
f.load(spigotConfig);
long tt = f.getLong("watchdog.early-warning-delay");
if (tt < TimeUnit.MINUTES.toMillis(3)) {
Iris.warn("Updating paper.yml watchdog early-warning-delay: " + tt + " -> " + TimeUnit.MINUTES.toMillis(3) + " (3 minutes)");
Iris.warn("You can disable this change (autoconfigureServer) in Iris settings, then change back the value.");
f.set("watchdog.early-warning-delay", TimeUnit.MINUTES.toMillis(3));
f.save(spigotConfig);
}
}
private static List<File> getDatapacksFolder() {
if (!IrisSettings.get().getGeneral().forceMainWorld.isEmpty()) {
return new KList<File>().qadd(new File(Bukkit.getWorldContainer(), IrisSettings.get().getGeneral().forceMainWorld + "/datapacks"));
}
KList<File> worlds = new KList<>();
Bukkit.getServer().getWorlds().forEach(w -> worlds.add(new File(w.getWorldFolder(), "datapacks")));
return worlds;
}
public static void installDataPacks(boolean fullInstall) {
Iris.info("Checking Data Packs...");
File packs = new File("plugins/Iris/packs");
if (packs.exists()) {
for (File i : packs.listFiles()) {
if (i.isDirectory()) {
Iris.verbose("Checking Pack: " + i.getPath());
IrisData data = IrisData.get(i);
File dims = new File(i, "dimensions");
if (dims.exists()) {
for (File j : dims.listFiles()) {
if (j.getName().endsWith(".json")) {
IrisDimension dim = data.getDimensionLoader().load(j.getName().split("\\Q.\\E")[0]);
if (dim == null) {
continue;
}
Iris.verbose(" Checking Dimension " + dim.getLoadFile().getPath());
for (File dpack : getDatapacksFolder()) {
dim.installDataPack(() -> data, dpack);
}
}
}
}
}
}
}
Iris.info("Data Packs Setup!");
if (fullInstall)
verifyDataPacksPost(IrisSettings.get().getAutoConfiguration().isAutoRestartOnCustomBiomeInstall());
}
private static void verifyDataPacksPost(boolean allowRestarting) {
File packs = new File("plugins/Iris/packs");
boolean bad = false;
if (packs.exists()) {
for (File i : packs.listFiles()) {
if (i.isDirectory()) {
Iris.verbose("Checking Pack: " + i.getPath());
IrisData data = IrisData.get(i);
File dims = new File(i, "dimensions");
if (dims.exists()) {
for (File j : dims.listFiles()) {
if (j.getName().endsWith(".json")) {
IrisDimension dim = data.getDimensionLoader().load(j.getName().split("\\Q.\\E")[0]);
if (dim == null) {
Iris.error("Failed to load " + j.getPath() + " ");
continue;
}
if (!verifyDataPackInstalled(dim)) {
bad = true;
}
}
}
}
}
}
}
if (bad) {
if (allowRestarting) {
restart();
} else if (INMS.get().supportsDataPacks()) {
Iris.error("============================================================================");
Iris.error(C.ITALIC + "You need to restart your server to properly generate custom biomes.");
Iris.error(C.ITALIC + "By continuing, Iris will use backup biomes in place of the custom biomes.");
Iris.error("----------------------------------------------------------------------------");
Iris.error(C.UNDERLINE + "IT IS HIGHLY RECOMMENDED YOU RESTART THE SERVER BEFORE GENERATING!");
Iris.error("============================================================================");
for (Player i : Bukkit.getOnlinePlayers()) {
if (i.isOp() || i.hasPermission("iris.all")) {
VolmitSender sender = new VolmitSender(i, Iris.instance.getTag("WARNING"));
sender.sendMessage("There are some Iris Packs that have custom biomes in them");
sender.sendMessage("You need to restart your server to use these packs.");
}
}
J.sleep(3000);
}
}
}
public static void restart() {
J.s(() -> {
Iris.warn("New data pack entries have been installed in Iris! Restarting server!");
Iris.warn("This will only happen when your pack changes (updates/first time setup)");
Iris.warn("(You can disable this auto restart in iris settings)");
J.s(() -> {
Iris.warn("Looks like the restart command diddn't work. Stopping the server instead!");
Bukkit.shutdown();
}, 100);
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "restart");
});
}
public static boolean verifyDataPackInstalled(IrisDimension dimension) {
IrisData idm = IrisData.get(Iris.instance.getDataFolder("packs", dimension.getLoadKey()));
KSet<String> keys = new KSet<>();
boolean warn = false;
for (IrisBiome i : dimension.getAllBiomes(() -> idm)) {
if (i.isCustom()) {
for (IrisBiomeCustom j : i.getCustomDerivitives()) {
keys.add(dimension.getLoadKey() + ":" + j.getId());
}
}
}
if (!INMS.get().supportsDataPacks()) {
if (!keys.isEmpty()) {
Iris.warn("===================================================================================");
Iris.warn("Pack " + dimension.getLoadKey() + " has " + keys.size() + " custom biome(s). ");
Iris.warn("Your server version does not yet support datapacks for iris.");
Iris.warn("The world will generate these biomes as backup biomes.");
Iris.warn("====================================================================================");
}
return true;
}
for (String i : keys) {
Object o = INMS.get().getCustomBiomeBaseFor(i);
if (o == null) {
Iris.warn("The Biome " + i + " is not registered on the server.");
warn = true;
}
}
if (warn) {
Iris.error("The Pack " + dimension.getLoadKey() + " is INCAPABLE of generating custom biomes");
Iris.error("If not done automatically, restart your server before generating with this pack!");
}
return !warn;
}
}

View File

@@ -0,0 +1,179 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.commands;
import com.volmit.iris.Iris;
import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.engine.object.*;
import com.volmit.iris.util.decree.DecreeExecutor;
import com.volmit.iris.util.decree.DecreeOrigin;
import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param;
import com.volmit.iris.util.format.C;
import java.awt.*;
@Decree(name = "edit", origin = DecreeOrigin.PLAYER, studio = true, description = "Edit something")
public class CommandEdit implements DecreeExecutor {
private boolean noStudio() {
if (!sender().isPlayer()) {
sender().sendMessage(C.RED + "Players only!");
return true;
}
if (!Iris.service(StudioSVC.class).isProjectOpen()) {
sender().sendMessage(C.RED + "No studio world is open!");
return true;
}
if (!engine().isStudio()) {
sender().sendMessage(C.RED + "You must be in a studio world!");
return true;
}
return false;
}
@Decree(description = "Edit the biome you specified", aliases = {"b"}, origin = DecreeOrigin.PLAYER)
public void biome(@Param(contextual = false, description = "The biome to edit") IrisBiome biome) {
if (noStudio()) {
return;
}
try {
if (biome == null || biome.getLoadFile() == null) {
sender().sendMessage(C.GOLD + "Cannot find the file; Perhaps it was not loaded directly from a file?");
return;
}
Desktop.getDesktop().open(biome.getLoadFile());
sender().sendMessage(C.GREEN + "Opening " + biome.getTypeName() + " " + biome.getLoadFile().getName().split("\\Q.\\E")[0] + " in VSCode! ");
} catch (Throwable e) {
Iris.reportError(e);
sender().sendMessage(C.RED + "Cant find the file. Or registrant does not exist");
}
}
@Decree(description = "Edit the region you specified", aliases = {"r"}, origin = DecreeOrigin.PLAYER)
public void region(@Param(contextual = false, description = "The region to edit") IrisRegion region) {
if (noStudio()) {
return;
}
try {
if (region == null || region.getLoadFile() == null) {
sender().sendMessage(C.GOLD + "Cannot find the file; Perhaps it was not loaded directly from a file?");
return;
}
Desktop.getDesktop().open(region.getLoadFile());
sender().sendMessage(C.GREEN + "Opening " + region.getTypeName() + " " + region.getLoadFile().getName().split("\\Q.\\E")[0] + " in VSCode! ");
} catch (Throwable e) {
Iris.reportError(e);
sender().sendMessage(C.RED + "Cant find the file. Or registrant does not exist");
}
}
@Decree(description = "Edit the dimension you specified", aliases = {"d"}, origin = DecreeOrigin.PLAYER)
public void dimension(@Param(contextual = false, description = "The dimension to edit") IrisDimension dimension) {
if (noStudio()) {
return;
}
try {
if (dimension == null || dimension.getLoadFile() == null) {
sender().sendMessage(C.GOLD + "Cannot find the file; Perhaps it was not loaded directly from a file?");
return;
}
Desktop.getDesktop().open(dimension.getLoadFile());
sender().sendMessage(C.GREEN + "Opening " + dimension.getTypeName() + " " + dimension.getLoadFile().getName().split("\\Q.\\E")[0] + " in VSCode! ");
} catch (Throwable e) {
Iris.reportError(e);
sender().sendMessage(C.RED + "Cant find the file. Or registrant does not exist");
}
}
@Decree(description = "Edit the cave file you specified", aliases = {"c"}, origin = DecreeOrigin.PLAYER)
public void cave(@Param(contextual = false, description = "The cave to edit") IrisCave cave) {
if (noStudio()) {
return;
}
try {
if (cave == null || cave.getLoadFile() == null) {
sender().sendMessage(C.GOLD + "Cannot find the file; Perhaps it was not loaded directly from a file?");
return;
}
Desktop.getDesktop().open(cave.getLoadFile());
sender().sendMessage(C.GREEN + "Opening " + cave.getTypeName() + " " + cave.getLoadFile().getName().split("\\Q.\\E")[0] + " in VSCode! ");
} catch (Throwable e) {
Iris.reportError(e);
sender().sendMessage(C.RED + "Cant find the file. Or registrant does not exist");
}
}
@Decree(description = "Edit the structure file you specified", aliases = {"jigsawstructure", "structure"}, origin = DecreeOrigin.PLAYER)
public void jigsaw(@Param(contextual = false, description = "The jigsaw structure to edit") IrisJigsawStructure jigsaw) {
if (noStudio()) {
return;
}
try {
if (jigsaw == null || jigsaw.getLoadFile() == null) {
sender().sendMessage(C.GOLD + "Cannot find the file; Perhaps it was not loaded directly from a file?");
return;
}
Desktop.getDesktop().open(jigsaw.getLoadFile());
sender().sendMessage(C.GREEN + "Opening " + jigsaw.getTypeName() + " " + jigsaw.getLoadFile().getName().split("\\Q.\\E")[0] + " in VSCode! ");
} catch (Throwable e) {
Iris.reportError(e);
sender().sendMessage(C.RED + "Cant find the file. Or registrant does not exist");
}
}
@Decree(description = "Edit the pool file you specified", aliases = {"jigsawpool", "pool"}, origin = DecreeOrigin.PLAYER)
public void jigsawPool(@Param(contextual = false, description = "The jigsaw pool to edit") IrisJigsawPool pool) {
if (noStudio()) {
return;
}
try {
if (pool == null || pool.getLoadFile() == null) {
sender().sendMessage(C.GOLD + "Cannot find the file; Perhaps it was not loaded directly from a file?");
return;
}
Desktop.getDesktop().open(pool.getLoadFile());
sender().sendMessage(C.GREEN + "Opening " + pool.getTypeName() + " " + pool.getLoadFile().getName().split("\\Q.\\E")[0] + " in VSCode! ");
} catch (Throwable e) {
Iris.reportError(e);
sender().sendMessage(C.RED + "Cant find the file. Or registrant does not exist");
}
}
@Decree(description = "Edit the jigsaw piece file you specified", aliases = {"jigsawpiece", "piece"}, origin = DecreeOrigin.PLAYER)
public void jigsawPiece(@Param(contextual = false, description = "The jigsaw piece to edit") IrisJigsawPiece piece) {
if (noStudio()) {
return;
}
try {
if (piece == null || piece.getLoadFile() == null) {
sender().sendMessage(C.GOLD + "Cannot find the file; Perhaps it was not loaded directly from a file?");
return;
}
Desktop.getDesktop().open(piece.getLoadFile());
sender().sendMessage(C.GREEN + "Opening " + piece.getTypeName() + " " + piece.getLoadFile().getName().split("\\Q.\\E")[0] + " in VSCode! ");
} catch (Throwable e) {
Iris.reportError(e);
sender().sendMessage(C.RED + "Cant find the file. Or registrant does not exist");
}
}
}

View File

@@ -0,0 +1,107 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.commands;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisJigsawStructure;
import com.volmit.iris.engine.object.IrisRegion;
import com.volmit.iris.util.decree.DecreeExecutor;
import com.volmit.iris.util.decree.DecreeOrigin;
import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param;
import com.volmit.iris.util.decree.specialhandlers.ObjectHandler;
import com.volmit.iris.util.format.C;
@Decree(name = "find", origin = DecreeOrigin.PLAYER, description = "Iris Find commands", aliases = "goto")
public class CommandFind implements DecreeExecutor {
@Decree(description = "Find a biome")
public void biome(
@Param(description = "The biome to look for")
IrisBiome biome
) {
Engine e = engine();
if (e == null) {
sender().sendMessage(C.GOLD + "Not in an Iris World!");
return;
}
e.gotoBiome(biome, player());
}
@Decree(description = "Find a region")
public void region(
@Param(description = "The region to look for")
IrisRegion region
) {
Engine e = engine();
if (e == null) {
sender().sendMessage(C.GOLD + "Not in an Iris World!");
return;
}
e.gotoRegion(region, player());
}
@Decree(description = "Find a structure")
public void structure(
@Param(description = "The structure to look for")
IrisJigsawStructure structure
) {
Engine e = engine();
if (e == null) {
sender().sendMessage(C.GOLD + "Not in an Iris World!");
return;
}
e.gotoJigsaw(structure, player());
}
@Decree(description = "Find a point of interest.")
public void poi(
@Param(description = "The type of PoI to look for.")
String type
) {
Engine e = engine();
if (e == null) {
sender().sendMessage(C.GOLD + "Not in an Iris World!");
return;
}
e.gotoPOI(type, player());
}
@Decree(description = "Find an object")
public void object(
@Param(description = "The object to look for", customHandler = ObjectHandler.class)
String object
) {
Engine e = engine();
if (e == null) {
sender().sendMessage(C.GOLD + "Not in an Iris World!");
return;
}
e.gotoObject(object, player());
}
}

View File

@@ -0,0 +1,370 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.commands;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.platform.PlatformChunkGenerator;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.decree.DecreeContext;
import com.volmit.iris.util.decree.DecreeExecutor;
import com.volmit.iris.util.decree.DecreeOrigin;
import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param;
import com.volmit.iris.util.decree.specialhandlers.NullablePlayerHandler;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.jobs.QueueJob;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@Decree(name = "iris", aliases = {"ir", "irs"}, description = "Basic Command")
public class CommandIris implements DecreeExecutor {
private CommandStudio studio;
private CommandPregen pregen;
private CommandSettings settings;
private CommandObject object;
private CommandJigsaw jigsaw;
private CommandWhat what;
private CommandEdit edit;
private CommandFind find;
@Decree(description = "Create a new world", aliases = {"+", "c"})
public void create(
@Param(aliases = "world-name", description = "The name of the world to create")
String name,
@Param(aliases = "dimension", description = "The dimension type to create the world with", defaultValue = "default")
IrisDimension type,
@Param(description = "The seed to generate the world with", defaultValue = "1337")
long seed
) {
if (name.equals("iris")) {
sender().sendMessage(C.RED + "You cannot use the world name \"iris\" for creating worlds as Iris uses this directory for studio worlds.");
sender().sendMessage(C.RED + "May we suggest the name \"IrisWorld\" instead?");
return;
}
if (new File(Bukkit.getWorldContainer(), name).exists()) {
sender().sendMessage(C.RED + "That folder already exists!");
return;
}
try {
IrisToolbelt.createWorld()
.dimension(type.getLoadKey())
.name(name)
.seed(seed)
.sender(sender())
.studio(false)
.create();
} catch (Throwable e) {
sender().sendMessage(C.RED + "Exception raised during creation. See the console for more details.");
Iris.error("Exception raised during world creation: " + e.getMessage());
Iris.reportError(e);
return;
}
sender().sendMessage(C.GREEN + "Successfully created your world!");
}
@Decree(description = "Remove an Iris world", aliases = {"del", "rm"}, sync = true)
public void remove(
@Param(description = "The world to remove")
World world,
@Param(description = "Whether to also remove the folder (if set to false, just does not load the world)", defaultValue = "true")
boolean delete
) {
if (!IrisToolbelt.isIrisWorld(world)) {
sender().sendMessage(C.RED + "This is not an Iris world. Iris worlds: " + String.join(", ", Bukkit.getServer().getWorlds().stream().filter(IrisToolbelt::isIrisWorld).map(World::getName).toList()));
return;
}
sender().sendMessage(C.GREEN + "Removing world: " + world.getName());
try {
if (IrisToolbelt.removeWorld(world)) {
sender().sendMessage(C.GREEN + "Successfully removed " + world.getName() + " from bukkit.yml");
} else {
sender().sendMessage(C.YELLOW + "Looks like the world was already removed from bukkit.yml");
}
} catch (IOException e) {
sender().sendMessage(C.RED + "Failed to save bukkit.yml because of " + e.getMessage());
e.printStackTrace();
}
IrisToolbelt.evacuate(world, "Deleting world");
Bukkit.unloadWorld(world, false);
if (delete && world.getWorldFolder().delete()) {
sender().sendMessage(C.GREEN + "Successfully removed world folder");
} else {
sender().sendMessage(C.RED + "Failed to remove world folder");
}
}
@Decree(description = "Teleport to another world", aliases = {"tp"}, sync = true)
public void teleport(
@Param(description = "World to teleport to")
World world,
@Param(description = "Player to teleport", defaultValue = "---", customHandler = NullablePlayerHandler.class)
Player player
) {
if (player == null && sender().isPlayer())
player = sender().player();
final Player target = player;
if (target == null) {
sender().sendMessage(C.RED + "The specified player does not exist.");
return;
}
new BukkitRunnable() {
@Override
public void run() {
target.teleport(world.getSpawnLocation());
new VolmitSender(target).sendMessage(C.GREEN + "You have been teleported to " + world.getName() + ".");
}
}.runTask(Iris.instance);
}
@Decree(description = "Print version information")
public void version() {
sender().sendMessage(C.GREEN + "Iris v" + Iris.instance.getDescription().getVersion() + " by Volmit Software");
}
@Decree(description = "Print world height information", origin = DecreeOrigin.PLAYER)
public void height() {
sender().sendMessage(C.GREEN + "" + sender().player().getWorld().getMinHeight() + " to " + sender().player().getWorld().getMaxHeight());
sender().sendMessage(C.GREEN + "Total Height: " + (sender().player().getWorld().getMaxHeight() - sender().player().getWorld().getMinHeight()));
}
@Decree(description = "QOL command to open a overworld studio world.", sync = true)
public void so() {
sender().sendMessage(C.GREEN + "Opening studio for the \"Overworld\" pack (seed: 1337)");
Iris.service(StudioSVC.class).open(sender(), 1337, "overworld");
}
@Decree(description = "Set aura spins")
public void aura(
@Param(description = "The h color value", defaultValue = "-20")
int h,
@Param(description = "The s color value", defaultValue = "7")
int s,
@Param(description = "The b color value", defaultValue = "8")
int b
) {
IrisSettings.get().getGeneral().setSpinh(h);
IrisSettings.get().getGeneral().setSpins(s);
IrisSettings.get().getGeneral().setSpinb(b);
IrisSettings.get().forceSave();
sender().sendMessage("<rainbow>Aura Spins updated to " + h + " " + s + " " + b);
}
@Decree(description = "Bitwise calculations")
public void bitwise(
@Param(description = "The first value to run calculations on")
int value1,
@Param(description = "The operator: | & ^ ≺≺ ≻≻ ")
String operator,
@Param(description = "The second value to run calculations on")
int value2
) {
Integer v = null;
switch (operator) {
case "|" -> v = value1 | value2;
case "&" -> v = value1 & value2;
case "^" -> v = value1 ^ value2;
case "%" -> v = value1 % value2;
case ">>" -> v = value1 >> value2;
case "<<" -> v = value1 << value2;
}
if (v == null) {
sender().sendMessage(C.RED + "The operator you entered: (" + operator + ") is invalid!");
return;
}
sender().sendMessage(C.GREEN + "" + value1 + " " + C.GREEN + operator.replaceAll("<", "").replaceAll(">", "").replaceAll("%", "") + " " + C.GREEN + value2 + C.GREEN + " returns " + C.GREEN + v);
}
@Decree(description = "Toggle debug")
public void debug(
@Param(name = "on", description = "Whether or not debug should be on", defaultValue = "other")
Boolean on
) {
boolean to = on == null ? !IrisSettings.get().getGeneral().isDebug() : on;
IrisSettings.get().getGeneral().setDebug(to);
IrisSettings.get().forceSave();
sender().sendMessage(C.GREEN + "Set debug to: " + to);
}
@Decree(description = "Download a project.", aliases = "dl")
public void download(
@Param(name = "pack", description = "The pack to download", defaultValue = "overworld", aliases = "project")
String pack,
@Param(name = "branch", description = "The branch to download from", defaultValue = "main")
String branch,
@Param(name = "trim", description = "Whether or not to download a trimmed version (do not enable when editing)", defaultValue = "false")
boolean trim,
@Param(name = "overwrite", description = "Whether or not to overwrite the pack with the downloaded one", aliases = "force", defaultValue = "false")
boolean overwrite
) {
sender().sendMessage(C.GREEN + "Downloading pack: " + pack + "/" + branch + (trim ? " trimmed" : "") + (overwrite ? " overwriting" : ""));
if (pack.equals("overworld")) {
String url = "https://github.com/IrisDimensions/overworld/releases/download/" + Iris.OVERWORLD_TAG + "/overworld.zip";
Iris.service(StudioSVC.class).downloadRelease(sender(), url, trim, overwrite);
} else {
Iris.service(StudioSVC.class).downloadSearch(sender(), "IrisDimensions/" + pack + "/" + branch, trim, overwrite);
}
}
@Decree(description = "Get metrics for your world", aliases = "measure", origin = DecreeOrigin.PLAYER)
public void metrics() {
if (!IrisToolbelt.isIrisWorld(world())) {
sender().sendMessage(C.RED + "You must be in an Iris world");
return;
}
sender().sendMessage(C.GREEN + "Sending metrics...");
engine().printMetrics(sender());
}
@Decree(description = "Reload configuration file (this is also done automatically)")
public void reload() {
IrisSettings.invalidate();
IrisSettings.get();
sender().sendMessage(C.GREEN + "Hotloaded settings");
}
@Decree(name = "regen", description = "Regenerate nearby chunks.", aliases = "rg", sync = true, origin = DecreeOrigin.PLAYER)
public void regen(
@Param(name = "radius", description = "The radius of nearby cunks", defaultValue = "5")
int radius
) {
if (IrisToolbelt.isIrisWorld(player().getWorld())) {
VolmitSender sender = sender();
J.a(() -> {
DecreeContext.touch(sender);
PlatformChunkGenerator plat = IrisToolbelt.access(player().getWorld());
Engine engine = plat.getEngine();
try {
Chunk cx = player().getLocation().getChunk();
KList<Runnable> js = new KList<>();
BurstExecutor b = MultiBurst.burst.burst();
b.setMulticore(false);
int rad = engine.getMantle().getRealRadius();
for (int i = -(radius + rad); i <= radius + rad; i++) {
for (int j = -(radius + rad); j <= radius + rad; j++) {
engine.getMantle().getMantle().deleteChunk(i + cx.getX(), j + cx.getZ());
}
}
for (int i = -radius; i <= radius; i++) {
for (int j = -radius; j <= radius; j++) {
int finalJ = j;
int finalI = i;
b.queue(() -> plat.injectChunkReplacement(player().getWorld(), finalI + cx.getX(), finalJ + cx.getZ(), (f) -> {
synchronized (js) {
js.add(f);
}
}));
}
}
b.complete();
sender().sendMessage(C.GREEN + "Regenerating " + Form.f(js.size()) + " Sections");
QueueJob<Runnable> r = new QueueJob<>() {
final KList<Future<?>> futures = new KList<>();
@Override
public void execute(Runnable runnable) {
futures.add(J.sfut(runnable));
if (futures.size() > 64) {
while (futures.isNotEmpty()) {
try {
futures.remove(0).get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
}
@Override
public String getName() {
return "Regenerating";
}
};
r.queue(js);
r.execute(sender());
} catch (Throwable e) {
sender().sendMessage("Unable to parse view-distance");
}
});
} else {
sender().sendMessage(C.RED + "You must be in an Iris World to use regen!");
}
}
@Decree(description = "Update the pack of a world (UNSAFE!)", name = "^world", aliases = "update-world")
public void updateWorld(
@Param(description = "The world to update", contextual = true)
World world,
@Param(description = "The pack to install into the world", contextual = true, aliases = "dimension")
IrisDimension pack,
@Param(description = "Make sure to make a backup & read the warnings first!", defaultValue = "false", aliases = "c")
boolean confirm,
@Param(description = "Should Iris download the pack again for you", defaultValue = "false", name = "fresh-download", aliases = {"fresh", "new"})
boolean freshDownload
) {
if (!confirm) {
sender().sendMessage(new String[]{
C.RED + "You should always make a backup before using this",
C.YELLOW + "Issues caused by this can be, but are not limited to:",
C.YELLOW + " - Broken chunks (cut-offs) between old and new chunks (before & after the update)",
C.YELLOW + " - Regenerated chunks that do not fit in with the old chunks",
C.YELLOW + " - Structures not spawning again when regenerating",
C.YELLOW + " - Caves not lining up",
C.YELLOW + " - Terrain layers not lining up",
C.RED + "Now that you are aware of the risks, and have made a back-up:",
C.RED + "/iris ^world " + world.getName() + " " + pack.getLoadKey() + " confirm=true"
});
return;
}
File folder = world.getWorldFolder();
folder.mkdirs();
if (freshDownload) {
Iris.service(StudioSVC.class).downloadSearch(sender(), pack.getLoadKey(), false, true);
}
Iris.service(StudioSVC.class).installIntoWorld(sender(), pack.getLoadKey(), folder);
}
}

View File

@@ -0,0 +1,112 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.commands;
import com.volmit.iris.Iris;
import com.volmit.iris.core.edit.JigsawEditor;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.engine.jigsaw.PlannedStructure;
import com.volmit.iris.engine.object.IrisJigsawPiece;
import com.volmit.iris.engine.object.IrisJigsawStructure;
import com.volmit.iris.engine.object.IrisObject;
import com.volmit.iris.engine.object.IrisPosition;
import com.volmit.iris.util.decree.DecreeExecutor;
import com.volmit.iris.util.decree.DecreeOrigin;
import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param;
import com.volmit.iris.util.decree.specialhandlers.ObjectHandler;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import java.io.File;
@Decree(name = "jigsaw", origin = DecreeOrigin.PLAYER, studio = true, description = "Iris jigsaw commands")
public class CommandJigsaw implements DecreeExecutor {
@Decree(description = "Edit a jigsaw piece")
public void edit(
@Param(description = "The jigsaw piece to edit")
IrisJigsawPiece piece
) {
File dest = piece.getLoadFile();
new JigsawEditor(player(), piece, IrisData.loadAnyObject(piece.getObject()), dest);
}
@Decree(description = "Place a jigsaw structure")
public void place(
@Param(description = "The jigsaw structure to place")
IrisJigsawStructure structure
) {
PrecisionStopwatch p = PrecisionStopwatch.start();
PlannedStructure ps = new PlannedStructure(structure, new IrisPosition(player().getLocation()), new RNG());
sender().sendMessage(C.GREEN + "Generated " + ps.getPieces().size() + " pieces in " + Form.duration(p.getMilliseconds(), 2));
ps.place(world());
}
@Decree(description = "Create a jigsaw piece")
public void create(
@Param(description = "The name of the jigsaw piece")
String piece,
@Param(description = "The project to add the jigsaw piece to")
String project,
@Param(description = "The object to use for this piece", customHandler = ObjectHandler.class)
String object
) {
IrisObject o = IrisData.loadAnyObject(object);
if (object == null) {
sender().sendMessage(C.RED + "Failed to find existing object");
return;
}
File dest = Iris.instance.getDataFile("packs", project, "jigsaw-pieces", piece + ".json");
new JigsawEditor(player(), null, o, dest);
sender().sendMessage(C.GRAY + "* Right Click blocks to make them connectors");
sender().sendMessage(C.GRAY + "* Right Click connectors to orient them");
sender().sendMessage(C.GRAY + "* Shift + Right Click connectors to remove them");
sender().sendMessage(C.GREEN + "Remember to use /iris jigsaw save");
}
@Decree(description = "Exit the current jigsaw editor")
public void exit() {
JigsawEditor editor = JigsawEditor.editors.get(player());
if (editor == null) {
sender().sendMessage(C.GOLD + "You don't have any pieces open to exit!");
return;
}
editor.exit();
sender().sendMessage(C.GREEN + "Exited Jigsaw Editor");
}
@Decree(description = "Save & Exit the current jigsaw editor")
public void save() {
JigsawEditor editor = JigsawEditor.editors.get(player());
if (editor == null) {
sender().sendMessage(C.GOLD + "You don't have any pieces open to save!");
return;
}
editor.close();
sender().sendMessage(C.GREEN + "Saved & Exited Jigsaw Editor");
}
}

View File

@@ -0,0 +1,527 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.commands;
import com.volmit.iris.Iris;
import com.volmit.iris.core.link.WorldEditLink;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.service.ObjectSVC;
import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.core.service.WandSVC;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.*;
import com.volmit.iris.util.data.Cuboid;
import com.volmit.iris.util.decree.DecreeExecutor;
import com.volmit.iris.util.decree.DecreeOrigin;
import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param;
import com.volmit.iris.util.decree.specialhandlers.ObjectHandler;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.math.Direction;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.Queue;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.TileState;
import org.bukkit.block.data.BlockData;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.io.File;
import java.io.IOException;
import java.text.NumberFormat;
import java.util.*;
@Decree(name = "object", aliases = "o", origin = DecreeOrigin.PLAYER, studio = true, description = "Iris object manipulation")
public class CommandObject implements DecreeExecutor {
private static final Set<Material> skipBlocks = Set.of(Material.GRASS, Material.SNOW, Material.VINE, Material.TORCH, Material.DEAD_BUSH,
Material.POPPY, Material.DANDELION);
public static IObjectPlacer createPlacer(World world, Map<Block, BlockData> futureBlockChanges) {
return new IObjectPlacer() {
@Override
public int getHighest(int x, int z, IrisData data) {
return world.getHighestBlockYAt(x, z);
}
@Override
public int getHighest(int x, int z, IrisData data, boolean ignoreFluid) {
return world.getHighestBlockYAt(x, z, ignoreFluid ? HeightMap.OCEAN_FLOOR : HeightMap.MOTION_BLOCKING);
}
@Override
public void set(int x, int y, int z, BlockData d) {
Block block = world.getBlockAt(x, y, z);
//Prevent blocks being set in or bellow bedrock
if (y <= world.getMinHeight() || block.getType() == Material.BEDROCK) return;
futureBlockChanges.put(block, block.getBlockData());
block.setBlockData(d);
}
@Override
public BlockData get(int x, int y, int z) {
return world.getBlockAt(x, y, z).getBlockData();
}
@Override
public boolean isPreventingDecay() {
return false;
}
@Override
public boolean isCarved(int x, int y, int z) {
return false;
}
@Override
public boolean isSolid(int x, int y, int z) {
return world.getBlockAt(x, y, z).getType().isSolid();
}
@Override
public boolean isUnderwater(int x, int z) {
return false;
}
@Override
public int getFluidHeight() {
return 63;
}
@Override
public boolean isDebugSmartBore() {
return false;
}
@Override
public void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile) {
BlockState state = world.getBlockAt(xx, yy, zz).getState();
tile.toBukkitTry(state);
state.update();
}
@Override
public Engine getEngine() {
return null;
}
};
}
@Decree(description = "Check the composition of an object")
public void analyze(
@Param(description = "The object to analyze", customHandler = ObjectHandler.class)
String object
) {
IrisObject o = IrisData.loadAnyObject(object);
sender().sendMessage("Object Size: " + o.getW() + " * " + o.getH() + " * " + o.getD() + "");
sender().sendMessage("Blocks Used: " + NumberFormat.getIntegerInstance().format(o.getBlocks().size()));
Queue<BlockData> queue = o.getBlocks().enqueueValues();
Map<Material, Set<BlockData>> unsorted = new HashMap<>();
Map<BlockData, Integer> amounts = new HashMap<>();
Map<Material, Integer> materials = new HashMap<>();
while (queue.hasNext()) {
BlockData block = queue.next();
//unsorted.put(block.getMaterial(), block);
if (!amounts.containsKey(block)) {
amounts.put(block, 1);
} else
amounts.put(block, amounts.get(block) + 1);
if (!materials.containsKey(block.getMaterial())) {
materials.put(block.getMaterial(), 1);
unsorted.put(block.getMaterial(), new HashSet<>());
unsorted.get(block.getMaterial()).add(block);
} else {
materials.put(block.getMaterial(), materials.get(block.getMaterial()) + 1);
unsorted.get(block.getMaterial()).add(block);
}
}
List<Material> sortedMatsList = amounts.keySet().stream().map(BlockData::getMaterial)
.sorted().toList();
Set<Material> sortedMats = new TreeSet<>(Comparator.comparingInt(materials::get).reversed());
sortedMats.addAll(sortedMatsList);
sender().sendMessage("== Blocks in object ==");
int n = 0;
for (Material mat : sortedMats) {
int amount = materials.get(mat);
List<BlockData> set = new ArrayList<>(unsorted.get(mat));
set.sort(Comparator.comparingInt(amounts::get).reversed());
BlockData data = set.get(0);
int dataAmount = amounts.get(data);
String string = " - " + mat.toString() + "*" + amount;
if (data.getAsString(true).contains("[")) {
string = string + " --> [" + data.getAsString(true).split("\\[")[1]
.replaceAll("true", ChatColor.GREEN + "true" + ChatColor.GRAY)
.replaceAll("false", ChatColor.RED + "false" + ChatColor.GRAY) + "*" + dataAmount;
}
sender().sendMessage(string);
n++;
if (n >= 10) {
sender().sendMessage(" + " + (sortedMats.size() - n) + " other block types");
return;
}
}
}
@Decree(description = "Get a powder that reveals objects", studio = true, aliases = "d")
public void dust() {
player().getInventory().addItem(WandSVC.createDust());
sender().playSound(Sound.AMBIENT_SOUL_SAND_VALLEY_ADDITIONS, 1f, 1.5f);
}
@Decree(description = "Contract a selection based on your looking direction", aliases = "-")
public void contract(
@Param(description = "The amount to inset by", defaultValue = "1")
int amount
) {
if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage("Hold your wand.");
return;
}
Location[] b = WandSVC.getCuboid(player());
if (b == null) {
return;
}
Location a1 = b[0].clone();
Location a2 = b[1].clone();
Cuboid cursor = new Cuboid(a1, a2);
Direction d = Direction.closest(player().getLocation().getDirection()).reverse();
assert d != null;
cursor = cursor.expand(d, -amount);
b[0] = cursor.getLowerNE();
b[1] = cursor.getUpperSW();
player().getInventory().setItemInMainHand(WandSVC.createWand(b[0], b[1]));
player().updateInventory();
sender().playSound(Sound.ENTITY_ITEM_FRAME_ROTATE_ITEM, 1f, 0.55f);
}
@Decree(description = "Set point 1 to look", aliases = "p1")
public void position1(
@Param(description = "Whether to use your current position, or where you look", defaultValue = "true")
boolean here
) {
if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage("Ready your Wand.");
return;
}
if (WandSVC.isHoldingWand(player())) {
Location[] g = WandSVC.getCuboid(player());
if (g == null) {
return;
}
if (!here) {
// TODO: WARNING HEIGHT
g[1] = player().getTargetBlock(null, 256).getLocation().clone();
} else {
g[1] = player().getLocation().getBlock().getLocation().clone().add(0, -1, 0);
}
player().setItemInHand(WandSVC.createWand(g[0], g[1]));
}
}
@Decree(description = "Set point 2 to look", aliases = "p2")
public void position2(
@Param(description = "Whether to use your current position, or where you look", defaultValue = "true")
boolean here
) {
if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage("Ready your Wand.");
return;
}
if (WandSVC.isHoldingIrisWand(player())) {
Location[] g = WandSVC.getCuboid(player());
if (g == null) {
return;
}
if (!here) {
// TODO: WARNING HEIGHT
g[0] = player().getTargetBlock(null, 256).getLocation().clone();
} else {
g[0] = player().getLocation().getBlock().getLocation().clone().add(0, -1, 0);
}
player().setItemInHand(WandSVC.createWand(g[0], g[1]));
}
}
@Decree(description = "Paste an object", sync = true)
public void paste(
@Param(description = "The object to paste", customHandler = ObjectHandler.class)
String object,
@Param(description = "Whether or not to edit the object (need to hold wand)", defaultValue = "false")
boolean edit,
@Param(description = "The amount of degrees to rotate by", defaultValue = "0")
int rotate,
@Param(description = "The factor by which to scale the object placement", defaultValue = "1")
double scale
// ,
// @Param(description = "The scale interpolator to use", defaultValue = "none")
// IrisObjectPlacementScaleInterpolator interpolator
) {
IrisObject o = IrisData.loadAnyObject(object);
double maxScale = Double.max(10 - o.getBlocks().size() / 10000d, 1);
if (scale > maxScale) {
sender().sendMessage(C.YELLOW + "Indicated scale exceeds maximum. Downscaled to maximum: " + maxScale);
scale = maxScale;
}
sender().playSound(Sound.BLOCK_ENCHANTMENT_TABLE_USE, 1f, 1.5f);
IrisObjectPlacement placement = new IrisObjectPlacement();
placement.setRotation(IrisObjectRotation.of(0, rotate, 0));
ItemStack wand = player().getInventory().getItemInMainHand();
Location block = player().getTargetBlock(skipBlocks, 256).getLocation().clone().add(0, 1, 0);
Map<Block, BlockData> futureChanges = new HashMap<>();
if (scale != 1) {
o = o.scaled(scale, IrisObjectPlacementScaleInterpolator.TRICUBIC);
}
o.place(block.getBlockX(), block.getBlockY() + (int) o.getCenter().getY(), block.getBlockZ(), createPlacer(block.getWorld(), futureChanges), placement, new RNG(), null);
Iris.service(ObjectSVC.class).addChanges(futureChanges);
if (edit) {
ItemStack newWand = WandSVC.createWand(block.clone().subtract(o.getCenter()).add(o.getW() - 1,
o.getH() + o.getCenter().clone().getY() - 1, o.getD() - 1), block.clone().subtract(o.getCenter().clone().setY(0)));
if (WandSVC.isWand(wand)) {
wand = newWand;
player().getInventory().setItemInMainHand(wand);
sender().sendMessage("Updated wand for " + "objects/" + o.getLoadKey() + ".iob ");
} else {
int slot = WandSVC.findWand(player().getInventory());
if (slot == -1) {
player().getInventory().addItem(newWand);
sender().sendMessage("Given new wand for " + "objects/" + o.getLoadKey() + ".iob ");
} else {
player().getInventory().setItem(slot, newWand);
sender().sendMessage("Updated wand for " + "objects/" + o.getLoadKey() + ".iob ");
}
}
} else {
sender().sendMessage(C.IRIS + "Placed " + object);
}
}
@Decree(description = "Save an object")
public void save(
@Param(description = "The dimension to store the object in", contextual = true)
IrisDimension dimension,
@Param(description = "The file to store it in, can use / for subfolders")
String name,
@Param(description = "Overwrite existing object files", defaultValue = "false", aliases = "force")
boolean overwrite
) {
IrisObject o = WandSVC.createSchematic(player());
if (o == null) {
sender().sendMessage(C.YELLOW + "You need to hold your wand!");
return;
}
File file = Iris.service(StudioSVC.class).getWorkspaceFile(dimension.getLoadKey(), "objects", name + ".iob");
if (file.exists() && !overwrite) {
sender().sendMessage(C.RED + "File already exists. Set overwrite=true to overwrite it.");
return;
}
try {
o.write(file);
} catch (IOException e) {
sender().sendMessage(C.RED + "Failed to save object because of an IOException: " + e.getMessage());
Iris.reportError(e);
}
sender().playSound(Sound.BLOCK_ENCHANTMENT_TABLE_USE, 1f, 1.5f);
sender().sendMessage(C.GREEN + "Successfully object to saved: " + dimension.getLoadKey() + "/objects/" + name);
}
@Decree(description = "Shift a selection in your looking direction", aliases = "-")
public void shift(
@Param(description = "The amount to shift by", defaultValue = "1")
int amount
) {
if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage("Hold your wand.");
return;
}
Location[] b = WandSVC.getCuboid(player());
Location a1 = b[0].clone();
Location a2 = b[1].clone();
Direction d = Direction.closest(player().getLocation().getDirection()).reverse();
if (d == null) {
return; // HOW DID THIS HAPPEN
}
a1.add(d.toVector().multiply(amount));
a2.add(d.toVector().multiply(amount));
Cuboid cursor = new Cuboid(a1, a2);
b[0] = cursor.getLowerNE();
b[1] = cursor.getUpperSW();
player().getInventory().setItemInMainHand(WandSVC.createWand(b[0], b[1]));
player().updateInventory();
sender().playSound(Sound.ENTITY_ITEM_FRAME_ROTATE_ITEM, 1f, 0.55f);
}
@Decree(description = "Undo a number of pastes", aliases = "-")
public void undo(
@Param(description = "The amount of pastes to undo", defaultValue = "1")
int amount
) {
ObjectSVC service = Iris.service(ObjectSVC.class);
int actualReverts = Math.min(service.getUndos().size(), amount);
service.revertChanges(actualReverts);
sender().sendMessage(C.BLUE + "Reverted " + actualReverts + C.BLUE +" pastes!");
}
@Decree(description = "Gets an object wand and grabs the current WorldEdit selection.", aliases = "we", origin = DecreeOrigin.PLAYER, studio = true)
public void we() {
if (!Bukkit.getPluginManager().isPluginEnabled("WorldEdit")) {
sender().sendMessage(C.RED + "You can't get a WorldEdit selection without WorldEdit, you know.");
return;
}
Cuboid locs = WorldEditLink.getSelection(sender().player());
if (locs == null) {
sender().sendMessage(C.RED + "You don't have a WorldEdit selection in this world.");
return;
}
sender().player().getInventory().addItem(WandSVC.createWand(locs.getLowerNE(), locs.getUpperSW()));
sender().sendMessage(C.GREEN + "A fresh wand with your current WorldEdit selection on it!");
}
@Decree(description = "Get an object wand", sync = true)
public void wand() {
player().getInventory().addItem(WandSVC.createWand());
sender().playSound(Sound.ITEM_ARMOR_EQUIP_NETHERITE, 1f, 1.5f);
sender().sendMessage(C.GREEN + "Poof! Good luck building!");
}
@Decree(name = "x&y", description = "Autoselect up, down & out", sync = true)
public void xay() {
if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage(C.YELLOW + "Hold your wand!");
return;
}
Location[] b = WandSVC.getCuboid(player());
Location a1 = b[0].clone();
Location a2 = b[1].clone();
Location a1x = b[0].clone();
Location a2x = b[1].clone();
Cuboid cursor = new Cuboid(a1, a2);
Cuboid cursorx = new Cuboid(a1, a2);
while (!cursor.containsOnly(Material.AIR)) {
a1.add(new org.bukkit.util.Vector(0, 1, 0));
a2.add(new org.bukkit.util.Vector(0, 1, 0));
cursor = new Cuboid(a1, a2);
}
a1.add(new org.bukkit.util.Vector(0, -1, 0));
a2.add(new org.bukkit.util.Vector(0, -1, 0));
while (!cursorx.containsOnly(Material.AIR)) {
a1x.add(new org.bukkit.util.Vector(0, -1, 0));
a2x.add(new org.bukkit.util.Vector(0, -1, 0));
cursorx = new Cuboid(a1x, a2x);
}
a1x.add(new org.bukkit.util.Vector(0, 1, 0));
a2x.add(new Vector(0, 1, 0));
b[0] = a1;
b[1] = a2x;
cursor = new Cuboid(b[0], b[1]);
cursor = cursor.contract(Cuboid.CuboidDirection.North);
cursor = cursor.contract(Cuboid.CuboidDirection.South);
cursor = cursor.contract(Cuboid.CuboidDirection.East);
cursor = cursor.contract(Cuboid.CuboidDirection.West);
b[0] = cursor.getLowerNE();
b[1] = cursor.getUpperSW();
player().getInventory().setItemInMainHand(WandSVC.createWand(b[0], b[1]));
player().updateInventory();
sender().playSound(Sound.ENTITY_ITEM_FRAME_ROTATE_ITEM, 1f, 0.55f);
sender().sendMessage(C.GREEN + "Auto-select complete!");
}
@Decree(name = "x+y", description = "Autoselect up & out", sync = true)
public void xpy() {
if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage(C.YELLOW + "Hold your wand!");
return;
}
Location[] b = WandSVC.getCuboid(player());
b[0].add(new Vector(0, 1, 0));
b[1].add(new Vector(0, 1, 0));
Location a1 = b[0].clone();
Location a2 = b[1].clone();
Cuboid cursor = new Cuboid(a1, a2);
while (!cursor.containsOnly(Material.AIR)) {
a1.add(new Vector(0, 1, 0));
a2.add(new Vector(0, 1, 0));
cursor = new Cuboid(a1, a2);
}
a1.add(new Vector(0, -1, 0));
a2.add(new Vector(0, -1, 0));
b[0] = a1;
a2 = b[1];
cursor = new Cuboid(a1, a2);
cursor = cursor.contract(Cuboid.CuboidDirection.North);
cursor = cursor.contract(Cuboid.CuboidDirection.South);
cursor = cursor.contract(Cuboid.CuboidDirection.East);
cursor = cursor.contract(Cuboid.CuboidDirection.West);
b[0] = cursor.getLowerNE();
b[1] = cursor.getUpperSW();
player().getInventory().setItemInMainHand(WandSVC.createWand(b[0], b[1]));
player().updateInventory();
sender().playSound(Sound.ENTITY_ITEM_FRAME_ROTATE_ITEM, 1f, 0.55f);
sender().sendMessage(C.GREEN + "Auto-select complete!");
}
}

View File

@@ -0,0 +1,84 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.commands;
import com.volmit.iris.Iris;
import com.volmit.iris.core.gui.PregeneratorJob;
import com.volmit.iris.core.pregenerator.PregenTask;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.util.decree.DecreeExecutor;
import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.math.Position2;
import org.bukkit.World;
import org.bukkit.util.Vector;
@Decree(name = "pregen", aliases = "pregenerate", description = "Pregenerate your Iris worlds!")
public class CommandPregen implements DecreeExecutor {
@Decree(description = "Pregenerate a world")
public void start(
@Param(description = "The radius of the pregen in blocks", aliases = "size")
int radius,
@Param(description = "The world to pregen", contextual = true)
World world,
@Param(aliases = "middle", description = "The center location of the pregen. Use \"me\" for your current location", defaultValue = "0,0")
Vector center
) {
try {
if (sender().isPlayer() && access() == null) {
sender().sendMessage(C.RED + "The engine access for this world is null!");
sender().sendMessage(C.RED + "Please make sure the world is loaded & the engine is initialized. Generate a new chunk, for example.");
}
radius = Math.max(radius, 1024);
int w = (radius >> 9 + 1) * 2;
IrisToolbelt.pregenerate(PregenTask
.builder()
.center(new Position2(center.getBlockX() >> 9, center.getBlockZ() >> 9))
.width(w)
.height(w)
.build(), world);
String msg = C.GREEN + "Pregen started in " + C.GOLD + world.getName() + C.GREEN + " of " + C.GOLD + (radius * 2) + C.GREEN + " by " + C.GOLD + (radius * 2) + C.GREEN + " blocks from " + C.GOLD + center.getX() + "," + center.getZ();
sender().sendMessage(msg);
Iris.info(msg);
} catch (Throwable e) {
sender().sendMessage(C.RED + "Epic fail. See console.");
Iris.reportError(e);
e.printStackTrace();
}
}
@Decree(description = "Stop the active pregeneration task", aliases = "x")
public void stop() {
if (PregeneratorJob.shutdownInstance()) {
sender().sendMessage(C.GREEN + "Stopped pregeneration task");
} else {
sender().sendMessage(C.YELLOW + "No active pregeneration tasks to stop");
}
}
@Decree(description = "Pause / continue the active pregeneration task", aliases = {"t", "resume", "unpause"})
public void pause() {
if (PregeneratorJob.pauseResume()) {
sender().sendMessage(C.GREEN + "Paused/unpaused pregeneration task, now: " + (PregeneratorJob.isPaused() ? "Paused" : "Running") + ".");
} else {
sender().sendMessage(C.YELLOW + "No active pregeneration tasks to pause/unpause.");
}
}
}

View File

@@ -0,0 +1,25 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.commands;
import com.volmit.iris.util.decree.DecreeExecutor;
public class CommandSettings implements DecreeExecutor {
}

View File

@@ -0,0 +1,743 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.commands;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.gui.NoiseExplorerGUI;
import com.volmit.iris.core.gui.VisionGUI;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.project.IrisProject;
import com.volmit.iris.core.service.ConversionSVC;
import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.*;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.decree.DecreeExecutor;
import com.volmit.iris.util.decree.DecreeOrigin;
import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.function.Function2;
import com.volmit.iris.util.function.NoiseProvider;
import com.volmit.iris.util.interpolation.InterpolationMethod;
import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.json.JSONArray;
import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.math.Spiraler;
import com.volmit.iris.util.noise.CNG;
import com.volmit.iris.util.scheduling.O;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import io.papermc.lib.PaperLib;
import org.bukkit.*;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.util.BlockVector;
import org.bukkit.util.Vector;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.attribute.FileTime;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.Objects;
import java.util.function.Supplier;
@Decree(name = "studio", aliases = {"std", "s"}, description = "Studio Commands", studio = true)
public class CommandStudio implements DecreeExecutor {
private CommandFind find;
private CommandEdit edit;
public static String hrf(Duration duration) {
return duration.toString().substring(2).replaceAll("(\\d[HMS])(?!$)", "$1 ").toLowerCase();
}
@Decree(description = "Download a project.", aliases = "dl")
public void download(
@Param(name = "pack", description = "The pack to download", defaultValue = "overworld", aliases = "project")
String pack,
@Param(name = "branch", description = "The branch to download from", defaultValue = "master")
String branch,
@Param(name = "trim", description = "Whether or not to download a trimmed version (do not enable when editing)", defaultValue = "false")
boolean trim,
@Param(name = "overwrite", description = "Whether or not to overwrite the pack with the downloaded one", aliases = "force", defaultValue = "false")
boolean overwrite
) {
new CommandIris().download(pack, branch, trim, overwrite);
}
@Decree(description = "Open a new studio world", aliases = "o", sync = true)
public void open(
@Param(defaultValue = "default", description = "The dimension to open a studio for", aliases = "dim")
IrisDimension dimension,
@Param(defaultValue = "1337", description = "The seed to generate the studio with", aliases = "s")
long seed) {
sender().sendMessage(C.GREEN + "Opening studio for the \"" + dimension.getName() + "\" pack (seed: " + seed + ")");
Iris.service(StudioSVC.class).open(sender(), seed, dimension.getLoadKey());
}
@Decree(description = "Open VSCode for a dimension", aliases = {"vsc", "edit"})
public void vscode(
@Param(defaultValue = "default", description = "The dimension to open VSCode for", aliases = "dim")
IrisDimension dimension
) {
sender().sendMessage(C.GREEN + "Opening VSCode for the \"" + dimension.getName() + "\" pack");
Iris.service(StudioSVC.class).openVSCode(sender(), dimension.getLoadKey());
}
@Decree(description = "Close an open studio project", aliases = {"x", "c"}, sync = true)
public void close() {
if (!Iris.service(StudioSVC.class).isProjectOpen()) {
sender().sendMessage(C.RED + "No open studio projects.");
return;
}
Iris.service(StudioSVC.class).close();
sender().sendMessage(C.GREEN + "Project Closed.");
}
@Decree(description = "Create a new studio project", aliases = "+", sync = true)
public void create(
@Param(description = "The name of this new Iris Project.")
String name,
@Param(description = "Copy the contents of an existing project in your packs folder and use it as a template in this new project.", contextual = true)
IrisDimension template) {
if (template != null) {
Iris.service(StudioSVC.class).create(sender(), name, template.getLoadKey());
} else {
Iris.service(StudioSVC.class).create(sender(), name);
}
}
@Decree(description = "Get the version of a pack")
public void version(
@Param(defaultValue = "default", description = "The dimension get the version of", aliases = "dim", contextual = true)
IrisDimension dimension
) {
sender().sendMessage(C.GREEN + "The \"" + dimension.getName() + "\" pack has version: " + dimension.getVersion());
}
@Decree(description = "Convert objects in the \"convert\" folder")
public void convert() {
Iris.service(ConversionSVC.class).check(sender());
}
@Decree(description = "Execute a script", aliases = "run", origin = DecreeOrigin.PLAYER)
public void execute(
@Param(description = "The script to run")
IrisScript script
) {
engine().getExecution().execute(script.getLoadKey());
}
@Decree(description = "Open the noise explorer (External GUI)", aliases = {"nmap", "n"})
public void noise() {
if (noGUI()) return;
sender().sendMessage(C.GREEN + "Opening Noise Explorer!");
NoiseExplorerGUI.launch();
}
@Decree(description = "Charges all spawners in the area", aliases = "zzt", origin = DecreeOrigin.PLAYER)
public void charge() {
if (!IrisToolbelt.isIrisWorld(world())) {
sender().sendMessage(C.RED + "You must be in an Iris world to charge spawners!");
return;
}
sender().sendMessage(C.GREEN + "Charging spawners!");
engine().getWorldManager().chargeEnergy();
}
@Decree(description = "Preview noise gens (External GUI)", aliases = {"generator", "gen"})
public void explore(
@Param(description = "The generator to explore", contextual = true)
IrisGenerator generator,
@Param(description = "The seed to generate with", defaultValue = "12345")
long seed
) {
if (noGUI()) return;
sender().sendMessage(C.GREEN + "Opening Noise Explorer!");
Supplier<Function2<Double, Double, Double>> l = () -> {
if (generator == null) {
return (x, z) -> 0D;
}
return (x, z) -> generator.getHeight(x, z, new RNG(seed).nextParallelRNG(3245).lmax());
};
NoiseExplorerGUI.launch(l, "Custom Generator");
}
@Decree(description = "Hotload a studio", aliases = {"reload", "h"})
public void hotload() {
if (!Iris.service(StudioSVC.class).isProjectOpen()) {
sender().sendMessage(C.RED + "No studio world open!");
return;
}
Iris.service(StudioSVC.class).getActiveProject().getActiveProvider().getEngine().hotload();
sender().sendMessage(C.GREEN + "Hotloaded");
}
@Decree(description = "Show loot if a chest were right here", origin = DecreeOrigin.PLAYER, sync = true)
public void loot(
@Param(description = "Fast insertion of items in virtual inventory (may cause performance drop)", defaultValue = "false")
boolean fast,
@Param(description = "Whether or not to append to the inventory currently open (if false, clears opened inventory)", defaultValue = "true")
boolean add
) {
if (noStudio()) return;
KList<IrisLootTable> tables = engine().getLootTables(RNG.r, player().getLocation().getBlock());
Inventory inv = Bukkit.createInventory(null, 27 * 2);
try {
engine().addItems(true, inv, RNG.r, tables, InventorySlotType.STORAGE, player().getLocation().getBlockX(), player().getLocation().getBlockY(), player().getLocation().getBlockZ(), 1);
} catch (Throwable e) {
Iris.reportError(e);
sender().sendMessage(C.RED + "Cannot add items to virtual inventory because of: " + e.getMessage());
return;
}
O<Integer> ta = new O<>();
ta.set(-1);
ta.set(Bukkit.getScheduler().scheduleSyncRepeatingTask(Iris.instance, () ->
{
if (!player().getOpenInventory().getType().equals(InventoryType.CHEST)) {
Bukkit.getScheduler().cancelTask(ta.get());
sender().sendMessage(C.GREEN + "Opened inventory!");
return;
}
if (!add) {
inv.clear();
}
engine().addItems(true, inv, new RNG(RNG.r.imax()), tables, InventorySlotType.STORAGE, player().getLocation().getBlockX(), player().getLocation().getBlockY(), player().getLocation().getBlockZ(), 1);
}, 0, fast ? 5 : 35));
sender().sendMessage(C.GREEN + "Opening inventory now!");
player().openInventory(inv);
}
@Decree(description = "Render a world map (External GUI)", aliases = "render")
public void map(
@Param(name = "world", description = "The world to open the generator for", contextual = true)
World world
) {
if (noGUI()) return;
if (!IrisToolbelt.isIrisWorld(world)) {
sender().sendMessage(C.RED + "You need to be in or specify an Iris-generated world!");
return;
}
VisionGUI.launch(IrisToolbelt.access(world).getEngine(), 0);
sender().sendMessage(C.GREEN + "Opening map!");
}
@Decree(description = "Package a dimension into a compressed format", aliases = "package")
public void pkg(
@Param(name = "dimension", description = "The dimension pack to compress", contextual = true, defaultValue = "default")
IrisDimension dimension,
@Param(name = "obfuscate", description = "Whether or not to obfuscate the pack", defaultValue = "false")
boolean obfuscate,
@Param(name = "minify", description = "Whether or not to minify the pack", defaultValue = "true")
boolean minify
) {
Iris.service(StudioSVC.class).compilePackage(sender(), dimension.getLoadKey(), obfuscate, minify);
}
@Decree(description = "Profiles the performance of a dimension", origin = DecreeOrigin.PLAYER)
public void profile(
@Param(description = "The dimension to profile", contextual = true, defaultValue = "default")
IrisDimension dimension
) {
File pack = dimension.getLoadFile().getParentFile().getParentFile();
File report = Iris.instance.getDataFile("profile.txt");
IrisProject project = new IrisProject(pack);
IrisData data = IrisData.get(pack);
KList<String> fileText = new KList<>();
KMap<NoiseStyle, Double> styleTimings = new KMap<>();
KMap<InterpolationMethod, Double> interpolatorTimings = new KMap<>();
KMap<String, Double> generatorTimings = new KMap<>();
KMap<String, Double> biomeTimings = new KMap<>();
KMap<String, Double> regionTimings = new KMap<>();
sender().sendMessage("Calculating Performance Metrics for Noise generators");
for (NoiseStyle i : NoiseStyle.values()) {
CNG c = i.create(new RNG(i.hashCode()));
for (int j = 0; j < 3000; j++) {
c.noise(j, j + 1000, j * j);
c.noise(j, -j);
}
PrecisionStopwatch px = PrecisionStopwatch.start();
for (int j = 0; j < 100000; j++) {
c.noise(j, j + 1000, j * j);
c.noise(j, -j);
}
styleTimings.put(i, px.getMilliseconds());
}
fileText.add("Noise Style Performance Impacts: ");
for (NoiseStyle i : styleTimings.sortKNumber()) {
fileText.add(i.name() + ": " + styleTimings.get(i));
}
fileText.add("");
sender().sendMessage("Calculating Interpolator Timings...");
for (InterpolationMethod i : InterpolationMethod.values()) {
IrisInterpolator in = new IrisInterpolator();
in.setFunction(i);
in.setHorizontalScale(8);
NoiseProvider np = (x, z) -> Math.random();
for (int j = 0; j < 3000; j++) {
in.interpolate(j, -j, np);
}
PrecisionStopwatch px = PrecisionStopwatch.start();
for (int j = 0; j < 100000; j++) {
in.interpolate(j + 10000, -j - 100000, np);
}
interpolatorTimings.put(i, px.getMilliseconds());
}
fileText.add("Noise Interpolator Performance Impacts: ");
for (InterpolationMethod i : interpolatorTimings.sortKNumber()) {
fileText.add(i.name() + ": " + interpolatorTimings.get(i));
}
fileText.add("");
sender().sendMessage("Processing Generator Scores: ");
KMap<String, KList<String>> btx = new KMap<>();
for (String i : data.getGeneratorLoader().getPossibleKeys()) {
KList<String> vv = new KList<>();
IrisGenerator g = data.getGeneratorLoader().load(i);
KList<IrisNoiseGenerator> composites = g.getAllComposites();
double score = 0;
int m = 0;
for (IrisNoiseGenerator j : composites) {
m++;
score += styleTimings.get(j.getStyle().getStyle());
vv.add("Composite Noise Style " + m + " " + j.getStyle().getStyle().name() + ": " + styleTimings.get(j.getStyle().getStyle()));
}
score += interpolatorTimings.get(g.getInterpolator().getFunction());
vv.add("Interpolator " + g.getInterpolator().getFunction().name() + ": " + interpolatorTimings.get(g.getInterpolator().getFunction()));
generatorTimings.put(i, score);
btx.put(i, vv);
}
fileText.add("Project Generator Performance Impacts: ");
for (String i : generatorTimings.sortKNumber()) {
fileText.add(i + ": " + generatorTimings.get(i));
btx.get(i).forEach((ii) -> fileText.add(" " + ii));
}
fileText.add("");
KMap<String, KList<String>> bt = new KMap<>();
for (String i : data.getBiomeLoader().getPossibleKeys()) {
KList<String> vv = new KList<>();
IrisBiome b = data.getBiomeLoader().load(i);
double score = 0;
int m = 0;
for (IrisBiomePaletteLayer j : b.getLayers()) {
m++;
score += styleTimings.get(j.getStyle().getStyle());
vv.add("Palette Layer " + m + ": " + styleTimings.get(j.getStyle().getStyle()));
}
score += styleTimings.get(b.getBiomeStyle().getStyle());
vv.add("Biome Style: " + styleTimings.get(b.getBiomeStyle().getStyle()));
score += styleTimings.get(b.getChildStyle().getStyle());
vv.add("Child Style: " + styleTimings.get(b.getChildStyle().getStyle()));
biomeTimings.put(i, score);
bt.put(i, vv);
}
fileText.add("Project Biome Performance Impacts: ");
for (String i : biomeTimings.sortKNumber()) {
fileText.add(i + ": " + biomeTimings.get(i));
bt.get(i).forEach((ff) -> fileText.add(" " + ff));
}
fileText.add("");
for (String i : data.getRegionLoader().getPossibleKeys()) {
IrisRegion b = data.getRegionLoader().load(i);
double score = 0;
score += styleTimings.get(b.getLakeStyle().getStyle());
score += styleTimings.get(b.getRiverStyle().getStyle());
regionTimings.put(i, score);
}
fileText.add("Project Region Performance Impacts: ");
for (String i : regionTimings.sortKNumber()) {
fileText.add(i + ": " + regionTimings.get(i));
}
fileText.add("");
double m = 0;
for (double i : biomeTimings.v()) {
m += i;
}
m /= biomeTimings.size();
double mm = 0;
for (double i : generatorTimings.v()) {
mm += i;
}
mm /= generatorTimings.size();
m += mm;
double mmm = 0;
for (double i : regionTimings.v()) {
mmm += i;
}
mmm /= regionTimings.size();
m += mmm;
fileText.add("Average Score: " + m);
sender().sendMessage("Score: " + Form.duration(m, 0));
try {
IO.writeAll(report, fileText.toString("\n"));
} catch (IOException e) {
Iris.reportError(e);
e.printStackTrace();
}
sender().sendMessage(C.GREEN + "Done! " + report.getPath());
}
@Decree(description = "Spawn an Iris entity", aliases = "summon", origin = DecreeOrigin.PLAYER)
public void spawn(
@Param(description = "The entity to spawn")
IrisEntity entity,
@Param(description = "The location to spawn the entity at", contextual = true)
Vector location
) {
if (!IrisToolbelt.isIrisWorld(player().getWorld())) {
sender().sendMessage(C.RED + "You have to be in an Iris world to spawn entities properly. Trying to spawn the best we can do.");
}
entity.spawn(engine(), new Location(world(), location.getX(), location.getY(), location.getZ()));
}
@Decree(description = "Teleport to the active studio world", aliases = "stp", origin = DecreeOrigin.PLAYER, sync = true)
public void tpstudio() {
if (!Iris.service(StudioSVC.class).isProjectOpen()) {
sender().sendMessage(C.RED + "No studio world is open!");
return;
}
if (IrisToolbelt.isIrisWorld(world()) && engine().isStudio()) {
sender().sendMessage(C.RED + "You are already in a studio world!");
return;
}
sender().sendMessage(C.GREEN + "Sending you to the studio world!");
player().teleport(Iris.service(StudioSVC.class).getActiveProject().getActiveProvider().getTarget().getWorld().spawnLocation());
player().setGameMode(GameMode.SPECTATOR);
}
@Decree(description = "Update your dimension projects VSCode workspace")
public void update(
@Param(description = "The dimension to update the workspace of", contextual = true, defaultValue = "default")
IrisDimension dimension
) {
sender().sendMessage(C.GOLD + "Updating Code Workspace for " + dimension.getName() + "...");
if (new IrisProject(dimension.getLoader().getDataFolder()).updateWorkspace()) {
sender().sendMessage(C.GREEN + "Updated Code Workspace for " + dimension.getName());
} else {
sender().sendMessage(C.RED + "Invalid project: " + dimension.getName() + ". Try deleting the code-workspace file and try again.");
}
}
@Decree(aliases = "find-objects", description = "Get information about nearby structures")
public void objects() {
if (!IrisToolbelt.isIrisWorld(player().getWorld())) {
sender().sendMessage(C.RED + "You must be in an Iris world");
return;
}
World world = player().getWorld();
if (!IrisToolbelt.isIrisWorld(world)) {
sender().sendMessage("You must be in an iris world.");
return;
}
KList<Chunk> chunks = new KList<>();
int bx = player().getLocation().getChunk().getX();
int bz = player().getLocation().getChunk().getZ();
try {
Location l = player().getTargetBlockExact(48, FluidCollisionMode.NEVER).getLocation();
int cx = l.getChunk().getX();
int cz = l.getChunk().getZ();
new Spiraler(3, 3, (x, z) -> chunks.addIfMissing(world.getChunkAt(x + cx, z + cz))).drain();
} catch (Throwable e) {
Iris.reportError(e);
}
new Spiraler(3, 3, (x, z) -> chunks.addIfMissing(world.getChunkAt(x + bx, z + bz))).drain();
sender().sendMessage("Capturing IGenData from " + chunks.size() + " nearby chunks.");
try {
File ff = Iris.instance.getDataFile("reports/" + M.ms() + ".txt");
PrintWriter pw = new PrintWriter(ff);
pw.println("=== Iris Chunk Report ===");
pw.println("== General Info ==");
pw.println("Iris Version: " + Iris.instance.getDescription().getVersion());
pw.println("Bukkit Version: " + Bukkit.getBukkitVersion());
pw.println("MC Version: " + Bukkit.getVersion());
pw.println("PaperSpigot: " + (PaperLib.isPaper() ? "Yup!" : "Nope!"));
pw.println("Report Captured At: " + new Date());
pw.println("Chunks: (" + chunks.size() + "): ");
for (Chunk i : chunks) {
pw.println("- [" + i.getX() + ", " + i.getZ() + "]");
}
int regions = 0;
long size = 0;
String age = "No idea...";
try {
for (File i : Objects.requireNonNull(new File(world.getWorldFolder(), "region").listFiles())) {
if (i.isFile()) {
size += i.length();
}
}
} catch (Throwable e) {
Iris.reportError(e);
}
try {
FileTime creationTime = (FileTime) Files.getAttribute(world.getWorldFolder().toPath(), "creationTime");
age = hrf(Duration.of(M.ms() - creationTime.toMillis(), ChronoUnit.MILLIS));
} catch (IOException e) {
Iris.reportError(e);
}
KList<String> biomes = new KList<>();
KList<String> caveBiomes = new KList<>();
KMap<String, KMap<String, KList<String>>> objects = new KMap<>();
for (Chunk i : chunks) {
for (int j = 0; j < 16; j += 3) {
for (int k = 0; k < 16; k += 3) {
assert engine() != null;
IrisBiome bb = engine().getSurfaceBiome((i.getX() * 16) + j, (i.getZ() * 16) + k);
IrisBiome bxf = engine().getCaveBiome((i.getX() * 16) + j, (i.getZ() * 16) + k);
biomes.addIfMissing(bb.getName() + " [" + Form.capitalize(bb.getInferredType().name().toLowerCase()) + "] " + " (" + bb.getLoadFile().getName() + ")");
caveBiomes.addIfMissing(bxf.getName() + " (" + bxf.getLoadFile().getName() + ")");
exportObjects(bb, pw, engine(), objects);
exportObjects(bxf, pw, engine(), objects);
}
}
}
regions = Objects.requireNonNull(new File(world.getWorldFolder().getPath() + "/region").list()).length;
pw.println();
pw.println("== World Info ==");
pw.println("World Name: " + world.getName());
pw.println("Age: " + age);
pw.println("Folder: " + world.getWorldFolder().getPath());
pw.println("Regions: " + Form.f(regions));
pw.println("Chunks: max. " + Form.f(regions * 32 * 32));
pw.println("World Size: min. " + Form.fileSize(size));
pw.println();
pw.println("== Biome Info ==");
pw.println("Found " + biomes.size() + " Biome(s): ");
for (String i : biomes) {
pw.println("- " + i);
}
pw.println();
pw.println("== Object Info ==");
for (String i : objects.k()) {
pw.println("- " + i);
for (String j : objects.get(i).k()) {
pw.println(" @ " + j);
for (String k : objects.get(i).get(j)) {
pw.println(" * " + k);
}
}
}
pw.println();
pw.close();
sender().sendMessage("Reported to: " + ff.getPath());
} catch (FileNotFoundException e) {
e.printStackTrace();
Iris.reportError(e);
}
}
private void exportObjects(IrisBiome bb, PrintWriter pw, Engine g, KMap<String, KMap<String, KList<String>>> objects) {
String n1 = bb.getName() + " [" + Form.capitalize(bb.getInferredType().name().toLowerCase()) + "] " + " (" + bb.getLoadFile().getName() + ")";
int m = 0;
KSet<String> stop = new KSet<>();
for (IrisObjectPlacement f : bb.getObjects()) {
m++;
String n2 = "Placement #" + m + " (" + f.getPlace().size() + " possible objects)";
for (String i : f.getPlace()) {
String nn3 = i + ": [ERROR] Failed to find object!";
try {
if (stop.contains(i)) {
continue;
}
File ff = g.getData().getObjectLoader().findFile(i);
BlockVector sz = IrisObject.sampleSize(ff);
nn3 = i + ": size=[" + sz.getBlockX() + "," + sz.getBlockY() + "," + sz.getBlockZ() + "] location=[" + ff.getPath() + "]";
stop.add(i);
} catch (Throwable e) {
Iris.reportError(e);
}
String n3 = nn3;
objects.computeIfAbsent(n1, (k1) -> new KMap<>())
.computeIfAbsent(n2, (k) -> new KList<>()).addIfMissing(n3);
}
}
}
/**
* @return true if server GUIs are not enabled
*/
private boolean noGUI() {
if (!IrisSettings.get().getGui().isUseServerLaunchedGuis()) {
sender().sendMessage(C.RED + "You must have server launched GUIs enabled in the settings!");
return true;
}
return false;
}
/**
* @return true if no studio is open or the player is not in one
*/
private boolean noStudio() {
if (!sender().isPlayer()) {
sender().sendMessage(C.RED + "Players only!");
return true;
}
if (!Iris.service(StudioSVC.class).isProjectOpen()) {
sender().sendMessage(C.RED + "No studio world is open!");
return true;
}
if (!engine().isStudio()) {
sender().sendMessage(C.RED + "You must be in a studio world!");
return true;
}
return false;
}
public void files(File clean, KList<File> files) {
if (clean.isDirectory()) {
for (File i : clean.listFiles()) {
files(i, files);
}
} else if (clean.getName().endsWith(".json")) {
try {
files.add(clean);
} catch (Throwable e) {
Iris.reportError(e);
Iris.error("Failed to beautify " + clean.getAbsolutePath() + " You may have errors in your json!");
}
}
}
private void fixBlocks(JSONObject obj) {
for (String i : obj.keySet()) {
Object o = obj.get(i);
if (i.equals("block") && o instanceof String && !o.toString().trim().isEmpty() && !o.toString().contains(":")) {
obj.put(i, "minecraft:" + o);
}
if (o instanceof JSONObject) {
fixBlocks((JSONObject) o);
} else if (o instanceof JSONArray) {
fixBlocks((JSONArray) o);
}
}
}
private void fixBlocks(JSONArray obj) {
for (int i = 0; i < obj.length(); i++) {
Object o = obj.get(i);
if (o instanceof JSONObject) {
fixBlocks((JSONObject) o);
} else if (o instanceof JSONArray) {
fixBlocks((JSONArray) o);
}
}
}
}

View File

@@ -0,0 +1,153 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.commands;
import com.volmit.iris.Iris;
import com.volmit.iris.core.edit.BlockSignal;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.util.data.B;
import com.volmit.iris.util.decree.DecreeExecutor;
import com.volmit.iris.util.decree.DecreeOrigin;
import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.annotations.Param;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.matter.MatterMarker;
import com.volmit.iris.util.scheduling.J;
import org.bukkit.Chunk;
import org.bukkit.FluidCollisionMode;
import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import java.util.concurrent.atomic.AtomicInteger;
@Decree(name = "what", origin = DecreeOrigin.PLAYER, studio = true, description = "Iris What?")
public class CommandWhat implements DecreeExecutor {
@Decree(description = "What is in my hand?", origin = DecreeOrigin.PLAYER)
public void hand() {
try {
BlockData bd = player().getInventory().getItemInMainHand().getType().createBlockData();
if (!bd.getMaterial().equals(Material.AIR)) {
sender().sendMessage("Material: " + C.GREEN + bd.getMaterial().name());
sender().sendMessage("Full: " + C.WHITE + bd.getAsString(true));
} else {
sender().sendMessage("Please hold a block/item");
}
} catch (Throwable e) {
Iris.reportError(e);
Material bd = player().getInventory().getItemInMainHand().getType();
if (!bd.equals(Material.AIR)) {
sender().sendMessage("Material: " + C.GREEN + bd.name());
} else {
sender().sendMessage("Please hold a block/item");
}
}
}
@Decree(description = "What biome am i in?", origin = DecreeOrigin.PLAYER)
public void biome() {
try {
IrisBiome b = engine().getBiome(player().getLocation().getBlockX(), player().getLocation().getBlockY() - player().getWorld().getMinHeight(), player().getLocation().getBlockZ());
sender().sendMessage("IBiome: " + b.getLoadKey() + " (" + b.getDerivative().name() + ")");
} catch (Throwable e) {
Iris.reportError(e);
sender().sendMessage("Non-Iris Biome: " + player().getLocation().getBlock().getBiome().name());
if (player().getLocation().getBlock().getBiome().equals(Biome.CUSTOM)) {
try {
sender().sendMessage("Data Pack Biome: " + INMS.get().getTrueBiomeBaseKey(player().getLocation()) + " (ID: " + INMS.get().getTrueBiomeBaseId(INMS.get().getTrueBiomeBase(player().getLocation())) + ")");
} catch (Throwable ee) {
Iris.reportError(ee);
}
}
}
}
@Decree(description = "What block am i looking at?", origin = DecreeOrigin.PLAYER)
public void block() {
BlockData bd;
try {
bd = player().getTargetBlockExact(128, FluidCollisionMode.NEVER).getBlockData();
} catch (NullPointerException e) {
Iris.reportError(e);
sender().sendMessage("Please look at any block, not at the sky");
bd = null;
}
if (bd != null) {
sender().sendMessage("Material: " + C.GREEN + bd.getMaterial().name());
sender().sendMessage("Full: " + C.WHITE + bd.getAsString(true));
if (B.isStorage(bd)) {
sender().sendMessage(C.YELLOW + "* Storage Block (Loot Capable)");
}
if (B.isLit(bd)) {
sender().sendMessage(C.YELLOW + "* Lit Block (Light Capable)");
}
if (B.isFoliage(bd)) {
sender().sendMessage(C.YELLOW + "* Foliage Block");
}
if (B.isDecorant(bd)) {
sender().sendMessage(C.YELLOW + "* Decorant Block");
}
if (B.isFluid(bd)) {
sender().sendMessage(C.YELLOW + "* Fluid Block");
}
if (B.isFoliagePlantable(bd)) {
sender().sendMessage(C.YELLOW + "* Plantable Foliage Block");
}
if (B.isSolid(bd)) {
sender().sendMessage(C.YELLOW + "* Solid Block");
}
}
}
@Decree(description = "Show markers in chunk", origin = DecreeOrigin.PLAYER)
public void markers(@Param(description = "Marker name such as cave_floor or cave_ceiling") String marker) {
Chunk c = player().getLocation().getChunk();
if (IrisToolbelt.isIrisWorld(c.getWorld())) {
int m = 1;
AtomicInteger v = new AtomicInteger(0);
for (int xxx = c.getX() - 4; xxx <= c.getX() + 4; xxx++) {
for (int zzz = c.getZ() - 4; zzz <= c.getZ() + 4; zzz++) {
IrisToolbelt.access(c.getWorld()).getEngine().getMantle().findMarkers(xxx, zzz, new MatterMarker(marker))
.convert((i) -> i.toLocation(c.getWorld())).forEach((i) -> {
J.s(() -> BlockSignal.of(i.getBlock(), 100));
v.incrementAndGet();
});
}
}
sender().sendMessage("Found " + v.get() + " Nearby Markers (" + marker + ")");
} else {
sender().sendMessage("Iris worlds only.");
}
}
}

View File

@@ -0,0 +1,43 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.edit;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import java.io.Closeable;
public interface BlockEditor extends Closeable {
long last();
void set(int x, int y, int z, BlockData d);
BlockData get(int x, int y, int z);
void setBiome(int x, int z, Biome b);
void setBiome(int x, int y, int z, Biome b);
@Override
void close();
Biome getBiome(int x, int y, int z);
Biome getBiome(int x, int z);
}

View File

@@ -0,0 +1,107 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.edit;
import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.SR;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import java.util.concurrent.atomic.AtomicInteger;
@SuppressWarnings("InstantiationOfUtilityClass")
public class BlockSignal {
public static final AtomicInteger active = new AtomicInteger(0);
public BlockSignal(Block block, int ticks) {
active.incrementAndGet();
Location tg = block.getLocation().clone().add(0.5, 0, 0.5);
FallingBlock e = block.getWorld().spawnFallingBlock(tg, block.getBlockData());
e.setGravity(false);
e.setInvulnerable(true);
e.setGlowing(true);
e.setDropItem(false);
e.setHurtEntities(false);
e.setSilent(true);
e.setTicksLived(1);
e.setVelocity(new Vector(0, 0, 0));
J.s(() -> {
e.remove();
active.decrementAndGet();
BlockData type = block.getBlockData();
MultiBurst.burst.lazy(() -> {
for (Player i : block.getWorld().getPlayers()) {
i.sendBlockChange(block.getLocation(), block.getBlockData());
}
});
}, ticks);
}
public static void of(Block block, int ticks) {
new BlockSignal(block, ticks);
}
public static void of(Block block) {
of(block, 100);
}
public static Runnable forever(Block block) {
Location tg = block.getLocation().clone().add(0.5, 0, 0.5).clone();
FallingBlock e = block.getWorld().spawnFallingBlock(tg.clone(), block.getBlockData());
e.setGravity(false);
e.setInvulnerable(true);
e.setGlowing(true);
e.teleport(tg.clone());
e.setDropItem(false);
e.setHurtEntities(false);
e.setSilent(true);
e.setTicksLived(1);
e.setVelocity(new Vector(0, 0, 0));
new SR(20) {
@Override
public void run() {
if (e.isDead()) {
cancel();
return;
}
e.setTicksLived(1);
e.teleport(tg.clone());
e.setVelocity(new Vector(0, 0, 0));
}
};
return () -> {
e.remove();
BlockData type = block.getBlockData();
MultiBurst.burst.lazy(() -> {
for (Player i : block.getWorld().getPlayers()) {
i.sendBlockChange(block.getLocation(), block.getBlockData());
}
});
};
}
}

View File

@@ -0,0 +1,75 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.edit;
import com.volmit.iris.util.math.M;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
@SuppressWarnings("ClassCanBeRecord")
public class BukkitBlockEditor implements BlockEditor {
private final World world;
public BukkitBlockEditor(World world) {
this.world = world;
}
@Override
public void set(int x, int y, int z, BlockData d) {
world.getBlockAt(x, y, z).setBlockData(d, false);
}
@Override
public BlockData get(int x, int y, int z) {
return world.getBlockAt(x, y, z).getBlockData();
}
@Override
public void close() {
}
@Override
public long last() {
return M.ms();
}
@SuppressWarnings("deprecation")
@Override
public void setBiome(int x, int z, Biome b) {
world.setBiome(x, z, b);
}
@Override
public void setBiome(int x, int y, int z, Biome b) {
world.setBiome(x, y, z, b);
}
@Override
public Biome getBiome(int x, int y, int z) {
return world.getBiome(x, y, z);
}
@SuppressWarnings("deprecation")
@Override
public Biome getBiome(int x, int z) {
return world.getBiome(x, z);
}
}

View File

@@ -0,0 +1,127 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.edit;
import com.volmit.iris.Iris;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.math.BlockPosition;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.J;
import lombok.Data;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.block.Block;
@SuppressWarnings("ALL")
@Data
public class DustRevealer {
private final Engine engine;
private final World world;
private final BlockPosition block;
private final String key;
private final KList<BlockPosition> hits;
public DustRevealer(Engine engine, World world, BlockPosition block, String key, KList<BlockPosition> hits) {
this.engine = engine;
this.world = world;
this.block = block;
this.key = key;
this.hits = hits;
J.s(() -> {
new BlockSignal(world.getBlockAt(block.getX(), block.getY(), block.getZ()), 10);
if (M.r(0.25)) {
world.playSound(block.toBlock(world).getLocation(), Sound.BLOCK_AMETHYST_BLOCK_CHIME, 1f, RNG.r.f(0.2f, 2f));
}
J.a(() -> {
while (BlockSignal.active.get() > 128) {
J.sleep(5);
}
try {
is(new BlockPosition(block.getX() + 1, block.getY(), block.getZ()));
is(new BlockPosition(block.getX() - 1, block.getY(), block.getZ()));
is(new BlockPosition(block.getX(), block.getY() + 1, block.getZ()));
is(new BlockPosition(block.getX(), block.getY() - 1, block.getZ()));
is(new BlockPosition(block.getX(), block.getY(), block.getZ() + 1));
is(new BlockPosition(block.getX(), block.getY(), block.getZ() - 1));
is(new BlockPosition(block.getX() + 1, block.getY(), block.getZ() + 1));
is(new BlockPosition(block.getX() + 1, block.getY(), block.getZ() - 1));
is(new BlockPosition(block.getX() - 1, block.getY(), block.getZ() + 1));
is(new BlockPosition(block.getX() - 1, block.getY(), block.getZ() - 1));
is(new BlockPosition(block.getX() + 1, block.getY() + 1, block.getZ()));
is(new BlockPosition(block.getX() + 1, block.getY() - 1, block.getZ()));
is(new BlockPosition(block.getX() - 1, block.getY() + 1, block.getZ()));
is(new BlockPosition(block.getX() - 1, block.getY() - 1, block.getZ()));
is(new BlockPosition(block.getX(), block.getY() + 1, block.getZ() - 1));
is(new BlockPosition(block.getX(), block.getY() + 1, block.getZ() + 1));
is(new BlockPosition(block.getX(), block.getY() - 1, block.getZ() - 1));
is(new BlockPosition(block.getX(), block.getY() - 1, block.getZ() + 1));
is(new BlockPosition(block.getX() - 1, block.getY() + 1, block.getZ() - 1));
is(new BlockPosition(block.getX() - 1, block.getY() + 1, block.getZ() + 1));
is(new BlockPosition(block.getX() - 1, block.getY() - 1, block.getZ() - 1));
is(new BlockPosition(block.getX() - 1, block.getY() - 1, block.getZ() + 1));
is(new BlockPosition(block.getX() + 1, block.getY() + 1, block.getZ() - 1));
is(new BlockPosition(block.getX() + 1, block.getY() + 1, block.getZ() + 1));
is(new BlockPosition(block.getX() + 1, block.getY() - 1, block.getZ() - 1));
is(new BlockPosition(block.getX() + 1, block.getY() - 1, block.getZ() + 1));
} catch (Throwable e) {
Iris.reportError(e);
e.printStackTrace();
}
});
}, RNG.r.i(2, 8));
}
public static void spawn(Block block, VolmitSender sender) {
World world = block.getWorld();
Engine access = IrisToolbelt.access(world).getEngine();
if (access != null) {
String a = access.getObjectPlacementKey(block.getX(), block.getY() - block.getWorld().getMinHeight(), block.getZ());
if (a != null) {
world.playSound(block.getLocation(), Sound.ITEM_LODESTONE_COMPASS_LOCK, 1f, 0.1f);
sender.sendMessage("Found object " + a);
J.a(() -> {
new DustRevealer(access, world, new BlockPosition(block.getX(), block.getY(), block.getZ()), a, new KList<>());
});
}
}
}
private boolean is(BlockPosition a) {
int betterY = a.getY() - world.getMinHeight();
if (isValidTry(a) && engine.getObjectPlacementKey(a.getX(), betterY, a.getZ()) != null && engine.getObjectPlacementKey(a.getX(), betterY, a.getZ()).equals(key)) {
hits.add(a);
new DustRevealer(engine, world, a, key, hits);
return true;
}
return false;
}
private boolean isValidTry(BlockPosition b) {
return !hits.contains(b);
}
}

View File

@@ -0,0 +1,253 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.edit;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
import com.volmit.iris.core.service.WandSVC;
import com.volmit.iris.engine.object.*;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.data.Cuboid;
import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.J;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.util.Vector;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.ExecutionException;
public class JigsawEditor implements Listener {
public static final KMap<Player, JigsawEditor> editors = new KMap<>();
private final Player player;
private final IrisObject object;
private final File targetSaveLocation;
private final IrisJigsawPiece piece;
private final Location origin;
private final Cuboid cuboid;
private final int ticker;
private final KMap<IrisPosition, Runnable> falling = new KMap<>();
private final ChronoLatch cl = new ChronoLatch(100);
private Location target;
public JigsawEditor(Player player, IrisJigsawPiece piece, IrisObject object, File saveLocation) {
if (editors.containsKey(player)) {
editors.get(player).close();
}
editors.put(player, this);
if (object == null) {
throw new RuntimeException("Object is null! " + piece.getObject());
}
this.object = object;
this.player = player;
origin = player.getLocation().clone().add(0, 7, 0);
target = origin;
this.targetSaveLocation = saveLocation;
this.piece = piece == null ? new IrisJigsawPiece() : piece;
this.piece.setObject(object.getLoadKey());
cuboid = new Cuboid(origin.clone(), origin.clone().add(object.getW() - 1, object.getH() - 1, object.getD() - 1));
ticker = J.sr(this::onTick, 0);
J.s(() -> object.placeCenterY(origin));
Iris.instance.registerListener(this);
}
@EventHandler
public void on(PlayerMoveEvent e) {
if (e.getPlayer().equals(player)) {
try {
target = player.getTargetBlockExact(7).getLocation();
} catch (Throwable ex) {
Iris.reportError(ex);
target = player.getLocation();
return;
}
if (cuboid.contains(target)) {
for (IrisPosition i : falling.k()) {
Location at = toLocation(i);
if (at.equals(target)) {
falling.remove(i).run();
}
}
}
}
}
public Location toLocation(IrisPosition i) {
return origin.clone()
.add(new Vector(i.getX(), i.getY(), i.getZ()))
.add(object.getCenter())
.getBlock()
.getLocation();
}
public IrisPosition toPosition(Location l) {
return new IrisPosition(l.clone().getBlock().getLocation()
.subtract(origin.clone())
.subtract(object.getCenter())
.add(1, 1, 1)
.toVector());
}
@EventHandler
public void on(PlayerInteractEvent e) {
if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
if (e.getClickedBlock() != null && cuboid.contains(e.getClickedBlock().getLocation()) && e.getPlayer().equals(player)) {
IrisPosition pos = toPosition(e.getClickedBlock().getLocation());
IrisJigsawPieceConnector connector = null;
for (IrisJigsawPieceConnector i : piece.getConnectors()) {
if (i.getPosition().equals(pos)) {
connector = i;
break;
}
}
if (!player.isSneaking() && connector == null) {
connector = new IrisJigsawPieceConnector();
connector.setDirection(IrisDirection.getDirection(e.getBlockFace()));
connector.setPosition(pos);
piece.getConnectors().add(connector);
player.playSound(e.getClickedBlock().getLocation(), Sound.ENTITY_ITEM_FRAME_ADD_ITEM, 1f, 1f);
} else if (player.isSneaking() && connector != null) {
piece.getConnectors().remove(connector);
player.playSound(e.getClickedBlock().getLocation(), Sound.ENTITY_ITEM_FRAME_REMOVE_ITEM, 1f, 1f);
} else if (connector != null && !player.isSneaking()) {
connector.setDirection(IrisDirection.getDirection(e.getBlockFace()));
player.playSound(e.getClickedBlock().getLocation(), Sound.ENTITY_ITEM_FRAME_ROTATE_ITEM, 1f, 1f);
}
}
}
}
private void removeKey(JSONObject o, String... path) {
if (path.length == 1) {
o.remove(path[0]);
return;
}
List<String> s = new java.util.ArrayList<>(List.of(path));
s.remove(0);
removeKey(o.getJSONObject(path[0]), s.toArray(new String[0]));
}
private List<JSONObject> getObjectsInArray(JSONObject a) { // This gets all the objects in an array that are connectors
KList<JSONObject> o = new KList<>();
for (int i = 0; i < a.getJSONArray("connectors").length(); i++) {
o.add(a.getJSONArray("connectors").getJSONObject(i));
}
return o;
}
public void close() {
exit();
try {
JSONObject j = new JSONObject(new Gson().toJson(piece));
// Remove sub-key
removeKey(j, "placementOptions", "translateCenter"); // should work
J.attempt(() -> j.getJSONObject("placementOptions").remove("translateCenter")); // otherwise
// remove root key
removeKey(j, "placementOptions"); // should work
j.remove("placementOptions"); // otherwise
// Remove key in all objects in array
for (JSONObject i : getObjectsInArray(j)) {
removeKey(i, "rotateConnector");
}
IO.writeAll(targetSaveLocation, j.toString(4));
} catch (IOException e) {
Iris.reportError(e);
e.printStackTrace();
}
}
public void exit() {
J.car(ticker);
Iris.instance.unregisterListener(this);
try {
J.sfut(() -> {
object.unplaceCenterY(origin);
falling.v().forEach(Runnable::run);
}).get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
editors.remove(player);
}
public void onTick() {
if (cl.flip()) {
Iris.service(WandSVC.class).draw(cuboid, player);
f:
for (IrisPosition i : falling.k()) {
for (IrisJigsawPieceConnector j : piece.getConnectors()) {
if (j.getPosition().equals(i)) {
continue f;
}
}
falling.remove(i).run();
}
for (IrisJigsawPieceConnector i : piece.getConnectors()) {
IrisPosition pos = i.getPosition();
Location at = toLocation(pos);
Vector dir = i.getDirection().toVector().clone();
for (int ix = 0; ix < RNG.r.i(1, 3); ix++) {
at.getWorld().spawnParticle(Particle.SOUL_FIRE_FLAME, at.clone().getBlock().getLocation().add(0.25, 0.25, 0.25).add(RNG.r.d(0.5), RNG.r.d(0.5), RNG.r.d(0.5)), 0, dir.getX(), dir.getY(), dir.getZ(), 0.092 + RNG.r.d(-0.03, 0.08));
}
if (at.getBlock().getLocation().equals(target)) {
continue;
}
if (!falling.containsKey(pos)) {
if (at.getBlock().getType().isAir()) {
at.getBlock().setType(Material.STONE);
}
falling.put(pos, BlockSignal.forever(at.getBlock()));
}
}
}
}
}

View File

@@ -0,0 +1,47 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.events;
import com.volmit.iris.engine.framework.Engine;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
public class IrisEngineEvent extends Event {
private static final HandlerList handlers = new HandlerList();
private Engine engine;
public IrisEngineEvent() {
super(true);
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
}

View File

@@ -0,0 +1,39 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.events;
import com.volmit.iris.engine.framework.Engine;
import org.bukkit.event.HandlerList;
public class IrisEngineHotloadEvent extends IrisEngineEvent {
private static final HandlerList handlers = new HandlerList();
public IrisEngineHotloadEvent(Engine engine) {
super(engine);
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
}

View File

@@ -0,0 +1,334 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.gui;
import com.volmit.iris.Iris;
import com.volmit.iris.core.events.IrisEngineHotloadEvent;
import com.volmit.iris.engine.object.NoiseStyle;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.function.Function2;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.math.RollingSequence;
import com.volmit.iris.util.noise.CNG;
import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Supplier;
public class NoiseExplorerGUI extends JPanel implements MouseWheelListener, Listener {
private static final long serialVersionUID = 2094606939770332040L;
static JComboBox<String> combo;
@SuppressWarnings("CanBeFinal")
static boolean hd = false;
static double ascale = 10;
static double oxp = 0;
static double ozp = 0;
static double mxx = 0;
static double mzz = 0;
@SuppressWarnings("CanBeFinal")
static boolean down = false;
@SuppressWarnings("CanBeFinal")
RollingSequence r = new RollingSequence(20);
@SuppressWarnings("CanBeFinal")
boolean colorMode = true;
double scale = 1;
CNG cng = NoiseStyle.STATIC.create(new RNG(RNG.r.nextLong()));
@SuppressWarnings("CanBeFinal")
MultiBurst gx = MultiBurst.burst;
ReentrantLock l = new ReentrantLock();
BufferedImage img;
int w = 0;
int h = 0;
Function2<Double, Double, Double> generator;
Supplier<Function2<Double, Double, Double>> loader;
double ox = 0; //Offset X
double oz = 0; //Offset Y
double mx = 0;
double mz = 0;
double lx = Double.MAX_VALUE; //MouseX
double lz = Double.MAX_VALUE; //MouseY
double t;
double tz;
public NoiseExplorerGUI() {
Iris.instance.registerListener(this);
addMouseWheelListener(this);
addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
Point cp = e.getPoint();
lx = (cp.getX());
lz = (cp.getY());
mx = lx;
mz = lz;
}
@Override
public void mouseDragged(MouseEvent e) {
Point cp = e.getPoint();
ox += (lx - cp.getX()) * scale;
oz += (lz - cp.getY()) * scale;
lx = cp.getX();
lz = cp.getY();
}
});
}
private static void createAndShowGUI(Supplier<Function2<Double, Double, Double>> loader, String genName) {
JFrame frame = new JFrame("Noise Explorer: " + genName);
NoiseExplorerGUI nv = new NoiseExplorerGUI();
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
JLayeredPane pane = new JLayeredPane();
nv.setSize(new Dimension(1440, 820));
pane.add(nv, 1, 0);
nv.loader = loader;
nv.generator = loader.get();
frame.add(pane);
File file = Iris.getCached("Iris Icon", "https://raw.githubusercontent.com/VolmitSoftware/Iris/master/icon.png");
if (file != null) {
try {
frame.setIconImage(ImageIO.read(file));
} catch (IOException e) {
Iris.reportError(e);
}
}
frame.setSize(1440, 820);
frame.setVisible(true);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("Noise Explorer");
NoiseExplorerGUI nv = new NoiseExplorerGUI();
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
KList<String> li = new KList<>(NoiseStyle.values()).toStringList().sort();
combo = new JComboBox<>(li.toArray(new String[0]));
combo.setSelectedItem("STATIC");
combo.setFocusable(false);
combo.addActionListener(e -> {
@SuppressWarnings("unchecked")
String b = (String) (((JComboBox<String>) e.getSource()).getSelectedItem());
NoiseStyle s = NoiseStyle.valueOf(b);
nv.cng = s.create(RNG.r.nextParallelRNG(RNG.r.imax()));
});
combo.setSize(500, 30);
JLayeredPane pane = new JLayeredPane();
nv.setSize(new Dimension(1440, 820));
pane.add(nv, 1, 0);
pane.add(combo, 2, 0);
frame.add(pane);
File file = Iris.getCached("Iris Icon", "https://raw.githubusercontent.com/VolmitSoftware/Iris/master/icon.png");
if (file != null) {
try {
frame.setIconImage(ImageIO.read(file));
} catch (IOException e) {
Iris.reportError(e);
}
}
frame.setSize(1440, 820);
frame.setVisible(true);
frame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
Iris.instance.unregisterListener(nv);
}
});
}
public static void launch(Supplier<Function2<Double, Double, Double>> gen, String genName) {
EventQueue.invokeLater(() -> createAndShowGUI(gen, genName));
}
public static void launch() {
EventQueue.invokeLater(NoiseExplorerGUI::createAndShowGUI);
}
@EventHandler
public void on(IrisEngineHotloadEvent e) {
if (generator != null)
generator = loader.get();
}
public void mouseWheelMoved(MouseWheelEvent e) {
int notches = e.getWheelRotation();
if (e.isControlDown()) {
t = t + ((0.0025 * t) * notches);
return;
}
scale = scale + ((0.044 * scale) * notches);
scale = Math.max(scale, 0.00001);
}
@Override
public void paint(Graphics g) {
if (scale < ascale) {
ascale -= Math.abs(scale - ascale) * 0.16;
}
if (scale > ascale) {
ascale += Math.abs(ascale - scale) * 0.16;
}
if (t < tz) {
tz -= Math.abs(t - tz) * 0.29;
}
if (t > tz) {
tz += Math.abs(tz - t) * 0.29;
}
if (ox < oxp) {
oxp -= Math.abs(ox - oxp) * 0.16;
}
if (ox > oxp) {
oxp += Math.abs(oxp - ox) * 0.16;
}
if (oz < ozp) {
ozp -= Math.abs(oz - ozp) * 0.16;
}
if (oz > ozp) {
ozp += Math.abs(ozp - oz) * 0.16;
}
if (mx < mxx) {
mxx -= Math.abs(mx - mxx) * 0.16;
}
if (mx > mxx) {
mxx += Math.abs(mxx - mx) * 0.16;
}
if (mz < mzz) {
mzz -= Math.abs(mz - mzz) * 0.16;
}
if (mz > mzz) {
mzz += Math.abs(mzz - mz) * 0.16;
}
PrecisionStopwatch p = PrecisionStopwatch.start();
int accuracy = hd ? 1 : M.clip((r.getAverage() / 12D), 2D, 128D).intValue();
accuracy = down ? accuracy * 4 : accuracy;
int v = 1000;
if (g instanceof Graphics2D gg) {
if (getParent().getWidth() != w || getParent().getHeight() != h) {
w = getParent().getWidth();
h = getParent().getHeight();
img = null;
}
if (img == null) {
img = new BufferedImage(w / accuracy, h / accuracy, BufferedImage.TYPE_INT_RGB);
}
BurstExecutor e = gx.burst(w);
for (int x = 0; x < w / accuracy; x++) {
int xx = x;
int finalAccuracy = accuracy;
e.queue(() -> {
for (int z = 0; z < h / finalAccuracy; z++) {
double n = generator != null ? generator.apply(((xx * finalAccuracy) * ascale) + oxp, ((z * finalAccuracy) * ascale) + ozp) : cng.noise(((xx * finalAccuracy) * ascale) + oxp, ((z * finalAccuracy) * ascale) + ozp);
n = n > 1 ? 1 : n < 0 ? 0 : n;
try {
Color color = colorMode ? Color.getHSBColor((float) (n), 1f - (float) (n * n * n * n * n * n), 1f - (float) n) : Color.getHSBColor(0f, 0f, (float) n);
int rgb = color.getRGB();
img.setRGB(xx, z, rgb);
} catch (Throwable ignored) {
}
}
});
}
e.complete();
gg.drawImage(img, 0, 0, getParent().getWidth() * accuracy, getParent().getHeight() * accuracy, (img, infoflags, x, y, width, height) -> true);
}
p.end();
t += 1D;
r.put(p.getMilliseconds());
if (!isVisible()) {
return;
}
if (!getParent().isVisible()) {
return;
}
if (!getParent().getParent().isVisible()) {
return;
}
EventQueue.invokeLater(() ->
{
J.sleep((long) Math.max(0, 32 - r.getAverage()));
repaint();
});
}
static class HandScrollListener extends MouseAdapter {
private static final Point pp = new Point();
@Override
public void mouseDragged(MouseEvent e) {
JViewport vport = (JViewport) e.getSource();
JComponent label = (JComponent) vport.getView();
Point cp = e.getPoint();
Point vp = vport.getViewPosition();
vp.translate(pp.x - cp.x, pp.y - cp.y);
label.scrollRectToVisible(new Rectangle(vp, vport.getSize()));
pp.setLocation(cp);
}
@Override
public void mousePressed(MouseEvent e) {
pp.setLocation(e.getPoint());
}
}
}

View File

@@ -0,0 +1,429 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.gui;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.pregenerator.IrisPregenerator;
import com.volmit.iris.core.pregenerator.PregenListener;
import com.volmit.iris.core.pregenerator.PregenTask;
import com.volmit.iris.core.pregenerator.PregeneratorMethod;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.format.MemoryMonitor;
import com.volmit.iris.util.function.Consumer2;
import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.Position2;
import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.J;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Consumer;
public class PregeneratorJob implements PregenListener {
private static final Color COLOR_EXISTS = parseColor("#4d7d5b");
private static final Color COLOR_BLACK = parseColor("#4d7d5b");
private static final Color COLOR_MANTLE = parseColor("#3c2773");
private static final Color COLOR_GENERATING = parseColor("#66967f");
private static final Color COLOR_NETWORK = parseColor("#a863c2");
private static final Color COLOR_NETWORK_GENERATING = parseColor("#836b8c");
private static final Color COLOR_GENERATED = parseColor("#65c295");
private static final Color COLOR_CLEANED = parseColor("#34eb93");
public static PregeneratorJob instance;
private final MemoryMonitor monitor;
private final PregenTask task;
private final boolean saving;
private final KList<Consumer<Double>> onProgress = new KList<>();
private final KList<Runnable> whenDone = new KList<>();
private final IrisPregenerator pregenerator;
private final Position2 min;
private final Position2 max;
private final ChronoLatch cl = new ChronoLatch(TimeUnit.MINUTES.toMillis(1));
private final Engine engine;
private JFrame frame;
private PregenRenderer renderer;
private int rgc = 0;
private String[] info;
public PregeneratorJob(PregenTask task, PregeneratorMethod method, Engine engine) {
this.engine = engine;
instance = this;
monitor = new MemoryMonitor(50);
saving = false;
info = new String[]{"Initializing..."};
this.task = task;
this.pregenerator = new IrisPregenerator(task, method, this);
max = new Position2(0, 0);
min = new Position2(0, 0);
task.iterateRegions((xx, zz) -> {
min.setX(Math.min(xx << 5, min.getX()));
min.setZ(Math.min(zz << 5, min.getZ()));
max.setX(Math.max((xx << 5) + 31, max.getX()));
max.setZ(Math.max((zz << 5) + 31, max.getZ()));
});
if (IrisSettings.get().getGui().isUseServerLaunchedGuis()) {
open();
}
J.a(this.pregenerator::start, 20);
}
public static boolean shutdownInstance() {
if (instance == null) {
return false;
}
J.a(() -> instance.pregenerator.close());
return true;
}
public static PregeneratorJob getInstance() {
return instance;
}
public static boolean pauseResume() {
if (instance == null) {
return false;
}
if (isPaused()) {
instance.pregenerator.resume();
} else {
instance.pregenerator.pause();
}
return true;
}
public static boolean isPaused() {
if (instance == null) {
return true;
}
return instance.paused();
}
private static Color parseColor(String c) {
String v = (c.startsWith("#") ? c : "#" + c).trim();
try {
return Color.decode(v);
} catch (Throwable e) {
Iris.reportError(e);
Iris.error("Error Parsing 'color', (" + c + ")");
}
return Color.RED;
}
public Mantle getMantle() {
return pregenerator.getMantle();
}
public PregeneratorJob onProgress(Consumer<Double> c) {
onProgress.add(c);
return this;
}
public PregeneratorJob whenDone(Runnable r) {
whenDone.add(r);
return this;
}
public void drawRegion(int x, int z, Color color) {
J.a(() -> PregenTask.iterateRegion(x, z, (xx, zz) -> {
draw(xx, zz, color);
J.sleep(3);
}));
}
public void draw(int x, int z, Color color) {
try {
if (renderer != null && frame != null && frame.isVisible()) {
renderer.func.accept(new Position2(x, z), color);
}
} catch (Throwable ignored) {
Iris.error("Failed to draw pregen");
}
}
public void stop() {
J.a(() -> {
pregenerator.close();
close();
instance = null;
});
}
public void close() {
J.a(() -> {
try {
monitor.close();
J.sleep(3000);
frame.setVisible(false);
} catch (Throwable ignored) {
Iris.error("Error closing pregen gui");
}
});
}
public void open() {
J.a(() -> {
try {
frame = new JFrame("Pregen View");
renderer = new PregenRenderer();
frame.addKeyListener(renderer);
renderer.l = new ReentrantLock();
renderer.frame = frame;
renderer.job = this;
renderer.func = (c, b) -> {
renderer.l.lock();
renderer.order.add(() -> renderer.draw(c, b, renderer.bg));
renderer.l.unlock();
};
frame.add(renderer);
frame.setSize(1000, 1000);
frame.setVisible(true);
} catch (Throwable ignored) {
Iris.error("Error opening pregen gui");
}
});
}
@Override
public void onTick(double chunksPerSecond, double chunksPerMinute, double regionsPerMinute, double percent, int generated, int totalChunks, int chunksRemaining, long eta, long elapsed, String method) {
info = new String[]{
(paused() ? "PAUSED" : (saving ? "Saving... " : "Generating")) + " " + Form.f(generated) + " of " + Form.f(totalChunks) + " (" + Form.pc(percent, 0) + " Complete)",
"Speed: " + Form.f(chunksPerSecond, 0) + " Chunks/s, " + Form.f(regionsPerMinute, 1) + " Regions/m, " + Form.f(chunksPerMinute, 0) + " Chunks/m",
Form.duration(eta, 2) + " Remaining " + " (" + Form.duration(elapsed, 2) + " Elapsed)",
"Generation Method: " + method,
"Memory: " + Form.memSize(monitor.getUsedBytes(), 2) + " (" + Form.pc(monitor.getUsagePercent(), 0) + ") Pressure: " + Form.memSize(monitor.getPressure(), 0) + "/s",
};
for (Consumer<Double> i : onProgress) {
i.accept(percent);
}
}
@Override
public void onChunkGenerating(int x, int z) {
draw(x, z, COLOR_GENERATING);
}
@Override
public void onChunkGenerated(int x, int z) {
if (engine != null) {
draw(x, z, engine.draw((x << 4) + 8, (z << 4) + 8));
return;
}
draw(x, z, COLOR_GENERATED);
}
@Override
public void onRegionGenerated(int x, int z) {
shouldGc();
rgc++;
}
private void shouldGc() {
if (cl.flip() && rgc > 16) {
System.gc();
}
}
@Override
public void onRegionGenerating(int x, int z) {
}
@Override
public void onChunkCleaned(int x, int z) {
//draw(x, z, COLOR_CLEANED);
}
@Override
public void onRegionSkipped(int x, int z) {
}
@Override
public void onNetworkStarted(int x, int z) {
drawRegion(x, z, COLOR_NETWORK);
}
@Override
public void onNetworkFailed(int x, int z) {
}
@Override
public void onNetworkReclaim(int revert) {
}
@Override
public void onNetworkGeneratedChunk(int x, int z) {
draw(x, z, COLOR_NETWORK_GENERATING);
}
@Override
public void onNetworkDownloaded(int x, int z) {
drawRegion(x, z, COLOR_NETWORK);
}
@Override
public void onClose() {
close();
instance = null;
whenDone.forEach(Runnable::run);
}
@Override
public void onSaving() {
}
@Override
public void onChunkExistsInRegionGen(int x, int z) {
if (engine != null) {
draw(x, z, engine.draw((x << 4) + 8, (z << 4) + 8));
return;
}
draw(x, z, COLOR_EXISTS);
}
private Position2 getMax() {
return max;
}
private Position2 getMin() {
return min;
}
private boolean paused() {
return pregenerator.paused();
}
private String[] getProgress() {
return info;
}
public static class PregenRenderer extends JPanel implements KeyListener {
private static final long serialVersionUID = 2094606939770332040L;
private final KList<Runnable> order = new KList<>();
private final int res = 512;
private final BufferedImage image = new BufferedImage(res, res, BufferedImage.TYPE_INT_RGB);
Graphics2D bg;
private PregeneratorJob job;
private ReentrantLock l;
private Consumer2<Position2, Color> func;
private JFrame frame;
public PregenRenderer() {
}
public void paint(int x, int z, Color c) {
func.accept(new Position2(x, z), c);
}
@Override
public void paint(Graphics gx) {
Graphics2D g = (Graphics2D) gx;
bg = (Graphics2D) image.getGraphics();
l.lock();
while (order.isNotEmpty()) {
try {
order.pop().run();
} catch (Throwable e) {
Iris.reportError(e);
}
}
l.unlock();
g.drawImage(image, 0, 0, getParent().getWidth(), getParent().getHeight(), (img, infoflags, x, y, width, height) -> true);
g.setColor(Color.WHITE);
g.setFont(new Font("Hevetica", Font.BOLD, 13));
String[] prog = job.getProgress();
int h = g.getFontMetrics().getHeight() + 5;
int hh = 20;
if (job.paused()) {
g.drawString("PAUSED", 20, hh += h);
g.drawString("Press P to Resume", 20, hh += h);
} else {
for (String i : prog) {
g.drawString(i, 20, hh += h);
}
g.drawString("Press P to Pause", 20, hh += h);
}
J.sleep(IrisSettings.get().getGui().isMaximumPregenGuiFPS() ? 4 : 250);
repaint();
}
private void draw(Position2 p, Color c, Graphics2D bg) {
double pw = M.lerpInverse(job.getMin().getX(), job.getMax().getX(), p.getX());
double ph = M.lerpInverse(job.getMin().getZ(), job.getMax().getZ(), p.getZ());
double pwa = M.lerpInverse(job.getMin().getX(), job.getMax().getX(), p.getX() + 1);
double pha = M.lerpInverse(job.getMin().getZ(), job.getMax().getZ(), p.getZ() + 1);
int x = (int) M.lerp(0, res, pw);
int z = (int) M.lerp(0, res, ph);
int xa = (int) M.lerp(0, res, pwa);
int za = (int) M.lerp(0, res, pha);
bg.setColor(c);
bg.fillRect(x, z, xa - x, za - z);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_P) {
PregeneratorJob.pauseResume();
}
}
public void close() {
frame.setVisible(false);
}
}
}

View File

@@ -0,0 +1,842 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.gui;
import com.volmit.iris.Iris;
import com.volmit.iris.core.gui.components.IrisRenderer;
import com.volmit.iris.core.gui.components.RenderType;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.IrisComplex;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisRegion;
import com.volmit.iris.engine.object.IrisWorld;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.math.BlockPosition;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RollingSequence;
import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.O;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Location;
import org.bukkit.attribute.Attribute;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.event.MouseInputListener;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Locale;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.BiFunction;
public class VisionGUI extends JPanel implements MouseWheelListener, KeyListener, MouseMotionListener, MouseInputListener {
private static final long serialVersionUID = 2094606939770332040L;
private final KList<LivingEntity> lastEntities = new KList<>();
private final KMap<String, Long> notifications = new KMap<>();
private final ChronoLatch centities = new ChronoLatch(1000);
private final RollingSequence rs = new RollingSequence(512);
private final O<Integer> m = new O<>();
private final KMap<BlockPosition, BufferedImage> positions = new KMap<>();
private final KMap<BlockPosition, BufferedImage> fastpositions = new KMap<>();
private final KSet<BlockPosition> working = new KSet<>();
private final KSet<BlockPosition> workingfast = new KSet<>();
double tfps = 240D;
int ltc = 3;
private RenderType currentType = RenderType.BIOME;
private boolean help = true;
private boolean helpIgnored = false;
private boolean shift = false;
private Player player = null;
private boolean debug = false;
private boolean control = false;
private boolean eco = false;
private boolean lowtile = false;
private boolean follow = false;
private boolean alt = false;
private IrisRenderer renderer;
private IrisWorld world;
private double velocity = 0;
private int lowq = 12;
private double scale = 128;
private double mscale = 4D;
private int w = 0;
private int h = 0;
private double lx = 0;
private double lz = 0;
private double ox = 0;
private double oz = 0;
private double hx = 0;
private double hz = 0;
private double oxp = 0;
private double ozp = 0;
private Engine engine;
private int tid = 0;
private final ExecutorService e = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors(), r -> {
tid++;
Thread t = new Thread(r);
t.setName("Iris HD Renderer " + tid);
t.setPriority(Thread.MIN_PRIORITY);
t.setUncaughtExceptionHandler((et, e) ->
{
Iris.info("Exception encountered in " + et.getName());
e.printStackTrace();
});
return t;
});
private final ExecutorService eh = Executors.newFixedThreadPool(ltc, r -> {
tid++;
Thread t = new Thread(r);
t.setName("Iris Renderer " + tid);
t.setPriority(Thread.NORM_PRIORITY);
t.setUncaughtExceptionHandler((et, e) ->
{
Iris.info("Exception encountered in " + et.getName());
e.printStackTrace();
});
return t;
});
private BufferedImage texture;
public VisionGUI(JFrame frame) {
m.set(8);
rs.put(1);
addMouseWheelListener(this);
addMouseMotionListener(this);
addMouseListener(this);
frame.addKeyListener(this);
J.a(() -> {
J.sleep(10000);
if (!helpIgnored && help) {
help = false;
}
});
frame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
e.shutdown();
eh.shutdown();
}
});
}
private static void createAndShowGUI(Engine r, int s, IrisWorld world) {
JFrame frame = new JFrame("Vision");
VisionGUI nv = new VisionGUI(frame);
nv.world = world;
nv.engine = r;
nv.renderer = new IrisRenderer(r);
frame.add(nv);
frame.setSize(1440, 820);
frame.setVisible(true);
File file = Iris.getCached("Iris Icon", "https://raw.githubusercontent.com/VolmitSoftware/Iris/master/icon.png");
if (file != null) {
try {
nv.texture = ImageIO.read(file);
frame.setIconImage(ImageIO.read(file));
} catch (IOException e) {
Iris.reportError(e);
}
}
}
public static void launch(Engine g, int i) {
J.a(() ->
createAndShowGUI(g, i, g.getWorld()));
}
public boolean updateEngine() {
if (engine.isClosed()) {
if (world.hasRealWorld()) {
try {
engine = IrisToolbelt.access(world.realWorld()).getEngine();
return !engine.isClosed();
} catch (Throwable e) {
}
}
}
return false;
}
@Override
public void mouseMoved(MouseEvent e) {
Point cp = e.getPoint();
lx = (cp.getX());
lz = (cp.getY());
}
@Override
public void mouseDragged(MouseEvent e) {
Point cp = e.getPoint();
ox += (lx - cp.getX()) * scale;
oz += (lz - cp.getY()) * scale;
lx = cp.getX();
lz = cp.getY();
}
public int getColor(double wx, double wz) {
BiFunction<Double, Double, Integer> colorFunction = (d, dx) -> Color.black.getRGB();
switch (currentType) {
case BIOME, DECORATOR_LOAD, OBJECT_LOAD, LAYER_LOAD ->
colorFunction = (x, z) -> engine.getComplex().getTrueBiomeStream().get(x, z).getColor(engine, currentType).getRGB();
case BIOME_LAND ->
colorFunction = (x, z) -> engine.getComplex().getLandBiomeStream().get(x, z).getColor(engine, currentType).getRGB();
case BIOME_SEA ->
colorFunction = (x, z) -> engine.getComplex().getSeaBiomeStream().get(x, z).getColor(engine, currentType).getRGB();
case REGION ->
colorFunction = (x, z) -> engine.getComplex().getRegionStream().get(x, z).getColor(engine.getComplex(), currentType).getRGB();
case CAVE_LAND ->
colorFunction = (x, z) -> engine.getComplex().getCaveBiomeStream().get(x, z).getColor(engine, currentType).getRGB();
case HEIGHT ->
colorFunction = (x, z) -> Color.getHSBColor(engine.getComplex().getHeightStream().get(x, z).floatValue(), 100, 100).getRGB();
}
return colorFunction.apply(wx, wz);
}
public void notify(String s) {
notifications.put(s, M.ms() + 2500);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
shift = true;
}
if (e.getKeyCode() == KeyEvent.VK_CONTROL) {
control = true;
}
if (e.getKeyCode() == KeyEvent.VK_SEMICOLON) {
debug = true;
}
if (e.getKeyCode() == KeyEvent.VK_SLASH) {
help = true;
helpIgnored = true;
}
if (e.getKeyCode() == KeyEvent.VK_ALT) {
alt = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SEMICOLON) {
debug = false;
}
if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
shift = false;
}
if (e.getKeyCode() == KeyEvent.VK_CONTROL) {
control = false;
}
if (e.getKeyCode() == KeyEvent.VK_SLASH) {
help = false;
helpIgnored = true;
}
if (e.getKeyCode() == KeyEvent.VK_ALT) {
alt = false;
}
// Pushes
if (e.getKeyCode() == KeyEvent.VK_F) {
follow = !follow;
if (player != null && follow) {
notify("Following " + player.getName() + ". Press F to disable");
} else if (follow) {
notify("Can't follow, no one is in the world");
follow = false;
} else {
notify("Follow Off");
}
return;
}
if (e.getKeyCode() == KeyEvent.VK_R) {
dump();
notify("Refreshing Chunks");
return;
}
if (e.getKeyCode() == KeyEvent.VK_P) {
lowtile = !lowtile;
dump();
notify("Rendering " + (lowtile ? "Low" : "High") + " Quality Tiles");
return;
}
if (e.getKeyCode() == KeyEvent.VK_E) {
eco = !eco;
dump();
notify("Using " + (eco ? "60" : "Uncapped") + " FPS Limit");
return;
}
if (e.getKeyCode() == KeyEvent.VK_EQUALS) {
mscale = mscale + ((0.044 * mscale) * -3);
mscale = Math.max(mscale, 0.00001);
dump();
return;
}
if (e.getKeyCode() == KeyEvent.VK_MINUS) {
mscale = mscale + ((0.044 * mscale) * 3);
mscale = Math.max(mscale, 0.00001);
dump();
return;
}
if (e.getKeyCode() == KeyEvent.VK_BACK_SLASH) {
mscale = 1D;
dump();
notify("Zoom Reset");
return;
}
int currentMode = currentType.ordinal();
for (RenderType i : RenderType.values()) {
if (e.getKeyChar() == String.valueOf(i.ordinal() + 1).charAt(0)) {
if (i.ordinal() != currentMode) {
currentType = i;
dump();
notify("Rendering " + Form.capitalizeWords(currentType.name().toLowerCase().replaceAll("\\Q_\\E", " ")));
return;
}
}
}
if (e.getKeyCode() == KeyEvent.VK_M) {
currentType = RenderType.values()[(currentMode + 1) % RenderType.values().length];
notify("Rendering " + Form.capitalizeWords(currentType.name().toLowerCase().replaceAll("\\Q_\\E", " ")));
dump();
}
}
private void dump() {
positions.clear();
fastpositions.clear();
}
public BufferedImage getTile(KSet<BlockPosition> fg, int div, int x, int z, O<Integer> m) {
BlockPosition key = new BlockPosition((int) mscale, Math.floorDiv(x, div), Math.floorDiv(z, div));
fg.add(key);
if (positions.containsKey(key)) {
return positions.get(key);
}
if (fastpositions.containsKey(key)) {
if (!working.contains(key) && working.size() < 9) {
m.set(m.get() - 1);
if (m.get() >= 0 && velocity < 50) {
working.add(key);
double mk = mscale;
double mkd = scale;
e.submit(() ->
{
PrecisionStopwatch ps = PrecisionStopwatch.start();
BufferedImage b = renderer.render(x * mscale, z * mscale, div * mscale, div / (lowtile ? 3 : 1), currentType);
rs.put(ps.getMilliseconds());
working.remove(key);
if (mk == mscale && mkd == scale) {
positions.put(key, b);
}
});
}
}
return fastpositions.get(key);
}
if (workingfast.contains(key) || workingfast.size() > Runtime.getRuntime().availableProcessors()) {
return null;
}
workingfast.add(key);
double mk = mscale;
double mkd = scale;
eh.submit(() ->
{
PrecisionStopwatch ps = PrecisionStopwatch.start();
BufferedImage b = renderer.render(x * mscale, z * mscale, div * mscale, div / lowq, currentType);
rs.put(ps.getMilliseconds());
workingfast.remove(key);
if (mk == mscale && mkd == scale) {
fastpositions.put(key, b);
}
});
return null;
}
private double getWorldX(double screenX) {
//return (mscale * screenX) + ((oxp / scale) * mscale);
return (mscale * screenX) + ((oxp / scale));
}
private double getWorldZ(double screenZ) {
return (mscale * screenZ) + ((ozp / scale) * mscale);
}
private double getScreenX(double x) {
return (x / mscale) - ((oxp / scale));
}
private double getScreenZ(double z) {
return (z / mscale) - ((ozp / scale));
}
@Override
public void paint(Graphics gx) {
if (engine.isClosed()) {
EventQueue.invokeLater(() -> {
try {
setVisible(false);
} catch (Throwable e) {
}
});
return;
}
if (updateEngine()) {
dump();
}
if (ox < oxp) {
velocity = Math.abs(ox - oxp) * 0.36;
oxp -= velocity;
}
if (ox > oxp) {
velocity = Math.abs(oxp - ox) * 0.36;
oxp += velocity;
}
if (oz < ozp) {
velocity = Math.abs(oz - ozp) * 0.36;
ozp -= velocity;
}
if (oz > ozp) {
velocity = Math.abs(ozp - oz) * 0.36;
ozp += velocity;
}
if (lx < hx) {
hx -= Math.abs(lx - hx) * 0.36;
}
if (lx > hx) {
hx += Math.abs(hx - lx) * 0.36;
}
if (lz < hz) {
hz -= Math.abs(lz - hz) * 0.36;
}
if (lz > hz) {
hz += Math.abs(hz - lz) * 0.36;
}
if (centities.flip()) {
J.s(() -> {
synchronized (lastEntities) {
lastEntities.clear();
lastEntities.addAll(world.getEntitiesByClass(LivingEntity.class));
}
});
}
lowq = Math.max(Math.min((int) M.lerp(8, 28, velocity / 1000D), 28), 8);
PrecisionStopwatch p = PrecisionStopwatch.start();
Graphics2D g = (Graphics2D) gx;
w = getWidth();
h = getHeight();
double vscale = scale;
scale = w / 12D;
if (scale != vscale) {
positions.clear();
}
KSet<BlockPosition> gg = new KSet<>();
int iscale = (int) scale;
g.setColor(Color.white);
g.clearRect(0, 0, w, h);
int posX = (int) oxp;
int posZ = (int) ozp;
m.set(3);
for (int r = 0; r < Math.max(w, h); r += iscale) {
for (int i = -iscale; i < w + iscale; i += iscale) {
for (int j = -iscale; j < h + iscale; j += iscale) {
int a = i - (w / 2);
int b = j - (h / 2);
if (a * a + b * b <= r * r) {
BufferedImage t = getTile(gg, iscale, Math.floorDiv((posX / iscale) + i, iscale) * iscale, Math.floorDiv((posZ / iscale) + j, iscale) * iscale, m);
if (t != null) {
g.drawImage(t, i - ((posX / iscale) % (iscale)), j - ((posZ / iscale) % (iscale)), iscale, iscale, (img, infoflags, x, y, width, height) -> true);
}
}
}
}
}
p.end();
for (BlockPosition i : positions.k()) {
if (!gg.contains(i)) {
positions.remove(i);
}
}
hanleFollow();
renderOverlays(g);
if (!isVisible()) {
return;
}
if (!getParent().isVisible()) {
return;
}
if (!getParent().getParent().isVisible()) {
return;
}
J.a(() ->
{
J.sleep(eco ? 15 : 1);
repaint();
});
}
private void hanleFollow() {
if (follow && player != null) {
animateTo(player.getLocation().getX(), player.getLocation().getZ());
}
}
private void renderOverlays(Graphics2D g) {
renderPlayer(g);
if (help) {
renderOverlayHelp(g);
} else if (debug) {
renderOverlayDebug(g);
}
renderOverlayLegend(g);
renderHoverOverlay(g, shift);
if (!notifications.isEmpty()) {
renderNotification(g);
}
}
private void renderOverlayLegend(Graphics2D g) {
KList<String> l = new KList<>();
l.add("Zoom: " + Form.pc(mscale, 0));
l.add("Blocks: " + Form.f((int) mscale * w) + " by " + Form.f((int) mscale * h));
l.add("BPP: " + Form.f(mscale, 1));
l.add("Render Mode: " + Form.capitalizeWords(currentType.name().toLowerCase().replaceAll("\\Q_\\E", " ")));
drawCardBR(g, l);
}
private void renderNotification(Graphics2D g) {
drawCardCB(g, notifications.k());
for (String i : notifications.k()) {
if (M.ms() > notifications.get(i)) {
notifications.remove(i);
}
}
}
private void renderPlayer(Graphics2D g) {
Player b = null;
for (Player i : world.getPlayers()) {
b = i;
renderPosition(g, i.getLocation().getX(), i.getLocation().getZ());
}
synchronized (lastEntities) {
double dist = Double.MAX_VALUE;
LivingEntity h = null;
for (LivingEntity i : lastEntities) {
if (i instanceof Player) {
continue;
}
renderMobPosition(g, i, i.getLocation().getX(), i.getLocation().getZ());
if (shift) {
double d = i.getLocation().distanceSquared(new Location(i.getWorld(), getWorldX(hx), i.getLocation().getY(), getWorldZ(hz)));
if (d < dist) {
dist = d;
h = i;
}
}
}
if (h != null && shift) {
g.setColor(Color.red);
g.fillRoundRect((int) getScreenX(h.getLocation().getX()) - 10, (int) getScreenZ(h.getLocation().getZ()) - 10, 20, 20, 20, 20);
KList<String> k = new KList<>();
k.add(Form.capitalizeWords(h.getType().name().toLowerCase(Locale.ROOT).replaceAll("\\Q_\\E", " ")) + h.getEntityId());
k.add("Pos: " + h.getLocation().getBlockX() + ", " + h.getLocation().getBlockY() + ", " + h.getLocation().getBlockZ());
k.add("UUID: " + h.getUniqueId());
k.add("HP: " + h.getHealth() + " / " + h.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue());
drawCardTR(g, k);
}
}
player = b;
}
private void animateTo(double wx, double wz) {
double cx = getWorldX(getWidth() / 2);
double cz = getWorldZ(getHeight() / 2);
ox += (wx - cx);
oz += (wz - cz);
}
private void renderPosition(Graphics2D g, double x, double z) {
if (texture != null) {
g.drawImage(texture, (int) getScreenX(x), (int) getScreenZ(z), 66, 66, (img, infoflags, xx, xy, width, height) -> true);
} else {
g.setColor(Color.darkGray);
g.fillRoundRect((int) getScreenX(x) - 15, (int) getScreenZ(z) - 15, 30, 30, 15, 15);
g.setColor(Color.cyan.darker().darker());
g.fillRoundRect((int) getScreenX(x) - 10, (int) getScreenZ(z) - 10, 20, 20, 10, 10);
}
}
private void renderMobPosition(Graphics2D g, LivingEntity e, double x, double z) {
g.setColor(Color.red.darker().darker());
g.fillRoundRect((int) getScreenX(x) - 2, (int) getScreenZ(z) - 2, 4, 4, 4, 4);
}
private void renderHoverOverlay(Graphics2D g, boolean detailed) {
IrisBiome biome = engine.getComplex().getTrueBiomeStream().get(getWorldX(hx), getWorldZ(hz));
IrisRegion region = engine.getComplex().getRegionStream().get(getWorldX(hx), getWorldZ(hz));
KList<String> l = new KList<>();
l.add("Biome: " + biome.getName());
l.add("Region: " + region.getName() + "(" + region.getLoadKey() + ")");
l.add("Block " + (int) getWorldX(hx) + ", " + (int) getWorldZ(hz));
if (detailed) {
l.add("Chunk " + ((int) getWorldX(hx) >> 4) + ", " + ((int) getWorldZ(hz) >> 4));
l.add("Region " + (((int) getWorldX(hx) >> 4) >> 5) + ", " + (((int) getWorldZ(hz) >> 4) >> 5));
l.add("Key: " + biome.getLoadKey());
l.add("File: " + biome.getLoadFile());
}
drawCardAt((float) hx, (float) hz, 0, 0, g, l);
}
private void renderOverlayDebug(Graphics2D g) {
KList<String> l = new KList<>();
l.add("Velocity: " + (int) velocity);
l.add("Center Pos: " + Form.f((int) getWorldX(getWidth() / 2)) + ", " + Form.f((int) getWorldZ(getHeight() / 2)));
drawCardBL(g, l);
}
private void renderOverlayHelp(Graphics2D g) {
KList<String> l = new KList<>();
l.add("/ to show this help screen");
l.add("R to repaint the screen");
l.add("F to follow first player");
l.add("+/- to Change Zoom");
l.add("\\ to reset zoom to 1");
l.add("M to cycle render modes");
l.add("P to toggle Tile Quality Mode");
l.add("E to toggle Eco FPS Mode");
int ff = 0;
for (RenderType i : RenderType.values()) {
ff++;
l.add(ff + " to view " + Form.capitalizeWords(i.name().toLowerCase().replaceAll("\\Q_\\E", " ")));
}
l.add("Shift for additional biome details (at cursor)");
l.add("CTRL + Click to teleport to location");
l.add("ALT + Click to open biome in VSCode");
drawCardTL(g, l);
}
private void drawCardTL(Graphics2D g, KList<String> text) {
drawCardAt(0, 0, 0, 0, g, text);
}
private void drawCardBR(Graphics2D g, KList<String> text) {
drawCardAt(getWidth(), getHeight(), 1, 1, g, text);
}
private void drawCardBL(Graphics2D g, KList<String> text) {
drawCardAt(0, getHeight(), 0, 1, g, text);
}
private void drawCardTR(Graphics2D g, KList<String> text) {
drawCardAt(getWidth(), 0, 1, 0, g, text);
}
private void open() {
IrisComplex complex = engine.getComplex();
File r = null;
switch (currentType) {
case BIOME, LAYER_LOAD, DECORATOR_LOAD, OBJECT_LOAD, HEIGHT ->
r = complex.getTrueBiomeStream().get(getWorldX(hx), getWorldZ(hz)).openInVSCode();
case BIOME_LAND -> r = complex.getLandBiomeStream().get(getWorldX(hx), getWorldZ(hz)).openInVSCode();
case BIOME_SEA -> r = complex.getSeaBiomeStream().get(getWorldX(hx), getWorldZ(hz)).openInVSCode();
case REGION -> r = complex.getRegionStream().get(getWorldX(hx), getWorldZ(hz)).openInVSCode();
case CAVE_LAND -> r = complex.getCaveBiomeStream().get(getWorldX(hx), getWorldZ(hz)).openInVSCode();
}
notify("Opening " + r.getPath() + " in VSCode");
}
private void teleport() {
J.s(() -> {
if (player != null) {
int xx = (int) getWorldX(hx);
int zz = (int) getWorldZ(hz);
int h = engine.getComplex().getRoundedHeighteightStream().get(xx, zz);
player.teleport(new Location(player.getWorld(), xx, h, zz));
notify("Teleporting to " + xx + ", " + h + ", " + zz);
} else {
notify("No player in world, can't teleport.");
}
});
}
private void drawCardCB(Graphics2D g, KList<String> text) {
drawCardAt(getWidth() / 2, getHeight(), 0.5, 1, g, text);
}
private void drawCardCT(Graphics2D g, KList<String> text) {
drawCardAt(getWidth() / 2, 0, 0.5, 0, g, text);
}
private void drawCardAt(float x, float y, double pushX, double pushZ, Graphics2D g, KList<String> text) {
g.setFont(new Font("Hevetica", Font.BOLD, 16));
int h = 0;
int w = 0;
for (String i : text) {
h += g.getFontMetrics().getHeight();
w = Math.max(w, g.getFontMetrics().stringWidth(i));
}
w += 28;
h += 14;
int cw = (int) ((w + 26) * pushX);
int ch = (int) ((h + 26) * pushZ);
g.setColor(Color.darkGray);
g.fillRect((int) x + 7 + 2 - cw, (int) y + 12 + 2 - ch, w + 7, h); // Shadow
g.setColor(Color.gray);
g.fillRect((int) x + 7 + 1 - cw, (int) y + 12 + 1 - ch, w + 7, h); // Shadow
g.setColor(Color.white);
g.fillRect((int) x + 7 - cw, (int) y + 12 - ch, w + 7, h);
g.setColor(Color.black);
int m = 0;
for (String i : text) {
g.drawString(i, x + 14 - cw, y + 14 - ch + (++m * g.getFontMetrics().getHeight()));
}
}
public void mouseWheelMoved(MouseWheelEvent e) {
int notches = e.getWheelRotation();
if (e.isControlDown()) {
return;
}
//Iris.info("Blocks/Pixel: " + (mscale) + ", Blocks Wide: " + (w * mscale));
positions.clear();
fastpositions.clear();
mscale = mscale + ((0.25 * mscale) * notches);
mscale = Math.max(mscale, 0.00001);
}
@Override
public void mouseClicked(MouseEvent e) {
if (control) {
teleport();
} else if (alt) {
open();
}
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}

View File

@@ -0,0 +1,85 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.gui.components;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisBiomeGeneratorLink;
import com.volmit.iris.util.interpolation.IrisInterpolation;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.function.BiFunction;
public class IrisRenderer {
private final Engine renderer;
public IrisRenderer(Engine renderer) {
this.renderer = renderer;
}
public BufferedImage render(double sx, double sz, double size, int resolution, RenderType currentType) {
BufferedImage image = new BufferedImage(resolution, resolution, BufferedImage.TYPE_INT_RGB);
BiFunction<Double, Double, Integer> colorFunction = (d, dx) -> Color.black.getRGB();
switch (currentType) {
case BIOME, DECORATOR_LOAD, OBJECT_LOAD, LAYER_LOAD ->
colorFunction = (x, z) -> renderer.getComplex().getTrueBiomeStream().get(x, z).getColor(renderer, currentType).getRGB();
case BIOME_LAND ->
colorFunction = (x, z) -> renderer.getComplex().getLandBiomeStream().get(x, z).getColor(renderer, currentType).getRGB();
case BIOME_SEA ->
colorFunction = (x, z) -> renderer.getComplex().getSeaBiomeStream().get(x, z).getColor(renderer, currentType).getRGB();
case REGION ->
colorFunction = (x, z) -> renderer.getComplex().getRegionStream().get(x, z).getColor(renderer.getComplex(), currentType).getRGB();
case CAVE_LAND ->
colorFunction = (x, z) -> renderer.getComplex().getCaveBiomeStream().get(x, z).getColor(renderer, currentType).getRGB();
case HEIGHT ->
colorFunction = (x, z) -> Color.getHSBColor(renderer.getComplex().getHeightStream().get(x, z).floatValue(), 100, 100).getRGB();
case CONTINENT -> colorFunction = (x, z) -> {
IrisBiome b = renderer.getBiome((int) Math.round(x), renderer.getMaxHeight() - 1, (int) Math.round(z));
IrisBiomeGeneratorLink g = b.getGenerators().get(0);
Color c;
if (g.getMax() <= 0) {
// Max is below water level, so it is most likely an ocean biome
c = Color.BLUE;
} else if (g.getMin() < 0) {
// Min is below water level, but max is not, so it is most likely a shore biome
c = Color.YELLOW;
} else {
// Both min and max are above water level, so it is most likely a land biome
c = Color.GREEN;
}
return c.getRGB();
};
}
double x, z;
int i, j;
for (i = 0; i < resolution; i++) {
x = IrisInterpolation.lerp(sx, sx + size, (double) i / (double) (resolution));
for (j = 0; j < resolution; j++) {
z = IrisInterpolation.lerp(sz, sz + size, (double) j / (double) (resolution));
image.setRGB(i, j, colorFunction.apply(x, z));
}
}
return image;
}
}

View File

@@ -0,0 +1,23 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.gui.components;
public enum RenderType {
BIOME, BIOME_LAND, BIOME_SEA, REGION, CAVE_LAND, HEIGHT, OBJECT_LOAD, DECORATOR_LOAD, CONTINENT, LAYER_LOAD
}

View File

@@ -0,0 +1,26 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.gui.components;
import java.awt.*;
@FunctionalInterface
public interface Renderer {
Color draw(double x, double z);
}

View File

@@ -0,0 +1,31 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.gui.components;
import lombok.Builder;
import lombok.Data;
import java.awt.image.BufferedImage;
@Builder
@Data
public class TileRender {
private BufferedImage image;
private int quality;
}

View File

@@ -0,0 +1,102 @@
//package com.volmit.iris.core.link;
//
//import com.jojodmo.customitems.api.CustomItemsAPI;
//import com.jojodmo.customitems.item.custom.CustomItem;
//import com.jojodmo.customitems.item.custom.block.CustomMushroomBlock;
//import com.jojodmo.customitems.version.SafeMaterial;
//import com.volmit.iris.util.collection.KList;
//import com.volmit.iris.util.reflect.WrappedField;
//import com.volmit.iris.util.reflect.WrappedReturningMethod;
//import org.bukkit.block.BlockFace;
//import org.bukkit.block.data.BlockData;
//import org.bukkit.block.data.MultipleFacing;
//import org.bukkit.inventory.ItemStack;
//
//import java.util.Map;
//import java.util.MissingResourceException;
//
//public class CustomItemsDataProvider extends ExternalDataProvider {
//
// private static final String FIELD_FACES = "faces";
// private static final String METHOD_GET_MATERIAL = "getMaterial";
//
// private WrappedField<CustomMushroomBlock, Map<Integer, boolean[]>> mushroomFaces;
// private WrappedReturningMethod<CustomMushroomBlock, SafeMaterial> mushroomMaterial;
//
// public CustomItemsDataProvider() {
// super("CustomItems");
// }
//
// @Override
// public void init() {
// this.mushroomFaces = new WrappedField<>(CustomMushroomBlock.class, FIELD_FACES);
// this.mushroomMaterial = new WrappedReturningMethod<>(CustomMushroomBlock.class, METHOD_GET_MATERIAL);
// }
//
// @Override
// public BlockData getBlockData(Identifier blockId) throws MissingResourceException {
// CustomItem item = CustomItem.get(blockId.key());
// if(item == null) {
// throw new MissingResourceException("Failed to find BlockData!", blockId.namespace(), blockId.key());
// } else if(item.getBlockTexture().isSpawner()) {
// throw new MissingResourceException("Iris does not yet support SpawnerBlocks from CustomItems.", blockId.namespace(), blockId.key());
// } else if(item.getBlockTexture() != null && item.getBlockTexture().isValid()) {
// throw new MissingResourceException("Tried to fetch BlockData for a CustomItem that is not placeable!", blockId.namespace(), blockId.key());
// }
// return getMushroomData(item);
// }
//
// @Override
// public ItemStack getItemStack(Identifier itemId) throws MissingResourceException {
// ItemStack stack = CustomItemsAPI.getCustomItem(itemId.key());
// if(stack == null) {
// throw new MissingResourceException("Failed to find ItemData!", itemId.namespace(), itemId.key());
// }
// return stack;
// }
//
// @Override
// public Identifier[] getBlockTypes() {
// KList<Identifier> names = new KList<>();
// for (String name : CustomItemsAPI.listBlockCustomItemIDs()) {
// try {
// Identifier key = new Identifier("cui", name);
// if (getItemStack(key) != null)
// names.add(key);
// } catch (MissingResourceException ignored) { }
// }
//
// return names.toArray(new Identifier[0]);
// }
//
// @Override
// public Identifier[] getItemTypes() {
// KList<Identifier> names = new KList<>();
// for (String name : CustomItemsAPI.listCustomItemIDs()) {
// try {
// Identifier key = new Identifier("cui", name);
// if (getItemStack(key) != null)
// names.add(key);
// } catch (MissingResourceException ignored) { }
// }
//
// return names.toArray(new Identifier[0]);
// }
//
// @Override
// public boolean isValidProvider(Identifier key, boolean isItem) {
// return key.namespace().equalsIgnoreCase("cui");
// }
//
// private BlockData getMushroomData(CustomItem item) {
// MultipleFacing data = (MultipleFacing)mushroomMaterial.invoke(item.getBlockTexture().getMushroomId()).parseMaterial().createBlockData();
// boolean[] values = mushroomFaces.get().get(item.getBlockTexture().getMushroomId());
// data.setFace(BlockFace.DOWN, values[0]);
// data.setFace(BlockFace.EAST, values[1]);
// data.setFace(BlockFace.NORTH, values[2]);
// data.setFace(BlockFace.SOUTH, values[3]);
// data.setFace(BlockFace.UP, values[4]);
// data.setFace(BlockFace.WEST, values[5]);
// return data;
// }
//}

View File

@@ -0,0 +1,37 @@
package com.volmit.iris.core.link;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.block.data.BlockData;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import java.util.MissingResourceException;
@RequiredArgsConstructor
public abstract class ExternalDataProvider {
@Getter
private final String pluginId;
public Plugin getPlugin() {
return Bukkit.getPluginManager().getPlugin(pluginId);
}
public boolean isReady() {
return getPlugin() != null && getPlugin().isEnabled();
}
public abstract void init();
public abstract BlockData getBlockData(Identifier blockId) throws MissingResourceException;
public abstract ItemStack getItemStack(Identifier itemId) throws MissingResourceException;
public abstract Identifier[] getBlockTypes();
public abstract Identifier[] getItemTypes();
public abstract boolean isValidProvider(Identifier id, boolean isItem);
}

View File

@@ -0,0 +1,33 @@
package com.volmit.iris.core.link;
import org.bukkit.NamespacedKey;
public record Identifier(String namespace, String key) {
private static final String DEFAULT_NAMESPACE = "minecraft";
public static Identifier fromString(String id) {
String[] strings = id.split(":", 2);
if (strings.length == 1) {
return new Identifier(DEFAULT_NAMESPACE, strings[0]);
} else {
return new Identifier(strings[0], strings[1]);
}
}
@Override
public String toString() {
return namespace + ":" + key;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Identifier i) {
return i.namespace().equals(this.namespace) && i.key().equals(this.key);
} else if (obj instanceof NamespacedKey i) {
return i.getNamespace().equals(this.namespace) && i.getKey().equals(this.key);
} else {
return false;
}
}
}

View File

@@ -0,0 +1,116 @@
/*
* Iris is a World Generator for Minecraft Bukkit Servers
* Copyright (c) 2022 Arcane Arts (Volmit Software)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.volmit.iris.core.link;
import com.volmit.iris.Iris;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.platform.PlatformChunkGenerator;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
// See/update https://app.gitbook.com/@volmitsoftware/s/iris/compatability/papi/
public class IrisPapiExpansion extends PlaceholderExpansion {
@Override
public @NotNull String getIdentifier() {
return "iris";
}
@Override
public @NotNull String getAuthor() {
return "Volmit Software";
}
@Override
public @NotNull String getVersion() {
return Iris.instance.getDescription().getVersion();
}
@Override
public boolean persist() {
return false;
}
@Override
public String onRequest(OfflinePlayer player, String p) {
Location l = null;
PlatformChunkGenerator a = null;
if (player.isOnline() && player.getPlayer() != null) {
l = player.getPlayer().getLocation().add(0, 2, 0);
a = IrisToolbelt.access(l.getWorld());
}
if (p.equalsIgnoreCase("biome_name")) {
if (a != null) {
return getBiome(a, l).getName();
}
} else if (p.equalsIgnoreCase("biome_id")) {
if (a != null) {
return getBiome(a, l).getLoadKey();
}
} else if (p.equalsIgnoreCase("biome_file")) {
if (a != null) {
return getBiome(a, l).getLoadFile().getPath();
}
} else if (p.equalsIgnoreCase("region_name")) {
if (a != null) {
return a.getEngine().getRegion(l).getName();
}
} else if (p.equalsIgnoreCase("region_id")) {
if (a != null) {
return a.getEngine().getRegion(l).getLoadKey();
}
} else if (p.equalsIgnoreCase("region_file")) {
if (a != null) {
return a.getEngine().getRegion(l).getLoadFile().getPath();
}
} else if (p.equalsIgnoreCase("terrain_slope")) {
if (a != null) {
return (a.getEngine())
.getComplex().getSlopeStream()
.get(l.getX(), l.getZ()) + "";
}
} else if (p.equalsIgnoreCase("terrain_height")) {
if (a != null) {
return Math.round(a.getEngine().getHeight(l.getBlockX(), l.getBlockZ())) + "";
}
} else if (p.equalsIgnoreCase("world_mode")) {
if (a != null) {
return a.isStudio() ? "Studio" : "Production";
}
} else if (p.equalsIgnoreCase("world_seed")) {
if (a != null) {
return a.getEngine().getSeedManager().getSeed() + "";
}
} else if (p.equalsIgnoreCase("world_speed")) {
if (a != null) {
return a.getEngine().getGeneratedPerSecond() + "/s";
}
}
return null;
}
private IrisBiome getBiome(PlatformChunkGenerator a, Location l) {
return a.getEngine().getBiome(l.getBlockX(), l.getBlockY() - l.getWorld().getMinHeight(), l.getBlockZ());
}
}

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