From fe713b1966fdfbd617460a39339ce1b91b70beb6 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 10 May 2023 11:11:36 +0200 Subject: [PATCH] Squashed commit of the following: commit 4323a7133ae29f204bfc34b373ef4946a435e775 Author: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed May 10 10:58:12 2023 +0200 Deferred validBlocks() option for block entities commit b79330f4efe14746f0c2b35f13469862e148f88c Merge: 053dd09df 7cc35698a Author: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed May 10 10:23:33 2023 +0200 Merge branch '1.18/api' of https://github.com/Layers-of-Railways/Create into pr/4692 commit 7cc35698ae2e26118daa8e2e21e2f8bb660ff633 Merge: bae824487 ecc645eba Author: techno-sam Date: Tue May 9 20:15:15 2023 -0700 Merge remote-tracking branch 'origin/1.18/api' into 1.18/api commit bae8244873bf20148cd29161a03320831b94018f Author: techno-sam Date: Tue May 9 20:15:00 2023 -0700 resolve review issues commit b1bffbf7fde7d9d3f69df87c28c95619d7597e80 Author: techno-sam Date: Tue May 9 19:46:58 2023 -0700 clean up testing residue commit 053dd09df6c426ab5e570f42a1edb5df3d0fbd01 Merge: 6d1e1c71d ecc645eba Author: simibubi <31564874+simibubi@users.noreply.github.com> Date: Tue May 9 18:22:42 2023 +0200 Merge branch '1.18/api' of https://github.com/Layers-of-Railways/Create into pr/4692 commit ecc645eba7bfd5f86b9bfb16ee1236a5d6432d3d Author: Rabbitminers Date: Tue May 9 11:24:11 2023 +0100 Implemented support for creating and removing individual blockstate models commit 6d1e1c71de7ce20f6fd9fc8ed4ed9bdd1072829a Author: simibubi <31564874+simibubi@users.noreply.github.com> Date: Tue May 9 12:16:54 2023 +0200 Less error logging when migrating old worlds commit 205e47352ec46f8e300167db69023c7938a52b58 Author: techno-sam Date: Mon May 8 21:02:19 2023 -0700 Fix up ItemOutline commit 6cf204f6afd12671060d198d5a09efe9cd04c7b5 Merge: fe049bc77 2e3c906ce Author: techno-sam Date: Mon May 8 20:28:56 2023 -0700 Merge remote-tracking branch 'upstream/mc1.18/dev' into 1.18/api # Conflicts: # src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageCouplingRenderer.java commit fe049bc771cc3a4dd91f5c91f098aa7448af6c8d Author: techno-sam Date: Mon May 8 20:26:16 2023 -0700 Revert "Revert "Rewrite outline buffering"" This reverts commit 726bfaf0 commit 435b4c1c16153e30740d6878cf1f676b7a442c19 Author: techno-sam Date: Mon May 8 20:20:23 2023 -0700 Clean up last bits of upside down rendering commit 662da6bab1f6ad96a4fa05c9ff8538080ac69ac2 Merge: 122fe77af d83285e8a Author: techno-sam Date: Mon May 8 20:16:32 2023 -0700 Merge remote-tracking branch 'origin/1.18/api' into 1.18/api # Conflicts: # src/main/java/com/simibubi/create/content/logistics/trains/StandardBogeyRenderer.java commit 122fe77afa2df18dde7afe0bc6aee536f33b18bd Author: techno-sam Date: Mon May 8 20:15:46 2023 -0700 Fix up upside down rendering commit d83285e8a4da5fcb6900c032e6bd8cd59f81bde8 Merge: 00e953a58 cdb0ad210 Author: techno-sam <77073745+techno-sam@users.noreply.github.com> Date: Sun May 7 07:02:18 2023 -0700 Merge pull request #3 from Layers-of-Railways/1.18/bogey-api Cleanup cycle groups and unused imports commit cdb0ad210b7c984b9fcfbecae8a2a0ebf052eb9d Author: Rabbitminers Date: Sun May 7 10:15:47 2023 +0100 Fixed merge artifact commit 457d5f33ed05075dbd0ffc38c17d3135b494dc26 Merge: 4e4e227a3 00e953a58 Author: Rabbitminers Date: Sun May 7 10:14:07 2023 +0100 Merge remote-tracking branch 'origin/1.18/api' into 1.18/api commit 00e953a585bd8e146b6304a19cebd174404ab1c3 Merge: 1e4d5504e a7a25896c Author: Rabbitminers <79579164+Rabbitminers@users.noreply.github.com> Date: Sun May 7 10:13:49 2023 +0100 Merge pull request #2 from Rabbitminers/mc1.18/dev Added Return Values and Small Cleanup commit a7a25896c1a5a0a353400ed329a46a461347553e Merge: 7622128be 1e4d5504e Author: Rabbitminers <79579164+Rabbitminers@users.noreply.github.com> Date: Sun May 7 10:13:40 2023 +0100 Merge branch '1.18/api' into mc1.18/dev commit 4e4e227a351cb7f70aa4476bebfad1c0e963b561 Author: Rabbitminers Date: Sun May 7 10:10:30 2023 +0100 Cleanup to cycle groups commit aa94fc97d154dcdcaaaa5b4d5e8311af9470d38a Author: Rabbitminers Date: Sun May 7 09:50:50 2023 +0100 Removed unused import of Railways commit 7622128bec17931ea4029792d62c645d0f354e5f Merge: 81eeadb85 d52065808 Author: Rabbitminers <79579164+Rabbitminers@users.noreply.github.com> Date: Sun May 7 09:11:59 2023 +0100 Merge branch 'Layers-of-Railways:mc1.18/dev' into mc1.18/dev commit 1e4d5504ee4fe32d655e08acbeb6c492b5e8bb0b Author: techno-sam Date: Sat May 6 18:03:39 2023 -0700 Don't revert non-buggy changes commit b306cf212471f2842311af071dc6b595cbf79216 Author: techno-sam Date: Sat May 6 18:00:59 2023 -0700 Take materials into consideration when trains pathfind commit fca02ae4bfade6f839533c11785cc3e56332f463 Author: techno-sam Date: Sat May 6 10:25:51 2023 -0700 Add materials to track graph commit 726bfaf0b5226a657b45ce4bd1aa365d891a27a4 Author: techno-sam Date: Fri May 5 21:16:49 2023 -0700 Revert "Rewrite outline buffering" This reverts commit d4106d545b0381c3bec304e727a136ea105a8468. commit 171897bed25ed8f7ad3999c8527bb649bb932c81 Author: techno-sam Date: Fri May 5 20:55:25 2023 -0700 Fix up style cycling commit cbd0cf20da482851f98f5312cbc40770a6c14f16 Author: techno-sam Date: Fri May 5 07:32:06 2023 -0700 clean up nether portal carriage handling commit d556f0887632664126a2e10cbb1c8fc6d37e2582 Author: techno-sam Date: Fri May 5 07:06:02 2023 -0700 upside down bogeys work in nether portals fixed coupling anchor offsets commit da26c0ccbf26b892013f6e365556eea6952009f2 Author: techno-sam Date: Thu May 4 09:32:53 2023 -0700 working on upside down bogeys in nether portals commit 81eeadb8532599d482f2259e58cedeaa602e8628 Author: Rabbitminers Date: Mon May 1 16:15:28 2023 +0100 Small cleanup commit c7e9df973cf3d0dab15992d06e6a51985d305ba8 Author: Rabbitminers Date: Mon May 1 16:13:51 2023 +0100 Fixed issue raised in #1 commit 2f285b6eb7341879899895b1c5bbadd0137abb83 Author: techno-sam Date: Mon May 1 08:13:27 2023 -0700 add data gen commit 206de013111a879de133f62846e4f10d7228ea0a Merge: e91753a33 6564f4fa7 Author: techno-sam <77073745+techno-sam@users.noreply.github.com> Date: Mon May 1 06:49:21 2023 -0700 Merge pull request #1 from Rabbitminers/mc1.18/dev Bogey API commit 6564f4fa730f71920552fd2ad6f2c8255df69995 Merge: e5d759582 e91753a33 Author: Rabbitminers <79579164+Rabbitminers@users.noreply.github.com> Date: Mon May 1 10:40:32 2023 +0100 Merge branch '1.18/api' into mc1.18/dev commit e5d759582279b3a761c7011174ec77119f4f4f93 Author: Rabbitminers Date: Mon May 1 10:09:03 2023 +0100 Connected Custom Bogey Particle Types To CarriageParticles commit e91753a33cde6dbe0caaface45a7f377d75acbed Author: techno-sam Date: Sun Apr 30 19:51:26 2023 -0700 Fix up some problems commit 9815f1490f9d540986f85f49f297e2f014c312c4 Author: Rabbitminers Date: Sun Apr 30 21:12:43 2023 +0100 Implemented default data when shifting styles commit da30e78815afd7906ea82a9fba293f202c036fa8 Author: Rabbitminers Date: Sun Apr 30 21:12:14 2023 +0100 Added Particles To Bogey Style (And Respective Builder) commit 08c000b8ba302a1c14f7479e70445e2c6d360bc3 Author: Rabbitminers Date: Sun Apr 30 21:01:19 2023 +0100 Added Backup Rendering If A Size Is Not Present commit 2b76e8d7b3b8d88355868ea31d4b6e3df11a7169 Author: Rabbitminers Date: Sun Apr 30 21:00:40 2023 +0100 Added Common Renderer To Remove Function commit 411ec36f573a570284b2bda566d8a006550983e8 Author: Rabbitminers Date: Sun Apr 30 20:59:50 2023 +0100 Added Display Name To Standard Bogey Style commit 112306d5d49db10176d091f1f2ece893afb274dd Author: Rabbitminers Date: Sun Apr 30 20:59:30 2023 +0100 Displayed new style name when changing betweeen them commit 5634670b2750a2df5dfee6de3f93bc895391300d Author: Rabbitminers Date: Sun Apr 30 20:06:00 2023 +0100 General Cleanup commit 0f7a8b7b24ef25c4266fc88f82995b609087904e Author: Rabbitminers Date: Sun Apr 30 20:05:50 2023 +0100 Implemented Changes To Remaining Classes commit 8aedc00f963413ac0a02335bc9f914d45a82b4de Author: Rabbitminers Date: Sun Apr 30 20:02:06 2023 +0100 Removed Bogey Style Handling From Registrate commit edf8079abf9750dc9f3ccf1aedf58fef80428385 Author: Rabbitminers Date: Sun Apr 30 20:01:40 2023 +0100 Removed Unused Registry Handling commit 6a185c4e727ecf55183cb885b109c0f5c5319854 Author: Rabbitminers Date: Sun Apr 30 20:01:16 2023 +0100 Refactored Bogey Sizes commit e10d07ddc3b70cfa6f4a210aa9a9e6bcc6200b7f Author: Rabbitminers Date: Sun Apr 30 20:01:00 2023 +0100 Overhauled Bogey Style commit 74d98a2ad538e2b9d35fdfd2270a14597d29f957 Merge: e629d02f5 4ebcf8201 Author: techno-sam <77073745+techno-sam@users.noreply.github.com> Date: Sun Apr 23 07:16:33 2023 -0700 Merge branch 'Creators-of-Create:mc1.18/dev' into 1.18/api commit e629d02f505c7de2d786a126fe49168351f17124 Author: techno-sam Date: Sun Apr 9 07:18:22 2023 -0700 Track API Clean up code a bit commit d9ce6ce995128e64d079145b96273235c4fec783 Author: techno-sam Date: Sun Apr 9 07:14:46 2023 -0700 Track API? Fix placement commit 7fbf08ba54ce3397045a8acdd6b7be813009ee7b Author: techno-sam Date: Sat Apr 8 11:11:24 2023 -0700 Track API? Fix up some placement issues commit 35644f143426bc2cae1a63c4f09d7145a4e18983 Author: techno-sam Date: Sat Apr 8 08:11:13 2023 -0700 Track API maybe? Datagen Seems to be working commit f7c56b867a6afe52fa742f4d4c310db9788cc2ef Author: techno-sam Date: Thu Apr 6 21:24:31 2023 -0700 Track API maybe? Fix build - broken generic Not yet tested, but it is progress commit 2a59fd7e8ab91a6004abe4b92152a2a936a22c1b Author: techno-sam Date: Thu Apr 6 21:13:54 2023 -0700 Track API maybe? Not yet tested, but it is progress commit 5ba30d6a85dd2cfa49434cb55a25b258b02a9665 Merge: e4e5ac1c4 c2977bbff Author: techno-sam <77073745+techno-sam@users.noreply.github.com> Date: Thu Apr 6 17:10:39 2023 -0700 Merge branch 'Creators-of-Create:mc1.18/dev' into 1.18/api commit d52065808c5d250e6aec35878a5349be563c1d24 Merge: e4e5ac1c4 c2977bbff Author: techno-sam <77073745+techno-sam@users.noreply.github.com> Date: Thu Apr 6 17:10:26 2023 -0700 Merge branch 'Creators-of-Create:mc1.18/dev' into mc1.18/dev commit 53240bd42f08d839b233a3b75cb59aabb4648fb9 Author: Rabbitminers Date: Mon Apr 3 21:42:29 2023 +0100 Corrected Bogey InteractionResult To Pass commit 69326e361ab7d982a577f1e864c772967ad9c134 Author: Rabbitminers Date: Mon Apr 3 21:30:28 2023 +0100 Fixed Default Values When Used Styles Are Removed commit 4f176979de161c35d6c7b07744bf0b982490f49f Author: Rabbitminers Date: Mon Apr 3 19:33:17 2023 +0100 Fixed Carriage Sounds (Again) commit 1e80af3303e5bf9f9179857944cc233b4be7ebaf Author: Rabbitminers Date: Mon Apr 3 19:27:58 2023 +0100 Refactored Bogey Sizes To Seperate Class commit 129be61fee13e15e17c2e2a4ee0b08c9bc004846 Author: Rabbitminers Date: Mon Apr 3 17:20:17 2023 +0100 Fixed Bogey Sound Loading commit 2543185a55a60197494850582ca45d729e463f40 Author: Rabbitminers Date: Mon Apr 3 09:45:23 2023 +0100 Added Bogey Sound Customisation commit 1ad5ae95143f5240fcb83448a99a3924e6d96ce8 Author: Rabbitminers Date: Mon Apr 3 00:44:53 2023 +0100 Added Size Transforms If Size Is Not Available For New Style commit 96566b161441928f2b419340796a27631e1aeb91 Author: Rabbitminers Date: Sun Apr 2 23:02:02 2023 +0100 Moved Bogey Style Inside Of Bogey Data And Implemented Bogey Data Communication commit eedd98473807f1261c7d5edaf0a222c081b57e69 Author: Rabbitminers Date: Sun Apr 2 16:53:55 2023 +0100 Fixed Large Bogey Size commit 68ca0974c6867e61980990a345634963079faf10 Author: Rabbitminers Date: Sun Apr 2 16:47:58 2023 +0100 Implemented Style Cycling & Default Values commit a55ba4267a5fd01ec77e9d826a01f0157c3a1271 Author: Rabbitminers Date: Sun Apr 2 16:46:15 2023 +0100 Implemented renderer instance creator commit 43523302c22d5da374d71c69499269eb8c98dadf Author: Rabbitminers Date: Sun Apr 2 16:45:33 2023 +0100 Removed Unused Standard Bogey Instance commit 773e084422d5cba7e0c599c4e9e9199252e843a3 Merge: 0c0b5a1ed d1e1f7ec5 Author: Rabbitminers Date: Sat Apr 1 18:50:15 2023 +0100 Merge remote-tracking branch 'origin/mc1.18/dev' into mc1.18/dev # Conflicts: # src/main/java/com/simibubi/create/AllBogeyStyles.java # src/main/java/com/simibubi/create/content/logistics/trains/BogeyTileEntityRenderer.java # src/main/java/com/simibubi/create/content/logistics/trains/entity/BogeyStyle.java # src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntityRenderer.java # src/main/java/com/simibubi/create/content/logistics/trains/entity/StandardBogeyInstance.java # src/main/java/com/simibubi/create/foundation/data/BogeyStyleBuilder.java commit 0c0b5a1ed65c5f425265b340772b1177a309c46d Author: Rabbitminers Date: Sat Apr 1 18:39:58 2023 +0100 Linked Style Registry To Bogey Blocks commit 71f839ee51c4d609a19fe57632fb2e8fb0d2e5b7 Author: Rabbitminers Date: Sat Apr 1 18:39:03 2023 +0100 Replaced size boolean with direct use of size enum commit 50ff0817045029c721a0a5e38956b3ecd228e52f Author: Rabbitminers Date: Thu Mar 30 18:47:13 2023 +0100 Added Resource Location To NBT helper methods commit d1e1f7ec5abeb825a3170a8f6972ffae43d58381 Author: Rabbitminers Date: Thu Mar 30 18:47:13 2023 +0100 Re-worked BogeyStyles commit da593fccb1cb95232290289775affd097153e30d Author: Rabbitminers Date: Thu Mar 30 18:46:02 2023 +0100 Refactored IBogeyBlock to AbstractBogeyBlock and extracted relevant StandardBogeyBlock implementations commit 17432c911342b1d4937a8d2d22d50a58296639e6 Author: Rabbitminers Date: Sat Mar 25 10:20:50 2023 +0000 Fixed Incorrect Registry Loading commit c7d899369a4ad1a9962ed18c2ab02f58c985f5ae Author: Rabbitminers Date: Fri Mar 24 23:44:03 2023 +0000 Registered Registers commit 6d862290d71b24b1d841444fa21dcb44ecc0d6c7 Author: Rabbitminers Date: Fri Mar 24 23:43:23 2023 +0000 Added BogeyStyleBuilder To Registrate commit 3dfb9e3b3b4b7cec3833b65838ce9523b0cf7666 Author: Rabbitminers Date: Fri Mar 24 23:43:08 2023 +0000 Implemented AllBogeyStyles commit c9e71b462d00e138778f3064bfcc3549a6f28f22 Author: Rabbitminers Date: Fri Mar 24 23:42:56 2023 +0000 Created BogeyStyleBuilder commit a90977d6429657ade13c889d90ec8cd733f176e9 Author: Rabbitminers Date: Fri Mar 24 23:42:25 2023 +0000 Created AllRegistries and BogeyStyle Registry commit 154d455f3fbdef3000ad3e35e88b0909b66c69f8 Author: Rabbitminers Date: Fri Mar 24 23:41:56 2023 +0000 Added BogeyStyle Wrapper commit dfb7640bfc9850604c4ce05ff56338a4e2bbe2fa Author: Rabbitminers Date: Thu Mar 23 18:50:41 2023 +0000 Removed left over logging statement commit 9920536cc319897a89dc1fc974c67cd0975fbcfd Author: Rabbitminers Date: Thu Mar 23 18:50:18 2023 +0000 Implemented Secondary Shaft To Large Renderer commit 6cd40cc6f982226f2bbb9e04e3b8241f9cc36cb5 Author: Rabbitminers Date: Thu Mar 23 18:49:56 2023 +0000 Prevented Overwrite When Using Two BlockStates Of The Same Type With Different Properties commit 06fb901144de8d8df5b907e6261c76a018468f7d Author: Rabbitminers Date: Thu Mar 23 18:39:11 2023 +0000 Implemented Common Rendering For StandardBogeyRenderer commit 435b0f826663284f6544c034217516e36a0687d8 Author: Rabbitminers Date: Thu Mar 23 18:38:40 2023 +0000 Added Common Renderer commit 96a0623dab84d7062a0871ddacabf4342e568867 Author: Rabbitminers Date: Thu Mar 23 18:38:29 2023 +0000 Implemented BlockState Models For Rendering commit 469d9d592b9aa925b26b1206a4ad03d73d422a92 Author: Rabbitminers Date: Thu Mar 23 17:42:28 2023 +0000 Added Standard Bogey Instance (Might be redundant) commit 2661d260d8c21e57df751b17812d89919713120f Author: Rabbitminers Date: Thu Mar 23 17:42:06 2023 +0000 Refactored Changes To Existing Methods commit 9ded16fbabb38e3415cc7b5452cbaea1bef98f61 Author: Rabbitminers Date: Thu Mar 23 17:41:15 2023 +0000 Integrated BogeyRenderer To BogeyInstance (Also Corrected Rendering In Contraption) commit 4a82fcbca1002267fc70998e7ac9c22cd92de52e Author: Rabbitminers Date: Thu Mar 23 17:40:13 2023 +0000 Implemented Changes To StandardBogeyBlock commit 7238fb93f3d0fed43b091f44fd30814e505c544c Author: Rabbitminers Date: Thu Mar 23 17:39:51 2023 +0000 Added Renderer To IBogeyBlock commit ded4c1f613cb33ae29b6bf631eb49abd2ec037f4 Merge: 91727cc84 3c02fe6ec Author: Rabbitminers Date: Wed Mar 22 17:03:37 2023 +0000 Merge remote-tracking branch 'origin/mc1.18/dev' into mc1.18/dev commit 91727cc84a12b2fd27b1ce6e0d67bd182e34880b Author: Rabbitminers Date: Wed Mar 22 17:03:28 2023 +0000 Implemented Model Data Initializer to StandardBogeyRenderer commit 6d98a1f46942d319729c2d61451da462f4188167 Author: Rabbitminers Date: Wed Mar 22 17:03:00 2023 +0000 Added Contraption Model Instance Initializer commit 3c02fe6ecc0c20f1c8ba6bd2ffd2334c2d9d9d73 Author: Rabbitminers <79579164+Rabbitminers@users.noreply.github.com> Date: Tue Mar 21 22:45:34 2023 +0000 Added missing render type check commit 6672c49649026e6a6f9a71d9a0bc9411016bcfce Author: Rabbitminers Date: Tue Mar 21 22:37:36 2023 +0000 Re-created standard bogey with test api commit a8a9491fa07777218c7de3fe780ae17e05d5ac03 Author: Rabbitminers Date: Tue Mar 21 22:34:54 2023 +0000 Implemented Proof Of Concept Generic Bogey Renderer commit e4e5ac1c40cadb708429018dc17439eca87ee74e Author: SpottyTheTurtle <69260662+SpottyTheTurtle@users.noreply.github.com> Date: Sat Mar 11 21:34:59 2023 +0000 init --- .../com/simibubi/create/AllTileEntities.java | 2 +- .../tools/BlueprintOverlayRenderer.java | 2 +- .../logistics/trains/BezierConnection.java | 6 +- .../content/logistics/trains/BogeySizes.java | 2 +- .../trains/TrackGraphVisualizer.java | 13 +--- .../logistics/trains/TrackMaterial.java | 62 +++++++++++++------ .../trains/TrackMaterialFactory.java | 19 ++++-- .../logistics/trains/track/TrackBlock.java | 2 +- .../trains/track/TrackPlacement.java | 4 +- .../data/CreateTileEntityBuilder.java | 37 +++++++++-- .../ponder/content/PonderIndex.java | 18 +++--- 11 files changed, 110 insertions(+), 57 deletions(-) diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index a6f0f7456..889856947 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -785,8 +785,8 @@ public class AllTileEntities { public static final BlockEntityEntry TRACK = REGISTRATE .tileEntity("track", TrackTileEntity::new) .instance(() -> TrackInstance::new) + .validBlocksDeferred(TrackMaterial::allBlocks) .renderer(() -> TrackRenderer::new) - .validBlocks((NonNullSupplier[]) TrackMaterial.allBlocks().toArray(new NonNullSupplier[0])) .register(); public static final BlockEntityEntry FAKE_TRACK = REGISTRATE diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java index a3aec3eab..a7058a785 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java @@ -105,7 +105,7 @@ public class BlueprintOverlayRenderer { int tracks = info.requiredTracks; while (tracks > 0) { - ingredients.add(Pair.of(new ItemStack(info.trackMaterial.getTrackBlock().get(), Math.min(64, tracks)), info.hasRequiredTracks)); + ingredients.add(Pair.of(new ItemStack(info.trackMaterial.getBlock(), Math.min(64, tracks)), info.hasRequiredTracks)); tracks -= 64; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/BezierConnection.java b/src/main/java/com/simibubi/create/content/logistics/trains/BezierConnection.java index a65cdb8f6..992f670ae 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/BezierConnection.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/BezierConnection.java @@ -322,7 +322,7 @@ public class BezierConnection implements Iterable { Inventory inv = player.getInventory(); int tracks = getTrackItemCost(); while (tracks > 0) { - inv.placeItemBackInInventory(new ItemStack(getMaterial().getTrackBlock().get(), Math.min(64, tracks))); + inv.placeItemBackInInventory(new ItemStack(getMaterial().getBlock(), Math.min(64, tracks))); tracks -= 64; } int girders = getGirderItemCost(); @@ -350,7 +350,7 @@ public class BezierConnection implements Iterable { continue; Vec3 v = VecHelper.offsetRandomly(segment.position, level.random, .125f) .add(origin); - ItemEntity entity = new ItemEntity(level, v.x, v.y, v.z, new ItemStack(getMaterial().getTrackBlock().get())); + ItemEntity entity = new ItemEntity(level, v.x, v.y, v.z, getMaterial().asStack()); entity.setDefaultPickUpDelay(); level.addFreshEntity(entity); if (!hasGirder) @@ -364,7 +364,7 @@ public class BezierConnection implements Iterable { } public void spawnDestroyParticles(Level level) { - BlockParticleOption data = new BlockParticleOption(ParticleTypes.BLOCK, getMaterial().getTrackBlock().get().defaultBlockState()); + BlockParticleOption data = new BlockParticleOption(ParticleTypes.BLOCK, getMaterial().getBlock().defaultBlockState()); BlockParticleOption girderData = new BlockParticleOption(ParticleTypes.BLOCK, AllBlocks.METAL_GIRDER.getDefaultState()); if (!(level instanceof ServerLevel slevel)) diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/BogeySizes.java b/src/main/java/com/simibubi/create/content/logistics/trains/BogeySizes.java index 95bf3a5c8..41fc13344 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/BogeySizes.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/BogeySizes.java @@ -48,7 +48,7 @@ public class BogeySizes { return BOGEY_SIZES.size(); } - public record BogeySize(ResourceLocation location, Float wheelRadius) { + public record BogeySize(ResourceLocation location, float wheelRadius) { public BogeySize(String modId, String name, float wheelRadius) { this(new ResourceLocation(modId, name), wheelRadius); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/TrackGraphVisualizer.java b/src/main/java/com/simibubi/create/content/logistics/trains/TrackGraphVisualizer.java index bc2c24241..94216ec4d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/TrackGraphVisualizer.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/TrackGraphVisualizer.java @@ -5,15 +5,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.UUID; -import com.mojang.blaze3d.vertex.PoseStack; - -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.world.item.ItemStack; - -import net.minecraft.world.item.Items; - -import net.minecraft.world.level.block.Blocks; - import org.lwjgl.glfw.GLFW; import com.simibubi.create.AllKeys; @@ -274,7 +265,7 @@ public class TrackGraphVisualizer { if (extended) { Vec3 materialPos = edge.getPosition(0.5).add(0, 1, 0); CreateClient.OUTLINER.showItem(Pair.of(edge, edge.edgeData), materialPos, - new ItemStack(edge.getTrackMaterial().trackBlock.get().get())); + edge.getTrackMaterial().asStack()); CreateClient.OUTLINER.showAABB(edge.edgeData, AABB.ofSize(materialPos, 1, 1, 1)) .colored(graph.color); } @@ -292,7 +283,7 @@ public class TrackGraphVisualizer { if (extended) { Vec3 materialPos = edge.getPosition(0.5).add(0, 1, 0); CreateClient.OUTLINER.showItem(Pair.of(edge, edge.edgeData), materialPos, - new ItemStack(edge.getTrackMaterial().trackBlock.get().get())); + edge.getTrackMaterial().asStack()); CreateClient.OUTLINER.showAABB(edge.edgeData, AABB.ofSize(materialPos, 1, 1, 1)) .colored(graph.color); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/TrackMaterial.java b/src/main/java/com/simibubi/create/content/logistics/trains/TrackMaterial.java index 03794a220..3eb571bca 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/TrackMaterial.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/TrackMaterial.java @@ -8,6 +8,8 @@ import java.util.List; import java.util.Map; import java.util.function.Supplier; +import org.jetbrains.annotations.Nullable; + import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; @@ -18,7 +20,9 @@ import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -42,6 +46,9 @@ public class TrackMaterial { public final ResourceLocation particle; public final TrackType trackType; + @Nullable + private final TrackMaterial.TrackType.TrackBlockFactory customFactory; + @OnlyIn(Dist.CLIENT) protected TrackModelHolder modelHolder; @@ -53,6 +60,13 @@ public class TrackMaterial { public TrackMaterial(ResourceLocation id, String langName, NonNullSupplier> trackBlock, ResourceLocation particle, Ingredient sleeperIngredient, Ingredient railsIngredient, TrackType trackType, Supplier> modelHolder) { + this(id, langName, trackBlock, particle, sleeperIngredient, railsIngredient, trackType, modelHolder, null); + } + + public TrackMaterial(ResourceLocation id, String langName, NonNullSupplier> trackBlock, + ResourceLocation particle, Ingredient sleeperIngredient, Ingredient railsIngredient, + TrackType trackType, Supplier> modelHolder, + @Nullable TrackType.TrackBlockFactory customFactory) { this.id = id; this.langName = langName; this.trackBlock = trackBlock; @@ -60,38 +74,52 @@ public class TrackMaterial { this.railsIngredient = railsIngredient; this.particle = particle; this.trackType = trackType; + this.customFactory = customFactory; DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> this.modelHolder = modelHolder.get().get()); ALL.put(this.id, this); } - public NonNullSupplier getTrackBlock() { + public NonNullSupplier getBlockSupplier() { return this.trackBlock.get(); } - public TrackBlock createBlock(BlockBehaviour.Properties properties) { - return this.trackType.factory.create(properties, this); + public TrackBlock getBlock() { + return getBlockSupplier().get(); } - public boolean isCustom(String modId) { + public ItemStack asStack() { + return asStack(1); + } + + public ItemStack asStack(int count) { + return new ItemStack(getBlock(), count); + } + + public TrackBlock createBlock(BlockBehaviour.Properties properties) { + return (this.customFactory != null ? this.customFactory : this.trackType.factory) + .create(properties, this); + } + + public boolean isFromMod(String modId) { return this.id.getNamespace().equals(modId); } - public static TrackMaterial[] allCustom(String modid) { - return ALL.values().stream().filter(tm -> tm.isCustom(modid)).toArray(TrackMaterial[]::new); + public static List allFromMod(String modid) { + return ALL.values().stream().filter(tm -> tm.isFromMod(modid)).toList(); } - public static List> allCustomBlocks(String modid) { - List> list = new ArrayList<>(); - for (TrackMaterial material : allCustom(modid)) { - list.add(material.getTrackBlock()); + public static List> allBlocksFromMod(String modid) { + List> list = new ArrayList<>(); + for (TrackMaterial material : allFromMod(modid)) { + list.add(material.getBlockSupplier()); } return list; } - public static List> allBlocks() { - List> list = new ArrayList<>(); + public static List> allBlocks() { + List> list = new ArrayList<>(); for (TrackMaterial material : ALL.values()) { - list.add(material.getTrackBlock()); + list.add(material.getBlockSupplier()); } return list; } @@ -105,10 +133,8 @@ public class TrackMaterial { return ANDESITE; ResourceLocation id = ResourceLocation.tryParse(serializedName); - if (id != null) - for (TrackMaterial material : ALL.values()) - if (material.id.equals(id)) - return material; + if (ALL.containsKey(id)) + return ALL.get(id); Create.LOGGER.error("Failed to locate serialized track material: " + serializedName); return ANDESITE; @@ -116,7 +142,7 @@ public class TrackMaterial { public static class TrackType { @FunctionalInterface - protected interface TrackBlockFactory { + public interface TrackBlockFactory { TrackBlock create(BlockBehaviour.Properties properties, TrackMaterial material); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/TrackMaterialFactory.java b/src/main/java/com/simibubi/create/content/logistics/trains/TrackMaterialFactory.java index 878f09ce2..19c15180c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/TrackMaterialFactory.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/TrackMaterialFactory.java @@ -1,9 +1,13 @@ package com.simibubi.create.content.logistics.trains; +import java.util.function.Supplier; +import java.util.stream.Stream; + +import org.jetbrains.annotations.Nullable; + import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.AllTags; import com.simibubi.create.content.logistics.trains.track.TrackBlock; - import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.resources.ResourceLocation; @@ -13,9 +17,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; -import java.util.function.Supplier; -import java.util.stream.Stream; - public class TrackMaterialFactory { private final ResourceLocation id; private String langName; @@ -25,6 +26,9 @@ public class TrackMaterialFactory { private ResourceLocation particle; private TrackMaterial.TrackType trackType = TrackMaterial.TrackType.STANDARD; + @Nullable + private TrackMaterial.TrackType.TrackBlockFactory customFactory = null; + @OnlyIn(Dist.CLIENT) private TrackMaterial.TrackModelHolder modelHolder; @OnlyIn(Dist.CLIENT) @@ -113,6 +117,11 @@ public class TrackMaterialFactory { return this; } + public TrackMaterialFactory customBlockFactory(TrackMaterial.TrackType.TrackBlockFactory factory) { + this.customFactory = factory; + return this; + } + public TrackMaterial build() { assert trackBlock != null; assert langName != null; @@ -128,6 +137,6 @@ public class TrackMaterialFactory { modelHolder = new TrackMaterial.TrackModelHolder(tieModel, leftSegmentModel, rightSegmentModel); } }); - return new TrackMaterial(id, langName, trackBlock, particle, sleeperIngredient, railsIngredient, trackType, () -> () -> modelHolder); + return new TrackMaterial(id, langName, trackBlock, particle, sleeperIngredient, railsIngredient, trackType, () -> () -> modelHolder, customFactory); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java index 78cc17b3b..5cec4088c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java @@ -789,7 +789,7 @@ public class TrackBlock extends Block for (TrackMaterial material : otherTrackAmounts.keySet()) { int amt = otherTrackAmounts.getOrDefault(material, 0); while (amt > 0) { - stacks.add(new ItemStack(material.getTrackBlock().get(), Math.min(amt, 64))); + stacks.add(material.asStack(Math.min(amt, 64))); amt -= 64; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java index adf3e9707..e8ac39927 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackPlacement.java @@ -522,7 +522,7 @@ public class TrackPlacement { BlockPos offsetPos = pos.offset(offset.x, offset.y, offset.z); BlockState stateAtPos = level.getBlockState(offsetPos); // copy over all shared properties from the shaped state to the correct track material block - BlockState toPlace = copyProperties(state, info.trackMaterial.getTrackBlock().get().defaultBlockState()); + BlockState toPlace = copyProperties(state, info.trackMaterial.getBlock().defaultBlockState()); boolean canPlace = stateAtPos.getMaterial() .isReplaceable(); @@ -545,7 +545,7 @@ public class TrackPlacement { return info; if (!simulate) { - BlockState onto = info.trackMaterial.getTrackBlock().get().defaultBlockState(); + BlockState onto = info.trackMaterial.getBlock().defaultBlockState(); BlockState stateAtPos = level.getBlockState(targetPos1); level.setBlock(targetPos1, ProperWaterloggedBlock.withWater(level, (AllTags.AllBlockTags.TRACKS.matches(stateAtPos) ? stateAtPos : copyProperties(state1, onto)) diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java index d336936a8..88650803b 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java @@ -1,6 +1,9 @@ package com.simibubi.create.foundation.data; +import java.util.ArrayList; +import java.util.Collection; import java.util.function.BiFunction; +import java.util.function.Supplier; import javax.annotation.Nullable; @@ -13,7 +16,9 @@ import com.tterrag.registrate.builders.BuilderCallback; import com.tterrag.registrate.util.OneTimeEventReceiver; import com.tterrag.registrate.util.nullness.NonNullSupplier; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.util.NonNullPredicate; import net.minecraftforge.fml.DistExecutor; @@ -25,6 +30,9 @@ public class CreateTileEntityBuilder extends BlockEnti private NonNullSupplier>> instanceFactory; private NonNullPredicate renderNormally; + private Collection>>> deferredValidBlocks = + new ArrayList<>(); + public static BlockEntityBuilder create(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, BlockEntityFactory factory) { return new CreateTileEntityBuilder<>(owner, parent, name, callback, factory); @@ -35,15 +43,35 @@ public class CreateTileEntityBuilder extends BlockEnti super(owner, parent, name, callback, factory); } - public CreateTileEntityBuilder instance(NonNullSupplier>> instanceFactory) { + public CreateTileEntityBuilder validBlocksDeferred( + NonNullSupplier>> blocks) { + deferredValidBlocks.add(blocks); + return this; + } + + @Override + protected BlockEntityType createEntry() { + deferredValidBlocks.stream() + .map(Supplier::get) + .flatMap(Collection::stream) + .forEach(this::validBlock); + return super.createEntry(); + } + + public CreateTileEntityBuilder instance( + NonNullSupplier>> instanceFactory) { return instance(instanceFactory, true); } - public CreateTileEntityBuilder instance(NonNullSupplier>> instanceFactory, boolean renderNormally) { + public CreateTileEntityBuilder instance( + NonNullSupplier>> instanceFactory, + boolean renderNormally) { return instance(instanceFactory, be -> renderNormally); } - public CreateTileEntityBuilder instance(NonNullSupplier>> instanceFactory, NonNullPredicate renderNormally) { + public CreateTileEntityBuilder instance( + NonNullSupplier>> instanceFactory, + NonNullPredicate renderNormally) { if (this.instanceFactory == null) { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::registerInstance); } @@ -56,7 +84,8 @@ public class CreateTileEntityBuilder extends BlockEnti protected void registerInstance() { OneTimeEventReceiver.addModListener(FMLClientSetupEvent.class, $ -> { - NonNullSupplier>> instanceFactory = this.instanceFactory; + NonNullSupplier>> instanceFactory = + this.instanceFactory; if (instanceFactory != null) { NonNullPredicate renderNormally = this.renderNormally; InstancedRenderRegistry.configure(getEntry()) diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java index e3905f033..c1faea210 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java @@ -21,17 +21,13 @@ import com.simibubi.create.foundation.ponder.content.trains.TrackScenes; import com.simibubi.create.foundation.ponder.content.trains.TrainScenes; import com.simibubi.create.foundation.ponder.content.trains.TrainSignalScenes; import com.simibubi.create.foundation.ponder.content.trains.TrainStationScenes; - import com.tterrag.registrate.util.entry.BlockEntry; -import com.tterrag.registrate.util.entry.ItemProviderEntry; import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; -import java.util.stream.Collectors; - public class PonderIndex { static final PonderRegistrationHelper HELPER = new PonderRegistrationHelper(Create.ID); @@ -312,12 +308,14 @@ public class PonderIndex { .addStoryBoard("rose_quartz_lamp", RedstoneScenes2::roseQuartzLamp); // Trains - HELPER.forComponents(TrackMaterial.allBlocks().stream() - .map((trackSupplier) -> new BlockEntry( - // note: these blocks probably WON'T be in the Create Registrate, but a simple code trace reveals the Entry's registrate isn't used - Create.REGISTRATE, - RegistryObject.create(trackSupplier.get().getRegistryName(), ForgeRegistries.BLOCKS))) - .toList()) + HELPER.forComponents(TrackMaterial.allBlocks() + .stream() + .map((trackSupplier) -> new BlockEntry( + // note: these blocks probably WON'T be in the Create Registrate, but a simple + // code trace reveals the Entry's registrate isn't used + Create.REGISTRATE, RegistryObject.create(trackSupplier.get() + .getRegistryName(), ForgeRegistries.BLOCKS))) + .toList()) .addStoryBoard("train_track/placement", TrackScenes::placement) .addStoryBoard("train_track/portal", TrackScenes::portal) .addStoryBoard("train_track/chunks", TrackScenes::chunks);