From 038c458ee670e566b4d15088a8f1d07aa05065cf Mon Sep 17 00:00:00 2001 From: MrTJP Date: Thu, 2 May 2024 16:44:54 -0400 Subject: [PATCH] feat: port to 1.20.1 --- README.md | 13 +- api/build.gradle | 4 +- core/build.gradle | 14 +- ... 31c38579459bc2822e8b63fab8c1617bc12855ad} | 2 +- .../369319b1096662d1b1e3002fd1e543e3b0ce22c2 | 2 +- ... 60c196ec329f374e76e48683e89ad3aaa6e8aa32} | 2 +- ... 99a5d1555286bf25041b61b612844755348b72f5} | 2 +- ... a13141127d84ce466c022270707e855b1490e862} | 2 +- ... b0f137dfc10ced131e28cda728f7d0482d1c6142} | 2 +- .../f287af4f9f91df133198713f222d72b1ed1c435d | 2 +- .../ComputerCraftCompatibility.java | 4 +- .../mrtjp/projectred/core/CoreNetwork.java | 2 +- .../mrtjp/projectred/core/ProjectRedCore.java | 28 ++-- .../core/block/ProjectRedBlock.java | 6 +- .../core/client/FixedScalePostChain.java | 4 +- .../client/FullyOrientableBlockRenderer.java | 6 +- .../projectred/core/client/HaloRenderer.java | 14 +- .../data/CoreBlockStateModelProvider.java | 6 +- .../core/data/CoreBlockTagsProvider.java | 18 +- .../core/data/CoreItemModelProvider.java | 11 +- .../core/data/CoreItemTagsProvider.java | 18 +- .../core/data/CoreLanguageProvider.java | 6 +- .../core/data/CoreLootTableProvider.java | 12 +- .../core/data/CoreRecipeProvider.java | 12 +- .../inventory/ElectrotineGeneratorScreen.java | 31 ++-- .../projectred/core/init/CoreBlocks.java | 2 +- .../projectred/core/init/CoreClientInit.java | 3 +- .../core/init/CoreCreativeModeTabs.java | 86 ++++++++++ .../mrtjp/projectred/core/init/CoreItems.java | 3 +- .../ElectrotineGeneratorContainer.java | 2 +- .../projectred/core/item/DrawPlateItem.java | 4 +- .../projectred/core/item/MultimeterItem.java | 4 +- .../projectred/core/item/ScrewdriverItem.java | 5 +- .../java/mrtjp/projectred/lib/GuiLib.java | 19 ++- .../mrtjp/projectred/lib/InventoryLib.java | 2 +- .../projectred/redui/AbstractButtonNode.java | 28 ++-- .../redui/AbstractCheckboxNode.java | 10 +- .../mrtjp/projectred/redui/ButtonNode.java | 8 +- .../mrtjp/projectred/redui/DebugRectNode.java | 21 ++- .../mrtjp/projectred/redui/ItemStackNode.java | 25 +-- .../redui/RedUIContainerScreen.java | 27 +-- .../mrtjp/projectred/redui/RedUINode.java | 80 +++++---- .../mrtjp/projectred/redui/RedUIRootNode.java | 17 +- .../mrtjp/projectred/redui/RedUIScreen.java | 23 +-- .../mrtjp/projectred/redui/ScrollBarNode.java | 11 +- .../projectred/redui/SpriteButtonNode.java | 6 +- .../mrtjp/projectred/redui/TextBoxNode.java | 13 +- .../projectred/redui/ViewportRenderNode.java | 10 +- .../resources/META-INF/accesstransformer.cfg | 1 + core/src/main/resources/META-INF/mods.toml | 2 +- expansion/build.gradle | 8 +- ... 0c18def4a2dd49b36bdde830b5d5ef609a7f363c} | 2 +- .../428f0a17e1411feb5e83cc480747073fbd215b4f | 2 +- ... 98021baac73a5ba6d8abdf74b58bed538009ec7e} | 2 +- ... 9d72461853cb94f175be2ec0cd30be96b91066f9} | 2 +- ... b71c44817acda374fc60c60d51d7f5eec540e17e} | 2 +- ... e9b9ccd445df9bc8a5c2450219d2603d62d31dd5} | 2 +- .../projectred/expansion/CraftingHelper.java | 34 ++-- .../projectred/expansion/MovementManager.java | 2 +- .../expansion/ProjectRedExpansion.java | 26 +-- .../expansion/block/BatteryBoxBlock.java | 4 +- .../expansion/block/FrameBlock.java | 5 +- .../expansion/client/FrameBlockRenderer.java | 4 +- .../expansion/client/FrameModelRenderer.java | 8 +- .../client/FrameMotorBlockRenderer.java | 20 ++- .../ExpansionBlockStateModelProvider.java | 13 +- .../data/ExpansionBlockTagsProvider.java | 18 +- .../data/ExpansionItemModelProvider.java | 11 +- .../data/ExpansionLanguageProvider.java | 6 +- .../data/ExpansionLootTableProvider.java | 12 +- .../data/ExpansionRecipeProvider.java | 12 +- .../screen/inventory/AutoCrafterScreen.java | 49 +++--- .../screen/inventory/BatteryBoxScreen.java | 20 +-- .../screen/inventory/ChargingBenchScreen.java | 20 +-- .../screen/inventory/ProjectBenchScreen.java | 40 ++--- .../expansion/init/ExpansionBlocks.java | 16 +- .../expansion/init/ExpansionClientInit.java | 6 +- .../init/ExpansionCreativeModeTabs.java | 44 +++++ .../container/AutoCrafterContainer.java | 2 +- .../container/BatteryBoxContainer.java | 2 +- .../container/ChargingBenchContainer.java | 2 +- .../container/ProjectBenchContainer.java | 2 +- .../expansion/item/BatteryItem.java | 2 - .../item/ElectricScrewdriverItem.java | 2 - .../expansion/item/EmptyBatteryItem.java | 3 +- .../expansion/item/RecipePlanItem.java | 3 +- .../projectred/expansion/part/FramePart.java | 2 +- .../src/main/resources/META-INF/mods.toml | 2 +- exploration/build.gradle | 8 +- ... 09d015dc330d59f8eec0a6dc4d86adf5d6409937} | 2 +- .../103d9f3f36b01595f1aa5172191e60eff02e6924 | 21 +++ ... 30ecaeb03adbe27d1b319f84eb0efc911b701acc} | 2 +- ... 6b84c9412d1bd687544400cc0e3b12cc81627f4c} | 2 +- ... 81b061f8c78f7d01ca902511a501febdab7e0b84} | 2 +- .../8334375f2c689bc1064105fb5f28a68385b7f9ae | 8 - ... 99a5d1555286bf25041b61b612844755348b72f5} | 2 +- .../d9c1e35ddba8a1b293edd840b666d1c4118383a9 | 2 +- .../fe07d4479e71b97bd5ac0800f5195045ee93364b | 2 +- .../add_electrotine_ore_to_overworld.json | 57 +------ .../add_marble_cave_to_overworld.json | 72 +------- .../add_peridot_ore_to_overworld.json | 51 +----- .../add_ruby_ore_to_overworld.json | 51 +----- .../add_sapphire_ore_to_overworld.json | 51 +----- .../add_silver_ore_to_overworld.json | 51 +----- .../add_tin_ore_to_overworld.json | 51 +----- .../configured_carver/marble_cave.json | 71 ++++++++ .../configured_feature/electrotine_ore.json | 33 ++++ .../configured_feature/peridot_ore.json | 27 +++ .../worldgen/configured_feature/ruby_ore.json | 27 +++ .../configured_feature/sapphire_ore.json | 27 +++ .../configured_feature/silver_ore.json | 27 +++ .../worldgen/configured_feature/tin_ore.json | 27 +++ .../placed_feature/electrotine_ore.json | 24 +++ .../worldgen/placed_feature/peridot_ore.json | 24 +++ .../worldgen/placed_feature/ruby_ore.json | 24 +++ .../worldgen/placed_feature/sapphire_ore.json | 24 +++ .../worldgen/placed_feature/silver_ore.json | 24 +++ .../worldgen/placed_feature/tin_ore.json | 24 +++ .../exploration/ProjectRedExploration.java | 39 +++-- .../block/ElectrotineOreBlock.java | 2 +- .../ExplorationBlockStateModelProvider.java | 6 +- .../data/ExplorationBlockTagsProvider.java | 19 +-- .../ExplorationBuiltInEntriesProvider.java | 27 +++ .../data/ExplorationItemModelProvider.java | 11 +- .../data/ExplorationItemTagsProvider.java | 14 +- .../data/ExplorationLanguageProvider.java | 6 +- .../data/ExplorationLootTableProvider.java | 12 +- .../data/ExplorationRecipeProvider.java | 11 +- .../gui/screen/inventory/BackpackScreen.java | 10 +- .../exploration/init/ExplorationBlocks.java | 27 +-- .../init/ExplorationCreativeModeTabs.java | 153 +++++++++++++++++ .../exploration/init/ExplorationItems.java | 60 +++---- .../init/ExplorationRecipeSerializers.java | 6 +- .../init/ExplorationWorldFeatures.java | 154 +++++++++++------- .../exploration/item/AthameItem.java | 3 +- .../exploration/item/BackpackItem.java | 4 +- .../exploration/item/SickleItem.java | 2 +- .../exploration/item/WoolGinItem.java | 5 +- .../item/crafting/BackpackDyeRecipe.java | 8 +- .../src/main/resources/META-INF/mods.toml | 2 +- fabrication/build.gradle | 8 +- ... 4cbdb80d40a3d0a708ad9fd5e4bf268842bd5f55} | 2 +- .../af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 | 2 +- .../e5496206be7dec22fb1b8834725b534373bac693 | 2 +- ... f4bc7ca4a5ee1414f9ce87c9fc7ed455122fbce7} | 2 +- .../fabrication/ProjectRedFabrication.java | 19 ++- .../FabricationBlockStateModelProvider.java | 6 +- .../data/FabricationItemModelProvider.java | 11 +- .../data/FabricationLanguageProvider.java | 6 +- .../data/FabricationRecipeProvider.java | 12 +- .../fabrication/gui/CTNListNode.java | 12 +- .../fabrication/gui/CompileProblemsTab.java | 13 +- .../fabrication/gui/CompileStackTab.java | 13 +- .../fabrication/gui/CompileTreeTab.java | 15 +- .../fabrication/gui/EraserToolTab.java | 9 +- .../fabrication/gui/GatePlacerToolTab.java | 13 +- .../fabrication/gui/ICEditorToolTab.java | 33 ++-- .../fabrication/gui/ICRenderTypes.java | 47 +++--- .../fabrication/gui/InteractToolTab.java | 9 +- .../fabrication/gui/PipelineDiagramNode.java | 12 +- .../fabrication/gui/ProblemListNode.java | 12 +- .../fabrication/gui/SelectionGridNode.java | 16 +- .../fabrication/gui/SimpleUVTab.java | 10 +- .../fabrication/gui/TabButtonNode.java | 20 +-- .../fabrication/gui/VerticalListNode.java | 19 +-- .../fabrication/gui/WirePlacerToolTab.java | 14 +- .../gui/screen/ICWorkbenchCompileTab.java | 32 ++-- .../gui/screen/ICWorkbenchEditTab.java | 12 +- .../gui/screen/ICWorkbenchInfoTab.java | 16 +- .../gui/screen/ICWorkbenchScreen.java | 18 +- .../inventory/LithographyTableScreen.java | 20 +-- .../inventory/PackagingTableScreen.java | 22 ++- .../screen/inventory/PlottingTableScreen.java | 20 +-- .../fabrication/init/FabricationBlocks.java | 8 +- .../init/FabricationClientInit.java | 8 +- .../init/FabricationCreativeModeTab.java | 41 +++++ .../container/LithographyTableContainer.java | 2 +- .../container/PackagingTableContainer.java | 2 +- .../container/PlottingTableContainer.java | 2 +- .../item/BaseSiliconWaferItem.java | 4 +- .../fabrication/item/BlankPhotomaskItem.java | 4 +- .../item/EtchedSiliconWaferItem.java | 2 - .../fabrication/item/ICBlueprintItem.java | 2 - .../fabrication/item/InvalidDieItem.java | 4 +- .../fabrication/item/PhotomaskSetItem.java | 4 +- .../fabrication/item/ValidDieItem.java | 4 +- .../fabrication/part/FabricatedGatePart.java | 2 +- .../src/main/resources/META-INF/mods.toml | 2 +- ..._wafer copy.png => base_silicon_wafer.png} | Bin gradle.properties | 14 +- gradle/wrapper/gradle-wrapper.jar | Bin 61574 -> 62076 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 11 +- illumination/build.gradle | 8 +- ... 0bff00c43f6afffc865d20256c78224a8f143cd8} | 2 +- ... 7ae6c4ef44a093cc44e42d9d617e1d54a384e8ad} | 2 +- .../be1ef78e8a7cc1ad66607d87653d2e29da533af1 | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- ... de8f1463ae18badd128ae0b90e2804a44e8f416c} | 2 +- .../illumination/BlockLightType.java | 9 +- .../MultipartLightProperties.java | 8 +- .../illumination/MultipartLightType.java | 5 + .../illumination/ProjectRedIllumination.java | 22 +-- .../illumination/block/IllumarLampBlock.java | 6 +- .../client/IllumarLampItemRenderer.java | 8 +- .../data/IlluminationBlockLootProvider.java | 13 +- .../IlluminationBlockStateModelProvider.java | 6 +- .../data/IlluminationCreativeModeTabs.java | 53 ++++++ .../data/IlluminationItemModelProvider.java | 11 +- .../data/IlluminationLanguageProvider.java | 6 +- .../data/IlluminationRecipeProvider.java | 12 +- .../init/IlluminationClientInit.java | 34 ++-- .../item/MultipartLightPartItem.java | 3 +- .../part/CageLightProperties.java | 8 +- .../part/FalloutLightProperties.java | 6 +- .../part/FixtureLightProperties.java | 8 +- .../part/IllumarLampMicroMaterial.java | 4 +- .../part/LanternLightProperties.java | 8 +- .../src/main/resources/META-INF/mods.toml | 2 +- integration/build.gradle | 8 +- ... 8a6f9a0278662d141141aabe64bfbd22f6606579} | 2 +- ... b9ddfcf5a3b2c71c82c4c7bcb7b68a2dc2a3f3f1} | 2 +- .../f683280d6f7a8a0c30af620bdaff75e1b58adcdb | 2 +- .../projectred/integration/GateType.java | 2 +- .../integration/IntegrationNetwork.java | 4 +- .../integration/ProjectRedIntegration.java | 17 +- .../client/GateComponentModels.java | 85 +++++----- .../integration/client/GateModelRenderer.java | 12 +- .../client/GatePartItemRenderer.java | 6 +- .../data/IntegrationItemModelProvider.java | 14 +- .../data/IntegrationLanguageProvider.java | 6 +- .../data/IntegrationRecipeProvider.java | 12 +- .../integration/gui/screen/CounterScreen.java | 18 +- .../integration/gui/screen/TimerScreen.java | 12 +- .../init/IntegrationClientInit.java | 4 +- .../init/IntegrationCreativeModeTabs.java | 29 ++++ .../integration/item/GatePartItem.java | 7 +- .../integration/part/ArrayGatePart.java | 2 +- .../src/main/resources/META-INF/mods.toml | 2 +- runtime/build.gradle | 4 +- settings.gradle | 10 +- transmission/build.gradle | 10 +- .../1eb909bc2f32a9d98a678d7fc96e42309be491b5 | 1 + ... 559edefec34c0193b89f0dfbc70e66bb4fcf6966} | 2 +- ... 5d3ba082c682ce8e4c01b877afa3197c3fa54da9} | 2 +- .../6b41d303ff2565e607848497b87d2268a31dea17 | 2 +- .../e54b2aa820d3c45e5a8670f80d66b111475d334d | 2 +- .../transmission/ProjectRedTransmission.java | 27 +-- .../projectred/transmission/WireType.java | 23 ++- .../client/FramedWireHighlightRenderer.java | 2 +- .../client/FramedWirePartItemRenderer.java | 4 +- .../client/WirePartItemRenderer.java | 4 +- .../data/TransmissionBlockTagsProvider.java | 23 +++ .../data/TransmissionItemModelProvider.java | 11 +- .../data/TransmissionItemTagsProvider.java | 15 +- .../data/TransmissionLanguageProvider.java | 6 +- .../data/TransmissionRecipeProvider.java | 11 +- .../init/TransmissionClientInit.java | 4 +- .../init/TransmissionCreativeModeTabs.java | 28 ++++ .../transmission/item/CenterWirePartItem.java | 3 +- .../transmission/item/FaceWirePartItem.java | 3 +- .../src/main/resources/META-INF/mods.toml | 2 +- 262 files changed, 2042 insertions(+), 1694 deletions(-) rename core/src/main/generated/.cache/{6ad68a6a2f01e2373b60e3b69d7d055e25c7022f => 31c38579459bc2822e8b63fab8c1617bc12855ad} (64%) rename core/src/main/generated/.cache/{69d0f58324dc258740fc99c3a3ec4f1098899269 => 60c196ec329f374e76e48683e89ad3aaa6e8aa32} (98%) rename core/src/main/generated/.cache/{e081f502b1a8308368ef42d544696e6387b0334e => 99a5d1555286bf25041b61b612844755348b72f5} (90%) rename core/src/main/generated/.cache/{fd5d45053107fff40a48f8a1664d8f75ce623e97 => a13141127d84ce466c022270707e855b1490e862} (98%) rename core/src/main/generated/.cache/{d7defdcd40c8ebdaa2225ed24a56c7bce92914ac => b0f137dfc10ced131e28cda728f7d0482d1c6142} (51%) create mode 100644 core/src/main/java/mrtjp/projectred/core/init/CoreCreativeModeTabs.java rename expansion/src/main/generated/.cache/{57789ef8655def09ed7848cfbfb28dd91885f7bf => 0c18def4a2dd49b36bdde830b5d5ef609a7f363c} (93%) rename expansion/src/main/generated/.cache/{adb03774103e92976a10da6bfa0dbaab10acde0d => 98021baac73a5ba6d8abdf74b58bed538009ec7e} (92%) rename expansion/src/main/generated/.cache/{557a8b1be9867ac0c847f14b5f2b36bb6445215c => 9d72461853cb94f175be2ec0cd30be96b91066f9} (74%) rename expansion/src/main/generated/.cache/{72d9ae780b67af0f9d7a123ca0dccc34f690e42e => b71c44817acda374fc60c60d51d7f5eec540e17e} (97%) rename expansion/src/main/generated/.cache/{6ea35d4d32933d1d5128eec69e7685517fce9b40 => e9b9ccd445df9bc8a5c2450219d2603d62d31dd5} (96%) create mode 100644 expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionCreativeModeTabs.java rename exploration/src/main/generated/.cache/{9edd3baac41f9bc21260cb68f9502d388c6d64ae => 09d015dc330d59f8eec0a6dc4d86adf5d6409937} (97%) create mode 100644 exploration/src/main/generated/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 rename exploration/src/main/generated/.cache/{5ffbcca2b9701e1fb56327dfc2c3763c361e7832 => 30ecaeb03adbe27d1b319f84eb0efc911b701acc} (95%) rename exploration/src/main/generated/.cache/{559a0a846b867aef86c70db2e455235719f3b18c => 6b84c9412d1bd687544400cc0e3b12cc81627f4c} (99%) rename exploration/src/main/generated/.cache/{0aed8341631ecb057f97f8866d5170e4ddc46c8c => 81b061f8c78f7d01ca902511a501febdab7e0b84} (99%) delete mode 100644 exploration/src/main/generated/.cache/8334375f2c689bc1064105fb5f28a68385b7f9ae rename exploration/src/main/generated/.cache/{03e4de26f1265135874f8cdcaebc09d9c08eb42b => 99a5d1555286bf25041b61b612844755348b72f5} (97%) create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/configured_carver/marble_cave.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/electrotine_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/peridot_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/ruby_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/sapphire_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/silver_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/tin_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/electrotine_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/peridot_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/ruby_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/sapphire_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/silver_ore.json create mode 100644 exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/tin_ore.json create mode 100644 exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBuiltInEntriesProvider.java create mode 100644 exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationCreativeModeTabs.java rename fabrication/src/main/generated/.cache/{1705df09b9fdc30fb5ecd87a6ad3c3b266cdaf15 => 4cbdb80d40a3d0a708ad9fd5e4bf268842bd5f55} (94%) rename fabrication/src/main/generated/.cache/{12b76405d67198324fd12d519b71f5597704a0e2 => f4bc7ca4a5ee1414f9ce87c9fc7ed455122fbce7} (90%) create mode 100644 fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationCreativeModeTab.java rename fabrication/src/main/resources/assets/projectred_fabrication/textures/item/{rough_silicon_wafer copy.png => base_silicon_wafer.png} (100%) rename illumination/src/main/generated/.cache/{2b7776bd503c0a3d6dc4b121fe385660c1c6dc19 => 0bff00c43f6afffc865d20256c78224a8f143cd8} (99%) rename illumination/src/main/generated/.cache/{73585f9635c75d62bca484a7ea9ba4b7d3c67a68 => 7ae6c4ef44a093cc44e42d9d617e1d54a384e8ad} (98%) rename illumination/src/main/generated/.cache/{3c5437fdfe8bcc1d7d617f64e23b502caa42a0e1 => de8f1463ae18badd128ae0b90e2804a44e8f416c} (99%) create mode 100644 illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationCreativeModeTabs.java rename integration/src/main/generated/.cache/{526ce634a960ac369a2c4b9b4759a1ac828072b9 => 8a6f9a0278662d141141aabe64bfbd22f6606579} (97%) rename integration/src/main/generated/.cache/{d2e28d0b24700dc4dcfce7fd844e669cced81250 => b9ddfcf5a3b2c71c82c4c7bcb7b68a2dc2a3f3f1} (97%) create mode 100644 integration/src/main/java/mrtjp/projectred/integration/init/IntegrationCreativeModeTabs.java create mode 100644 transmission/src/main/generated/.cache/1eb909bc2f32a9d98a678d7fc96e42309be491b5 rename transmission/src/main/generated/.cache/{6d0840d31557e28cf82c27a6ae2284c2850a7e58 => 559edefec34c0193b89f0dfbc70e66bb4fcf6966} (99%) rename transmission/src/main/generated/.cache/{16031a72c26639038310f7abc4fd8c962ad52894 => 5d3ba082c682ce8e4c01b877afa3197c3fa54da9} (99%) create mode 100644 transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionBlockTagsProvider.java create mode 100644 transmission/src/main/java/mrtjp/projectred/transmission/init/TransmissionCreativeModeTabs.java diff --git a/README.md b/README.md index cbdb9a580..707b9db0e 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,13 @@ A Minecraft Forge mod all about Redstone circuity. -| MC Version | Branch | Latest Release | Latest Beta | Status | -|:----------:|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| -| 1.19.2 | `main` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.19-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.19-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | Active | -| 1.18.2 | `main/1.18` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.18-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.18-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | Maintenance | -| 1.16.5 | `main/1.16` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.16-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.16-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | End-of-Life | -| 1.15.2 | `main/1.15` | N/A | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.15-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | End-of-Life | +| MC Version | Branch | Latest Release | Latest Beta | Status | +|:----------:|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------| +| 1.20.1 | `main` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.20-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.20-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | Active | +| 1.19.2 | `main/1.19` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.19-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.19-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | Active | +| 1.18.2 | `main/1.18` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.18-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.18-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | Maintenance | +| 1.16.5 | `main/1.16` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.16-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.16-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | End-of-Life | +| 1.15.2 | `main/1.15` | N/A | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.15-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | End-of-Life | ## Development Environment Setup diff --git a/api/build.gradle b/api/build.gradle index 977fa524a..6c7a5a6dd 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.minecraftforge.gradle' + id 'net.neoforged.gradle' } minecraft { @@ -8,6 +8,6 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" + minecraft "net.neoforged:forge:${mc_version}-${forge_version}" } diff --git a/core/build.gradle b/core/build.gradle index da7e2460a..5bf1c2c7a 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.minecraftforge.gradle' + id 'net.neoforged.gradle' id 'com.matthewprenger.cursegradle' } @@ -28,10 +28,10 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" + minecraft "net.neoforged:forge:${mc_version}-${forge_version}" - implementation fg.deobf("codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") - implementation fg.deobf("codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") + implementation fg.deobf("io.codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") + implementation fg.deobf("io.codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") // JEI compileOnly(fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}")) @@ -39,8 +39,10 @@ dependencies { runtimeOnly(fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}")) // CCTweaked - compileOnly fg.deobf("org.squiddev:cc-tweaked-${mc_version}:${cct_version}:api") - runtimeOnly fg.deobf("org.squiddev:cc-tweaked-${mc_version}:${cct_version}") + compileOnly("cc.tweaked:cc-tweaked-${mc_version}-common-api:${cct_version}") + compileOnly("cc.tweaked:cc-tweaked-${mc_version}-core-api:${cct_version}") + compileOnly(fg.deobf("cc.tweaked:cc-tweaked-${mc_version}-forge-api:${cct_version}")) + runtimeOnly(fg.deobf("cc.tweaked:cc-tweaked-${mc_version}-forge:${cct_version}")) testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2' diff --git a/core/src/main/generated/.cache/6ad68a6a2f01e2373b60e3b69d7d055e25c7022f b/core/src/main/generated/.cache/31c38579459bc2822e8b63fab8c1617bc12855ad similarity index 64% rename from core/src/main/generated/.cache/6ad68a6a2f01e2373b60e3b69d7d055e25c7022f rename to core/src/main/generated/.cache/31c38579459bc2822e8b63fab8c1617bc12855ad index e5f2018ea..4ec0a4a10 100644 --- a/core/src/main/generated/.cache/6ad68a6a2f01e2373b60e3b69d7d055e25c7022f +++ b/core/src/main/generated/.cache/31c38579459bc2822e8b63fab8c1617bc12855ad @@ -1,2 +1,2 @@ -// 1.19.2 2024-03-04T11:18:00.069539 ProjectRed-Core Block Loot Tables +// 1.20.1 2024-05-02T16:36:18.642499 projectred_core Block Loot Tables edf858efe8491e7cce71f1a266f10e218c81a42c data/projectred_core/loot_tables/blocks/electrotine_generator.json diff --git a/core/src/main/generated/.cache/369319b1096662d1b1e3002fd1e543e3b0ce22c2 b/core/src/main/generated/.cache/369319b1096662d1b1e3002fd1e543e3b0ce22c2 index 1fcae90ed..237ff05a2 100644 --- a/core/src/main/generated/.cache/369319b1096662d1b1e3002fd1e543e3b0ce22c2 +++ b/core/src/main/generated/.cache/369319b1096662d1b1e3002fd1e543e3b0ce22c2 @@ -1,2 +1,2 @@ -// 1.19.2 2024-03-04T11:18:00.067912 ProjectRed-Core Languages: en_us +// 1.20.1 2024-05-02T16:36:18.64587 ProjectRed-Core Languages: en_us 789a8db6ffa570c8db0bb245338757a5c3790ae6 assets/projectred_core/lang/en_us.json diff --git a/core/src/main/generated/.cache/69d0f58324dc258740fc99c3a3ec4f1098899269 b/core/src/main/generated/.cache/60c196ec329f374e76e48683e89ad3aaa6e8aa32 similarity index 98% rename from core/src/main/generated/.cache/69d0f58324dc258740fc99c3a3ec4f1098899269 rename to core/src/main/generated/.cache/60c196ec329f374e76e48683e89ad3aaa6e8aa32 index e93983b88..bc2a15cc5 100644 --- a/core/src/main/generated/.cache/69d0f58324dc258740fc99c3a3ec4f1098899269 +++ b/core/src/main/generated/.cache/60c196ec329f374e76e48683e89ad3aaa6e8aa32 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-04T11:18:00.068664 ProjectRed-Core Recipes +// 1.20.1 2024-05-02T16:36:18.636221 projectred_core Recipes. 6df9318cfe3b74a47229e918565717ef412c448a data/projectred_core/recipes/anode.json f250ff3d3454f55fadea66dc89afea26c601ae4d data/projectred_core/recipes/black_illumar.json 236725b2b0282de7ba2f80261320dcde31ed3df8 data/projectred_core/recipes/blue_illumar.json diff --git a/core/src/main/generated/.cache/e081f502b1a8308368ef42d544696e6387b0334e b/core/src/main/generated/.cache/99a5d1555286bf25041b61b612844755348b72f5 similarity index 90% rename from core/src/main/generated/.cache/e081f502b1a8308368ef42d544696e6387b0334e rename to core/src/main/generated/.cache/99a5d1555286bf25041b61b612844755348b72f5 index 4589ccf1e..a012fd8d3 100644 --- a/core/src/main/generated/.cache/e081f502b1a8308368ef42d544696e6387b0334e +++ b/core/src/main/generated/.cache/99a5d1555286bf25041b61b612844755348b72f5 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-04T11:18:00.061721 ProjectRed-Core Item Tags +// 1.20.1 2024-05-02T16:36:18.646512 Tags for minecraft:item mod id projectred_core 92105d826828321073ede0ce0ecce9d84a8df0db data/forge/tags/items/dusts.json 6a3de78381bcb92b0a8f9953c598cf7fc42cb3c6 data/forge/tags/items/dusts/electrotine.json 9bb828e78355e586e44d0350583fbdf5610a36f6 data/forge/tags/items/gems.json diff --git a/core/src/main/generated/.cache/fd5d45053107fff40a48f8a1664d8f75ce623e97 b/core/src/main/generated/.cache/a13141127d84ce466c022270707e855b1490e862 similarity index 98% rename from core/src/main/generated/.cache/fd5d45053107fff40a48f8a1664d8f75ce623e97 rename to core/src/main/generated/.cache/a13141127d84ce466c022270707e855b1490e862 index 94d464895..92c3ae2fb 100644 --- a/core/src/main/generated/.cache/fd5d45053107fff40a48f8a1664d8f75ce623e97 +++ b/core/src/main/generated/.cache/a13141127d84ce466c022270707e855b1490e862 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-04T11:18:00.065557 ProjectRed-Core Item Models +// 1.20.1 2024-05-02T16:36:18.646807 projectred_core Item models. b12b23b4ee2dfe55a99741d7fe8e6f4787e348c5 assets/projectred_core/models/item/anode.json 862e1a7b058c18759bc2dddce1211e6b3b96f341 assets/projectred_core/models/item/black_illumar.json 8da2c7613c8d8a99280b69d798966b4556950a49 assets/projectred_core/models/item/blue_illumar.json diff --git a/core/src/main/generated/.cache/d7defdcd40c8ebdaa2225ed24a56c7bce92914ac b/core/src/main/generated/.cache/b0f137dfc10ced131e28cda728f7d0482d1c6142 similarity index 51% rename from core/src/main/generated/.cache/d7defdcd40c8ebdaa2225ed24a56c7bce92914ac rename to core/src/main/generated/.cache/b0f137dfc10ced131e28cda728f7d0482d1c6142 index 7ac0290a6..66c5e8a7b 100644 --- a/core/src/main/generated/.cache/d7defdcd40c8ebdaa2225ed24a56c7bce92914ac +++ b/core/src/main/generated/.cache/b0f137dfc10ced131e28cda728f7d0482d1c6142 @@ -1,2 +1,2 @@ -// 1.19.2 2024-03-04T11:18:00.069767 ProjectRed-Core Block Tags +// 1.20.1 2024-05-02T16:36:18.649205 Tags for minecraft:block mod id projectred_core dabd78c12058db0f6f5c9f20eb3ab78775843770 data/minecraft/tags/blocks/mineable/pickaxe.json diff --git a/core/src/main/generated/.cache/f287af4f9f91df133198713f222d72b1ed1c435d b/core/src/main/generated/.cache/f287af4f9f91df133198713f222d72b1ed1c435d index aa3ebed9b..e04b3e0cf 100644 --- a/core/src/main/generated/.cache/f287af4f9f91df133198713f222d72b1ed1c435d +++ b/core/src/main/generated/.cache/f287af4f9f91df133198713f222d72b1ed1c435d @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-04T11:18:00.068435 ProjectRed-Core Block State Models +// 1.20.1 2024-05-02T16:36:18.64417 ProjectRed-Core Block State Models 2066fd5cf5e8c7b963f617014ef5e6fe2bf6671a assets/projectred_core/blockstates/electrotine_generator.json 76a3e81fab4af40997c86364497b3c682571c4bd assets/projectred_core/models/block/electrotine_generator.json 2320dfd49b9c2dc8024323870ab92e6ed68b2f1f assets/projectred_core/models/block/electrotine_generator_state1.json diff --git a/core/src/main/java/mrtjp/projectred/compatibility/ComputerCraftCompatibility.java b/core/src/main/java/mrtjp/projectred/compatibility/ComputerCraftCompatibility.java index 9ae374ba2..05282cb31 100644 --- a/core/src/main/java/mrtjp/projectred/compatibility/ComputerCraftCompatibility.java +++ b/core/src/main/java/mrtjp/projectred/compatibility/ComputerCraftCompatibility.java @@ -1,7 +1,7 @@ package mrtjp.projectred.compatibility; import dan200.computercraft.api.ComputerCraftAPI; -import dan200.computercraft.api.redstone.IBundledRedstoneProvider; +import dan200.computercraft.api.redstone.BundledRedstoneProvider; import mrtjp.projectred.api.IBundledTileInteraction; import mrtjp.projectred.api.ProjectRedAPI; import mrtjp.projectred.core.BundledSignalsLib; @@ -26,7 +26,7 @@ public static void init(Object ccModObject) { /** * This is used by ComputerCraft to query bundled signals from third-party entities */ - private static class CCPRBundledRedstoneProvider implements IBundledRedstoneProvider { + private static class CCPRBundledRedstoneProvider implements BundledRedstoneProvider { @Override public int getBundledRedstoneOutput(@Nonnull Level world, @Nonnull BlockPos pos, @Nonnull Direction side) { assert ProjectRedAPI.transmissionAPI != null; diff --git a/core/src/main/java/mrtjp/projectred/core/CoreNetwork.java b/core/src/main/java/mrtjp/projectred/core/CoreNetwork.java index aebdf8543..679f50624 100644 --- a/core/src/main/java/mrtjp/projectred/core/CoreNetwork.java +++ b/core/src/main/java/mrtjp/projectred/core/CoreNetwork.java @@ -76,7 +76,7 @@ private static class ServerHandler implements ICustomPacketHandler.IServerPacket public void handlePacket(PacketCustom packet, ServerPlayer sender, ServerGamePacketListenerImpl handler) { switch (packet.getType()) { case NET_TILE_PACKET_TO_SERVER: - handleTilePacket(sender.getLevel(), packet, sender); + handleTilePacket(sender.level(), packet, sender); break; default: // unknown key diff --git a/core/src/main/java/mrtjp/projectred/core/ProjectRedCore.java b/core/src/main/java/mrtjp/projectred/core/ProjectRedCore.java index cc2164973..76ea7378f 100644 --- a/core/src/main/java/mrtjp/projectred/core/ProjectRedCore.java +++ b/core/src/main/java/mrtjp/projectred/core/ProjectRedCore.java @@ -1,18 +1,20 @@ package mrtjp.projectred.core; -import codechicken.lib.gui.SimpleCreativeTab; import codechicken.multipart.api.MultipartType; import mrtjp.projectred.compatibility.ComputerCraftCompatibility; import mrtjp.projectred.core.data.*; import mrtjp.projectred.core.init.*; +import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.data.BlockTagsProvider; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.IEventBus; @@ -41,14 +43,14 @@ public class ProjectRedCore { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MOD_ID); public static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, MOD_ID); public static final DeferredRegister> PART_TYPES = DeferredRegister.create(MultipartType.MULTIPART_TYPES, MOD_ID); - - public static final SimpleCreativeTab CORE_CREATIVE_TAB = new SimpleCreativeTab(MOD_ID, () -> new ItemStack(CoreItems.RED_ALLOY_INGOT_ITEM.get())); + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MOD_ID); static { CoreBlocks.register(); CoreItems.register(); CoreMenus.register(); CoreParts.register(); + CoreCreativeModeTabs.register(); } public ProjectRedCore() { @@ -64,6 +66,7 @@ public ProjectRedCore() { BLOCK_ENTITY_TYPES.register(modEventBus); MENU_TYPES.register(modEventBus); PART_TYPES.register(modEventBus); + CREATIVE_TABS.register(modEventBus); } private void commonSetup(final FMLCommonSetupEvent event) { @@ -83,15 +86,18 @@ private void commonSetup(final FMLCommonSetupEvent event) { private void onGatherDataEvent(final GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper fileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeClient(), new CoreBlockStateModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new CoreItemModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new CoreLanguageProvider(generator)); + generator.addProvider(event.includeClient(), new CoreBlockStateModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new CoreItemModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new CoreLanguageProvider(output)); + + generator.addProvider(event.includeServer(), new CoreRecipeProvider(output)); + generator.addProvider(event.includeServer(), new CoreLootTableProvider(output)); - generator.addProvider(event.includeServer(), new CoreRecipeProvider(generator)); - generator.addProvider(event.includeServer(), new CoreLootTableProvider(generator)); - generator.addProvider(event.includeServer(), new CoreItemTagsProvider(generator, fileHelper)); - generator.addProvider(event.includeServer(), new CoreBlockTagsProvider(generator, fileHelper)); + BlockTagsProvider blockTagsProvider = new CoreBlockTagsProvider(output, event.getLookupProvider(), fileHelper); + generator.addProvider(event.includeServer(), blockTagsProvider); + generator.addProvider(event.includeServer(), new CoreItemTagsProvider(output, event.getLookupProvider(), blockTagsProvider.contentsGetter(), fileHelper)); } } diff --git a/core/src/main/java/mrtjp/projectred/core/block/ProjectRedBlock.java b/core/src/main/java/mrtjp/projectred/core/block/ProjectRedBlock.java index be7a8e44c..b2e8e4083 100644 --- a/core/src/main/java/mrtjp/projectred/core/block/ProjectRedBlock.java +++ b/core/src/main/java/mrtjp/projectred/core/block/ProjectRedBlock.java @@ -19,7 +19,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -31,8 +31,8 @@ public abstract class ProjectRedBlock extends Block implements EntityBlock { public static final BooleanProperty WORKING = BooleanProperty.create("working"); public static final BooleanProperty ACTIVE = BooleanProperty.create("active"); - public static final BlockBehaviour.Properties WOODEN_PROPERTIES = BlockBehaviour.Properties.of(Material.WOOD).strength(2.0F, 3.0F).sound(SoundType.WOOD); - public static final BlockBehaviour.Properties STONE_PROPERTIES = BlockBehaviour.Properties.of(Material.STONE).requiresCorrectToolForDrops().strength(3.0F, 3.0F).sound(SoundType.STONE); + public static final BlockBehaviour.Properties WOODEN_PROPERTIES = BlockBehaviour.Properties.of().mapColor(MapColor.WOOD).strength(2.0F, 3.0F).sound(SoundType.WOOD); + public static final BlockBehaviour.Properties STONE_PROPERTIES = BlockBehaviour.Properties.of().mapColor(MapColor.STONE).requiresCorrectToolForDrops().strength(3.0F, 3.0F).sound(SoundType.STONE); public ProjectRedBlock(BlockBehaviour.Properties properties) { super(properties); diff --git a/core/src/main/java/mrtjp/projectred/core/client/FixedScalePostChain.java b/core/src/main/java/mrtjp/projectred/core/client/FixedScalePostChain.java index 3a5a12a71..9a0981eed 100644 --- a/core/src/main/java/mrtjp/projectred/core/client/FixedScalePostChain.java +++ b/core/src/main/java/mrtjp/projectred/core/client/FixedScalePostChain.java @@ -2,7 +2,6 @@ import com.google.gson.JsonSyntaxException; import com.mojang.blaze3d.pipeline.RenderTarget; -import com.mojang.math.Matrix4f; import mrtjp.projectred.core.ProjectRedCore; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.PostChain; @@ -10,6 +9,7 @@ import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; +import org.joml.Matrix4f; import java.io.IOException; import java.util.HashMap; @@ -82,7 +82,7 @@ public void resize(int newWidth, int newHeight) { // Re-compute projection matrices scaled to each pass's input for (PostPass pass : this.passes) { - Matrix4f orthoMatrix = Matrix4f.orthographic(0.0F, (float) pass.inTarget.width, (float) pass.inTarget.height, 0.0F, 0.1F, 1000.0F); + Matrix4f orthoMatrix = new Matrix4f().setOrtho(0.0F, (float) pass.inTarget.width, 0.0F, (float) pass.inTarget.height, 0.1F, 1000.0F); pass.setOrthoMatrix(orthoMatrix); } } diff --git a/core/src/main/java/mrtjp/projectred/core/client/FullyOrientableBlockRenderer.java b/core/src/main/java/mrtjp/projectred/core/client/FullyOrientableBlockRenderer.java index 2bf128157..ee65c6744 100644 --- a/core/src/main/java/mrtjp/projectred/core/client/FullyOrientableBlockRenderer.java +++ b/core/src/main/java/mrtjp/projectred/core/client/FullyOrientableBlockRenderer.java @@ -1,12 +1,10 @@ package mrtjp.projectred.core.client; -import codechicken.lib.model.PerspectiveModelState; import codechicken.lib.render.CCModel; import codechicken.lib.render.CCRenderState; import codechicken.lib.render.block.ICCBlockRenderer; import codechicken.lib.render.buffer.TransformingVertexConsumer; import codechicken.lib.render.item.IItemRenderer; -import codechicken.lib.util.TransformUtils; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Rotation; import codechicken.lib.vec.Vector3; @@ -17,9 +15,9 @@ import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; @@ -73,7 +71,7 @@ public void renderBlock(BlockState state, BlockPos pos, BlockAndTintGetter world } @Override - public void renderItem(ItemStack stack, ItemTransforms.TransformType transformType, PoseStack mStack, MultiBufferSource source, int packedLight, int packedOverlay) { + public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseStack mStack, MultiBufferSource source, int packedLight, int packedOverlay) { CCRenderState ccrs = CCRenderState.instance(); ccrs.reset(); diff --git a/core/src/main/java/mrtjp/projectred/core/client/HaloRenderer.java b/core/src/main/java/mrtjp/projectred/core/client/HaloRenderer.java index 3b035d065..fb2768012 100644 --- a/core/src/main/java/mrtjp/projectred/core/client/HaloRenderer.java +++ b/core/src/main/java/mrtjp/projectred/core/client/HaloRenderer.java @@ -18,7 +18,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.client.event.RenderLevelLastEvent; import net.minecraftforge.client.event.RenderLevelStageEvent; import org.jetbrains.annotations.Nullable; @@ -29,6 +28,8 @@ import static mrtjp.projectred.core.ProjectRedCore.MOD_ID; import static net.minecraft.client.renderer.RenderStateShard.*; +import static net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_LEVEL; +import static net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_PARTICLES; public class HaloRenderer { @@ -116,9 +117,14 @@ public static void addLight(Transformation t, int colour, Cuboid6 box) { public static void onRenderWorldStageEvent(final RenderLevelStageEvent event) { - if (event.getStage() != RenderLevelStageEvent.Stage.AFTER_PARTICLES) { - return; + if (event.getStage().equals(AFTER_PARTICLES)) { + onRenderStageAfterParticles(event); + } else if (event.getStage().equals(AFTER_LEVEL)) { + onRenderStageAfterLevel(event); } + } + + private static void onRenderStageAfterParticles(final RenderLevelStageEvent event) { if (levelLights.isEmpty()) { return; @@ -173,7 +179,7 @@ public static void onRenderWorldStageEvent(final RenderLevelStageEvent event) { stack.popPose(); } - public static void onRenderWorldLastEvent(final RenderLevelLastEvent event) { + private static void onRenderStageAfterLevel(final RenderLevelStageEvent event) { // Unfabulous rendering. Batched rendering doesn't seem to work from stage events when not // on fabulous for some reason, so we have to do it here instead. diff --git a/core/src/main/java/mrtjp/projectred/core/data/CoreBlockStateModelProvider.java b/core/src/main/java/mrtjp/projectred/core/data/CoreBlockStateModelProvider.java index 4cd6cf772..f5e700f88 100644 --- a/core/src/main/java/mrtjp/projectred/core/data/CoreBlockStateModelProvider.java +++ b/core/src/main/java/mrtjp/projectred/core/data/CoreBlockStateModelProvider.java @@ -1,7 +1,7 @@ package mrtjp.projectred.core.data; import mrtjp.projectred.core.block.ProjectRedBlock; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.BlockModelBuilder; import net.minecraftforge.client.model.generators.BlockStateProvider; @@ -18,8 +18,8 @@ @SuppressWarnings("DataFlowIssue") public class CoreBlockStateModelProvider extends BlockStateProvider { - public CoreBlockStateModelProvider(DataGenerator gen, ExistingFileHelper exFileHelper) { - super(gen, MOD_ID, exFileHelper); + public CoreBlockStateModelProvider(PackOutput output, ExistingFileHelper exFileHelper) { + super(output, MOD_ID, exFileHelper); } @Nonnull diff --git a/core/src/main/java/mrtjp/projectred/core/data/CoreBlockTagsProvider.java b/core/src/main/java/mrtjp/projectred/core/data/CoreBlockTagsProvider.java index 33a254c4f..7a778975a 100644 --- a/core/src/main/java/mrtjp/projectred/core/data/CoreBlockTagsProvider.java +++ b/core/src/main/java/mrtjp/projectred/core/data/CoreBlockTagsProvider.java @@ -1,27 +1,25 @@ package mrtjp.projectred.core.data; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.tags.BlockTags; +import net.minecraftforge.common.data.BlockTagsProvider; import net.minecraftforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.Nullable; +import java.util.concurrent.CompletableFuture; + import static mrtjp.projectred.core.ProjectRedCore.MOD_ID; import static mrtjp.projectred.core.init.CoreBlocks.ELECTROTINE_GENERATOR_BLOCK; public class CoreBlockTagsProvider extends BlockTagsProvider { - public CoreBlockTagsProvider(DataGenerator gen, @Nullable ExistingFileHelper existingFileHelper) { - super(gen, MOD_ID, existingFileHelper); - } - - @Override - public String getName() { - return "ProjectRed-Core Block Tags"; + public CoreBlockTagsProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, MOD_ID, existingFileHelper); } @Override - protected void addTags() { + protected void addTags(HolderLookup.Provider pProvider) { tag(BlockTags.MINEABLE_WITH_PICKAXE) .add(ELECTROTINE_GENERATOR_BLOCK.get()); diff --git a/core/src/main/java/mrtjp/projectred/core/data/CoreItemModelProvider.java b/core/src/main/java/mrtjp/projectred/core/data/CoreItemModelProvider.java index 578cbf784..fefad7b62 100644 --- a/core/src/main/java/mrtjp/projectred/core/data/CoreItemModelProvider.java +++ b/core/src/main/java/mrtjp/projectred/core/data/CoreItemModelProvider.java @@ -1,7 +1,7 @@ package mrtjp.projectred.core.data; import codechicken.lib.datagen.ItemModelProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import static mrtjp.projectred.core.ProjectRedCore.MOD_ID; @@ -10,13 +10,8 @@ public class CoreItemModelProvider extends ItemModelProvider { - public CoreItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { - super(generator, MOD_ID, existingFileHelper); - } - - @Override - public String getName() { - return "ProjectRed-Core Item Models"; + public CoreItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, MOD_ID, existingFileHelper); } @Override diff --git a/core/src/main/java/mrtjp/projectred/core/data/CoreItemTagsProvider.java b/core/src/main/java/mrtjp/projectred/core/data/CoreItemTagsProvider.java index 7ba0aef55..f776b4d5a 100644 --- a/core/src/main/java/mrtjp/projectred/core/data/CoreItemTagsProvider.java +++ b/core/src/main/java/mrtjp/projectred/core/data/CoreItemTagsProvider.java @@ -1,12 +1,15 @@ package mrtjp.projectred.core.data; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; +import net.minecraft.data.tags.TagsProvider; +import net.minecraft.world.level.block.Block; import net.minecraftforge.common.Tags; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; import static mrtjp.projectred.core.ProjectRedCore.MOD_ID; import static mrtjp.projectred.core.init.CoreItems.*; @@ -14,17 +17,12 @@ public class CoreItemTagsProvider extends ItemTagsProvider { - public CoreItemTagsProvider(DataGenerator gen, @Nullable ExistingFileHelper helper) { - super(gen, new BlockTagsProvider(gen, MOD_ID, helper), MOD_ID, helper); + public CoreItemTagsProvider(PackOutput output, CompletableFuture lookupProvider, CompletableFuture> blockTags, @Nullable ExistingFileHelper helper) { + super(output, lookupProvider, blockTags, MOD_ID, helper); } @Override - public String getName() { - return "ProjectRed-Core Item Tags"; - } - - @Override - protected void addTags() { + protected void addTags(HolderLookup.Provider pProvider) { tag(Tags.Items.INGOTS) .addTag(RED_ALLOY_INGOT_TAG) diff --git a/core/src/main/java/mrtjp/projectred/core/data/CoreLanguageProvider.java b/core/src/main/java/mrtjp/projectred/core/data/CoreLanguageProvider.java index bb8b0c7fa..f9f32aec1 100644 --- a/core/src/main/java/mrtjp/projectred/core/data/CoreLanguageProvider.java +++ b/core/src/main/java/mrtjp/projectred/core/data/CoreLanguageProvider.java @@ -1,6 +1,6 @@ package mrtjp.projectred.core.data; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.LanguageProvider; import static mrtjp.projectred.core.ProjectRedCore.MOD_ID; @@ -9,8 +9,8 @@ public class CoreLanguageProvider extends LanguageProvider { - public CoreLanguageProvider(DataGenerator gen) { - super(gen, MOD_ID, "en_us"); + public CoreLanguageProvider(PackOutput output) { + super(output, MOD_ID, "en_us"); } @Override diff --git a/core/src/main/java/mrtjp/projectred/core/data/CoreLootTableProvider.java b/core/src/main/java/mrtjp/projectred/core/data/CoreLootTableProvider.java index fe2bf6e54..e90169efd 100644 --- a/core/src/main/java/mrtjp/projectred/core/data/CoreLootTableProvider.java +++ b/core/src/main/java/mrtjp/projectred/core/data/CoreLootTableProvider.java @@ -1,19 +1,15 @@ package mrtjp.projectred.core.data; import codechicken.lib.datagen.LootTableProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import static mrtjp.projectred.core.ProjectRedCore.MOD_ID; import static mrtjp.projectred.core.init.CoreBlocks.ELECTROTINE_GENERATOR_BLOCK; public class CoreLootTableProvider extends LootTableProvider.BlockLootProvider { - public CoreLootTableProvider(DataGenerator gen) { - super(gen); - } - - @Override - public String getName() { - return "ProjectRed-Core Block Loot Tables"; + public CoreLootTableProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/core/src/main/java/mrtjp/projectred/core/data/CoreRecipeProvider.java b/core/src/main/java/mrtjp/projectred/core/data/CoreRecipeProvider.java index bc808f515..e97e29cf6 100644 --- a/core/src/main/java/mrtjp/projectred/core/data/CoreRecipeProvider.java +++ b/core/src/main/java/mrtjp/projectred/core/data/CoreRecipeProvider.java @@ -6,7 +6,8 @@ import codechicken.microblock.init.CBMicroblockModContent; import codechicken.microblock.item.ItemMicroBlock; import codechicken.microblock.util.MicroMaterialRegistry; -import net.minecraft.data.DataGenerator; +import mrtjp.projectred.core.ProjectRedCore; +import net.minecraft.data.PackOutput; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; @@ -22,13 +23,8 @@ public class CoreRecipeProvider extends RecipeProvider { - public CoreRecipeProvider(DataGenerator gen) { - super(gen); - } - - @Override - public String getName() { - return "ProjectRed-Core Recipes"; + public CoreRecipeProvider(PackOutput output) { + super(output, ProjectRedCore.MOD_ID); } @Override diff --git a/core/src/main/java/mrtjp/projectred/core/gui/screen/inventory/ElectrotineGeneratorScreen.java b/core/src/main/java/mrtjp/projectred/core/gui/screen/inventory/ElectrotineGeneratorScreen.java index 3ad166085..43375472a 100644 --- a/core/src/main/java/mrtjp/projectred/core/gui/screen/inventory/ElectrotineGeneratorScreen.java +++ b/core/src/main/java/mrtjp/projectred/core/gui/screen/inventory/ElectrotineGeneratorScreen.java @@ -1,11 +1,10 @@ package mrtjp.projectred.core.gui.screen.inventory; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.core.inventory.container.ElectrotineGeneratorContainer; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -24,49 +23,43 @@ public ElectrotineGeneratorScreen(ElectrotineGeneratorContainer container, Inven } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - super.drawBack(stack, mouse, partialFrame); - - RenderSystem.setShaderTexture(0, BACKGROUND); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + super.drawBack(graphics, mouse, partialFrame); int x = getFrame().x(); int y = getFrame().y(); // Background - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); // Charge icon if (getMenu().canConductorWork()) { - blit(stack, x + 22, y + 16, 176, 1, 7, 9); + graphics.blit(BACKGROUND, x + 22, y + 16, 176, 1, 7, 9); } // Charge Bar - GuiLib.drawVerticalTank(stack, this, x + 22, y + 26, 176, 10, 7, 48, getMenu().getChargeScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 22, y + 26, 176, 10, 7, 48, getMenu().getChargeScaled(48)); // Storage icon if (getMenu().isPowerStorageFull()) { - blit(stack, x + 54, y + 16, 184, 1, 14, 9); + graphics.blit(BACKGROUND, x + 54, y + 16, 184, 1, 14, 9); } // Storage Bar - GuiLib.drawVerticalTank(stack, this, x + 54, y + 26, 184, 10, 14, 48, getMenu().getPowerStoredScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 54, y + 26, 184, 10, 14, 48, getMenu().getPowerStoredScaled(48)); // Burning icon if (getMenu().isBurning()) { - blit(stack, x + 93, y + 16, 199, 1, 7, 9); + graphics.blit(BACKGROUND, x + 93, y + 16, 199, 1, 7, 9); } // Burning Bar - GuiLib.drawVerticalTank(stack, this, x + 93, y + 26, 199, 10, 7, 48, getMenu().getBurnTimeScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 93, y + 26, 199, 10, 7, 48, getMenu().getBurnTimeScaled(48)); // Storage charging arrow if (getMenu().isChargingStorage()) { - blit(stack, x + 69, y + 45, 211, 10, 23, 9); + graphics.blit(BACKGROUND, x + 69, y + 45, 211, 10, 23, 9); } // Conductor charging arrow if (getMenu().isChargingConductor()) { - blit(stack, x + 30, y + 46, 211, 0, 23, 9); + graphics.blit(BACKGROUND, x + 30, y + 46, 211, 0, 23, 9); } -// -// // Title labels -// getFontRenderer().draw(stack, title, x + 8, y + 6, EnumColour.GRAY.argb()); -// getFontRenderer().draw(stack, inventory.getDisplayName(), x + 8, y + 79, EnumColour.GRAY.argb()); } } diff --git a/core/src/main/java/mrtjp/projectred/core/init/CoreBlocks.java b/core/src/main/java/mrtjp/projectred/core/init/CoreBlocks.java index 7b17e56ee..5df485057 100644 --- a/core/src/main/java/mrtjp/projectred/core/init/CoreBlocks.java +++ b/core/src/main/java/mrtjp/projectred/core/init/CoreBlocks.java @@ -28,7 +28,7 @@ public static void register() { ELECTROTINE_GENERATOR_BLOCK = BLOCKS.register(ID_ELECTROTINE_GENERATOR, ElectrotineGeneratorBlock::new); // Block Items - ITEMS.register(ID_ELECTROTINE_GENERATOR, () -> new BlockItem(ELECTROTINE_GENERATOR_BLOCK.get(), new Item.Properties().tab(CORE_CREATIVE_TAB))); + ITEMS.register(ID_ELECTROTINE_GENERATOR, () -> new BlockItem(ELECTROTINE_GENERATOR_BLOCK.get(), new Item.Properties())); // Tiles ELECTROTINE_GENERATOR_TILE = BLOCK_ENTITY_TYPES.register(ID_ELECTROTINE_GENERATOR, () -> BlockEntityType.Builder.of(ElectrotineGeneratorTile::new, ELECTROTINE_GENERATOR_BLOCK.get()).build(null)); diff --git a/core/src/main/java/mrtjp/projectred/core/init/CoreClientInit.java b/core/src/main/java/mrtjp/projectred/core/init/CoreClientInit.java index 6f72cab7d..9c0a4e865 100644 --- a/core/src/main/java/mrtjp/projectred/core/init/CoreClientInit.java +++ b/core/src/main/java/mrtjp/projectred/core/init/CoreClientInit.java @@ -38,14 +38,13 @@ private static void clientSetup(final FMLClientSetupEvent event) { // Register Halo renderer MinecraftForge.EVENT_BUS.addListener(HaloRenderer::onRenderWorldStageEvent); - MinecraftForge.EVENT_BUS.addListener(HaloRenderer::onRenderWorldLastEvent); // Register resource reload listener ResourceUtils.registerReloadListener(HaloRenderer::onResourceManagerReload); } private static void onRegisterShaders(RegisterShadersEvent event) { - event.registerShader(CCShaderInstance.create(event.getResourceManager(), new ResourceLocation(MOD_ID, "halo"), DefaultVertexFormat.POSITION_COLOR), e -> { + event.registerShader(CCShaderInstance.create(event.getResourceProvider(), new ResourceLocation(MOD_ID, "halo"), DefaultVertexFormat.POSITION_COLOR), e -> { HALO_SHADER = (CCShaderInstance) e; }); } diff --git a/core/src/main/java/mrtjp/projectred/core/init/CoreCreativeModeTabs.java b/core/src/main/java/mrtjp/projectred/core/init/CoreCreativeModeTabs.java new file mode 100644 index 000000000..c014b7f1c --- /dev/null +++ b/core/src/main/java/mrtjp/projectred/core/init/CoreCreativeModeTabs.java @@ -0,0 +1,86 @@ +package mrtjp.projectred.core.init; + +import mrtjp.projectred.core.ProjectRedCore; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraftforge.registries.RegistryObject; + +import static mrtjp.projectred.core.ProjectRedCore.MOD_ID; +import static mrtjp.projectred.core.init.CoreBlocks.ELECTROTINE_GENERATOR_BLOCK; +import static mrtjp.projectred.core.init.CoreItems.*; + +@SuppressWarnings("NotNullFieldNotInitialized") +public class CoreCreativeModeTabs { + + public static RegistryObject CORE_CREATIVE_TAB; + + public static void register() { + + CORE_CREATIVE_TAB = ProjectRedCore.CREATIVE_TABS.register("core", + () -> CreativeModeTab.builder() + .icon(() -> CoreItems.RED_ALLOY_INGOT_ITEM.get().getDefaultInstance()) + .title(Component.translatable("itemGroup." + MOD_ID)) + .displayItems((params, output) -> { + // Blocks + output.accept(ELECTROTINE_GENERATOR_BLOCK.get()); + + // Items + output.accept(RED_ALLOY_INGOT_ITEM.get()); + output.accept(ELECTROTINE_ALLOY_INGOT_ITEM.get()); + output.accept(ELECTROTINE_DUST_ITEM.get()); + output.accept(RUBY_ITEM.get()); + output.accept(SAPPHIRE_ITEM.get()); + output.accept(PERIDOT_ITEM.get()); + + output.accept(PLATE_ITEM.get()); + output.accept(CONDUCTIVE_PLATE_ITEM.get()); + output.accept(WIRED_PLATE_ITEM.get()); + output.accept(BUNDLED_PLATE_ITEM.get()); + output.accept(PLATFORMED_PLATE_ITEM.get()); + output.accept(ANODE_ITEM.get()); + output.accept(CATHODE_ITEM.get()); + output.accept(POINTER_ITEM.get()); + output.accept(SILICON_CHIP_ITEM.get()); + output.accept(ENERGIZED_SILICON_CHIP_ITEM.get()); + output.accept(SAND_COAL_COMP_ITEM.get()); + output.accept(RED_IRON_COMP_ITEM.get()); + output.accept(ELECTROTINE_IRON_COMP_ITEM.get()); + output.accept(SILICON_BOULE_ITEM.get()); + output.accept(SILICON_ITEM.get()); + output.accept(RED_SILICON_COMP_ITEM.get()); + output.accept(GLOW_SILICON_COMP_ITEM.get()); + output.accept(ELECTROTINE_SILICON_COMP_ITEM.get()); + output.accept(INFUSED_SILICON_ITEM.get()); + output.accept(ENERGIZED_SILICON_ITEM.get()); + output.accept(ELECTROTINE_SILICON_ITEM.get()); + output.accept(COPPER_COIL_ITEM.get()); + output.accept(IRON_COIL_ITEM.get()); + output.accept(GOLD_COIL_ITEM.get()); + output.accept(MOTOR_ITEM.get()); + output.accept(WOVEN_CLOTH_ITEM.get()); + output.accept(SAIL_ITEM.get()); + + output.accept(WHITE_ILLUMAR_ITEM.get()); + output.accept(ORANGE_ILLUMAR_ITEM.get()); + output.accept(MAGENTA_ILLUMAR_ITEM.get()); + output.accept(LIGHT_BLUE_ILLUMAR_ITEM.get()); + output.accept(YELLOW_ILLUMAR_ITEM.get()); + output.accept(LIME_ILLUMAR_ITEM.get()); + output.accept(PINK_ILLUMAR_ITEM.get()); + output.accept(GRAY_ILLUMAR_ITEM.get()); + output.accept(LIGHT_GRAY_ILLUMAR_ITEM.get()); + output.accept(CYAN_ILLUMAR_ITEM.get()); + output.accept(PURPLE_ILLUMAR_ITEM.get()); + output.accept(BLUE_ILLUMAR_ITEM.get()); + output.accept(BROWN_ILLUMAR_ITEM.get()); + output.accept(GREEN_ILLUMAR_ITEM.get()); + output.accept(RED_ILLUMAR_ITEM.get()); + output.accept(BLACK_ILLUMAR_ITEM.get()); + + output.accept(DRAW_PLATE_ITEM.get()); + output.accept(SCREWDRIVER_ITEM.get()); + output.accept(MULTIMETER_ITEM.get()); + }) + .build()); + } +} diff --git a/core/src/main/java/mrtjp/projectred/core/init/CoreItems.java b/core/src/main/java/mrtjp/projectred/core/init/CoreItems.java index 8c60adf32..c679089f8 100644 --- a/core/src/main/java/mrtjp/projectred/core/init/CoreItems.java +++ b/core/src/main/java/mrtjp/projectred/core/init/CoreItems.java @@ -8,7 +8,6 @@ import java.util.function.Supplier; -import static mrtjp.projectred.core.ProjectRedCore.CORE_CREATIVE_TAB; import static mrtjp.projectred.core.ProjectRedCore.ITEMS; @SuppressWarnings("NotNullFieldNotInitialized") @@ -192,7 +191,7 @@ public static void register() { } private static Supplier createSimpleItemSupplier() { - return () -> new Item(new Item.Properties().tab(CORE_CREATIVE_TAB)); + return () -> new Item(new Item.Properties()); } //region Utilities diff --git a/core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorContainer.java b/core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorContainer.java index b8cc0fb8e..5a6826836 100644 --- a/core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorContainer.java +++ b/core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorContainer.java @@ -15,7 +15,7 @@ public class ElectrotineGeneratorContainer extends BasePoweredTileContainer { public static final ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); + BlockEntity tile = inventory.player.level().getBlockEntity(packet.readPos()); if (!(tile instanceof ElectrotineGeneratorTile)) return null; return new ElectrotineGeneratorContainer(inventory, (ElectrotineGeneratorTile) tile, windowId); diff --git a/core/src/main/java/mrtjp/projectred/core/item/DrawPlateItem.java b/core/src/main/java/mrtjp/projectred/core/item/DrawPlateItem.java index 834ed03dc..5f487ec0d 100644 --- a/core/src/main/java/mrtjp/projectred/core/item/DrawPlateItem.java +++ b/core/src/main/java/mrtjp/projectred/core/item/DrawPlateItem.java @@ -2,11 +2,9 @@ import net.minecraft.world.item.Item; -import static mrtjp.projectred.core.ProjectRedCore.CORE_CREATIVE_TAB; - public class DrawPlateItem extends CraftingDamageItem { public DrawPlateItem() { - super(new Item.Properties().durability(512).tab(CORE_CREATIVE_TAB)); + super(new Item.Properties().durability(512)); } } diff --git a/core/src/main/java/mrtjp/projectred/core/item/MultimeterItem.java b/core/src/main/java/mrtjp/projectred/core/item/MultimeterItem.java index 48b45765e..013e2281d 100644 --- a/core/src/main/java/mrtjp/projectred/core/item/MultimeterItem.java +++ b/core/src/main/java/mrtjp/projectred/core/item/MultimeterItem.java @@ -6,12 +6,10 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.LevelReader; -import static mrtjp.projectred.core.ProjectRedCore.CORE_CREATIVE_TAB; - public class MultimeterItem extends Item { public MultimeterItem() { - super(new Item.Properties().stacksTo(1).durability(256).setNoRepair().tab(CORE_CREATIVE_TAB)); + super(new Item.Properties().stacksTo(1).durability(256).setNoRepair()); } @Override diff --git a/core/src/main/java/mrtjp/projectred/core/item/ScrewdriverItem.java b/core/src/main/java/mrtjp/projectred/core/item/ScrewdriverItem.java index a5b61284b..2900df70e 100644 --- a/core/src/main/java/mrtjp/projectred/core/item/ScrewdriverItem.java +++ b/core/src/main/java/mrtjp/projectred/core/item/ScrewdriverItem.java @@ -8,16 +8,13 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.LevelReader; -import static mrtjp.projectred.core.ProjectRedCore.CORE_CREATIVE_TAB; - public class ScrewdriverItem extends Item implements IScrewdriver { public ScrewdriverItem() { super(new Item.Properties() .stacksTo(1) .durability(128) - .setNoRepair() - .tab(CORE_CREATIVE_TAB)); + .setNoRepair()); } @Override diff --git a/core/src/main/java/mrtjp/projectred/lib/GuiLib.java b/core/src/main/java/mrtjp/projectred/lib/GuiLib.java index b16b1acad..7938e24ee 100644 --- a/core/src/main/java/mrtjp/projectred/lib/GuiLib.java +++ b/core/src/main/java/mrtjp/projectred/lib/GuiLib.java @@ -1,11 +1,14 @@ package mrtjp.projectred.lib; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.*; -import com.mojang.math.Matrix4f; -import net.minecraft.client.gui.GuiComponent; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.Tesselator; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.resources.ResourceLocation; +import org.joml.Matrix4f; import static com.mojang.blaze3d.vertex.VertexFormat.Mode.QUADS; @@ -13,11 +16,11 @@ public class GuiLib { public static final ResourceLocation WIDGETS_TEXTURE = new ResourceLocation("minecraft", "textures/gui/widgets.png"); - public static void drawVerticalTank(PoseStack stack, GuiComponent gui, int x, int y, int u, int v, int w, int h, int prog) { - gui.blit(stack, x, y + h - prog, u, v + h - prog, w, prog); + public static void drawVerticalTank(GuiGraphics graphics, ResourceLocation loc, int x, int y, int u, int v, int w, int h, int prog) { + graphics.blit(loc, x, y + h - prog, u, v + h - prog, w, prog); } - public static void drawLine(PoseStack stack, int x1, int y1, int x2, int y2, int th, int argb) { + public static void drawLine(GuiGraphics graphics, int x1, int y1, int x2, int y2, int th, int argb) { // Two points to rect Vec2 p1 = new Vec2(x1, y1); @@ -32,7 +35,7 @@ public static void drawLine(PoseStack stack, int x1, int y1, int x2, int y2, int Vec2 r3 = p2.add(widthVec); Vec2 r4 = p1.add(widthVec); - Matrix4f p_238460_0_ = stack.last().pose(); + Matrix4f p_238460_0_ = graphics.pose().last().pose(); float f3 = (argb >> 24 & 255) / 255.0F; float f = (argb >> 16 & 255) / 255.0F; @@ -40,7 +43,6 @@ public static void drawLine(PoseStack stack, int x1, int y1, int x2, int y2, int float f2 = (argb & 255) / 255.0F; BufferBuilder bufferbuilder = Tesselator.getInstance().getBuilder(); RenderSystem.enableBlend(); - RenderSystem.disableTexture(); RenderSystem.defaultBlendFunc(); RenderSystem.setShader(GameRenderer::getPositionColorShader); bufferbuilder.begin(QUADS, DefaultVertexFormat.POSITION_COLOR); @@ -49,7 +51,6 @@ public static void drawLine(PoseStack stack, int x1, int y1, int x2, int y2, int bufferbuilder.vertex(p_238460_0_, (float) r3.dx, (float) r3.dy, 0.0F).color(f, f1, f2, f3).endVertex(); bufferbuilder.vertex(p_238460_0_, (float) r4.dx, (float) r4.dy, 0.0F).color(f, f1, f2, f3).endVertex(); BufferUploader.draw(bufferbuilder.end()); - RenderSystem.enableTexture(); RenderSystem.disableBlend(); } } diff --git a/core/src/main/java/mrtjp/projectred/lib/InventoryLib.java b/core/src/main/java/mrtjp/projectred/lib/InventoryLib.java index 4cfc91db6..41848e5cc 100644 --- a/core/src/main/java/mrtjp/projectred/lib/InventoryLib.java +++ b/core/src/main/java/mrtjp/projectred/lib/InventoryLib.java @@ -68,7 +68,7 @@ private static void injectItemStack(Container inventory, ItemStack stack, int st } public static boolean areStackable(ItemStack a, ItemStack b) { - return ItemStack.isSame(a, b) && ItemStack.tagMatches(a, b) && a.getMaxStackSize() > 1 && b.getMaxStackSize() > 1; + return ItemStack.isSameItemSameTags(a, b) && a.getMaxStackSize() > 1 && b.getMaxStackSize() > 1; } public static void addPlayerInventory(Inventory playerInventory, int x, int y, Consumer slotConsumer) { diff --git a/core/src/main/java/mrtjp/projectred/redui/AbstractButtonNode.java b/core/src/main/java/mrtjp/projectred/redui/AbstractButtonNode.java index d10bec24b..aa4743801 100644 --- a/core/src/main/java/mrtjp/projectred/redui/AbstractButtonNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/AbstractButtonNode.java @@ -1,9 +1,9 @@ package mrtjp.projectred.redui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; @@ -11,8 +11,6 @@ import java.util.LinkedList; import java.util.List; -import static net.minecraft.client.gui.GuiComponent.blit; - public abstract class AbstractButtonNode extends AbstractGuiNode { public static final int BUTTON_STATE_DISABLED = 0; @@ -33,19 +31,19 @@ protected int getButtonState(boolean mouseover) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { boolean mouseover = getFrame().contains(mouse) && isFirstHit(mouse); RenderSystem.setShaderTexture(0, GuiLib.WIDGETS_TEXTURE); int state = getButtonState(mouseover); - drawMCButton(stack, state); - drawButtonBody(stack, mouseover); + drawMCButton(graphics, state); + drawButtonBody(graphics, mouseover); } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (!isFirstHit(mouse)) return; @@ -54,7 +52,7 @@ public void drawFront(PoseStack stack, Point mouse, float partialFrame) { buildTooltip(tooltip); if (!tooltip.isEmpty()) - renderTooltip(stack, mouse, tooltip); + renderTooltip(graphics, mouse, tooltip); } @Override @@ -67,20 +65,18 @@ public boolean mouseClicked(Point p, int glfwMouseButton, boolean consumed) { return false; } - protected void drawMCButton(PoseStack stack, int state) { - - RenderSystem.setShaderTexture(0, GuiLib.WIDGETS_TEXTURE); + protected void drawMCButton(GuiGraphics graphics, int state) { int x = getPosition().x; int y = getPosition().y; int width = getFrame().width(); int height = getFrame().height(); - blit(stack, x, y, 0, 46 + state * 20, width / 2, height / 2, 256, 256); - blit(stack, x + width / 2, y, 200 - width / 2f, 46 + state * 20, width / 2, height / 2, 256, 256); - blit(stack, x, y + height / 2, 0, 46 + state * 20 + 20 - height / 2f, width / 2, height / 2, 256, 256); - blit(stack, x + width / 2, y + height / 2, 200 - width / 2f, 46 + state * 20 + 20 - height / 2f, width / 2, height / 2, 256, 256); + graphics.blit(GuiLib.WIDGETS_TEXTURE, x, y, 0, 46 + state * 20, width / 2, height / 2, 256, 256); + graphics.blit(GuiLib.WIDGETS_TEXTURE, x + width / 2, y, 200 - width / 2f, 46 + state * 20, width / 2, height / 2, 256, 256); + graphics.blit(GuiLib.WIDGETS_TEXTURE, x, y + height / 2, 0, 46 + state * 20 + 20 - height / 2f, width / 2, height / 2, 256, 256); + graphics.blit(GuiLib.WIDGETS_TEXTURE, x + width / 2, y + height / 2, 200 - width / 2f, 46 + state * 20 + 20 - height / 2f, width / 2, height / 2, 256, 256); } - protected abstract void drawButtonBody(PoseStack stack, boolean mouseover); + protected abstract void drawButtonBody(GuiGraphics graphics, boolean mouseover); } diff --git a/core/src/main/java/mrtjp/projectred/redui/AbstractCheckboxNode.java b/core/src/main/java/mrtjp/projectred/redui/AbstractCheckboxNode.java index 240180a85..c7d688bc3 100644 --- a/core/src/main/java/mrtjp/projectred/redui/AbstractCheckboxNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/AbstractCheckboxNode.java @@ -1,7 +1,7 @@ package mrtjp.projectred.redui; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.Point; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; @@ -27,15 +27,15 @@ protected void buildTooltip(List tooltip) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { boolean mouseover = getFrame().contains(mouse) && isFirstHit(mouse); RedUISprite sprite = RedUISprites.getCheckboxSprite(isDisabled(), mouseover, isChecked()); - blitSprite(stack, sprite); + blitSprite(graphics, sprite); } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (!isFirstHit(mouse)) return; @@ -43,7 +43,7 @@ public void drawFront(PoseStack stack, Point mouse, float partialFrame) { buildTooltip(tooltip); if (!tooltip.isEmpty()) - renderTooltip(stack, mouse, tooltip); + renderTooltip(graphics, mouse, tooltip); } @Override diff --git a/core/src/main/java/mrtjp/projectred/redui/ButtonNode.java b/core/src/main/java/mrtjp/projectred/redui/ButtonNode.java index 99ec3c686..07129be2e 100644 --- a/core/src/main/java/mrtjp/projectred/redui/ButtonNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/ButtonNode.java @@ -1,14 +1,12 @@ package mrtjp.projectred.redui; -import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import java.util.List; import java.util.function.Consumer; import java.util.function.Supplier; -import static net.minecraft.client.gui.GuiComponent.drawCenteredString; - public class ButtonNode extends AbstractButtonNode { public static final int BUTTON_TEXT_COLOR_IDLE = 0xFFE0E0E0; @@ -68,9 +66,9 @@ protected int getTextColor(boolean mouseover) { } @Override - protected void drawButtonBody(PoseStack stack, boolean mouseover) { + protected void drawButtonBody(GuiGraphics graphics, boolean mouseover) { - drawCenteredString(stack, getRoot().getFontRenderer(), buttonText, + graphics.drawCenteredString(getRoot().getFontRenderer(), buttonText, getPosition().x + getFrame().width()/2, getPosition().y+(getFrame().height()-8)/2, getTextColor(mouseover)); diff --git a/core/src/main/java/mrtjp/projectred/redui/DebugRectNode.java b/core/src/main/java/mrtjp/projectred/redui/DebugRectNode.java index 0e1fa693c..966f499d5 100644 --- a/core/src/main/java/mrtjp/projectred/redui/DebugRectNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/DebugRectNode.java @@ -1,12 +1,11 @@ package mrtjp.projectred.redui; import codechicken.lib.colour.EnumColour; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import mrtjp.projectred.lib.Size; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import org.lwjgl.glfw.GLFW; @@ -27,27 +26,27 @@ public void setColorArgb(int colorArgb) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - GuiLib.drawLine(stack, getFrame().x(), getFrame().y(), getFrame().maxX(), getFrame().y(), 3, EnumColour.RED.argb()); - GuiLib.drawLine(stack, getFrame().maxX(), getFrame().y(), getFrame().maxX(), getFrame().maxY(), 3, EnumColour.RED.argb()); - GuiLib.drawLine(stack, getFrame().maxX(), getFrame().maxY(), getFrame().x(), getFrame().maxY(), 3, EnumColour.RED.argb()); - GuiLib.drawLine(stack, getFrame().x(), getFrame().maxY(), getFrame().x(), getFrame().y(), 3, EnumColour.RED.argb()); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + GuiLib.drawLine(graphics, getFrame().x(), getFrame().y(), getFrame().maxX(), getFrame().y(), 3, EnumColour.RED.argb()); + GuiLib.drawLine(graphics, getFrame().maxX(), getFrame().y(), getFrame().maxX(), getFrame().maxY(), 3, EnumColour.RED.argb()); + GuiLib.drawLine(graphics, getFrame().maxX(), getFrame().maxY(), getFrame().x(), getFrame().maxY(), 3, EnumColour.RED.argb()); + GuiLib.drawLine(graphics, getFrame().x(), getFrame().maxY(), getFrame().x(), getFrame().y(), 3, EnumColour.RED.argb()); - GuiComponent.fill(stack, getFrame().x(), getFrame().y(), getFrame().maxX(), getFrame().maxY(), colorArgb); + graphics.fill(getFrame().x(), getFrame().y(), getFrame().maxX(), getFrame().maxY(), colorArgb); } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (!isFirstHit(mouse)) return; // Rect around mouse position Rect cursorRect = new Rect(mouse.subtract(3, 3), new Size(6, 6)); - GuiComponent.fill(stack, cursorRect.x(), cursorRect.y(), cursorRect.maxX(), cursorRect.maxY(), EnumColour.WHITE.argb(clickDown ? 150 : 50)); + graphics.fill(cursorRect.x(), cursorRect.y(), cursorRect.maxX(), cursorRect.maxY(), EnumColour.WHITE.argb(clickDown ? 150 : 50)); // Tooltip showing name - renderTooltip(stack, mouse, Collections.singletonList(Component.literal(name))); + renderTooltip(graphics, mouse, Collections.singletonList(Component.literal(name))); } @Override diff --git a/core/src/main/java/mrtjp/projectred/redui/ItemStackNode.java b/core/src/main/java/mrtjp/projectred/redui/ItemStackNode.java index 6a988f32e..434e00df1 100644 --- a/core/src/main/java/mrtjp/projectred/redui/ItemStackNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/ItemStackNode.java @@ -1,18 +1,17 @@ package mrtjp.projectred.redui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import java.util.List; -import static net.minecraft.client.gui.GuiComponent.fillGradient; - public class ItemStackNode extends AbstractGuiNode { private ItemStack itemStack; @@ -31,29 +30,23 @@ public void setItemStack(ItemStack itemStack) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { - // Would be nice if renderGuiItem can take the matrix stack... - Point screenPos = convertParentPointToScreen(getPosition()); - getRoot().getItemRenderer().renderGuiItem(itemStack, screenPos.x, screenPos.y); + // Render item + graphics.renderItem(itemStack, getPosition().x, getPosition().y); + // Draw tooltip if (isFirstHit(mouse)) { - int slotColor = -2130706433; - RenderSystem.disableDepthTest(); - RenderSystem.colorMask(true, true, true, false); - Rect frame = getFrame(); - fillGradient(stack, frame.x(), frame.y(), frame.x() + frame.width(), frame.y() + frame.height(), slotColor, slotColor, 0); - RenderSystem.colorMask(true, true, true, true); - RenderSystem.enableDepthTest(); + AbstractContainerScreen.renderSlotHighlight(graphics, getPosition().x, getPosition().y, 0); } } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (isFirstHit(mouse)) { Minecraft minecraft = getRoot().getMinecraft(); List tooltip = itemStack.getTooltipLines(minecraft.player, minecraft.options.advancedItemTooltips ? TooltipFlag.Default.ADVANCED : TooltipFlag.Default.NORMAL); - renderTooltip(stack, mouse, tooltip); + renderTooltip(graphics, mouse, tooltip); } } } diff --git a/core/src/main/java/mrtjp/projectred/redui/RedUIContainerScreen.java b/core/src/main/java/mrtjp/projectred/redui/RedUIContainerScreen.java index 402a56324..8e1eb91f7 100644 --- a/core/src/main/java/mrtjp/projectred/redui/RedUIContainerScreen.java +++ b/core/src/main/java/mrtjp/projectred/redui/RedUIContainerScreen.java @@ -1,13 +1,12 @@ package mrtjp.projectred.redui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import mrtjp.projectred.lib.Size; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; -import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -49,7 +48,7 @@ protected void init() { } @Override - public void render(PoseStack stack, int mouseX, int mouseY, float partialFrame) { + public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialFrame) { // Call frame update function on all nodes Point mousePoint = new Point(mouseX, mouseY); @@ -63,27 +62,22 @@ public void render(PoseStack stack, int mouseX, int mouseY, float partialFrame) // Render semi-transparent grey background int x = getScreenFrame().x(); int y = getScreenFrame().y(); - fillGradient(stack, x, y, x + getScreenFrame().width(), y + getScreenFrame().height(), -1072689136, -804253680); + graphics.fillGradient(x, y, x + getScreenFrame().width(), y + getScreenFrame().height(), -1072689136, -804253680); // Render background - drawBackForSubtree(stack, new Point(mouseX, mouseY), partialFrame); + drawBackForSubtree(graphics, new Point(mouseX, mouseY), partialFrame); // Sandwich ContainerScreen's default rendering between RedUI's foreground and background rendering - super.render(stack, mouseX, mouseY, partialFrame); - renderTooltip(stack, mouseX, mouseY); + super.render(graphics, mouseX, mouseY, partialFrame); + renderTooltip(graphics, mouseX, mouseY); // Render foreground - drawFrontForSubtree(stack, new Point(mouseX, mouseY), partialFrame); + drawFrontForSubtree(graphics, new Point(mouseX, mouseY), partialFrame); } @Override - protected void renderBg(PoseStack stack, float partialFrame, int mouseX, int mouseY) { + protected void renderBg(GuiGraphics graphics, float partialFrame, int mouseX, int mouseY) { // We render through RedUI's render methods } - @Override - public void renderTooltipScreenSpace(PoseStack stack, Point screenSpacePoint, List tooltip) { - renderComponentTooltip(stack, tooltip, screenSpacePoint.x, screenSpacePoint.y); - } - @Override protected void containerTick() { super.containerTick(); @@ -179,11 +173,6 @@ public boolean isHidden() { return false; } - @Override - public ItemRenderer getItemRenderer() { - return itemRenderer; - } - @Override public Font getFontRenderer() { return font; diff --git a/core/src/main/java/mrtjp/projectred/redui/RedUINode.java b/core/src/main/java/mrtjp/projectred/redui/RedUINode.java index fd57aa879..be44f53a5 100644 --- a/core/src/main/java/mrtjp/projectred/redui/RedUINode.java +++ b/core/src/main/java/mrtjp/projectred/redui/RedUINode.java @@ -1,12 +1,10 @@ package mrtjp.projectred.redui; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import mrtjp.projectred.lib.Size; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import org.lwjgl.glfw.GLFW; @@ -559,32 +557,32 @@ default boolean operateOnZOrderedSubtree(Point p, SubtreeOp op, boolean consumed * Recursive render call for this node and its subtree. This will render the background layer of this node * and entire subtree. The call order is as follows: *
    - *
  • This node's {@link RedUINode#drawBack(PoseStack, Point, float)} method
  • + *
  • This node's {@link RedUINode#drawBack(GuiGraphics, Point, float)} method
  • *
  • This node's {@link RedUINode#onSubTreePreDrawBack()} method
  • *
  • Each child's renderBackForSubtree method. Note that MatrixStack pose and * mouse positions are translated to correct position and depth for each child.
  • *
  • This node's {@link RedUINode#onSubTreePostDrawBack()} method
  • *
- * @param stack The matrix stack that is translated to the parent + * @param graphics The graphics context, translated to the parent * @param mouse Current mouse position, relative to the parent * @param partialFrame Progress between frames ({@link Minecraft#getDeltaFrameTime()}). * This is *not* the same as {@link Minecraft#getPartialTick()} */ - default void renderBackForSubtree(PoseStack stack, Point mouse, float partialFrame) { - drawBack(stack, mouse, partialFrame); + default void renderBackForSubtree(GuiGraphics graphics, Point mouse, float partialFrame) { + drawBack(graphics, mouse, partialFrame); onSubTreePreDrawBack(); for (RedUINode child : getZOrderedChildren(n -> !n.isHidden(), true)) { - stack.pushPose(); + graphics.pose().pushPose(); Point relativeMouse = mouse.subtract(getPosition()); Point relativePos = getPosition(); //Position is always relative double relativeZ = child.getRelativeZPosition(); - stack.translate(relativePos.x, relativePos.y, relativeZ); - child.renderBackForSubtree(stack, relativeMouse, partialFrame); + graphics.pose().translate(relativePos.x, relativePos.y, relativeZ); + child.renderBackForSubtree(graphics, relativeMouse, partialFrame); - stack.popPose(); + graphics.pose().popPose(); } onSubTreePostDrawBack(); } @@ -592,23 +590,23 @@ default void renderBackForSubtree(PoseStack stack, Point mouse, float partialFra /** * Similar to background render call, but for foreground layer. * - * @see RedUINode#renderBackForSubtree(PoseStack, Point, float) + * @see RedUINode#renderBackForSubtree(GuiGraphics, Point, float) */ - default void renderFrontForSubtree(PoseStack stack, Point mouse, float partialFrame) { - drawFront(stack, mouse, partialFrame); + default void renderFrontForSubtree(GuiGraphics graphics, Point mouse, float partialFrame) { + drawFront(graphics, mouse, partialFrame); onSubTreePreDrawFront(); for (RedUINode child : getZOrderedChildren(n -> !n.isHidden(), true)) { - stack.pushPose(); + graphics.pose().pushPose(); Point relativeMouse = mouse.subtract(getPosition()); Point relativePos = getPosition(); //Position is always relative double relativeZ = child.getRelativeZPosition(); - stack.translate(relativePos.x, relativePos.y, relativeZ); - child.renderFrontForSubtree(stack, relativeMouse, partialFrame); + graphics.pose().translate(relativePos.x, relativePos.y, relativeZ); + child.renderFrontForSubtree(graphics, relativeMouse, partialFrame); - stack.popPose(); + graphics.pose().popPose(); } onSubTreePostDrawFront(); } @@ -629,7 +627,7 @@ default void onAddedToParent() { } default void update() { } /** - * Called once per render call prior to rendering the background via {@link RedUINode#drawBack(PoseStack, Point, float)} + * Called once per render call prior to rendering the background via {@link RedUINode#drawBack(GuiGraphics, Point, float)} * * @param mouse Mouse position in parent's coordinate space * @param partialFrame Progress between frames ({@link Minecraft#getDeltaFrameTime()}). @@ -726,22 +724,22 @@ default void frameUpdate(Point mouse, float partialFrame) { } default boolean onCharTyped(char ch, int glfwFlags, boolean consumed) { return false; } /** - * @see RedUINode#renderBackForSubtree(PoseStack, Point, float) + * @see RedUINode#renderBackForSubtree(GuiGraphics, Point, float) */ default void onSubTreePreDrawBack() { } /** - * @see RedUINode#renderBackForSubtree(PoseStack, Point, float) + * @see RedUINode#renderBackForSubtree(GuiGraphics, Point, float) */ default void onSubTreePostDrawBack() { } /** - * @see RedUINode#renderFrontForSubtree(PoseStack, Point, float) + * @see RedUINode#renderFrontForSubtree(GuiGraphics, Point, float) */ default void onSubTreePreDrawFront() { } /** - * @see RedUINode#renderFrontForSubtree(PoseStack, Point, float) + * @see RedUINode#renderFrontForSubtree(GuiGraphics, Point, float) */ default void onSubTreePostDrawFront() { } @@ -749,22 +747,22 @@ default void onSubTreePostDrawFront() { } * Draw call for the background layer, typically used to render the background. Drawing is done * relative to the parent. * - * @param stack The matrix stack that is translated to the parent + * @param graphics The graphics context, translated to the parent * @param mouse Current mouse position, relative to the parent * @param partialFrame Progress between frames ({@link Minecraft#getDeltaFrameTime()}). * This is *not* the same as {@link Minecraft#getPartialTick()} */ - default void drawBack(PoseStack stack, Point mouse, float partialFrame) { } + default void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { } /** * Draw call for the foreground layer, typically used to render items, tooltips, etc. * - * @param stack The matrix stack that is translated to the parent + * @param graphics The graphics context, translated to the parent * @param mouse Current mouse position, relative to the parent * @param partialFrame Progress between frames ({@link Minecraft#getDeltaFrameTime()}). * This is *not* the same as {@link Minecraft#getPartialTick()} */ - default void drawFront(PoseStack stack, Point mouse, float partialFrame) { } + default void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { } /** * Node operation function that can be run over an entire graph @@ -787,7 +785,7 @@ interface SubtreeOp { } //region Utility methods - default void renderTooltip(PoseStack stack, Point mouse, List tooltip) { + default void renderTooltip(GuiGraphics graphics, Point mouse, List tooltip) { if (tooltip.isEmpty()) return; @@ -796,30 +794,30 @@ default void renderTooltip(PoseStack stack, Point mouse, List tooltip Point screenOffset = getParent().getScreenOffset(); Point mouseScreenSpace = screenOffset.add(mouse); - stack.pushPose(); - stack.translate(-screenOffset.x, -screenOffset.y, 0); + graphics.pose().pushPose(); + graphics.pose().translate(-screenOffset.x, -screenOffset.y, 0); - getRoot().renderTooltipScreenSpace(stack, mouseScreenSpace, tooltip); + graphics.renderComponentTooltip(getRoot().getFontRenderer(), tooltip, mouseScreenSpace.x, mouseScreenSpace.y); - stack.popPose(); + graphics.pose().popPose(); } - default void blitSprite(PoseStack stack, RedUISprite sprite) { - blitSpriteAt(stack, sprite, getPosition()); + default void blitSprite(GuiGraphics graphics, RedUISprite sprite) { + blitSpriteAt(graphics, sprite, getPosition()); } - default void blitSpriteCentered(PoseStack stack, RedUISprite sprite) { - blitSpriteCenteredAt(stack, sprite, getFrame().midPoint()); + default void blitSpriteCentered(GuiGraphics graphics, RedUISprite sprite) { + blitSpriteCenteredAt(graphics, sprite, getFrame().midPoint()); } - default void blitSpriteAt(PoseStack stack, RedUISprite sprite, Point pos) { - RenderSystem.setShaderTexture(0, sprite.texture()); - GuiComponent.blit(stack, pos.x, pos.y, sprite.u(), sprite.v(), sprite.w(), sprite.h(), sprite.textureWidth(), sprite.textureHeight()); + default void blitSpriteAt(GuiGraphics graphics, RedUISprite sprite, Point pos) { +// RenderSystem.setShaderTexture(0, sprite.texture()); + graphics.blit(sprite.texture(), pos.x, pos.y, sprite.u(), sprite.v(), sprite.w(), sprite.h(), sprite.textureWidth(), sprite.textureHeight()); } - default void blitSpriteCenteredAt(PoseStack stack, RedUISprite sprite, Point pos) { + default void blitSpriteCenteredAt(GuiGraphics graphics, RedUISprite sprite, Point pos) { Point blitPos = pos.subtract(new Point(sprite.w() / 2, sprite.h() / 2)); - blitSpriteAt(stack, sprite, blitPos); + blitSpriteAt(graphics, sprite, blitPos); } //endregion } diff --git a/core/src/main/java/mrtjp/projectred/redui/RedUIRootNode.java b/core/src/main/java/mrtjp/projectred/redui/RedUIRootNode.java index b2e50c037..7f1663e55 100644 --- a/core/src/main/java/mrtjp/projectred/redui/RedUIRootNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/RedUIRootNode.java @@ -1,22 +1,17 @@ package mrtjp.projectred.redui; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.network.chat.Component; +import net.minecraft.client.gui.GuiGraphics; import javax.annotation.Nullable; -import java.util.List; public interface RedUIRootNode extends RedUINode { Minecraft getMinecraft(); - ItemRenderer getItemRenderer(); - Font getFontRenderer(); Rect getScreenFrame(); @@ -46,13 +41,11 @@ default double getRelativeZPosition() { return getZPosition(); // Assume screen's base z position is zero } - default void drawBackForSubtree(PoseStack stack, Point mouse, float partialFrame) { - renderBackForSubtree(stack, mouse, partialFrame); + default void drawBackForSubtree(GuiGraphics graphics, Point mouse, float partialFrame) { + renderBackForSubtree(graphics, mouse, partialFrame); } - default void drawFrontForSubtree(PoseStack stack, Point mouse, float partialFrame) { - renderFrontForSubtree(stack, mouse, partialFrame); + default void drawFrontForSubtree(GuiGraphics graphics, Point mouse, float partialFrame) { + renderFrontForSubtree(graphics, mouse, partialFrame); } - - void renderTooltipScreenSpace(PoseStack stack, Point screenSpacePoint, List tooltip); } diff --git a/core/src/main/java/mrtjp/projectred/redui/RedUIScreen.java b/core/src/main/java/mrtjp/projectred/redui/RedUIScreen.java index aba7add98..dfc946c18 100644 --- a/core/src/main/java/mrtjp/projectred/redui/RedUIScreen.java +++ b/core/src/main/java/mrtjp/projectred/redui/RedUIScreen.java @@ -1,13 +1,12 @@ package mrtjp.projectred.redui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import mrtjp.projectred.lib.Size; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.network.chat.Component; import java.util.LinkedList; @@ -50,15 +49,15 @@ protected void init() { } @Override - public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialFrame) { - super.render(matrixStack, mouseX, mouseY, partialFrame); + public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialFrame) { + super.render(graphics, mouseX, mouseY, partialFrame); RenderSystem.enableDepthTest(); // Nodes render out of order, so depth test is needed // Render semi-transparent grey background int x = getScreenFrame().x(); int y = getScreenFrame().y(); - fillGradient(matrixStack, x, y, x + getScreenFrame().width(), y + getScreenFrame().height(), -1072689136, -804253680); + graphics.fillGradient(x, y, x + getScreenFrame().width(), y + getScreenFrame().height(), -1072689136, -804253680); // Call frame update function on all nodes Point mousePoint = new Point(mouseX, mouseY); @@ -68,13 +67,8 @@ public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialF }, false); // Draw the UI - drawBackForSubtree(matrixStack, mousePoint, partialFrame); - drawFrontForSubtree(matrixStack, mousePoint, partialFrame); - } - - @Override - public void renderTooltipScreenSpace(PoseStack stack, Point screenSpacePoint, List tooltip) { - renderComponentTooltip(stack, tooltip, screenSpacePoint.x, screenSpacePoint.y); + drawBackForSubtree(graphics, mousePoint, partialFrame); + drawFrontForSubtree(graphics, mousePoint, partialFrame); } @Override @@ -171,11 +165,6 @@ public boolean isHidden() { return false; } - @Override - public ItemRenderer getItemRenderer() { - return itemRenderer; - } - @Override public Font getFontRenderer() { return font; diff --git a/core/src/main/java/mrtjp/projectred/redui/ScrollBarNode.java b/core/src/main/java/mrtjp/projectred/redui/ScrollBarNode.java index 1794d12d6..8260444d7 100644 --- a/core/src/main/java/mrtjp/projectred/redui/ScrollBarNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/ScrollBarNode.java @@ -1,11 +1,10 @@ package mrtjp.projectred.redui; import codechicken.lib.colour.EnumColour; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import mrtjp.projectred.lib.Size; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; public abstract class ScrollBarNode extends AbstractGuiNode { @@ -28,15 +27,15 @@ public void setSliderSize(int w, int h) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { // Draw semi-transparent grey background int x = getFrame().x(); int y = getFrame().y(); - GuiComponent.fillGradient(stack, x, y, x + getFrame().width(), y + getFrame().height(), EnumColour.BLACK.argb(127), EnumColour.BLACK.argb(127), 0); + graphics.fillGradient(x, y, x + getFrame().width(), y + getFrame().height(), EnumColour.BLACK.argb(127), EnumColour.BLACK.argb(127)); // Draw slider rectangle - drawSlider(stack, sliderFrame); + drawSlider(graphics, sliderFrame); } @Override @@ -131,7 +130,7 @@ public enum ScrollAxis { } } - protected abstract void drawSlider(PoseStack stack, Rect sliderFrame); + protected abstract void drawSlider(GuiGraphics graphics, Rect sliderFrame); protected abstract void adjustContent(double scrollPercentage); //move content based on scroll position } diff --git a/core/src/main/java/mrtjp/projectred/redui/SpriteButtonNode.java b/core/src/main/java/mrtjp/projectred/redui/SpriteButtonNode.java index 3dcbcdc8c..020434581 100644 --- a/core/src/main/java/mrtjp/projectred/redui/SpriteButtonNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/SpriteButtonNode.java @@ -1,6 +1,6 @@ package mrtjp.projectred.redui; -import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; import java.util.function.Supplier; @@ -33,7 +33,7 @@ protected void onButtonClicked() { } @Override - protected void drawButtonBody(PoseStack stack, boolean mouseover) { - blitSpriteCentered(stack, sprite); + protected void drawButtonBody(GuiGraphics graphics, boolean mouseover) { + blitSpriteCentered(graphics, sprite); } } diff --git a/core/src/main/java/mrtjp/projectred/redui/TextBoxNode.java b/core/src/main/java/mrtjp/projectred/redui/TextBoxNode.java index beb4ea2df..17f2031d3 100644 --- a/core/src/main/java/mrtjp/projectred/redui/TextBoxNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/TextBoxNode.java @@ -1,12 +1,11 @@ package mrtjp.projectred.redui; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.Point; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; -import static net.minecraft.client.gui.GuiComponent.fill; import static org.lwjgl.glfw.GLFW.*; public abstract class TextBoxNode extends AbstractGuiNode { @@ -44,15 +43,15 @@ public void setCharacterLimit(int limit) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { // Border int x = getPosition().x; int y = getPosition().y; int width = getFrame().width(); int height = getFrame().height(); - fill(stack, x, y, x + width, y + height, BORDER_COLOR); - fill(stack, x + 1, y + 1, x + width - 1, y + height - 1, BACKGROUND_COLOR); + graphics.fill(x, y, x + width, y + height, BORDER_COLOR); + graphics.fill(x + 1, y + 1, x + width - 1, y + height - 1, BACKGROUND_COLOR); Font fontRenderer = getRoot().getFontRenderer(); String suggestion = getSuggestionString(); @@ -63,7 +62,7 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { int textY = y + height/2 - lineHeight/2; if (currentText.isEmpty() && !suggestion.isEmpty()) { - fontRenderer.draw(stack, suggestion, textX, textY, SUGGESTION_COLOR); + graphics.drawString(fontRenderer, suggestion, textX, textY, SUGGESTION_COLOR, false); } if (!currentText.isEmpty()) { @@ -72,7 +71,7 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { s += "_"; } - fontRenderer.drawShadow(stack, s, textX, textY, enabled ? ENABLED_COLOR : DISABLED_COLOR); + graphics.drawString(fontRenderer, s, textX, textY, enabled ? ENABLED_COLOR : DISABLED_COLOR, true); } } diff --git a/core/src/main/java/mrtjp/projectred/redui/ViewportRenderNode.java b/core/src/main/java/mrtjp/projectred/redui/ViewportRenderNode.java index 5efdad449..a0b5e19df 100644 --- a/core/src/main/java/mrtjp/projectred/redui/ViewportRenderNode.java +++ b/core/src/main/java/mrtjp/projectred/redui/ViewportRenderNode.java @@ -5,10 +5,12 @@ import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexSorting; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import mrtjp.projectred.lib.Size; import mrtjp.projectred.lib.Vec2; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import org.lwjgl.opengl.GL11; @@ -69,7 +71,7 @@ protected double distanceToEncloseRect(double width, double height) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { // Set up projection and view matrices Rect glFrame = getGlFrame(); @@ -87,7 +89,7 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { // Apply projection matrix RenderSystem.backupProjectionMatrix(); - RenderSystem.setProjectionMatrix(pvMatrix.getProjectionMatrix().toMatrix4f()); + RenderSystem.setProjectionMatrix(pvMatrix.getProjectionMatrix().toMatrix4f(), VertexSorting.ORTHOGRAPHIC_Z); PoseStack mvStack = RenderSystem.getModelViewStack(); mvStack.pushPose(); @@ -116,10 +118,10 @@ For now, this only renders properly if correctly ordered in the tree (i.e. every } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { List tooltip = getToolTip(mouse, isFirstHit(mouse)); - renderTooltip(stack, mouse, tooltip); + renderTooltip(graphics, mouse, tooltip); } } diff --git a/core/src/main/resources/META-INF/accesstransformer.cfg b/core/src/main/resources/META-INF/accesstransformer.cfg index ac31586e8..e37f4cd9c 100644 --- a/core/src/main/resources/META-INF/accesstransformer.cfg +++ b/core/src/main/resources/META-INF/accesstransformer.cfg @@ -16,6 +16,7 @@ public-f net.minecraft.world.level.block.RedStoneWireBlock f_55508_ # shouldSign public-f net.minecraft.world.level.block.entity.BlockEntity f_58858_ # worldPosition public net.minecraft.world.inventory.AbstractContainerMenu m_182420_(II)V # updateDataSlotListeners +public net.minecraft.world.SimpleContainer f_19147_ # items public net.minecraft.world.phys.shapes.VoxelShape (Lnet/minecraft/world/phys/shapes/DiscreteVoxelShape;)V # public net.minecraft.world.phys.shapes.VoxelShape f_83211_ # shape diff --git a/core/src/main/resources/META-INF/mods.toml b/core/src/main/resources/META-INF/mods.toml index 1ed248a02..a6833522f 100644 --- a/core/src/main/resources/META-INF/mods.toml +++ b/core/src/main/resources/META-INF/mods.toml @@ -23,7 +23,7 @@ Redstone. The way it was meant to be. [[dependencies.projectred_core]] modId="minecraft" mandatory=true - versionRange="[1.19.2]" + versionRange="[1.20.1]" ordering="NONE" side="BOTH" [[dependencies.projectred_core]] diff --git a/expansion/build.gradle b/expansion/build.gradle index ea3417192..a86950e82 100644 --- a/expansion/build.gradle +++ b/expansion/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.minecraftforge.gradle' + id 'net.neoforged.gradle' id 'com.matthewprenger.cursegradle' id 'org.spongepowered.mixin' } @@ -27,12 +27,12 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" + minecraft "net.neoforged:forge:${mc_version}-${forge_version}" annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' - implementation fg.deobf("codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") - implementation fg.deobf("codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") + implementation fg.deobf("io.codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") + implementation fg.deobf("io.codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") implementation project(":core") } diff --git a/expansion/src/main/generated/.cache/57789ef8655def09ed7848cfbfb28dd91885f7bf b/expansion/src/main/generated/.cache/0c18def4a2dd49b36bdde830b5d5ef609a7f363c similarity index 93% rename from expansion/src/main/generated/.cache/57789ef8655def09ed7848cfbfb28dd91885f7bf rename to expansion/src/main/generated/.cache/0c18def4a2dd49b36bdde830b5d5ef609a7f363c index 0bf7f9c75..865d26efc 100644 --- a/expansion/src/main/generated/.cache/57789ef8655def09ed7848cfbfb28dd91885f7bf +++ b/expansion/src/main/generated/.cache/0c18def4a2dd49b36bdde830b5d5ef609a7f363c @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:04:59.93802 ProjectRed-Expansion Recipes +// 1.20.1 2024-05-02T16:37:29.919699 projectred_expansion Recipes. 85bb6c41f9e4589d26aa40c725805c4faad05edd data/projectred_expansion/recipes/auto_crafter.json 5df2a0b2893205f86665701a94a454ac48b46282 data/projectred_expansion/recipes/battery.json dee1cdd1324b775f4abadfb0e5b4d32692c59578 data/projectred_expansion/recipes/battery_box.json diff --git a/expansion/src/main/generated/.cache/428f0a17e1411feb5e83cc480747073fbd215b4f b/expansion/src/main/generated/.cache/428f0a17e1411feb5e83cc480747073fbd215b4f index ae343ea1c..a77d57432 100644 --- a/expansion/src/main/generated/.cache/428f0a17e1411feb5e83cc480747073fbd215b4f +++ b/expansion/src/main/generated/.cache/428f0a17e1411feb5e83cc480747073fbd215b4f @@ -1,2 +1,2 @@ -// 1.19.2 2024-03-05T10:04:59.936684 ProjectRed-Expansion Languages: en_us +// 1.20.1 2024-05-02T16:37:29.908949 ProjectRed-Expansion Languages: en_us 5c52cb4a0eaf1965cc3381532a2ae3c6203a99c5 assets/projectred_expansion/lang/en_us.json diff --git a/expansion/src/main/generated/.cache/adb03774103e92976a10da6bfa0dbaab10acde0d b/expansion/src/main/generated/.cache/98021baac73a5ba6d8abdf74b58bed538009ec7e similarity index 92% rename from expansion/src/main/generated/.cache/adb03774103e92976a10da6bfa0dbaab10acde0d rename to expansion/src/main/generated/.cache/98021baac73a5ba6d8abdf74b58bed538009ec7e index e71fc3d44..6bfc8dfe2 100644 --- a/expansion/src/main/generated/.cache/adb03774103e92976a10da6bfa0dbaab10acde0d +++ b/expansion/src/main/generated/.cache/98021baac73a5ba6d8abdf74b58bed538009ec7e @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:04:59.926763 ProjectRed-Expansion Block Loot Tables +// 1.20.1 2024-05-02T16:37:29.920293 projectred_expansion Block Loot Tables 411e319a86714481cefff3111427cc18b9b2bfa1 data/projectred_expansion/loot_tables/blocks/auto_crafter.json ecc97100e22b21390a50009a20f67e2bffd693c3 data/projectred_expansion/loot_tables/blocks/battery_box.json 937adf7ed2cd79a1ac65f77a0b22219c1d9631ea data/projectred_expansion/loot_tables/blocks/charging_bench.json diff --git a/expansion/src/main/generated/.cache/557a8b1be9867ac0c847f14b5f2b36bb6445215c b/expansion/src/main/generated/.cache/9d72461853cb94f175be2ec0cd30be96b91066f9 similarity index 74% rename from expansion/src/main/generated/.cache/557a8b1be9867ac0c847f14b5f2b36bb6445215c rename to expansion/src/main/generated/.cache/9d72461853cb94f175be2ec0cd30be96b91066f9 index 8f41f2c91..e11c2d7db 100644 --- a/expansion/src/main/generated/.cache/557a8b1be9867ac0c847f14b5f2b36bb6445215c +++ b/expansion/src/main/generated/.cache/9d72461853cb94f175be2ec0cd30be96b91066f9 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:04:59.937593 ProjectRed-Expansion Block Tags +// 1.20.1 2024-05-02T16:37:29.921086 Tags for minecraft:block mod id projectred_expansion 2efbad637314a6835101b9f533fdf72e1ac5075c data/minecraft/tags/blocks/mineable/axe.json aee01733c21dd12578598e8ad0583fbf575da410 data/minecraft/tags/blocks/mineable/pickaxe.json aee01733c21dd12578598e8ad0583fbf575da410 data/minecraft/tags/blocks/needs_stone_tool.json diff --git a/expansion/src/main/generated/.cache/72d9ae780b67af0f9d7a123ca0dccc34f690e42e b/expansion/src/main/generated/.cache/b71c44817acda374fc60c60d51d7f5eec540e17e similarity index 97% rename from expansion/src/main/generated/.cache/72d9ae780b67af0f9d7a123ca0dccc34f690e42e rename to expansion/src/main/generated/.cache/b71c44817acda374fc60c60d51d7f5eec540e17e index 3e8c7101d..79da58a15 100644 --- a/expansion/src/main/generated/.cache/72d9ae780b67af0f9d7a123ca0dccc34f690e42e +++ b/expansion/src/main/generated/.cache/b71c44817acda374fc60c60d51d7f5eec540e17e @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:04:59.937281 ProjectRed-Expansion Block State Models +// 1.20.1 2024-05-02T16:37:29.920634 Block States: projectred_expansion b697bf3bc54738e649092c6b88cbb4fd9b3da8a3 assets/projectred_expansion/blockstates/auto_crafter.json 1d92e2503aa76e8cf9e908f7afa248a291fcf387 assets/projectred_expansion/blockstates/battery_box.json ac22e2b26c326b40d94951ed7a69b7b994f14aca assets/projectred_expansion/blockstates/charging_bench.json diff --git a/expansion/src/main/generated/.cache/6ea35d4d32933d1d5128eec69e7685517fce9b40 b/expansion/src/main/generated/.cache/e9b9ccd445df9bc8a5c2450219d2603d62d31dd5 similarity index 96% rename from expansion/src/main/generated/.cache/6ea35d4d32933d1d5128eec69e7685517fce9b40 rename to expansion/src/main/generated/.cache/e9b9ccd445df9bc8a5c2450219d2603d62d31dd5 index 15369614e..23b302eb3 100644 --- a/expansion/src/main/generated/.cache/6ea35d4d32933d1d5128eec69e7685517fce9b40 +++ b/expansion/src/main/generated/.cache/e9b9ccd445df9bc8a5c2450219d2603d62d31dd5 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:04:59.935178 ProjectRed-Expansion Item Models +// 1.20.1 2024-05-02T16:37:29.917954 projectred_expansion Item models. 599e9047cbf1215359e3106b1a6a0757a569ffc9 assets/projectred_expansion/models/item/auto_crafter.json 736ab07c8745c163e8a3cb90abc9308466032009 assets/projectred_expansion/models/item/battery.json d887cd7b776f1227da04cf267bf0a48dbc706027 assets/projectred_expansion/models/item/battery_box.json diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/CraftingHelper.java b/expansion/src/main/java/mrtjp/projectred/expansion/CraftingHelper.java index bb7dcc5c3..82a29c50f 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/CraftingHelper.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/CraftingHelper.java @@ -1,12 +1,12 @@ package mrtjp.projectred.expansion; +import mrtjp.projectred.core.inventory.BaseInventory; import mrtjp.projectred.lib.InventoryLib; import net.covers1624.quack.util.LazyValue; import net.minecraft.core.NonNullList; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.inventory.ResultContainer; import net.minecraft.world.item.ItemStack; @@ -16,21 +16,33 @@ import net.minecraftforge.common.ForgeHooks; import javax.annotation.Nullable; +import java.util.List; import java.util.function.Predicate; public class CraftingHelper { - private final CraftingContainer craftingInventory = new CraftingContainer(new AbstractContainerMenu(null, -1) { + private static class CraftingHelperContainer extends BaseInventory implements CraftingContainer { + public CraftingHelperContainer() { + super(9); + } + @Override - public boolean stillValid(Player p_75145_1_) { - return false; + public int getWidth() { + return 3; + } + + @Override + public int getHeight() { + return 3; } @Override - public ItemStack quickMoveStack(Player pPlayer, int pIndex) { - return ItemStack.EMPTY; + public List getItems() { + return List.copyOf(items); } - }, 3, 3); + } + + private final CraftingContainer craftingInventory = new CraftingHelperContainer(); private final ResultContainer craftResultInventory = new ResultContainer(); @@ -78,7 +90,7 @@ public void loadRecipe() { recipe = inputSource.getWorld().getRecipeManager() .getRecipeFor(RecipeType.CRAFTING, craftingInventory, inputSource.getWorld()).orElse(null); - craftResultInventory.setItem(0, recipe == null ? ItemStack.EMPTY : recipe.assemble(craftingInventory)); + craftResultInventory.setItem(0, recipe == null ? ItemStack.EMPTY : recipe.assemble(craftingInventory, inputSource.getWorld().registryAccess())); } public void loadOutput() { @@ -174,7 +186,7 @@ private CraftingResult craftFromSource(Container source, boolean simulate) { if (!recipe.matches(craftingInventory, inputSource.getWorld())) return CraftingResult.EMPTY; - ItemStack result = recipe.assemble(craftingInventory); + ItemStack result = recipe.assemble(craftingInventory, inputSource.getWorld().registryAccess()); if (result.isEmpty()) return CraftingResult.EMPTY; if (simulate) { @@ -190,13 +202,13 @@ private CraftingResult craftFromSource(Container source, boolean simulate) { boolean isPresent = consumeIngredient(source, 0, input -> { // Candidate ingredient must be same item - if (!input.sameItemStackIgnoreDurability(previousInput)) return false; + if (!ItemStack.isSameItem(input, previousInput)) return false; // Recipe must still function with new input swapped in craftingInventory.setItem(slot, input); boolean canStillCraft = recipe.matches(craftingInventory, inputSource.getWorld()) && - ItemStack.isSame(result, recipe.assemble(craftingInventory)); + ItemStack.isSameItem(result, recipe.assemble(craftingInventory, inputSource.getWorld().registryAccess())); craftingInventory.setItem(slot, previousInput); return canStillCraft; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java b/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java index 6a514bf6c..add1ac872 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java @@ -657,7 +657,7 @@ public boolean contains(BlockPos pos) { public boolean canMove(Level level) { if (!level.isLoaded(pos)) return false; BlockState state = level.getBlockState(pos); - if (!(state.isAir() || state.getMaterial().isReplaceable())) return false; + if (!(state.isAir() || state.canBeReplaced())) return false; Iterator it = iteratePreMove(); while (it.hasNext()) { diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/ProjectRedExpansion.java b/expansion/src/main/java/mrtjp/projectred/expansion/ProjectRedExpansion.java index 3ee1cd017..f25df34e4 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/ProjectRedExpansion.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/ProjectRedExpansion.java @@ -1,16 +1,18 @@ package mrtjp.projectred.expansion; -import codechicken.lib.gui.SimpleCreativeTab; import codechicken.multipart.api.MultipartType; import codechicken.multipart.api.PartConverter; import codechicken.multipart.util.MultipartGenerator; +import mrtjp.projectred.api.Frame; import mrtjp.projectred.api.ProjectRedAPI; import mrtjp.projectred.expansion.data.*; import mrtjp.projectred.expansion.init.*; +import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraftforge.api.distmarker.Dist; @@ -42,8 +44,7 @@ public class ProjectRedExpansion { public static final DeferredRegister> MENU_TYPES = DeferredRegister.create(ForgeRegistries.MENU_TYPES, MOD_ID); public static final DeferredRegister> PART_TYPES = DeferredRegister.create(MultipartType.MULTIPART_TYPES, MOD_ID); public static final DeferredRegister PART_CONVERTERS = DeferredRegister.create(PartConverter.PART_CONVERTERS, MOD_ID); - - public static final SimpleCreativeTab EXPANSION_GROUP = new SimpleCreativeTab(MOD_ID, () -> new ItemStack(ExpansionBlocks.PROJECT_BENCH_BLOCK.get())); + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MOD_ID); static { ProjectRedAPI.expansionAPI = ExpansionAPI.INSTANCE; @@ -52,6 +53,7 @@ public class ProjectRedExpansion { ExpansionMenus.register(); ExpansionItems.register(); ExpansionParts.register(); + ExpansionCreativeModeTabs.register(); } public ProjectRedExpansion() { @@ -68,6 +70,7 @@ public ProjectRedExpansion() { MENU_TYPES.register(modEventBus); PART_TYPES.register(modEventBus); PART_CONVERTERS.register(modEventBus); + CREATIVE_TABS.register(modEventBus); MinecraftForge.EVENT_BUS.addListener(MovementManager::onChunkWatchEvent); MinecraftForge.EVENT_BUS.addListener(MovementManager::onChunkUnwatchEvent); @@ -82,7 +85,7 @@ private void commonSetup(final FMLCommonSetupEvent event) { ExpansionNetwork.init(); // Register frame as Multipart tile passthrough interface - MultipartGenerator.INSTANCE.registerPassThroughInterface("mrtjp.projectred.api.Frame"); + MultipartGenerator.INSTANCE.registerPassThroughInterface(Frame.class); // Init Movement registry MovementRegistry.init(); @@ -90,14 +93,15 @@ private void commonSetup(final FMLCommonSetupEvent event) { private void onGatherDataEvent(final GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper fileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeClient(), new ExpansionBlockStateModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new ExpansionItemModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new ExpansionLanguageProvider(generator)); + generator.addProvider(event.includeClient(), new ExpansionBlockStateModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new ExpansionItemModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new ExpansionLanguageProvider(output)); - generator.addProvider(event.includeServer(), new ExpansionBlockTagsProvider(generator, fileHelper)); - generator.addProvider(event.includeServer(), new ExpansionRecipeProvider(generator)); - generator.addProvider(event.includeServer(), new ExpansionLootTableProvider(generator)); + generator.addProvider(event.includeServer(), new ExpansionBlockTagsProvider(output, event.getLookupProvider(), fileHelper)); + generator.addProvider(event.includeServer(), new ExpansionRecipeProvider(output)); + generator.addProvider(event.includeServer(), new ExpansionLootTableProvider(output)); } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/BatteryBoxBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/BatteryBoxBlock.java index 21b8eac64..f477f528b 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/BatteryBoxBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/BatteryBoxBlock.java @@ -17,7 +17,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.HitResult; import org.jetbrains.annotations.Nullable; @@ -60,7 +60,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder getDrops(BlockState state, LootContext.Builder builder) { + public List getDrops(BlockState state, LootParams.Builder builder) { BlockEntity tile = builder.getParameter(LootContextParams.BLOCK_ENTITY); if (tile instanceof BatteryBoxTile batteryBoxTile) { return Collections.singletonList(batteryBoxTile.createStackWithStoredPower()); // Retain power inside itemstack diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameBlock.java index bb70139d5..a14c44eef 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameBlock.java @@ -17,7 +17,7 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.shapes.CollisionContext; @@ -36,7 +36,8 @@ public class FrameBlock extends Block implements Frame { private static final VoxelShape[] shapes = new VoxelShape[64]; public FrameBlock() { - super(BlockBehaviour.Properties.of(Material.WOOD) + super(BlockBehaviour.Properties.of() + .mapColor(MapColor.WOOD) .strength(2.0F) .sound(SoundType.WOOD) .dynamicShape()); // To prevent early caching before modelVerts can be loaded diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameBlockRenderer.java b/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameBlockRenderer.java index a1fef5e44..d6c564d13 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameBlockRenderer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameBlockRenderer.java @@ -13,9 +13,9 @@ import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; @@ -49,7 +49,7 @@ public void renderBlock(BlockState state, BlockPos pos, BlockAndTintGetter world //region IItemRenderer @Override - public void renderItem(ItemStack stack, ItemTransforms.TransformType transformType, PoseStack mStack, MultiBufferSource source, int packedLight, int packedOverlay) { + public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseStack mStack, MultiBufferSource source, int packedLight, int packedOverlay) { CCRenderState ccrs = CCRenderState.instance(); ccrs.reset(); ccrs.brightness = packedLight; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameModelRenderer.java b/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameModelRenderer.java index 1725f722c..55c3794e4 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameModelRenderer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameModelRenderer.java @@ -4,12 +4,13 @@ import codechicken.lib.render.CCRenderState; import codechicken.lib.render.lighting.LightModel; import codechicken.lib.render.model.OBJParser; -import codechicken.lib.texture.AtlasRegistrar; import codechicken.lib.vec.Translation; import codechicken.lib.vec.Vertex5; import codechicken.lib.vec.uv.IconTransformation; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.fml.loading.FMLEnvironment; import java.io.FileWriter; @@ -44,8 +45,9 @@ public static Vertex5[] getQuadsForMask(int mask) { return getOrGenerateModel(mask).verts; } - public static void registerIcons(AtlasRegistrar registrar) { - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/frame"), i -> frameIcon = new IconTransformation(i)); + public static void onTextureStitchEvent(TextureStitchEvent.Post event) { + if (!event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) return; + frameIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/frame"))); } private static Map loadModels(String path) { diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameMotorBlockRenderer.java b/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameMotorBlockRenderer.java index 678191430..763cb6406 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameMotorBlockRenderer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/client/FrameMotorBlockRenderer.java @@ -1,19 +1,20 @@ package mrtjp.projectred.expansion.client; import codechicken.lib.model.PerspectiveModelState; -import codechicken.lib.texture.AtlasRegistrar; import codechicken.lib.util.TransformUtils; import codechicken.lib.vec.uv.MultiIconTransformation; import mrtjp.projectred.core.block.ProjectRedBlock; import mrtjp.projectred.core.client.FullyOrientableBlockRenderer; import mrtjp.projectred.expansion.init.ExpansionBlocks; import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.event.TextureStitchEvent; import javax.annotation.Nullable; import java.util.Objects; @@ -81,14 +82,15 @@ private void createIconTransforms() { } } - public static void registerIcons(AtlasRegistrar registrar) { - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/frame_motor_top"), i -> topIcon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/frame_motor_front_back_0"), i -> frontBack0Icon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/frame_motor_front_back_1"), i -> frontBack1Icon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/frame_motor_front_back_2"), i -> frontBack2Icon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/frame_motor_left"), i -> leftIcon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/frame_motor_right"), i -> rightIcon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/frame_motor_bottom"), i -> bottomIcon = i); + public static void onTextureStitchEvent(TextureStitchEvent.Post event) { + if (!event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) return; + topIcon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/frame_motor_top")); + frontBack0Icon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/frame_motor_front_back_0")); + frontBack1Icon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/frame_motor_front_back_1")); + frontBack2Icon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/frame_motor_front_back_2")); + leftIcon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/frame_motor_left")); + rightIcon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/frame_motor_right")); + bottomIcon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/frame_motor_bottom")); } public static TextureAtlasSprite getParticleIcon(BlockState state, int side) { diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockStateModelProvider.java b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockStateModelProvider.java index 8aa8c7205..b1063ac31 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockStateModelProvider.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockStateModelProvider.java @@ -2,7 +2,7 @@ import mrtjp.projectred.core.block.ProjectRedBlock; import mrtjp.projectred.expansion.block.BatteryBoxBlock; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.BlockModelBuilder; import net.minecraftforge.client.model.generators.BlockStateProvider; @@ -11,8 +11,6 @@ import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.registries.ForgeRegistries; -import javax.annotation.Nonnull; - import static mrtjp.projectred.expansion.ProjectRedExpansion.MOD_ID; import static mrtjp.projectred.expansion.init.ExpansionBlocks.*; @@ -22,13 +20,8 @@ public class ExpansionBlockStateModelProvider extends BlockStateProvider { // XY rotations for non-rotatable sided devices private static final int[][] DEVICE_SIDED_ROTATIONS = { {0, 0}, {2, 2}, {1, 2}, {1, 0}, {1, 1}, {1, 3} }; - public ExpansionBlockStateModelProvider(DataGenerator gen, ExistingFileHelper exFileHelper) { - super(gen, MOD_ID, exFileHelper); - } - - @Override - public @Nonnull String getName() { - return "ProjectRed-Expansion Block State Models"; + public ExpansionBlockStateModelProvider(PackOutput output, ExistingFileHelper exFileHelper) { + super(output, MOD_ID, exFileHelper); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockTagsProvider.java b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockTagsProvider.java index 5cd9b033d..6ae8cae1d 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockTagsProvider.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockTagsProvider.java @@ -1,27 +1,25 @@ package mrtjp.projectred.expansion.data; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.tags.BlockTags; +import net.minecraftforge.common.data.BlockTagsProvider; import net.minecraftforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.Nullable; +import java.util.concurrent.CompletableFuture; + import static mrtjp.projectred.expansion.ProjectRedExpansion.MOD_ID; import static mrtjp.projectred.expansion.init.ExpansionBlocks.*; public class ExpansionBlockTagsProvider extends BlockTagsProvider { - public ExpansionBlockTagsProvider(DataGenerator gen, @Nullable ExistingFileHelper existingFileHelper) { - super(gen, MOD_ID, existingFileHelper); - } - - @Override - public String getName() { - return "ProjectRed-Expansion Block Tags"; + public ExpansionBlockTagsProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, MOD_ID, existingFileHelper); } @Override - protected void addTags() { + protected void addTags(HolderLookup.Provider lookup) { tag(BlockTags.MINEABLE_WITH_AXE) .add(BATTERY_BOX_BLOCK.get()) diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionItemModelProvider.java b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionItemModelProvider.java index 4d58143af..4b2c1c155 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionItemModelProvider.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionItemModelProvider.java @@ -1,7 +1,7 @@ package mrtjp.projectred.expansion.data; import codechicken.lib.datagen.ItemModelProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.ItemModelBuilder; @@ -16,13 +16,8 @@ public class ExpansionItemModelProvider extends ItemModelProvider { - public ExpansionItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { - super(generator, MOD_ID, existingFileHelper); - } - - @Override - public String getName() { - return "ProjectRed-Expansion Item Models"; + public ExpansionItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, MOD_ID, existingFileHelper); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionLanguageProvider.java b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionLanguageProvider.java index ab67c04a6..13b7c7919 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionLanguageProvider.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionLanguageProvider.java @@ -1,6 +1,6 @@ package mrtjp.projectred.expansion.data; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.LanguageProvider; import static mrtjp.projectred.expansion.ProjectRedExpansion.MOD_ID; @@ -11,8 +11,8 @@ public class ExpansionLanguageProvider extends LanguageProvider { - public ExpansionLanguageProvider(DataGenerator gen) { - super(gen, MOD_ID, "en_us"); + public ExpansionLanguageProvider(PackOutput output) { + super(output, MOD_ID, "en_us"); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionLootTableProvider.java b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionLootTableProvider.java index 1fdbba2e3..53bbcc141 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionLootTableProvider.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionLootTableProvider.java @@ -1,19 +1,15 @@ package mrtjp.projectred.expansion.data; import codechicken.lib.datagen.LootTableProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import static mrtjp.projectred.expansion.ProjectRedExpansion.MOD_ID; import static mrtjp.projectred.expansion.init.ExpansionBlocks.*; public class ExpansionLootTableProvider extends LootTableProvider.BlockLootProvider { - public ExpansionLootTableProvider(DataGenerator dataGenerator) { - super(dataGenerator); - } - - @Override - public String getName() { - return "ProjectRed-Expansion Block Loot Tables"; + public ExpansionLootTableProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionRecipeProvider.java b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionRecipeProvider.java index f9e47126e..adf186943 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionRecipeProvider.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionRecipeProvider.java @@ -1,7 +1,7 @@ package mrtjp.projectred.expansion.data; import codechicken.lib.datagen.recipe.RecipeProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; @@ -10,19 +10,15 @@ import static mrtjp.projectred.core.init.CoreItems.COPPER_COIL_ITEM; import static mrtjp.projectred.core.init.CoreItems.MOTOR_ITEM; import static mrtjp.projectred.core.init.CoreTags.*; +import static mrtjp.projectred.expansion.ProjectRedExpansion.MOD_ID; import static mrtjp.projectred.expansion.init.ExpansionBlocks.*; import static mrtjp.projectred.expansion.init.ExpansionItems.*; import static net.minecraftforge.common.Tags.Items.INGOTS_COPPER; public class ExpansionRecipeProvider extends RecipeProvider { - public ExpansionRecipeProvider(DataGenerator generatorIn) { - super(generatorIn); - } - - @Override - public String getName() { - return "ProjectRed-Expansion Recipes"; + public ExpansionRecipeProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/AutoCrafterScreen.java b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/AutoCrafterScreen.java index cc7e8bc6b..53d405f63 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/AutoCrafterScreen.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/AutoCrafterScreen.java @@ -1,15 +1,13 @@ package mrtjp.projectred.expansion.gui.screen.inventory; import codechicken.lib.colour.EnumColour; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.expansion.inventory.container.AutoCrafterContainer; import mrtjp.projectred.expansion.item.RecipePlanItem; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.AbstractButtonNode; import mrtjp.projectred.redui.RedUIContainerScreen; -import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -42,9 +40,8 @@ protected void onButtonClicked() { } @Override - protected void drawButtonBody(PoseStack stack, boolean mouseover) { - RenderSystem.setShaderTexture(0, BACKGROUND); - blit(stack, getPosition().x, getPosition().y, 176, 0, 14, 14); + protected void drawButtonBody(GuiGraphics graphics, boolean mouseover) { + graphics.blit(BACKGROUND, getPosition().x, getPosition().y, 176, 0, 14, 14); } }; cyclePlanButton.setPosition(126, 23); @@ -53,58 +50,56 @@ protected void drawButtonBody(PoseStack stack, boolean mouseover) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - super.drawBack(stack, mouse, partialFrame); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + super.drawBack(graphics, mouse, partialFrame); - RenderSystem.setShaderTexture(0, BACKGROUND); int x = getFrame().x(); int y = getFrame().y(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); if (getMenu().canConductorWork()) - blit(stack, x + 16, y + 16, 177, 18, 7, 9); + graphics.blit(BACKGROUND, x + 16, y + 16, 177, 18, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 16, y + 26, 177, 27, 7, 48, getMenu().getChargeScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 16, y + 26, 177, 27, 7, 48, getMenu().getChargeScaled(48)); if (getMenu().isFlowFull()) - blit(stack, x + 27, y + 16, 185, 18, 7, 9); + graphics.blit(BACKGROUND, x + 27, y + 16, 185, 18, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 27, y + 26, 185, 27, 7, 48, getMenu().getFlowScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 27, y + 26, 185, 27, 7, 48, getMenu().getFlowScaled(48)); // Draw progress bar int s = getMenu().getProgressScaled(22); - blit(stack, x + 100, y + 41, 193, 23, s + 1, 14); + graphics.blit(BACKGROUND, x + 100, y + 41, 193, 23, s + 1, 14); // Draw plan output stack ItemStack output = getMenu().getPlanOutput(); if (!output.isEmpty()) { - getItemRenderer().renderGuiItem(output, x + 125, y + 40); + graphics.renderItem(output, x + 125, y + 40); } } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { // Plan output overlays if (isShiftDown) { - drawPlanOutputsOverlay(stack, getFrame().x(), getFrame().y()); + drawPlanOutputsOverlay(graphics, getFrame().x(), getFrame().y()); } // Selected plan slot - drawPlanSlotSelection(stack, getFrame().x() + 44, getFrame().y() + 22); + drawPlanSlotSelection(graphics, getFrame().x() + 44, getFrame().y() + 22); } - private void drawPlanSlotSelection(PoseStack stack, int xPos, int yPos) { - RenderSystem.setShaderTexture(0, BACKGROUND); + private void drawPlanSlotSelection(GuiGraphics graphics, int xPos, int yPos) { int s = getMenu().getPlanSlot(); int ix = s % 3; int iy = s / 3; int x = xPos + 18 * ix - 3; int y = yPos + 18 * iy - 3; - blit(stack, x, y, 193, 0, 22, 22); + graphics.blit(BACKGROUND, x, y, 193, 0, 22, 22); } - private void drawPlanOutputsOverlay(PoseStack mStack, int xPos, int yPos) { + private void drawPlanOutputsOverlay(GuiGraphics graphics, int xPos, int yPos) { for (Slot slot : getMenu().slots) { ItemStack stack = slot.getItem(); @@ -112,12 +107,10 @@ private void drawPlanOutputsOverlay(PoseStack mStack, int xPos, int yPos) { ItemStack output = RecipePlanItem.loadPlanOutput(stack); int colour = EnumColour.LIGHT_BLUE.argb(0xCC); - fillGradient(mStack, xPos + slot.x, yPos + slot.y, xPos + slot.x + 16, yPos + slot.y + 16, colour, colour); + graphics.fillGradient(xPos + slot.x, yPos + slot.y, xPos + slot.x + 16, yPos + slot.y + 16, colour, colour); - ItemRenderer renderer = getItemRenderer(); - renderer.blitOffset += 200; - renderer.renderGuiItem(output, xPos + slot.x, yPos + slot.y); - renderer.blitOffset -= 200; + // Render item at Z +200 + graphics.renderItem(output, xPos + slot.x, yPos + slot.y, 0, 200); } } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/BatteryBoxScreen.java b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/BatteryBoxScreen.java index 98ba991ca..f556c541a 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/BatteryBoxScreen.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/BatteryBoxScreen.java @@ -1,11 +1,10 @@ package mrtjp.projectred.expansion.gui.screen.inventory; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.expansion.inventory.container.BatteryBoxContainer; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -24,25 +23,24 @@ public BatteryBoxScreen(BatteryBoxContainer container, Inventory playerInventory } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, BACKGROUND); int x = getFrame().x(); int y = getFrame().y(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); if (getMenu().canConductorWork()) - blit(stack, x + 57, y + 16, 176, 1, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 57, y + 26, 176, 10, 7, 48, getMenu().getChargeScaled(48)); + graphics.blit(BACKGROUND, x + 57, y + 16, 176, 1, 7, 9); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 57, y + 26, 176, 10, 7, 48, getMenu().getChargeScaled(48)); if (getMenu().isPowerStorageFull()) - blit(stack, x + 112, y + 16, 184, 1, 14, 9); - GuiLib.drawVerticalTank(stack, this, x + 112, y + 26, 184, 10, 14, 48, getMenu().getPowerStoredScaled(48)); + graphics.blit(BACKGROUND, x + 112, y + 16, 184, 1, 14, 9); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 112, y + 26, 184, 10, 14, 48, getMenu().getPowerStoredScaled(48)); if (getMenu().isStorageCharging()) - blit(stack, x + 65, y + 52, 199, 18, 48, 18); + graphics.blit(BACKGROUND, x + 65, y + 52, 199, 18, 48, 18); else if (getMenu().isStorageDischarging()) - blit(stack, x + 65, y + 30, 199, 0, 48, 18); + graphics.blit(BACKGROUND, x + 65, y + 30, 199, 0, 48, 18); } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ChargingBenchScreen.java b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ChargingBenchScreen.java index ec6496264..8d350d4ad 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ChargingBenchScreen.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ChargingBenchScreen.java @@ -1,11 +1,10 @@ package mrtjp.projectred.expansion.gui.screen.inventory; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.expansion.inventory.container.ChargingBenchContainer; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -24,25 +23,24 @@ public ChargingBenchScreen(ChargingBenchContainer container, Inventory playerInv } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, BACKGROUND); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { int x = getFrame().x(); int y = getFrame().y(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); if (getMenu().canConductorWork()) - blit(stack, x + 14, y + 17, 176, 1, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 14, y + 27, 176, 10, 7, 48, getMenu().getChargeScaled(48)); + graphics.blit(BACKGROUND, x + 14, y + 17, 176, 1, 7, 9); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 14, y + 27, 176, 10, 7, 48, getMenu().getChargeScaled(48)); if (getMenu().isPowerStorageFull()) - blit(stack, x + 41, y + 17, 184, 1, 14, 9); - GuiLib.drawVerticalTank(stack, this, x + 41, y + 27, 184, 10, 14, 48, getMenu().getPowerStoredScaled(48)); + graphics.blit(BACKGROUND, x + 41, y + 17, 184, 1, 14, 9); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 41, y + 27, 184, 10, 14, 48, getMenu().getPowerStoredScaled(48)); if (getMenu().isStorageCharging()) - blit(stack, x + 26, y + 48, 199, 0, 10, 8); + graphics.blit(BACKGROUND, x + 26, y + 48, 199, 0, 10, 8); if (getMenu().areItemsCharging()) - blit(stack, x + 63, y + 29, 210, 0, 17, 10); + graphics.blit(BACKGROUND, x + 63, y + 29, 210, 0, 17, 10); } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ProjectBenchScreen.java b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ProjectBenchScreen.java index 2d43fafb3..0201a9b89 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ProjectBenchScreen.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ProjectBenchScreen.java @@ -2,7 +2,6 @@ import codechicken.lib.colour.EnumColour; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.expansion.ProjectRedExpansion; import mrtjp.projectred.expansion.inventory.container.ProjectBenchContainer; import mrtjp.projectred.expansion.item.RecipePlanItem; @@ -10,7 +9,7 @@ import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.AbstractButtonNode; import mrtjp.projectred.redui.RedUIContainerScreen; -import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.Container; @@ -43,9 +42,8 @@ protected void onButtonClicked() { } @Override - protected void drawButtonBody(PoseStack stack, boolean mouseover) { - RenderSystem.setShaderTexture(0, BACKGROUND); - blit(stack, getPosition().x, getPosition().y, 176, 0, 14, 14); + protected void drawButtonBody(GuiGraphics graphics, boolean mouseover) { + graphics.blit(BACKGROUND, getPosition().x, getPosition().y, 176, 0, 14, 14); } }; writePlanButton.setPosition(18, 56); @@ -59,9 +57,9 @@ protected void onButtonClicked() { } @Override - protected void drawButtonBody(PoseStack stack, boolean mouseover) { + protected void drawButtonBody(GuiGraphics graphics, boolean mouseover) { RenderSystem.setShaderTexture(0, BACKGROUND); - blit(stack, getPosition().x, getPosition().y, 176, 15, 8, 8); + graphics.blit(BACKGROUND, getPosition().x, getPosition().y, 176, 15, 8, 8); } }; clearGridButton.setPosition(37, 17); @@ -70,31 +68,29 @@ protected void drawButtonBody(PoseStack stack, boolean mouseover) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, BACKGROUND); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { int x = getFrame().x(); int y = getFrame().y(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); ProjectBenchTile tile = getMenu().getProjectBenchTile(); if (tile.isPlanRecipe()) { int missingMask = tile.getCraftingHelper().getMissingIngredientMask(); Container inputs = tile.getCraftingHelper().getCraftingInventory(); - drawPlanIngredientsOverlay(stack, inputs, missingMask, x + 48, y + 18); + drawPlanIngredientsOverlay(graphics, inputs, missingMask, x + 48, y + 18); } } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (isShiftDown) { - drawPlanOutputsOverlay(stack, getFrame().x(), getFrame().y()); + drawPlanOutputsOverlay(graphics, getFrame().x(), getFrame().y()); } } - private void drawPlanIngredientsOverlay(PoseStack mStack, Container ingredients, int missingMask, int xPos, int yPos) { - + private void drawPlanIngredientsOverlay(GuiGraphics graphics, Container ingredients, int missingMask, int xPos, int yPos) { for (int y = 0; y < 3; y++) { for (int x = 0; x < 3; x++) { int drawPosX = xPos + (x * 18); @@ -105,14 +101,14 @@ private void drawPlanIngredientsOverlay(PoseStack mStack, Container ingredients, int colour = (missingMask & 1 << index) != 0 ? EnumColour.RED.argb(0x77) : EnumColour.GRAY.argb(0x77); if (!ingredient.isEmpty()) { - fillGradient(mStack, drawPosX, drawPosY, drawPosX + 16, drawPosY + 16, colour, colour); - getItemRenderer().renderGuiItem(ingredient, drawPosX, drawPosY); + graphics.fillGradient(drawPosX, drawPosY, drawPosX + 16, drawPosY + 16, colour, colour); + graphics.renderItem(ingredient, drawPosX, drawPosY); } } } } - private void drawPlanOutputsOverlay(PoseStack mStack, int xPos, int yPos) { + private void drawPlanOutputsOverlay(GuiGraphics graphics, int xPos, int yPos) { for (Slot slot : getMenu().slots) { ItemStack stack = slot.getItem(); @@ -120,12 +116,10 @@ private void drawPlanOutputsOverlay(PoseStack mStack, int xPos, int yPos) { ItemStack output = RecipePlanItem.loadPlanOutput(stack); int colour = EnumColour.LIGHT_BLUE.argb(0xCC); - fillGradient(mStack, xPos + slot.x, yPos + slot.y, xPos + slot.x + 16, yPos + slot.y + 16, colour, colour); + graphics.fillGradient(xPos + slot.x, yPos + slot.y, xPos + slot.x + 16, yPos + slot.y + 16, colour, colour); - ItemRenderer renderer = getItemRenderer(); - renderer.blitOffset += 200; - renderer.renderGuiItem(output, xPos + slot.x, yPos + slot.y); - renderer.blitOffset -= 200; + // Render item at Z +200 + graphics.renderItem(output, xPos + slot.x, yPos + slot.y, 0, 200); } } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionBlocks.java b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionBlocks.java index a7d586c87..2d67349da 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionBlocks.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionBlocks.java @@ -64,13 +64,13 @@ public static void register() { // BLOCKS.register(ID_TELEPOSER, TeleposerBlock::new); // Block Items - ITEMS.register(ID_PROJECT_BENCH, () -> new BlockItem(PROJECT_BENCH_BLOCK.get(), new Item.Properties().tab(EXPANSION_GROUP))); - ITEMS.register(ID_BATTERY_BOX, () -> new BlockItem(BATTERY_BOX_BLOCK.get(), new Item.Properties().tab(EXPANSION_GROUP))); - ITEMS.register(ID_AUTO_CRAFTER, () -> new BlockItem(AUTO_CRAFTER_BLOCK.get(), new Item.Properties().tab(EXPANSION_GROUP))); - ITEMS.register(ID_CHARGING_BENCH, () -> new BlockItem(CHARGING_BENCH_BLOCK.get(), new Item.Properties().tab(EXPANSION_GROUP))); - ITEMS.register(ID_FIRE_STARTER, () -> new BlockItem(FIRE_STARTER_BLOCK.get(), new Item.Properties().tab(EXPANSION_GROUP))); - ITEMS.register(ID_FRAME_MOTOR, () -> new BlockItem(FRAME_MOTOR_BLOCK.get(), new Item.Properties().tab(EXPANSION_GROUP))); - ITEMS.register(ID_FRAME_ACTUATOR, () -> new BlockItem(FRAME_ACTUATOR_BLOCK.get(), new Item.Properties().tab(EXPANSION_GROUP))); + ITEMS.register(ID_PROJECT_BENCH, () -> new BlockItem(PROJECT_BENCH_BLOCK.get(), new Item.Properties())); + ITEMS.register(ID_BATTERY_BOX, () -> new BlockItem(BATTERY_BOX_BLOCK.get(), new Item.Properties())); + ITEMS.register(ID_AUTO_CRAFTER, () -> new BlockItem(AUTO_CRAFTER_BLOCK.get(), new Item.Properties())); + ITEMS.register(ID_CHARGING_BENCH, () -> new BlockItem(CHARGING_BENCH_BLOCK.get(), new Item.Properties())); + ITEMS.register(ID_FIRE_STARTER, () -> new BlockItem(FIRE_STARTER_BLOCK.get(), new Item.Properties())); + ITEMS.register(ID_FRAME_MOTOR, () -> new BlockItem(FRAME_MOTOR_BLOCK.get(), new Item.Properties())); + ITEMS.register(ID_FRAME_ACTUATOR, () -> new BlockItem(FRAME_ACTUATOR_BLOCK.get(), new Item.Properties())); // ITEMS.register(ID_INDUCTION_FURNACE, () -> new BlockItem(INDUCTION_FURNACE_BLOCK, new Item.Properties().tab(EXPANSION_GROUP))); // ITEMS.register(ID_TELEPOSER, () -> new BlockItem(TELEPOSER_BLOCK, new Item.Properties().tab(EXPANSION_GROUP))); @@ -88,7 +88,7 @@ public static void register() { /* Blocks */ FRAME_BLOCK = BLOCKS.register(ID_FRAME, FrameBlock::new); - ITEMS.register(ID_FRAME, () -> new BlockItem(FRAME_BLOCK.get(), new Item.Properties().tab(EXPANSION_GROUP))); + ITEMS.register(ID_FRAME, () -> new BlockItem(FRAME_BLOCK.get(), new Item.Properties())); } } \ No newline at end of file diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionClientInit.java b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionClientInit.java index a4f9e7cc6..b657fe06b 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionClientInit.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionClientInit.java @@ -2,7 +2,6 @@ import codechicken.lib.model.ModelRegistryHelper; import codechicken.lib.render.block.BlockRenderingRegistry; -import codechicken.lib.texture.SpriteRegistryHelper; import codechicken.multipart.api.MultipartClientRegistry; import mrtjp.projectred.expansion.MovementManager; import mrtjp.projectred.expansion.client.*; @@ -46,9 +45,8 @@ public static void init() { MinecraftForge.EVENT_BUS.addListener(MovementManager::onRenderLevelStage); // Register sprites - SpriteRegistryHelper spriteHelper = new SpriteRegistryHelper(modEventBus); - spriteHelper.addIIconRegister(FrameModelRenderer::registerIcons); - spriteHelper.addIIconRegister(FrameMotorBlockRenderer::registerIcons); + modEventBus.addListener(FrameModelRenderer::onTextureStitchEvent); + modEventBus.addListener(FrameMotorBlockRenderer::onTextureStitchEvent); } private static void clientSetup(final FMLClientSetupEvent event) { diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionCreativeModeTabs.java b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionCreativeModeTabs.java new file mode 100644 index 000000000..5f6ef70b5 --- /dev/null +++ b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionCreativeModeTabs.java @@ -0,0 +1,44 @@ +package mrtjp.projectred.expansion.init; + +import mrtjp.projectred.expansion.ProjectRedExpansion; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.RegistryObject; + +import static mrtjp.projectred.expansion.ProjectRedExpansion.MOD_ID; +import static mrtjp.projectred.expansion.init.ExpansionBlocks.*; +import static mrtjp.projectred.expansion.init.ExpansionItems.*; + +@SuppressWarnings("NotNullFieldNotInitialized") +public class ExpansionCreativeModeTabs { + + public static RegistryObject EXPANSION_CREATIVE_TAB; + + public static void register() { + + EXPANSION_CREATIVE_TAB = ProjectRedExpansion.CREATIVE_TABS.register("expansion", + () -> CreativeModeTab.builder() + .icon(() -> new ItemStack(ExpansionBlocks.PROJECT_BENCH_BLOCK.get())) + .title(Component.translatable("itemGroup." + MOD_ID)) + .displayItems((params, output) -> { + + // Blocks + output.accept(FRAME_BLOCK.get()); + output.accept(PROJECT_BENCH_BLOCK.get()); + output.accept(BATTERY_BOX_BLOCK.get()); + output.accept(CHARGING_BENCH_BLOCK.get()); + output.accept(AUTO_CRAFTER_BLOCK.get()); + output.accept(FIRE_STARTER_BLOCK.get()); + output.accept(FRAME_MOTOR_BLOCK.get()); + output.accept(FRAME_ACTUATOR_BLOCK.get()); + + // Items + output.accept(RECIPE_PLAN_ITEM.get()); + output.accept(BATTERY_ITEM.get()); + output.accept(EMPTY_BATTERY_ITEM.get()); + output.accept(ELECTRIC_SCREWDRIVER_ITEM.get()); + + }).build()); + } +} diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterContainer.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterContainer.java index ea7360791..8e7991264 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterContainer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterContainer.java @@ -16,7 +16,7 @@ public class AutoCrafterContainer extends BaseMachineContainer { public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> { - BlockEntity tile = playerInv.player.level.getBlockEntity(packet.readPos()); + BlockEntity tile = playerInv.player.level().getBlockEntity(packet.readPos()); if (!(tile instanceof AutoCrafterTile)) return null; return new AutoCrafterContainer(playerInv, (AutoCrafterTile) tile, windowId); }; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxContainer.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxContainer.java index 1d1e598cf..467baf928 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxContainer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxContainer.java @@ -18,7 +18,7 @@ public class BatteryBoxContainer extends BasePoweredTileContainer { public static final ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); + BlockEntity tile = inventory.player.level().getBlockEntity(packet.readPos()); if (!(tile instanceof BatteryBoxTile)) return null; return new BatteryBoxContainer(inventory, (BatteryBoxTile) tile, windowId); diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchContainer.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchContainer.java index 3639015fe..b00487c0a 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchContainer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchContainer.java @@ -17,7 +17,7 @@ public class ChargingBenchContainer extends BasePoweredTileContainer { public static final ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); + BlockEntity tile = inventory.player.level().getBlockEntity(packet.readPos()); if (!(tile instanceof ChargingBenchTile)) return null; return new ChargingBenchContainer(inventory, (ChargingBenchTile) tile, windowId); diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchContainer.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchContainer.java index 781d332ea..a4d91aec7 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchContainer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchContainer.java @@ -17,7 +17,7 @@ public class ProjectBenchContainer extends AbstractContainerMenu { public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> { - BlockEntity tile = playerInv.player.level.getBlockEntity(packet.readPos()); + BlockEntity tile = playerInv.player.level().getBlockEntity(packet.readPos()); if (!(tile instanceof ProjectBenchTile)) return null; return new ProjectBenchContainer(playerInv, (ProjectBenchTile) tile, windowId); }; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/item/BatteryItem.java b/expansion/src/main/java/mrtjp/projectred/expansion/item/BatteryItem.java index 3a5b11c9a..5b1fafcd0 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/item/BatteryItem.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/item/BatteryItem.java @@ -1,6 +1,5 @@ package mrtjp.projectred.expansion.item; -import mrtjp.projectred.expansion.ProjectRedExpansion; import mrtjp.projectred.expansion.init.ExpansionItems; import net.minecraft.world.item.Item; @@ -8,7 +7,6 @@ public class BatteryItem extends Item implements IRechargableBattery { public BatteryItem() { super(new Item.Properties() - .tab(ProjectRedExpansion.EXPANSION_GROUP) .durability(1600) .setNoRepair()); } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/item/ElectricScrewdriverItem.java b/expansion/src/main/java/mrtjp/projectred/expansion/item/ElectricScrewdriverItem.java index f749a1439..11f57e776 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/item/ElectricScrewdriverItem.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/item/ElectricScrewdriverItem.java @@ -1,6 +1,5 @@ package mrtjp.projectred.expansion.item; -import mrtjp.projectred.expansion.ProjectRedExpansion; import mrtjp.projectred.api.IScrewdriver; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionResult; @@ -14,7 +13,6 @@ public class ElectricScrewdriverItem extends Item implements IScrewdriver, IChar public ElectricScrewdriverItem() { super(new Item.Properties() - .tab(ProjectRedExpansion.EXPANSION_GROUP) .durability(400) .setNoRepair()); } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/item/EmptyBatteryItem.java b/expansion/src/main/java/mrtjp/projectred/expansion/item/EmptyBatteryItem.java index 1a911eb8c..ac863bfd7 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/item/EmptyBatteryItem.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/item/EmptyBatteryItem.java @@ -1,13 +1,12 @@ package mrtjp.projectred.expansion.item; -import mrtjp.projectred.expansion.ProjectRedExpansion; import mrtjp.projectred.expansion.init.ExpansionItems; import net.minecraft.world.item.Item; public class EmptyBatteryItem extends Item implements IRechargableBattery { public EmptyBatteryItem() { - super(new Item.Properties().tab(ProjectRedExpansion.EXPANSION_GROUP)); + super(new Item.Properties()); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/item/RecipePlanItem.java b/expansion/src/main/java/mrtjp/projectred/expansion/item/RecipePlanItem.java index d7a588bbf..5aa866d89 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/item/RecipePlanItem.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/item/RecipePlanItem.java @@ -1,6 +1,5 @@ package mrtjp.projectred.expansion.item; -import mrtjp.projectred.expansion.ProjectRedExpansion; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -20,7 +19,7 @@ public class RecipePlanItem extends Item { public RecipePlanItem() { - super(new Item.Properties().tab(ProjectRedExpansion.EXPANSION_GROUP)); + super(new Item.Properties()); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/part/FramePart.java b/expansion/src/main/java/mrtjp/projectred/expansion/part/FramePart.java index d295b3cef..fcb4780b0 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/part/FramePart.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/part/FramePart.java @@ -128,7 +128,7 @@ public MultipartType getType() { @Override public float getStrength(Player player, PartRayTraceResult hit) { return FRAME_BLOCK.get().defaultBlockState() - .getDestroyProgress(player, player.level, new BlockPos(0, -1, 0)); + .getDestroyProgress(player, player.level(), new BlockPos(0, -1, 0)); } @Override diff --git a/expansion/src/main/resources/META-INF/mods.toml b/expansion/src/main/resources/META-INF/mods.toml index 52fb7112f..534c7cc27 100644 --- a/expansion/src/main/resources/META-INF/mods.toml +++ b/expansion/src/main/resources/META-INF/mods.toml @@ -23,7 +23,7 @@ Redstone. The way it was meant to be. [[dependencies.projectred_expansion]] modId="minecraft" mandatory=true - versionRange="[1.19.2]" + versionRange="[1.20.1]" ordering="NONE" side="BOTH" [[dependencies.projectred_expansion]] diff --git a/exploration/build.gradle b/exploration/build.gradle index 3521c8236..8dd43a102 100644 --- a/exploration/build.gradle +++ b/exploration/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.minecraftforge.gradle' + id 'net.neoforged.gradle' id 'com.matthewprenger.cursegradle' } @@ -26,10 +26,10 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" + minecraft "net.neoforged:forge:${mc_version}-${forge_version}" - implementation fg.deobf("codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") - implementation fg.deobf("codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") + implementation fg.deobf("io.codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") + implementation fg.deobf("io.codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") implementation project(":core") } diff --git a/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae b/exploration/src/main/generated/.cache/09d015dc330d59f8eec0a6dc4d86adf5d6409937 similarity index 97% rename from exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae rename to exploration/src/main/generated/.cache/09d015dc330d59f8eec0a6dc4d86adf5d6409937 index ecaa7fdfe..b92877916 100644 --- a/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae +++ b/exploration/src/main/generated/.cache/09d015dc330d59f8eec0a6dc4d86adf5d6409937 @@ -1,4 +1,4 @@ -// 1.19.2 2024-02-26T23:07:19.750979 ProjectRed-Exploration Loot Tables +// 1.20.1 2024-05-02T16:38:18.808046 projectred_exploration Block Loot Tables f377cd52869f1bb40758dc52113c67c61d878b62 data/projectred_exploration/loot_tables/blocks/basalt.json 6b10d48608a3129d5d7885f5430a1f1e15b1a801 data/projectred_exploration/loot_tables/blocks/basalt_brick.json 0208b3852855ab1b7d0729980dcde806b2b17f00 data/projectred_exploration/loot_tables/blocks/basalt_brick_wall.json diff --git a/exploration/src/main/generated/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 b/exploration/src/main/generated/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 new file mode 100644 index 000000000..7823fc7f2 --- /dev/null +++ b/exploration/src/main/generated/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 @@ -0,0 +1,21 @@ +// 1.20.1 2024-05-02T20:44:10.058531 Registries +97a9d9566938e88658a47d375bd0e2bae7f7829e data/projectred_exploration/forge/biome_modifier/add_electrotine_ore_to_overworld.json +5f408decc1342a0450a070a020338aae79a6ee65 data/projectred_exploration/forge/biome_modifier/add_marble_cave_to_overworld.json +502601ae57a9cd29e8b57fcf3bc50ae9f6168ac5 data/projectred_exploration/forge/biome_modifier/add_peridot_ore_to_overworld.json +00e94eea9249db1c0437056954a5ca50f0289029 data/projectred_exploration/forge/biome_modifier/add_ruby_ore_to_overworld.json +a8c210ada7c2775eb53cb097ce9510c778a69eb5 data/projectred_exploration/forge/biome_modifier/add_sapphire_ore_to_overworld.json +5be9342be1fe6bcd34bf37ce4acf990ffd4e718b data/projectred_exploration/forge/biome_modifier/add_silver_ore_to_overworld.json +bb9efec7aeb60ad4278b7a06c601bf56aad74c2b data/projectred_exploration/forge/biome_modifier/add_tin_ore_to_overworld.json +cf641c7961b1c8fba63980f1143a37e329fa6161 data/projectred_exploration/worldgen/configured_carver/marble_cave.json +5b0149656d80666adff6ee0d8154235f477c71d0 data/projectred_exploration/worldgen/configured_feature/electrotine_ore.json +d8a2ef028fa4f9def86d83496c1ab51cc71e5732 data/projectred_exploration/worldgen/configured_feature/peridot_ore.json +224da300d02e13b06de277efb87d1ebd5927f9c1 data/projectred_exploration/worldgen/configured_feature/ruby_ore.json +d583b0e52ba9dc4ea503fcf2860667badff41e96 data/projectred_exploration/worldgen/configured_feature/sapphire_ore.json +1f6bbbbb62b9a553314265ef963fdf6db8bae731 data/projectred_exploration/worldgen/configured_feature/silver_ore.json +407c089364c9ec9030da2d20efeb02cc2276ea6f data/projectred_exploration/worldgen/configured_feature/tin_ore.json +d775ec14f0654dc816746c559e3556f7b5d60bbf data/projectred_exploration/worldgen/placed_feature/electrotine_ore.json +ef7c535efbd4a3f2db703047db05889e0a9b2137 data/projectred_exploration/worldgen/placed_feature/peridot_ore.json +9f998a520a1b2d012e254beeae3c37ece7d9b69e data/projectred_exploration/worldgen/placed_feature/ruby_ore.json +0e2790db2fefbf271ccb5417f7822266d06f036c data/projectred_exploration/worldgen/placed_feature/sapphire_ore.json +a02b87e3a565fb2dfd5793b39823833f825ee4d8 data/projectred_exploration/worldgen/placed_feature/silver_ore.json +a0372d555d4ec187efde6b44143abbe2fae12d73 data/projectred_exploration/worldgen/placed_feature/tin_ore.json diff --git a/exploration/src/main/generated/.cache/5ffbcca2b9701e1fb56327dfc2c3763c361e7832 b/exploration/src/main/generated/.cache/30ecaeb03adbe27d1b319f84eb0efc911b701acc similarity index 95% rename from exploration/src/main/generated/.cache/5ffbcca2b9701e1fb56327dfc2c3763c361e7832 rename to exploration/src/main/generated/.cache/30ecaeb03adbe27d1b319f84eb0efc911b701acc index 672db34af..3fe9904cc 100644 --- a/exploration/src/main/generated/.cache/5ffbcca2b9701e1fb56327dfc2c3763c361e7832 +++ b/exploration/src/main/generated/.cache/30ecaeb03adbe27d1b319f84eb0efc911b701acc @@ -1,4 +1,4 @@ -// 1.19.2 2024-02-26T23:07:19.740113 ProjectRed-Exploration Block Tags +// 1.20.1 2024-02-21T18:04:28.273756 Tags for minecraft:block mod id projectred_exploration ab48eb507afbf19940589bc7ac60ddf81b1d7b12 data/forge/tags/blocks/ores.json f5e1a14a6429e644ffc9f0661838ed3892dddcaa data/forge/tags/blocks/ores/electrotine.json ce719fb9caf3444b61fdd325c978241c1cfd22ec data/forge/tags/blocks/ores/peridot.json diff --git a/exploration/src/main/generated/.cache/559a0a846b867aef86c70db2e455235719f3b18c b/exploration/src/main/generated/.cache/6b84c9412d1bd687544400cc0e3b12cc81627f4c similarity index 99% rename from exploration/src/main/generated/.cache/559a0a846b867aef86c70db2e455235719f3b18c rename to exploration/src/main/generated/.cache/6b84c9412d1bd687544400cc0e3b12cc81627f4c index c4f66c8bc..c782f0d07 100644 --- a/exploration/src/main/generated/.cache/559a0a846b867aef86c70db2e455235719f3b18c +++ b/exploration/src/main/generated/.cache/6b84c9412d1bd687544400cc0e3b12cc81627f4c @@ -1,4 +1,4 @@ -// 1.19.2 2024-02-26T23:07:19.752987 ProjectRed-Exploration Item Models +// 1.20.1 2024-05-02T16:38:18.808606 projectred_exploration Item models. 9d4eda6cefe361588d1d75676f06f0353ec66e6d assets/projectred_exploration/models/item/athame.json 14e6570eb4c8b533bcdd8d7a508fb9083cfa3166 assets/projectred_exploration/models/item/basalt.json e6ec2207092dc4571f1153302a561412bd2b2f57 assets/projectred_exploration/models/item/basalt_brick.json diff --git a/exploration/src/main/generated/.cache/0aed8341631ecb057f97f8866d5170e4ddc46c8c b/exploration/src/main/generated/.cache/81b061f8c78f7d01ca902511a501febdab7e0b84 similarity index 99% rename from exploration/src/main/generated/.cache/0aed8341631ecb057f97f8866d5170e4ddc46c8c rename to exploration/src/main/generated/.cache/81b061f8c78f7d01ca902511a501febdab7e0b84 index adc85bc19..3b5f3163c 100644 --- a/exploration/src/main/generated/.cache/0aed8341631ecb057f97f8866d5170e4ddc46c8c +++ b/exploration/src/main/generated/.cache/81b061f8c78f7d01ca902511a501febdab7e0b84 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-04T11:14:23.547941 ProjectRed-Exploration Recipes +// 1.20.1 2024-05-02T16:38:18.792326 projectred_exploration Recipes. 516fc1e95323b31fb9ba7e0a14ebf236e38eb240 data/projectred_exploration/recipes/athame.json c580751c155e6c97873ca79fcefd56de6adb0f79 data/projectred_exploration/recipes/backpack_dye.json bffb872878c8c398815a8379ba3da55bdc2f403d data/projectred_exploration/recipes/basalt.json diff --git a/exploration/src/main/generated/.cache/8334375f2c689bc1064105fb5f28a68385b7f9ae b/exploration/src/main/generated/.cache/8334375f2c689bc1064105fb5f28a68385b7f9ae deleted file mode 100644 index 74bab02fa..000000000 --- a/exploration/src/main/generated/.cache/8334375f2c689bc1064105fb5f28a68385b7f9ae +++ /dev/null @@ -1,8 +0,0 @@ -// 1.19.2 2024-04-12T12:50:48.118367 forge/biome_modifier generator for projectred_exploration -a9ee4e4ea7ce9d6a5e98587da776a55196704fa2 data/projectred_exploration/forge/biome_modifier/add_electrotine_ore_to_overworld.json -b040a155acc4c4c41dadb18f3a2a8d514cf7cd22 data/projectred_exploration/forge/biome_modifier/add_marble_cave_to_overworld.json -d44596fde99ef0bd30d0ead290049c629e8b74b1 data/projectred_exploration/forge/biome_modifier/add_peridot_ore_to_overworld.json -bdc09c896ef2863532a7ef17a2e3567274819eef data/projectred_exploration/forge/biome_modifier/add_ruby_ore_to_overworld.json -691f03827983499ee1547931cc06a5cfbecb3349 data/projectred_exploration/forge/biome_modifier/add_sapphire_ore_to_overworld.json -05ade71ce944b91d3b8309ba9b396cef7377b64a data/projectred_exploration/forge/biome_modifier/add_silver_ore_to_overworld.json -c4f8a9b2d88c1b62f59e68aca1d58249ffe5c0cf data/projectred_exploration/forge/biome_modifier/add_tin_ore_to_overworld.json diff --git a/exploration/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b b/exploration/src/main/generated/.cache/99a5d1555286bf25041b61b612844755348b72f5 similarity index 97% rename from exploration/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b rename to exploration/src/main/generated/.cache/99a5d1555286bf25041b61b612844755348b72f5 index dbf453210..afec8e4ef 100644 --- a/exploration/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b +++ b/exploration/src/main/generated/.cache/99a5d1555286bf25041b61b612844755348b72f5 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-04T11:32:53.755579 Tags for minecraft:item +// 1.20.1 2024-05-02T16:38:18.805792 Tags for minecraft:item mod id projectred_core d179a2e8b33551c32e1fde1f934d3c452080f4c7 data/cb_microblock/tags/items/tools/saw.json e71523a9e962242fb027bd7af5b4f6a7b7a958a4 data/forge/tags/items/ingots.json aa652ed8416a65e56e8df506616390236f05d840 data/forge/tags/items/ingots/silver.json diff --git a/exploration/src/main/generated/.cache/d9c1e35ddba8a1b293edd840b666d1c4118383a9 b/exploration/src/main/generated/.cache/d9c1e35ddba8a1b293edd840b666d1c4118383a9 index 48947b42e..71e40c8b0 100644 --- a/exploration/src/main/generated/.cache/d9c1e35ddba8a1b293edd840b666d1c4118383a9 +++ b/exploration/src/main/generated/.cache/d9c1e35ddba8a1b293edd840b666d1c4118383a9 @@ -1,4 +1,4 @@ -// 1.19.2 2024-02-26T23:07:19.742495 ProjectRed-Exploration Block State Models +// 1.20.1 2024-05-02T16:38:18.803185 ProjectRed-Exploration Block State Models 712e68fe8499682bd75aa6d0d410c4f07401c48f assets/projectred_exploration/blockstates/basalt.json 3d825a3f24d6944a5f9e1f5134d6070c3af075d4 assets/projectred_exploration/blockstates/basalt_brick.json addfaa1bcf6d5801accfbd4c60731ab0d5e5a926 assets/projectred_exploration/blockstates/basalt_brick_wall.json diff --git a/exploration/src/main/generated/.cache/fe07d4479e71b97bd5ac0800f5195045ee93364b b/exploration/src/main/generated/.cache/fe07d4479e71b97bd5ac0800f5195045ee93364b index 75ae9c062..ad8a2fdff 100644 --- a/exploration/src/main/generated/.cache/fe07d4479e71b97bd5ac0800f5195045ee93364b +++ b/exploration/src/main/generated/.cache/fe07d4479e71b97bd5ac0800f5195045ee93364b @@ -1,2 +1,2 @@ -// 1.19.2 2024-02-26T23:07:19.749622 ProjectRed-Exploration Language Provider: en_us +// 1.20.1 2024-05-02T16:38:18.801305 ProjectRed-Exploration Language Provider: en_us d5b149bd6ac57153f96c1adcb1a5719c10511495 assets/projectred_exploration/lang/en_us.json diff --git a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_electrotine_ore_to_overworld.json b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_electrotine_ore_to_overworld.json index 316d6b489..70e0a6513 100644 --- a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_electrotine_ore_to_overworld.json +++ b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_electrotine_ore_to_overworld.json @@ -2,61 +2,6 @@ "type": "projectred_exploration:add_features", "biomes": "#minecraft:is_overworld", "configKey": "electrotine_ore", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 8, - "targets": [ - { - "state": { - "Name": "projectred_exploration:electrotine_ore", - "Properties": { - "lit": "false" - } - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "projectred_exploration:deepslate_electrotine_ore", - "Properties": { - "lit": "false" - } - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 4 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 32 - }, - "min_inclusive": { - "absolute": -32 - } - } - } - ] - }, + "features": "projectred_exploration:electrotine_ore", "step": "underground_ores" } \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_marble_cave_to_overworld.json b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_marble_cave_to_overworld.json index 5f3c88cf2..bf669fb2e 100644 --- a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_marble_cave_to_overworld.json +++ b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_marble_cave_to_overworld.json @@ -1,77 +1,7 @@ { "type": "projectred_exploration:add_carver", "biomes": "#minecraft:is_overworld", - "carvers": { - "type": "projectred_exploration:marble_cave", - "config": { - "debug_settings": { - "air_state": { - "Name": "minecraft:crimson_button", - "Properties": { - "face": "wall", - "facing": "north", - "powered": "false" - } - }, - "barrier_state": { - "Name": "minecraft:glass" - }, - "lava_state": { - "Name": "minecraft:orange_stained_glass" - }, - "water_state": { - "Name": "minecraft:candle", - "Properties": { - "candles": "1", - "lit": "false", - "waterlogged": "false" - } - } - }, - "floor_level": { - "type": "minecraft:uniform", - "value": { - "max_exclusive": -0.4, - "min_inclusive": -1.0 - } - }, - "horizontal_radius_multiplier": { - "type": "minecraft:uniform", - "value": { - "max_exclusive": 1.4, - "min_inclusive": 0.7 - } - }, - "lava_level": { - "above_bottom": 8 - }, - "probability": 0.01, - "replaceable": "#minecraft:overworld_carver_replaceables", - "vertical_radius_multiplier": { - "type": "minecraft:uniform", - "value": { - "max_exclusive": 1.3, - "min_inclusive": 0.8 - } - }, - "y": { - "type": "minecraft:uniform", - "max_inclusive": { - "absolute": 180 - }, - "min_inclusive": { - "above_bottom": 8 - } - }, - "yScale": { - "type": "minecraft:uniform", - "value": { - "max_exclusive": 0.9, - "min_inclusive": 0.1 - } - } - } - }, + "carvers": "projectred_exploration:marble_cave", "configKey": "marble_cave", "step": "air" } \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_peridot_ore_to_overworld.json b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_peridot_ore_to_overworld.json index 9bb2e7cbb..c128c5dfb 100644 --- a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_peridot_ore_to_overworld.json +++ b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_peridot_ore_to_overworld.json @@ -2,55 +2,6 @@ "type": "projectred_exploration:add_features", "biomes": "#minecraft:is_overworld", "configKey": "peridot_ore", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 10, - "targets": [ - { - "state": { - "Name": "projectred_exploration:peridot_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "projectred_exploration:deepslate_peridot_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 1 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 80 - }, - "min_inclusive": { - "absolute": -80 - } - } - } - ] - }, + "features": "projectred_exploration:peridot_ore", "step": "underground_ores" } \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_ruby_ore_to_overworld.json b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_ruby_ore_to_overworld.json index 306439ac0..26f40acb0 100644 --- a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_ruby_ore_to_overworld.json +++ b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_ruby_ore_to_overworld.json @@ -2,55 +2,6 @@ "type": "projectred_exploration:add_features", "biomes": "#minecraft:is_overworld", "configKey": "ruby_ore", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 8, - "targets": [ - { - "state": { - "Name": "projectred_exploration:ruby_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "projectred_exploration:deepslate_ruby_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 1 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 80 - }, - "min_inclusive": { - "absolute": -80 - } - } - } - ] - }, + "features": "projectred_exploration:ruby_ore", "step": "underground_ores" } \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_sapphire_ore_to_overworld.json b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_sapphire_ore_to_overworld.json index 9c68a38d6..8ed9a49ac 100644 --- a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_sapphire_ore_to_overworld.json +++ b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_sapphire_ore_to_overworld.json @@ -2,55 +2,6 @@ "type": "projectred_exploration:add_features", "biomes": "#minecraft:is_overworld", "configKey": "sapphire_ore", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 8, - "targets": [ - { - "state": { - "Name": "projectred_exploration:sapphire_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "projectred_exploration:deepslate_sapphire_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 1 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 80 - }, - "min_inclusive": { - "absolute": -80 - } - } - } - ] - }, + "features": "projectred_exploration:sapphire_ore", "step": "underground_ores" } \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_silver_ore_to_overworld.json b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_silver_ore_to_overworld.json index cb8dc7777..4bb88ecc8 100644 --- a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_silver_ore_to_overworld.json +++ b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_silver_ore_to_overworld.json @@ -2,55 +2,6 @@ "type": "projectred_exploration:add_features", "biomes": "#minecraft:is_overworld", "configKey": "silver_ore", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "projectred_exploration:silver_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "projectred_exploration:deepslate_silver_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 6 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 32 - }, - "min_inclusive": { - "absolute": -64 - } - } - } - ] - }, + "features": "projectred_exploration:silver_ore", "step": "underground_ores" } \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_tin_ore_to_overworld.json b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_tin_ore_to_overworld.json index a37714b5d..257b7be31 100644 --- a/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_tin_ore_to_overworld.json +++ b/exploration/src/main/generated/data/projectred_exploration/forge/biome_modifier/add_tin_ore_to_overworld.json @@ -2,55 +2,6 @@ "type": "projectred_exploration:add_features", "biomes": "#minecraft:is_overworld", "configKey": "tin_ore", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 8, - "targets": [ - { - "state": { - "Name": "projectred_exploration:tin_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "projectred_exploration:deepslate_tin_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 56 - }, - "min_inclusive": { - "absolute": -24 - } - } - } - ] - }, + "features": "projectred_exploration:tin_ore", "step": "underground_ores" } \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_carver/marble_cave.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_carver/marble_cave.json new file mode 100644 index 000000000..91e32c169 --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_carver/marble_cave.json @@ -0,0 +1,71 @@ +{ + "type": "projectred_exploration:marble_cave", + "config": { + "debug_settings": { + "air_state": { + "Name": "minecraft:crimson_button", + "Properties": { + "face": "wall", + "facing": "north", + "powered": "false" + } + }, + "barrier_state": { + "Name": "minecraft:glass" + }, + "lava_state": { + "Name": "minecraft:orange_stained_glass" + }, + "water_state": { + "Name": "minecraft:candle", + "Properties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + } + } + }, + "floor_level": { + "type": "minecraft:uniform", + "value": { + "max_exclusive": -0.4, + "min_inclusive": -1.0 + } + }, + "horizontal_radius_multiplier": { + "type": "minecraft:uniform", + "value": { + "max_exclusive": 1.4, + "min_inclusive": 0.7 + } + }, + "lava_level": { + "above_bottom": 8 + }, + "probability": 0.01, + "replaceable": "#minecraft:overworld_carver_replaceables", + "vertical_radius_multiplier": { + "type": "minecraft:uniform", + "value": { + "max_exclusive": 1.3, + "min_inclusive": 0.8 + } + }, + "y": { + "type": "minecraft:uniform", + "max_inclusive": { + "absolute": 180 + }, + "min_inclusive": { + "above_bottom": 8 + } + }, + "yScale": { + "type": "minecraft:uniform", + "value": { + "max_exclusive": 0.9, + "min_inclusive": 0.1 + } + } + } +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/electrotine_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/electrotine_ore.json new file mode 100644 index 000000000..6ad385570 --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/electrotine_ore.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 8, + "targets": [ + { + "state": { + "Name": "projectred_exploration:electrotine_ore", + "Properties": { + "lit": "false" + } + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "projectred_exploration:deepslate_electrotine_ore", + "Properties": { + "lit": "false" + } + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/peridot_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/peridot_ore.json new file mode 100644 index 000000000..8bc6d7982 --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/peridot_ore.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 10, + "targets": [ + { + "state": { + "Name": "projectred_exploration:peridot_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "projectred_exploration:deepslate_peridot_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/ruby_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/ruby_ore.json new file mode 100644 index 000000000..e6ad62d59 --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/ruby_ore.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 8, + "targets": [ + { + "state": { + "Name": "projectred_exploration:ruby_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "projectred_exploration:deepslate_ruby_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/sapphire_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/sapphire_ore.json new file mode 100644 index 000000000..7bb088f45 --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/sapphire_ore.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 8, + "targets": [ + { + "state": { + "Name": "projectred_exploration:sapphire_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "projectred_exploration:deepslate_sapphire_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/silver_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/silver_ore.json new file mode 100644 index 000000000..915284c7f --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/silver_ore.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "projectred_exploration:silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "projectred_exploration:deepslate_silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/tin_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/tin_ore.json new file mode 100644 index 000000000..740e31539 --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/configured_feature/tin_ore.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 8, + "targets": [ + { + "state": { + "Name": "projectred_exploration:tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "projectred_exploration:deepslate_tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/electrotine_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/electrotine_ore.json new file mode 100644 index 000000000..549b9d0d9 --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/electrotine_ore.json @@ -0,0 +1,24 @@ +{ + "feature": "projectred_exploration:electrotine_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 4 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 32 + }, + "min_inclusive": { + "absolute": -32 + } + } + } + ] +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/peridot_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/peridot_ore.json new file mode 100644 index 000000000..fca8a79e5 --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/peridot_ore.json @@ -0,0 +1,24 @@ +{ + "feature": "projectred_exploration:peridot_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 80 + }, + "min_inclusive": { + "absolute": -80 + } + } + } + ] +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/ruby_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/ruby_ore.json new file mode 100644 index 000000000..119ec44fd --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/ruby_ore.json @@ -0,0 +1,24 @@ +{ + "feature": "projectred_exploration:ruby_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 80 + }, + "min_inclusive": { + "absolute": -80 + } + } + } + ] +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/sapphire_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/sapphire_ore.json new file mode 100644 index 000000000..cabc923a7 --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/sapphire_ore.json @@ -0,0 +1,24 @@ +{ + "feature": "projectred_exploration:sapphire_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 1 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 80 + }, + "min_inclusive": { + "absolute": -80 + } + } + } + ] +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/silver_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/silver_ore.json new file mode 100644 index 000000000..aa427dcdc --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/silver_ore.json @@ -0,0 +1,24 @@ +{ + "feature": "projectred_exploration:silver_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 6 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 32 + }, + "min_inclusive": { + "absolute": -64 + } + } + } + ] +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/tin_ore.json b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/tin_ore.json new file mode 100644 index 000000000..e0fda7aaa --- /dev/null +++ b/exploration/src/main/generated/data/projectred_exploration/worldgen/placed_feature/tin_ore.json @@ -0,0 +1,24 @@ +{ + "feature": "projectred_exploration:tin_ore", + "placement": [ + { + "type": "minecraft:count", + "count": 8 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 56 + }, + "min_inclusive": { + "absolute": -24 + } + } + } + ] +} \ No newline at end of file diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/ProjectRedExploration.java b/exploration/src/main/java/mrtjp/projectred/exploration/ProjectRedExploration.java index f1ef4f029..8f2d90ec0 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/ProjectRedExploration.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/ProjectRedExploration.java @@ -1,24 +1,22 @@ package mrtjp.projectred.exploration; -import codechicken.lib.gui.SimpleCreativeTab; import codechicken.microblock.CBMicroblock; import codechicken.microblock.api.MicroMaterial; import com.mojang.serialization.Codec; import mrtjp.projectred.exploration.data.*; import mrtjp.projectred.exploration.init.*; -import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.carver.WorldCarver; -import net.minecraft.world.level.levelgen.placement.PlacementFilter; -import net.minecraft.world.level.levelgen.placement.PlacementModifier; -import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.data.BlockTagsProvider; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.common.world.BiomeModifier; import net.minecraftforge.data.event.GatherDataEvent; @@ -31,7 +29,6 @@ import net.minecraftforge.registries.ForgeRegistries; import static mrtjp.projectred.exploration.ProjectRedExploration.MOD_ID; -import static mrtjp.projectred.exploration.init.ExplorationBlocks.MARBLE_BRICK_BLOCK; @Mod(MOD_ID) public class ProjectRedExploration { @@ -45,10 +42,7 @@ public class ProjectRedExploration { public static final DeferredRegister> BIOME_MODIFIER_SERIALIZERS = DeferredRegister.create(ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, MOD_ID); public static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, MOD_ID); public static final DeferredRegister MICRO_MATERIALS = DeferredRegister.create(new ResourceLocation(CBMicroblock.MOD_ID, "micro_material"), MOD_ID); - - public static final DeferredRegister> PLACEMENT_MODIFIERS = DeferredRegister.create(Registry.PLACEMENT_MODIFIER_REGISTRY, MOD_ID); - - public static final SimpleCreativeTab EXPLORATION_CREATIVE_TAB = new SimpleCreativeTab(MOD_ID, () -> new ItemStack(MARBLE_BRICK_BLOCK.get())); + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MOD_ID); static { ExplorationBlocks.register(); @@ -56,6 +50,7 @@ public class ProjectRedExploration { ExplorationMenus.register(); ExplorationWorldFeatures.register(); ExplorationRecipeSerializers.register(); + ExplorationCreativeModeTabs.register(); } public ProjectRedExploration() { @@ -74,6 +69,7 @@ public ProjectRedExploration() { BIOME_MODIFIER_SERIALIZERS.register(modEventBus); RECIPE_SERIALIZERS.register(modEventBus); MICRO_MATERIALS.register(modEventBus); + CREATIVE_TABS.register(modEventBus); } private void commonSetup(final FMLCommonSetupEvent event) { @@ -82,16 +78,19 @@ private void commonSetup(final FMLCommonSetupEvent event) { private void onGatherDataEvent(final GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper fileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeClient(), new ExplorationBlockStateModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new ExplorationItemModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new ExplorationLanguageProvider(generator)); - - generator.addProvider(event.includeServer(), new ExplorationBlockTagsProvider(generator, fileHelper)); - generator.addProvider(event.includeServer(), new ExplorationItemTagsProvider(generator, fileHelper)); - generator.addProvider(event.includeServer(), new ExplorationLootTableProvider(generator)); - generator.addProvider(event.includeServer(), new ExplorationRecipeProvider(generator)); - generator.addProvider(event.includeServer(), ExplorationWorldFeatures.biomeModifiersProvider(generator, fileHelper)); + generator.addProvider(event.includeClient(), new ExplorationBlockStateModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new ExplorationItemModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new ExplorationLanguageProvider(output)); + + ExplorationBuiltInEntriesProvider explorationProvider = new ExplorationBuiltInEntriesProvider(output, event.getLookupProvider()); + generator.addProvider(event.includeServer(), explorationProvider); + BlockTagsProvider blockTagsProvider = new ExplorationBlockTagsProvider(output, event.getLookupProvider(), fileHelper); + generator.addProvider(event.includeServer(), blockTagsProvider); + generator.addProvider(event.includeServer(), new ExplorationItemTagsProvider(output, event.getLookupProvider(), blockTagsProvider.contentsGetter(), fileHelper)); + generator.addProvider(event.includeServer(), new ExplorationLootTableProvider(output)); + generator.addProvider(event.includeServer(), new ExplorationRecipeProvider(output)); } } diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/block/ElectrotineOreBlock.java b/exploration/src/main/java/mrtjp/projectred/exploration/block/ElectrotineOreBlock.java index 57bfd6d13..e70c37fd6 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/block/ElectrotineOreBlock.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/block/ElectrotineOreBlock.java @@ -1,6 +1,5 @@ package mrtjp.projectred.exploration.block; -import com.mojang.math.Vector3f; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.DustParticleOptions; @@ -23,6 +22,7 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; +import org.joml.Vector3f; import java.util.Random; diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBlockStateModelProvider.java b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBlockStateModelProvider.java index 26dbc6a7a..a38a1b96d 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBlockStateModelProvider.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBlockStateModelProvider.java @@ -1,6 +1,6 @@ package mrtjp.projectred.exploration.data; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.client.model.generators.BlockStateProvider; import net.minecraftforge.common.data.ExistingFileHelper; @@ -11,8 +11,8 @@ public class ExplorationBlockStateModelProvider extends BlockStateProvider { - public ExplorationBlockStateModelProvider(DataGenerator gen, ExistingFileHelper exFileHelper) { - super(gen, MOD_ID, exFileHelper); + public ExplorationBlockStateModelProvider(PackOutput output, ExistingFileHelper exFileHelper) { + super(output, MOD_ID, exFileHelper); } @Nonnull diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBlockTagsProvider.java b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBlockTagsProvider.java index ca34e8e12..c286fdc81 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBlockTagsProvider.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBlockTagsProvider.java @@ -1,12 +1,14 @@ package mrtjp.projectred.exploration.data; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.tags.BlockTags; import net.minecraftforge.common.Tags; +import net.minecraftforge.common.data.BlockTagsProvider; import net.minecraftforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; -import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; import static mrtjp.projectred.exploration.ProjectRedExploration.MOD_ID; import static mrtjp.projectred.exploration.init.ExplorationBlocks.*; @@ -14,17 +16,12 @@ public class ExplorationBlockTagsProvider extends BlockTagsProvider { - public ExplorationBlockTagsProvider(DataGenerator gen, @Nullable ExistingFileHelper existingFileHelper) { - super(gen, MOD_ID, existingFileHelper); + public ExplorationBlockTagsProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, MOD_ID, existingFileHelper); } @Override - public String getName() { - return "ProjectRed-Exploration Block Tags"; - } - - @Override - protected void addTags() { + protected void addTags(HolderLookup.Provider lookup) { tag(BlockTags.WALLS).add( MARBLE_WALL.get(), MARBLE_BRICK_WALL.get(), diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBuiltInEntriesProvider.java b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBuiltInEntriesProvider.java new file mode 100644 index 000000000..d935132e1 --- /dev/null +++ b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationBuiltInEntriesProvider.java @@ -0,0 +1,27 @@ +package mrtjp.projectred.exploration.data; + +import mrtjp.projectred.exploration.init.ExplorationWorldFeatures; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.PackOutput; +import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.Set; +import java.util.concurrent.CompletableFuture; + +import static mrtjp.projectred.exploration.ProjectRedExploration.MOD_ID; + +public class ExplorationBuiltInEntriesProvider extends DatapackBuiltinEntriesProvider { + + public static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + .add(Registries.CONFIGURED_CARVER, ExplorationWorldFeatures::bootstrapCarvers) + .add(Registries.CONFIGURED_FEATURE, ExplorationWorldFeatures::bootstrapFeatures) + .add(Registries.PLACED_FEATURE, ExplorationWorldFeatures::bootstrapPlacements) + .add(ForgeRegistries.Keys.BIOME_MODIFIERS, ExplorationWorldFeatures::bootstrapBiomeModifiers); + + public ExplorationBuiltInEntriesProvider(PackOutput output, CompletableFuture provider) { + super(output, provider, BUILDER, Set.of("minecraft", MOD_ID)); + } +} diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationItemModelProvider.java b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationItemModelProvider.java index fa0b61e1c..6d471198f 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationItemModelProvider.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationItemModelProvider.java @@ -1,7 +1,7 @@ package mrtjp.projectred.exploration.data; import codechicken.lib.datagen.ItemModelProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.block.Block; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.registries.ForgeRegistries; @@ -12,13 +12,8 @@ public class ExplorationItemModelProvider extends ItemModelProvider { - public ExplorationItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { - super(generator, MOD_ID, existingFileHelper); - } - - @Override - public String getName() { - return "ProjectRed-Exploration Item Models"; + public ExplorationItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, MOD_ID, existingFileHelper); } @Override diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationItemTagsProvider.java b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationItemTagsProvider.java index 1a0c29be8..9ebb3a04f 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationItemTagsProvider.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationItemTagsProvider.java @@ -1,27 +1,31 @@ package mrtjp.projectred.exploration.data; import codechicken.microblock.init.CBMicroblockTags; -import net.minecraft.data.DataGenerator; +import mrtjp.projectred.core.ProjectRedCore; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; +import net.minecraft.data.tags.TagsProvider; +import net.minecraft.world.level.block.Block; import net.minecraftforge.common.Tags; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; import static mrtjp.projectred.core.init.CoreTags.*; -import static mrtjp.projectred.exploration.ProjectRedExploration.MOD_ID; import static mrtjp.projectred.exploration.init.ExplorationBlocks.*; import static mrtjp.projectred.exploration.init.ExplorationItems.*; import static mrtjp.projectred.exploration.init.ExplorationTags.*; public class ExplorationItemTagsProvider extends ItemTagsProvider { - public ExplorationItemTagsProvider(DataGenerator gen, @Nullable ExistingFileHelper existingFileHelper) { - super(gen, new ExplorationBlockTagsProvider(gen, existingFileHelper), MOD_ID, existingFileHelper); + public ExplorationItemTagsProvider(PackOutput output, CompletableFuture lookupProvider, CompletableFuture> blockTags, @Nullable ExistingFileHelper helper) { + super(output, lookupProvider, blockTags, ProjectRedCore.MOD_ID, helper); } @Override - protected void addTags() { + protected void addTags(HolderLookup.Provider pProvider) { /* Attach tags to other tags */ diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLanguageProvider.java b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLanguageProvider.java index e72a3b84d..0e9314a74 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLanguageProvider.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLanguageProvider.java @@ -1,6 +1,6 @@ package mrtjp.projectred.exploration.data; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.LanguageProvider; import static mrtjp.projectred.exploration.ProjectRedExploration.MOD_ID; @@ -9,8 +9,8 @@ public class ExplorationLanguageProvider extends LanguageProvider { - public ExplorationLanguageProvider(DataGenerator gen) { - super(gen, MOD_ID, "en_us"); + public ExplorationLanguageProvider(PackOutput output) { + super(output, MOD_ID, "en_us"); } @Override diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLootTableProvider.java b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLootTableProvider.java index 6fb06e8e0..6607e9d46 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLootTableProvider.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLootTableProvider.java @@ -1,22 +1,18 @@ package mrtjp.projectred.exploration.data; import codechicken.lib.datagen.LootTableProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import static mrtjp.projectred.core.init.CoreItems.*; +import static mrtjp.projectred.exploration.ProjectRedExploration.MOD_ID; import static mrtjp.projectred.exploration.init.ExplorationBlocks.*; import static mrtjp.projectred.exploration.init.ExplorationItems.RAW_SILVER_ITEM; import static mrtjp.projectred.exploration.init.ExplorationItems.RAW_TIN_ITEM; public class ExplorationLootTableProvider extends LootTableProvider.BlockLootProvider { - public ExplorationLootTableProvider(DataGenerator dataGenerator) { - super(dataGenerator); - } - - @Override - public String getName() { - return "ProjectRed-Exploration Loot Tables"; + public ExplorationLootTableProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationRecipeProvider.java b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationRecipeProvider.java index ccdbd0581..57b81f88e 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationRecipeProvider.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationRecipeProvider.java @@ -4,7 +4,7 @@ import codechicken.lib.datagen.recipe.ShapedRecipeBuilder; import codechicken.microblock.init.CBMicroblockModContent; import mrtjp.projectred.exploration.item.BackpackItem; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; @@ -29,13 +29,8 @@ @SuppressWarnings("DataFlowIssue") public class ExplorationRecipeProvider extends RecipeProvider { - public ExplorationRecipeProvider(DataGenerator generatorIn) { - super(generatorIn); - } - - @Override - public String getName() { - return "ProjectRed-Exploration Recipes"; + public ExplorationRecipeProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/gui/screen/inventory/BackpackScreen.java b/exploration/src/main/java/mrtjp/projectred/exploration/gui/screen/inventory/BackpackScreen.java index 4a7bcb1ab..9b31eab76 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/gui/screen/inventory/BackpackScreen.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/gui/screen/inventory/BackpackScreen.java @@ -1,10 +1,9 @@ package mrtjp.projectred.exploration.gui.screen.inventory; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.exploration.inventory.container.BackpackContainer; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -23,14 +22,13 @@ public BackpackScreen(BackpackContainer container, Inventory playerInventory, Co } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - super.drawBack(stack, mouse, partialFrame); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + super.drawBack(graphics, mouse, partialFrame); - RenderSystem.setShaderTexture(0, BACKGROUND); int x = getFrame().x(); int y = getFrame().y(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); } @Override diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationBlocks.java b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationBlocks.java index e950fdef9..f39448c8d 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationBlocks.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationBlocks.java @@ -12,12 +12,12 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.WallBlock; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; +import net.minecraft.world.level.material.MapColor; import net.minecraftforge.registries.RegisterEvent; import net.minecraftforge.registries.RegistryObject; -import static mrtjp.projectred.exploration.ProjectRedExploration.*; +import static mrtjp.projectred.exploration.ProjectRedExploration.BLOCKS; +import static mrtjp.projectred.exploration.ProjectRedExploration.ITEMS; @SuppressWarnings("NotNullFieldNotInitialized") public class ExplorationBlocks { @@ -205,19 +205,19 @@ private static void registerBlockMicro(RegisterEvent.RegisterHelper block) { } private static Block createDecorativeStoneBlock(float hardness, float resistance) { - return new Block(BlockBehaviour.Properties.of(Material.STONE) + return new Block(BlockBehaviour.Properties.of() + .mapColor(MapColor.STONE) .strength(hardness, resistance) .requiresCorrectToolForDrops() .sound(SoundType.STONE)); } private static Block createDecorativeGemBlock(float hardness, float resistance) { - return new Block(BlockBehaviour.Properties.of(Material.METAL) + return new Block(BlockBehaviour.Properties.of() + .mapColor(MapColor.METAL) .strength(hardness, resistance) .requiresCorrectToolForDrops() .sound(SoundType.METAL)); } private static Block createDecorativeMetalBlock(float hardness, float resistance) { - return new Block(BlockBehaviour.Properties.of(Material.METAL) + return new Block(BlockBehaviour.Properties.of() + .mapColor(MapColor.METAL) .strength(hardness, resistance) .requiresCorrectToolForDrops() .sound(SoundType.METAL)); } private static Item createBlockItem(RegistryObject block) { - return new BlockItem(block.get(), new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + return new BlockItem(block.get(), new Item.Properties()); } private static Item createBlockItem(Block block) { - return new BlockItem(block, new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + return new BlockItem(block, new Item.Properties()); } } diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationCreativeModeTabs.java b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationCreativeModeTabs.java new file mode 100644 index 000000000..627265877 --- /dev/null +++ b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationCreativeModeTabs.java @@ -0,0 +1,153 @@ +package mrtjp.projectred.exploration.init; + +import mrtjp.projectred.exploration.ProjectRedExploration; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.RegistryObject; + +import static mrtjp.projectred.exploration.init.ExplorationBlocks.*; +import static mrtjp.projectred.exploration.init.ExplorationItems.*; + +public class ExplorationCreativeModeTabs { + + public static RegistryObject EXPLORATION_CREATIVE_TAB; + + public static void register() { + + EXPLORATION_CREATIVE_TAB = ProjectRedExploration.CREATIVE_TABS.register("expansion", + () -> CreativeModeTab.builder() + .icon(() -> new ItemStack(MARBLE_BRICK_BLOCK.get())) + .title(Component.translatable("itemGroup." + ProjectRedExploration.MOD_ID)) + .displayItems((params, output) -> { + + // Keep in sync with ExplorationBlocks and ExplorationItems + + /* Blocks */ + + // Ores + output.accept(RUBY_ORE_BLOCK.get()); + output.accept(DEEPSLATE_RUBY_ORE_BLOCK.get()); + output.accept(SAPPHIRE_ORE_BLOCK.get()); + output.accept(DEEPSLATE_SAPPHIRE_ORE_BLOCK.get()); + output.accept(PERIDOT_ORE_BLOCK.get()); + output.accept(DEEPSLATE_PERIDOT_ORE_BLOCK.get()); + output.accept(TIN_ORE_BLOCK.get()); + output.accept(DEEPSLATE_TIN_ORE_BLOCK.get()); + output.accept(SILVER_ORE_BLOCK.get()); + output.accept(DEEPSLATE_SILVER_ORE_BLOCK.get()); + output.accept(ELECTROTINE_ORE_BLOCK.get()); + output.accept(DEEPSLATE_ELECTROTINE_ORE_BLOCK.get()); + + // Decorative blocks + output.accept(MARBLE_BLOCK.get()); + output.accept(MARBLE_BRICK_BLOCK.get()); + output.accept(BASALT_BLOCK.get()); + output.accept(BASALT_COBBLE_BLOCK.get()); + output.accept(BASALT_BRICK_BLOCK.get()); + output.accept(RUBY_BLOCK.get()); + output.accept(SAPPHIRE_BLOCK.get()); + output.accept(PERIDOT_BLOCK.get()); + output.accept(ELECTROTINE_BLOCK.get()); + output.accept(RAW_TIN_BLOCK.get()); + output.accept(RAW_SILVER_BLOCK.get()); + output.accept(TIN_BLOCK.get()); + output.accept(SILVER_BLOCK.get()); + + // Walls + output.accept(MARBLE_WALL.get()); + output.accept(MARBLE_BRICK_WALL.get()); + output.accept(BASALT_WALL.get()); + output.accept(BASALT_COBBLE_WALL.get()); + output.accept(BASALT_BRICK_WALL.get()); + output.accept(RUBY_BLOCK_WALL.get()); + output.accept(SAPPHIRE_BLOCK_WALL.get()); + output.accept(PERIDOT_BLOCK_WALL.get()); + output.accept(ELECTROTINE_BLOCK_WALL.get()); + + /* Items */ + + // Ingots / dusts / gems + output.accept(RAW_TIN_ITEM.get()); + output.accept(TIN_INGOT_ITEM.get()); + output.accept(RAW_SILVER_ITEM.get()); + output.accept(SILVER_INGOT_ITEM.get()); + + output.accept(WOOL_GIN.get()); + output.accept(ATHAME.get()); + + // Tools + output.accept(RUBY_AXE.get()); + output.accept(SAPPHIRE_AXE.get()); + output.accept(PERIDOT_AXE.get()); + + output.accept(RUBY_PICKAXE.get()); + output.accept(SAPPHIRE_PICKAXE.get()); + output.accept(PERIDOT_PICKAXE.get()); + + output.accept(RUBY_SHOVEL.get()); + output.accept(SAPPHIRE_SHOVEL.get()); + output.accept(PERIDOT_SHOVEL.get()); + + output.accept(RUBY_HOE.get()); + output.accept(SAPPHIRE_HOE.get()); + output.accept(PERIDOT_HOE.get()); + + output.accept(RUBY_SWORD.get()); + output.accept(SAPPHIRE_SWORD.get()); + output.accept(PERIDOT_SWORD.get()); + + output.accept(GOLD_SAW.get()); + output.accept(RUBY_SAW.get()); + output.accept(SAPPHIRE_SAW.get()); + output.accept(PERIDOT_SAW.get()); + + output.accept(WOOD_SICKLE.get()); + output.accept(STONE_SICKLE.get()); + output.accept(IRON_SICKLE.get()); + output.accept(GOLD_SICKLE.get()); + output.accept(DIAMOND_SICKLE.get()); + output.accept(RUBY_SICKLE.get()); + output.accept(SAPPHIRE_SICKLE.get()); + output.accept(PERIDOT_SICKLE.get()); + + // Armor + output.accept(RUBY_HELMET.get()); + output.accept(SAPPHIRE_HELMET.get()); + output.accept(PERIDOT_HELMET.get()); + + output.accept(RUBY_CHESTPLATE.get()); + output.accept(SAPPHIRE_CHESTPLATE.get()); + output.accept(PERIDOT_CHESTPLATE.get()); + + output.accept(RUBY_LEGGINGS.get()); + output.accept(SAPPHIRE_LEGGINGS.get()); + output.accept(PERIDOT_LEGGINGS.get()); + + output.accept(RUBY_BOOTS.get()); + output.accept(SAPPHIRE_BOOTS.get()); + output.accept(PERIDOT_BOOTS.get()); + + //Backpacks + output.accept(WHITE_BACKPACK.get()); + output.accept(ORANGE_BACKPACK.get()); + output.accept(MAGENTA_BACKPACK.get()); + output.accept(LIGHT_BLUE_BACKPACK.get()); + output.accept(YELLOW_BACKPACK.get()); + output.accept(LIME_BACKPACK.get()); + output.accept(PINK_BACKPACK.get()); + output.accept(GRAY_BACKPACK.get()); + output.accept(LIGHT_GRAY_BACKPACK.get()); + output.accept(CYAN_BACKPACK.get()); + output.accept(PURPLE_BACKPACK.get()); + output.accept(BLUE_BACKPACK.get()); + output.accept(BROWN_BACKPACK.get()); + output.accept(GREEN_BACKPACK.get()); + output.accept(RED_BACKPACK.get()); + output.accept(BLACK_BACKPACK.get()); + + }).build()); + + + } +} diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationItems.java b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationItems.java index 009cebf02..dcee53465 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationItems.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationItems.java @@ -9,7 +9,6 @@ import mrtjp.projectred.exploration.item.WoolGinItem; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.*; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.TierSortingRegistry; @@ -19,7 +18,8 @@ import java.util.function.Supplier; import static mrtjp.projectred.core.init.CoreTags.*; -import static mrtjp.projectred.exploration.ProjectRedExploration.*; +import static mrtjp.projectred.exploration.ProjectRedExploration.ITEMS; +import static mrtjp.projectred.exploration.ProjectRedExploration.MOD_ID; @SuppressWarnings("NotNullFieldNotInitialized") public class ExplorationItems { @@ -294,23 +294,23 @@ public static void register() { SAPPHIRE_SICKLE = ITEMS.register(ID_SAPPHIRE_SICKLE, () -> createSickleItem(SAPPHIRE_ITEM_TIER, 1, -2.8F)); PERIDOT_SICKLE = ITEMS.register(ID_PERIDOT_SICKLE, () -> createSickleItem(PERIDOT_ITEM_TIER, 1, -2.8F)); - /* Armmor */ + /* Armor */ - RUBY_HELMET = ITEMS.register(ID_RUBY_HELMET, () -> createArmorItem(RUBY_ARMOR_MATERIAL, EquipmentSlot.HEAD)); - SAPPHIRE_HELMET = ITEMS.register(ID_SAPPHIRE_HELMET, () -> createArmorItem(SAPPHIRE_ARMOR_MATERIAL, EquipmentSlot.HEAD)); - PERIDOT_HELMET = ITEMS.register(ID_PERIDOT_HELMET, () -> createArmorItem(PERIDOT_ARMOR_MATERIAL, EquipmentSlot.HEAD)); + RUBY_HELMET = ITEMS.register(ID_RUBY_HELMET, () -> createArmorItem(RUBY_ARMOR_MATERIAL, ArmorItem.Type.HELMET)); + SAPPHIRE_HELMET = ITEMS.register(ID_SAPPHIRE_HELMET, () -> createArmorItem(SAPPHIRE_ARMOR_MATERIAL, ArmorItem.Type.HELMET)); + PERIDOT_HELMET = ITEMS.register(ID_PERIDOT_HELMET, () -> createArmorItem(PERIDOT_ARMOR_MATERIAL, ArmorItem.Type.HELMET)); - RUBY_CHESTPLATE = ITEMS.register(ID_RUBY_CHESTPLATE, () -> createArmorItem(RUBY_ARMOR_MATERIAL, EquipmentSlot.CHEST)); - SAPPHIRE_CHESTPLATE = ITEMS.register(ID_SAPPHIRE_CHESTPLATE, () -> createArmorItem(SAPPHIRE_ARMOR_MATERIAL, EquipmentSlot.CHEST)); - PERIDOT_CHESTPLATE = ITEMS.register(ID_PERIDOT_CHESTPLATE, () -> createArmorItem(PERIDOT_ARMOR_MATERIAL, EquipmentSlot.CHEST)); + RUBY_CHESTPLATE = ITEMS.register(ID_RUBY_CHESTPLATE, () -> createArmorItem(RUBY_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE)); + SAPPHIRE_CHESTPLATE = ITEMS.register(ID_SAPPHIRE_CHESTPLATE, () -> createArmorItem(SAPPHIRE_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE)); + PERIDOT_CHESTPLATE = ITEMS.register(ID_PERIDOT_CHESTPLATE, () -> createArmorItem(PERIDOT_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE)); - RUBY_LEGGINGS = ITEMS.register(ID_RUBY_LEGGINGS, () -> createArmorItem(RUBY_ARMOR_MATERIAL, EquipmentSlot.LEGS)); - SAPPHIRE_LEGGINGS = ITEMS.register(ID_SAPPHIRE_LEGGINGS, () -> createArmorItem(SAPPHIRE_ARMOR_MATERIAL, EquipmentSlot.LEGS)); - PERIDOT_LEGGINGS = ITEMS.register(ID_PERIDOT_LEGGINGS, () -> createArmorItem(PERIDOT_ARMOR_MATERIAL, EquipmentSlot.LEGS)); + RUBY_LEGGINGS = ITEMS.register(ID_RUBY_LEGGINGS, () -> createArmorItem(RUBY_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS)); + SAPPHIRE_LEGGINGS = ITEMS.register(ID_SAPPHIRE_LEGGINGS, () -> createArmorItem(SAPPHIRE_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS)); + PERIDOT_LEGGINGS = ITEMS.register(ID_PERIDOT_LEGGINGS, () -> createArmorItem(PERIDOT_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS)); - RUBY_BOOTS = ITEMS.register(ID_RUBY_BOOTS, () -> createArmorItem(RUBY_ARMOR_MATERIAL, EquipmentSlot.FEET)); - SAPPHIRE_BOOTS = ITEMS.register(ID_SAPPHIRE_BOOTS, () -> createArmorItem(SAPPHIRE_ARMOR_MATERIAL, EquipmentSlot.FEET)); - PERIDOT_BOOTS = ITEMS.register(ID_PERIDOT_BOOTS, () -> createArmorItem(PERIDOT_ARMOR_MATERIAL, EquipmentSlot.FEET)); + RUBY_BOOTS = ITEMS.register(ID_RUBY_BOOTS, () -> createArmorItem(RUBY_ARMOR_MATERIAL, ArmorItem.Type.BOOTS)); + SAPPHIRE_BOOTS = ITEMS.register(ID_SAPPHIRE_BOOTS, () -> createArmorItem(SAPPHIRE_ARMOR_MATERIAL, ArmorItem.Type.BOOTS)); + PERIDOT_BOOTS = ITEMS.register(ID_PERIDOT_BOOTS, () -> createArmorItem(PERIDOT_ARMOR_MATERIAL, ArmorItem.Type.BOOTS)); /* Backpacks */ @@ -333,39 +333,39 @@ public static void register() { } private static Supplier createSimpleItemSupplier() { - return () -> new Item(new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + return () -> new Item(new Item.Properties()); } - private static Item createAxeItem(Tier tier, float attackDamage, float attackSpeed) { - return new AxeItem(tier, attackDamage, attackSpeed, new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + private static Item createAxeItem(SimpleItemTier tier, float attackDamage, float attackSpeed) { + return new AxeItem(tier, attackDamage, attackSpeed, new Item.Properties()); } - private static Item createPickaxeItem(Tier tier, int attackDamage, float attackSpeed) { - return new PickaxeItem(tier, attackDamage, attackSpeed, new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + private static Item createPickaxeItem(SimpleItemTier tier, int attackDamage, float attackSpeed) { + return new PickaxeItem(tier, attackDamage, attackSpeed, new Item.Properties()); } - private static Item createShovelItem(Tier tier, float attackDamage, float attackSpeed) { - return new ShovelItem(tier, attackDamage, attackSpeed, new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + private static Item createShovelItem(SimpleItemTier tier, float attackDamage, float attackSpeed) { + return new ShovelItem(tier, attackDamage, attackSpeed, new Item.Properties()); } - private static Item createHoeItem(Tier tier, int attackDamage, float attackSpeed) { - return new HoeItem(tier, attackDamage, attackSpeed, new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + private static Item createHoeItem(SimpleItemTier tier, int attackDamage, float attackSpeed) { + return new HoeItem(tier, attackDamage, attackSpeed, new Item.Properties()); } - private static Item createSwordItem(Tier tier, int attackDamage, float attackSpeed) { - return new SwordItem(tier, attackDamage, attackSpeed, new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + private static Item createSwordItem(SimpleItemTier tier, int attackDamage, float attackSpeed) { + return new SwordItem(tier, attackDamage, attackSpeed, new Item.Properties()); } private static Item createSawItem(Tier tier) { - return new SawItem(tier, new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + return new SawItem(tier, new Item.Properties()); } private static Item createSickleItem(Tier tier, int attackDamage, float attackSpeed) { - return new SickleItem(tier, attackDamage, attackSpeed, new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + return new SickleItem(tier, attackDamage, attackSpeed, new Item.Properties()); } - private static Item createArmorItem(SimpleArmorMaterial material, EquipmentSlot slot) { - return new ArmorItem(material, slot, new Item.Properties().tab(EXPLORATION_CREATIVE_TAB)); + private static Item createArmorItem(SimpleArmorMaterial material, ArmorItem.Type slot) { + return new ArmorItem(material, slot, new Item.Properties()); } private static void registerSubDiamondTeir(Tier tier, String id) { diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationRecipeSerializers.java b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationRecipeSerializers.java index 3a9905310..c42798ff9 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationRecipeSerializers.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationRecipeSerializers.java @@ -1,7 +1,7 @@ package mrtjp.projectred.exploration.init; import mrtjp.projectred.exploration.item.crafting.BackpackDyeRecipe; -import net.minecraft.world.item.crafting.SimpleRecipeSerializer; +import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer; import net.minecraftforge.registries.RegistryObject; import static mrtjp.projectred.exploration.ProjectRedExploration.RECIPE_SERIALIZERS; @@ -11,10 +11,10 @@ public class ExplorationRecipeSerializers { public static final String ID_BACKPACK_DYE = "backpack_dye"; - public static RegistryObject> BACKPACK_DYE_RECIPE_SERIALIZER; + public static RegistryObject> BACKPACK_DYE_RECIPE_SERIALIZER; public static void register() { - BACKPACK_DYE_RECIPE_SERIALIZER = RECIPE_SERIALIZERS.register(ID_BACKPACK_DYE, () -> new SimpleRecipeSerializer<>(BackpackDyeRecipe::new)); + BACKPACK_DYE_RECIPE_SERIALIZER = RECIPE_SERIALIZERS.register(ID_BACKPACK_DYE, () -> new SimpleCraftingRecipeSerializer<>(BackpackDyeRecipe::new)); } } diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationWorldFeatures.java b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationWorldFeatures.java index 9f7f20443..de175c95e 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationWorldFeatures.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationWorldFeatures.java @@ -1,20 +1,17 @@ package mrtjp.projectred.exploration.init; import com.google.common.collect.ImmutableList; -import com.google.gson.JsonElement; import com.mojang.serialization.Codec; -import com.mojang.serialization.JsonOps; import mrtjp.projectred.core.Configurator; import mrtjp.projectred.exploration.world.gen.ConfigFileControlledAddCarversBiomeModifier; import mrtjp.projectred.exploration.world.gen.ConfigFileControlledAddFeaturesBiomeModifier; import mrtjp.projectred.exploration.world.gen.MarbleCaveWorldCarver; import net.minecraft.core.Holder; +import net.minecraft.core.HolderGetter; import net.minecraft.core.HolderSet; -import net.minecraft.core.Registry; -import net.minecraft.core.RegistryAccess; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.worldgen.features.OreFeatures; -import net.minecraft.resources.RegistryOps; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BiomeTags; import net.minecraft.tags.BlockTags; @@ -33,14 +30,12 @@ import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import net.minecraft.world.level.levelgen.heightproviders.UniformHeight; import net.minecraft.world.level.levelgen.placement.*; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.common.data.JsonCodecProvider; +import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; import net.minecraftforge.common.world.BiomeModifier; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import java.util.List; -import java.util.Map; import java.util.function.Supplier; import static mrtjp.projectred.exploration.ProjectRedExploration.*; @@ -51,6 +46,7 @@ public class ExplorationWorldFeatures { public static final String ID_MARBLE_CAVE_CARVER = "marble_cave"; + /* Static registry entries */ // World carvers public static RegistryObject> MARBLE_CAVE_CARVER; @@ -58,6 +54,26 @@ public class ExplorationWorldFeatures { public static RegistryObject> ADD_CARVER_BIOME_MODIFIER_CODEC; public static RegistryObject> ADD_FEATURES_BIOME_MODIFIER_CODEC; + /* Dynamic registry entries */ + // Configured carvers + public static ResourceKey> MARBLE_CAVE_CONFIGURED_CARVER = createCarverKey(ID_MARBLE_CAVE_CARVER); + + // Configured features + public static ResourceKey> RUBY_ORE_CONFIGURED_FEATURE = createFeatureKey("ruby_ore"); + public static ResourceKey> SAPPHIRE_ORE_CONFIGURED_FEATURE = createFeatureKey("sapphire_ore"); + public static ResourceKey> PERIDOT_ORE_CONFIGURED_FEATURE = createFeatureKey("peridot_ore"); + public static ResourceKey> ELECTROTINE_ORE_CONFIGURED_FEATURE = createFeatureKey("electrotine_ore"); + public static ResourceKey> TIN_ORE_CONFIGURED_FEATURE = createFeatureKey("tin_ore"); + public static ResourceKey> SILVER_ORE_CONFIGURED_FEATURE = createFeatureKey("silver_ore"); + + // Placed features + public static ResourceKey RUBY_ORE_PLACED_FEATURE = createPlacedFeatureKey("ruby_ore"); + public static ResourceKey SAPPHIRE_ORE_PLACED_FEATURE = createPlacedFeatureKey("sapphire_ore"); + public static ResourceKey PERIDOT_ORE_PLACED_FEATURE = createPlacedFeatureKey("peridot_ore"); + public static ResourceKey ELECTROTINE_ORE_PLACED_FEATURE = createPlacedFeatureKey("electrotine_ore"); + public static ResourceKey TIN_ORE_PLACED_FEATURE = createPlacedFeatureKey("tin_ore"); + public static ResourceKey SILVER_ORE_PLACED_FEATURE = createPlacedFeatureKey("silver_ore"); + public static void register() { // Carvers @@ -71,74 +87,94 @@ public static void register() { ADD_FEATURES_BIOME_MODIFIER_CODEC = BIOME_MODIFIER_SERIALIZERS.register("add_features", ConfigFileControlledAddFeaturesBiomeModifier::createCodec); } - public static JsonCodecProvider biomeModifiersProvider(DataGenerator dataGenerator, ExistingFileHelper existingFileHelper) { + public static ResourceKey> createCarverKey(String name) { + return ResourceKey.create(Registries.CONFIGURED_CARVER, new ResourceLocation(MOD_ID, name)); + } + + public static ResourceKey> createFeatureKey(String name) { + return ResourceKey.create(Registries.CONFIGURED_FEATURE, new ResourceLocation(MOD_ID, name)); + } - final RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, RegistryAccess.builtinCopy()); - final HolderSet.Named isOverworldBiomes = new HolderSet.Named<>(ops.registry(Registry.BIOME_REGISTRY).get(), BiomeTags.IS_OVERWORLD); - final HolderSet.Named overworldCarverReplaceables = new HolderSet.Named<>(ops.registry(Registry.BLOCK_REGISTRY).get(), BlockTags.OVERWORLD_CARVER_REPLACEABLES); + public static ResourceKey createPlacedFeatureKey(String name) { + return ResourceKey.create(Registries.PLACED_FEATURE, new ResourceLocation(MOD_ID, name)); + } - // Configured carvers - ConfiguredWorldCarver marbleCaveConfiguredCarver = MARBLE_CAVE_CARVER.get().configured(new CaveCarverConfiguration( + public static ResourceKey createBiomeModifierKey(String name) { + return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, new ResourceLocation(MOD_ID, name)); + } + + public static void bootstrapCarvers(BootstapContext> context) { + + HolderGetter blockGetter = context.lookup(Registries.BLOCK); + + context.register(MARBLE_CAVE_CONFIGURED_CARVER, MARBLE_CAVE_CARVER.get().configured(new CaveCarverConfiguration( 0.01F, // probability UniformHeight.of(VerticalAnchor.aboveBottom(8), VerticalAnchor.absolute(180)), // Max/min heights UniformFloat.of(0.1F, 0.9F), // y scale VerticalAnchor.aboveBottom(8), // lava level CarverDebugSettings.of(false, Blocks.CRIMSON_BUTTON.defaultBlockState()), // debug settings (enable, air state) - overworldCarverReplaceables, + blockGetter.getOrThrow(BlockTags.OVERWORLD_CARVER_REPLACEABLES), UniformFloat.of(0.7F, 1.4F), // horizontal radius UniformFloat.of(0.8F, 1.3F), // vertical radius - UniformFloat.of(-1.0F, -0.4F))); // floor level - - // Configured ores - ConfiguredFeature rubyOreConfiguration = createOreConfiguration(RUBY_ORE_BLOCK, DEEPSLATE_RUBY_ORE_BLOCK, 8); - ConfiguredFeature sapphireOreConfiguration = createOreConfiguration(SAPPHIRE_ORE_BLOCK, DEEPSLATE_SAPPHIRE_ORE_BLOCK, 8); - ConfiguredFeature peridotOreConfiguration = createOreConfiguration(PERIDOT_ORE_BLOCK, DEEPSLATE_PERIDOT_ORE_BLOCK, 10); - ConfiguredFeature electrotineOreConfiguration = createOreConfiguration(ELECTROTINE_ORE_BLOCK, DEEPSLATE_ELECTROTINE_ORE_BLOCK, 8); - ConfiguredFeature tinOreConfiguration = createOreConfiguration(TIN_ORE_BLOCK, DEEPSLATE_TIN_ORE_BLOCK, 8); - ConfiguredFeature silverOreConfiguration = createOreConfiguration(SILVER_ORE_BLOCK, DEEPSLATE_SILVER_ORE_BLOCK, 9); - - // Placements - PlacedFeature rubyOrePlacedFeature = createOrePlacement(rubyOreConfiguration, -80, 80, 1); - PlacedFeature sapphireOrePlacedFeature = createOrePlacement(sapphireOreConfiguration, -80, 80, 1); - PlacedFeature peridotOrePlacedFeature = createOrePlacement(peridotOreConfiguration, -80, 80, 1); - PlacedFeature electrotineOrePlacedFeature = createOrePlacement(electrotineOreConfiguration, -32, 32, 4); - PlacedFeature tinOrePlacedFeature = createOrePlacement(tinOreConfiguration, -24, 56, 8); - PlacedFeature silverOrePlacedFeature = createOrePlacement(silverOreConfiguration, -64, 32, 6); - - return JsonCodecProvider.forDatapackRegistry( - dataGenerator, - existingFileHelper, - MOD_ID, - ops, - ForgeRegistries.Keys.BIOME_MODIFIERS, - Map.of( - // Overworld ores - new ResourceLocation(MOD_ID, "add_ruby_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(isOverworldBiomes, HolderSet.direct(Holder.direct(rubyOrePlacedFeature)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.rubyOreKey), - new ResourceLocation(MOD_ID, "add_sapphire_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(isOverworldBiomes, HolderSet.direct(Holder.direct(sapphireOrePlacedFeature)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.sapphireOreKey), - new ResourceLocation(MOD_ID, "add_peridot_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(isOverworldBiomes, HolderSet.direct(Holder.direct(peridotOrePlacedFeature)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.peridotOreKey), - new ResourceLocation(MOD_ID, "add_electrotine_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(isOverworldBiomes, HolderSet.direct(Holder.direct(electrotineOrePlacedFeature)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.electrotineOreKey), - new ResourceLocation(MOD_ID, "add_tin_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(isOverworldBiomes, HolderSet.direct(Holder.direct(tinOrePlacedFeature)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.tinOreKey), - new ResourceLocation(MOD_ID, "add_silver_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(isOverworldBiomes, HolderSet.direct(Holder.direct(silverOrePlacedFeature)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.silverOreKey), - - // Overworld carvers - new ResourceLocation(MOD_ID, "add_marble_cave_to_overworld"), new ConfigFileControlledAddCarversBiomeModifier(isOverworldBiomes, HolderSet.direct(Holder.direct(marbleCaveConfiguredCarver)), GenerationStep.Carving.AIR, Configurator.marbleCaveKey) - )); + UniformFloat.of(-1.0F, -0.4F)))); + } + + public static void bootstrapFeatures(BootstapContext> context) { + + registerOreConfiguration(context, RUBY_ORE_CONFIGURED_FEATURE, RUBY_ORE_BLOCK, DEEPSLATE_RUBY_ORE_BLOCK, 8); + registerOreConfiguration(context, SAPPHIRE_ORE_CONFIGURED_FEATURE, SAPPHIRE_ORE_BLOCK, DEEPSLATE_SAPPHIRE_ORE_BLOCK, 8); + registerOreConfiguration(context, PERIDOT_ORE_CONFIGURED_FEATURE, PERIDOT_ORE_BLOCK, DEEPSLATE_PERIDOT_ORE_BLOCK, 10); + registerOreConfiguration(context, ELECTROTINE_ORE_CONFIGURED_FEATURE, ELECTROTINE_ORE_BLOCK, DEEPSLATE_ELECTROTINE_ORE_BLOCK, 8); + registerOreConfiguration(context, TIN_ORE_CONFIGURED_FEATURE, TIN_ORE_BLOCK, DEEPSLATE_TIN_ORE_BLOCK, 8); + registerOreConfiguration(context, SILVER_ORE_CONFIGURED_FEATURE, SILVER_ORE_BLOCK, DEEPSLATE_SILVER_ORE_BLOCK, 9); + } + + public static void bootstrapPlacements(BootstapContext context) { + + HolderGetter> features = context.lookup(Registries.CONFIGURED_FEATURE); + + registerOrePlacement(context, RUBY_ORE_PLACED_FEATURE, features.getOrThrow(RUBY_ORE_CONFIGURED_FEATURE), -80, 80, 1); + registerOrePlacement(context, SAPPHIRE_ORE_PLACED_FEATURE, features.getOrThrow(SAPPHIRE_ORE_CONFIGURED_FEATURE), -80, 80, 1); + registerOrePlacement(context, PERIDOT_ORE_PLACED_FEATURE, features.getOrThrow(PERIDOT_ORE_CONFIGURED_FEATURE), -80, 80, 1); + registerOrePlacement(context, ELECTROTINE_ORE_PLACED_FEATURE, features.getOrThrow(ELECTROTINE_ORE_CONFIGURED_FEATURE), -32, 32, 4); + registerOrePlacement(context, TIN_ORE_PLACED_FEATURE, features.getOrThrow(TIN_ORE_CONFIGURED_FEATURE), -24, 56, 8); + registerOrePlacement(context, SILVER_ORE_PLACED_FEATURE, features.getOrThrow(SILVER_ORE_CONFIGURED_FEATURE), -64, 32, 6); + } + + public static void bootstrapBiomeModifiers(BootstapContext context) { + + HolderGetter biomes = context.lookup(Registries.BIOME); + HolderGetter> worldCarvers = context.lookup(Registries.CONFIGURED_CARVER); + HolderGetter placedFeatures = context.lookup(Registries.PLACED_FEATURE); + + HolderSet overworldBiomes = biomes.getOrThrow(BiomeTags.IS_OVERWORLD); + + // Add overworld ores + context.register(createBiomeModifierKey("add_ruby_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(overworldBiomes, HolderSet.direct(placedFeatures.getOrThrow(RUBY_ORE_PLACED_FEATURE)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.rubyOreKey)); + context.register(createBiomeModifierKey("add_sapphire_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(overworldBiomes, HolderSet.direct(placedFeatures.getOrThrow(SAPPHIRE_ORE_PLACED_FEATURE)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.sapphireOreKey)); + context.register(createBiomeModifierKey("add_peridot_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(overworldBiomes, HolderSet.direct(placedFeatures.getOrThrow(PERIDOT_ORE_PLACED_FEATURE)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.peridotOreKey)); + context.register(createBiomeModifierKey("add_electrotine_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(overworldBiomes, HolderSet.direct(placedFeatures.getOrThrow(ELECTROTINE_ORE_PLACED_FEATURE)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.electrotineOreKey)); + context.register(createBiomeModifierKey("add_tin_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(overworldBiomes, HolderSet.direct(placedFeatures.getOrThrow(TIN_ORE_PLACED_FEATURE)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.tinOreKey)); + context.register(createBiomeModifierKey("add_silver_ore_to_overworld"), new ConfigFileControlledAddFeaturesBiomeModifier(overworldBiomes, HolderSet.direct(placedFeatures.getOrThrow(SILVER_ORE_PLACED_FEATURE)), GenerationStep.Decoration.UNDERGROUND_ORES, Configurator.silverOreKey)); + + // Add overworld carvers + context.register(createBiomeModifierKey("add_marble_cave_to_overworld"), new ConfigFileControlledAddCarversBiomeModifier(overworldBiomes, HolderSet.direct(worldCarvers.getOrThrow(MARBLE_CAVE_CONFIGURED_CARVER)), GenerationStep.Carving.AIR, Configurator.marbleCaveKey)); } // Registers the actual ore feature. This describes a single cluster of this specific ore type - private static ConfiguredFeature createOreConfiguration(Supplier standard, Supplier deepslate, int veinSize) { - return new ConfiguredFeature<>(Feature.ORE, new OreConfiguration(ImmutableList.of( - OreConfiguration.target(OreFeatures.STONE_ORE_REPLACEABLES, standard.get().defaultBlockState()), - OreConfiguration.target(OreFeatures.DEEPSLATE_ORE_REPLACEABLES, deepslate.get().defaultBlockState())), veinSize)); + private static void registerOreConfiguration(BootstapContext> context, ResourceKey> key, Supplier standard, Supplier deepslate, int veinSize) { + context.register(key, new ConfiguredFeature<>(Feature.ORE, new OreConfiguration(ImmutableList.of( + OreConfiguration.target(new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES), standard.get().defaultBlockState()), + OreConfiguration.target(new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES), deepslate.get().defaultBlockState())), veinSize))); } // Registers a placement for the given feature. This controls how many of said features spawn and where - private static PlacedFeature createOrePlacement(ConfiguredFeature configuredFeature, int minY, int maxY, int count) { + private static void registerOrePlacement(BootstapContext context, ResourceKey key, Holder> configuredFeature, int minY, int maxY, int count) { List modifiers = ImmutableList.of( CountPlacement.of(count), InSquarePlacement.spread(), HeightRangePlacement.triangle(VerticalAnchor.absolute(minY), VerticalAnchor.absolute(maxY))); - return new PlacedFeature(Holder.direct(configuredFeature), modifiers); + context.register(key, new PlacedFeature(configuredFeature, modifiers)); } } diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/item/AthameItem.java b/exploration/src/main/java/mrtjp/projectred/exploration/item/AthameItem.java index c7baee55d..47afe0ce7 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/item/AthameItem.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/item/AthameItem.java @@ -1,6 +1,5 @@ package mrtjp.projectred.exploration.item; -import mrtjp.projectred.exploration.ProjectRedExploration; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -10,7 +9,7 @@ public class AthameItem extends SwordItem { public AthameItem(Tier itemTier, int attackDamage, float attackSpeed) { - super(itemTier, attackDamage, attackSpeed, new Item.Properties().tab(ProjectRedExploration.EXPLORATION_CREATIVE_TAB)); + super(itemTier, attackDamage, attackSpeed, new Item.Properties()); } @Override diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/item/BackpackItem.java b/exploration/src/main/java/mrtjp/projectred/exploration/item/BackpackItem.java index cea577ae9..7965939c6 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/item/BackpackItem.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/item/BackpackItem.java @@ -2,7 +2,6 @@ import codechicken.lib.util.ServerUtils; import mrtjp.projectred.core.inventory.BaseInventory; -import mrtjp.projectred.exploration.ProjectRedExploration; import mrtjp.projectred.exploration.init.ExplorationTags; import mrtjp.projectred.exploration.inventory.container.BackpackContainer; import net.minecraft.ChatFormatting; @@ -34,8 +33,7 @@ public class BackpackItem extends Item { public BackpackItem(int colour) { super(new Item.Properties() - .stacksTo(1) - .tab(ProjectRedExploration.EXPLORATION_CREATIVE_TAB)); + .stacksTo(1)); this.colour = colour; } diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/item/SickleItem.java b/exploration/src/main/java/mrtjp/projectred/exploration/item/SickleItem.java index 6f989173b..e6dd5e697 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/item/SickleItem.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/item/SickleItem.java @@ -12,7 +12,7 @@ public class SickleItem extends DiggerItem { public SickleItem(Tier itemTier, float attackDamage, float attackSpeed, Properties properties) { - super(attackDamage, attackSpeed, itemTier, BlockTags.REPLACEABLE_PLANTS, properties); + super(attackDamage, attackSpeed, itemTier, BlockTags.REPLACEABLE, properties); //TODO is this tag correct? } //TODO !!!! diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/item/WoolGinItem.java b/exploration/src/main/java/mrtjp/projectred/exploration/item/WoolGinItem.java index 07d602e77..9a12d1346 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/item/WoolGinItem.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/item/WoolGinItem.java @@ -2,13 +2,10 @@ import net.minecraft.world.item.Item; -import static mrtjp.projectred.exploration.ProjectRedExploration.EXPLORATION_CREATIVE_TAB; - public class WoolGinItem extends DamageableCraftingContainerItem { public WoolGinItem() { super(new Item.Properties() - .durability(128) - .tab(EXPLORATION_CREATIVE_TAB)); + .durability(128)); } } diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/item/crafting/BackpackDyeRecipe.java b/exploration/src/main/java/mrtjp/projectred/exploration/item/crafting/BackpackDyeRecipe.java index f3e498a5e..ddce2eaee 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/item/crafting/BackpackDyeRecipe.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/item/crafting/BackpackDyeRecipe.java @@ -3,10 +3,12 @@ import mrtjp.projectred.exploration.init.ExplorationItems; import mrtjp.projectred.exploration.init.ExplorationRecipeSerializers; import mrtjp.projectred.exploration.item.BackpackItem; +import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.CraftingBookCategory; import net.minecraft.world.item.crafting.CustomRecipe; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; @@ -16,8 +18,8 @@ public class BackpackDyeRecipe extends CustomRecipe { - public BackpackDyeRecipe(ResourceLocation id) { - super(id); + public BackpackDyeRecipe(ResourceLocation id, CraftingBookCategory category) { + super(id, category); } @Override @@ -53,7 +55,7 @@ public boolean matches(CraftingContainer inventory, Level world) { } @Override - public ItemStack assemble(CraftingContainer inventory) { + public ItemStack assemble(CraftingContainer inventory, RegistryAccess registryAccess) { ItemStack backpack = ItemStack.EMPTY; ItemStack dye = ItemStack.EMPTY; int itemCount = 0; diff --git a/exploration/src/main/resources/META-INF/mods.toml b/exploration/src/main/resources/META-INF/mods.toml index c35e168ba..f879ef963 100644 --- a/exploration/src/main/resources/META-INF/mods.toml +++ b/exploration/src/main/resources/META-INF/mods.toml @@ -23,7 +23,7 @@ Redstone. The way it was meant to be. [[dependencies.projectred_exploration]] modId="minecraft" mandatory=true - versionRange="[1.19.2]" + versionRange="[1.20.1]" ordering="AFTER" side="BOTH" [[dependencies.projectred_exploration]] diff --git a/fabrication/build.gradle b/fabrication/build.gradle index 2b00d5dae..a68797851 100644 --- a/fabrication/build.gradle +++ b/fabrication/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.minecraftforge.gradle' + id 'net.neoforged.gradle' id 'com.matthewprenger.cursegradle' id 'com.github.johnrengelman.shadow' } @@ -26,10 +26,10 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" + minecraft "net.neoforged:forge:${mc_version}-${forge_version}" - implementation fg.deobf("codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") - implementation fg.deobf("codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") + implementation fg.deobf("io.codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") + implementation fg.deobf("io.codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") implementation project(":core") diff --git a/fabrication/src/main/generated/.cache/1705df09b9fdc30fb5ecd87a6ad3c3b266cdaf15 b/fabrication/src/main/generated/.cache/4cbdb80d40a3d0a708ad9fd5e4bf268842bd5f55 similarity index 94% rename from fabrication/src/main/generated/.cache/1705df09b9fdc30fb5ecd87a6ad3c3b266cdaf15 rename to fabrication/src/main/generated/.cache/4cbdb80d40a3d0a708ad9fd5e4bf268842bd5f55 index 6698bc60c..c618daae9 100644 --- a/fabrication/src/main/generated/.cache/1705df09b9fdc30fb5ecd87a6ad3c3b266cdaf15 +++ b/fabrication/src/main/generated/.cache/4cbdb80d40a3d0a708ad9fd5e4bf268842bd5f55 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:07:47.480721 ProjectRed-Fabrication Item Models +// 1.20.1 2024-05-02T16:38:46.517119 projectred_fabrication Item models. 1ed00fc3905c39043afd5719cad608e5f9083e9b assets/projectred_fabrication/models/item/blank_photomask.json ad27f25b0b09f179175e551b1f53b0d5b44ede55 assets/projectred_fabrication/models/item/etched_silicon_wafer.json a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_fabrication/models/item/fabricated_gate.json diff --git a/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 b/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 index 5029e3fc2..7ebc93190 100644 --- a/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 +++ b/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 @@ -1,2 +1,2 @@ -// 1.19.2 2024-04-29T13:40:44.325463 ProjectRed-Fabrication Languages: en_us +// 1.20.1 2024-05-02T16:38:46.526592 ProjectRed-Fabrication Languages: en_us 5da5b8cc9a7b6e62337421001761920875beea36 assets/projectred_fabrication/lang/en_us.json diff --git a/fabrication/src/main/generated/.cache/e5496206be7dec22fb1b8834725b534373bac693 b/fabrication/src/main/generated/.cache/e5496206be7dec22fb1b8834725b534373bac693 index dbcc0b20e..fdc9fb66b 100644 --- a/fabrication/src/main/generated/.cache/e5496206be7dec22fb1b8834725b534373bac693 +++ b/fabrication/src/main/generated/.cache/e5496206be7dec22fb1b8834725b534373bac693 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:07:47.475489 ProjectRed-Fabrication Block Models +// 1.20.1 2024-05-02T16:38:46.521842 ProjectRed-Fabrication Block Models 4d6ff59c7e810f5e47206f2d34ffe02527e0bd73 assets/projectred_fabrication/blockstates/ic_workbench.json 54b70212874635024eca1ebd9fac061e8a0317c6 assets/projectred_fabrication/blockstates/lithography_table.json ac43ba0d55a2eab53825850f85f30c556fc6c1cc assets/projectred_fabrication/blockstates/packaging_table.json diff --git a/fabrication/src/main/generated/.cache/12b76405d67198324fd12d519b71f5597704a0e2 b/fabrication/src/main/generated/.cache/f4bc7ca4a5ee1414f9ce87c9fc7ed455122fbce7 similarity index 90% rename from fabrication/src/main/generated/.cache/12b76405d67198324fd12d519b71f5597704a0e2 rename to fabrication/src/main/generated/.cache/f4bc7ca4a5ee1414f9ce87c9fc7ed455122fbce7 index 7ed2f4f45..41fb4fcc4 100644 --- a/fabrication/src/main/generated/.cache/12b76405d67198324fd12d519b71f5597704a0e2 +++ b/fabrication/src/main/generated/.cache/f4bc7ca4a5ee1414f9ce87c9fc7ed455122fbce7 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:07:47.482979 ProjectRed-Fabrication Recipes +// 1.20.1 2024-05-02T16:38:46.522359 projectred_fabrication Recipes. e2c7615fa75237534772192d7240a93b6d883cb8 data/projectred_fabrication/recipes/blank_photomask.json 32a3a6d0d27bbaae4bd6e8fee3e171142741f5fa data/projectred_fabrication/recipes/ic_blueprint.json 09a2f49fb9df3cb19523f035921ca050e1830268 data/projectred_fabrication/recipes/ic_workbench.json diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/ProjectRedFabrication.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/ProjectRedFabrication.java index 128c04afa..3e5bbcffd 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/ProjectRedFabrication.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/ProjectRedFabrication.java @@ -1,16 +1,17 @@ package mrtjp.projectred.fabrication; -import codechicken.lib.gui.SimpleCreativeTab; import codechicken.multipart.api.MultipartType; import mrtjp.projectred.fabrication.data.FabricationBlockStateModelProvider; import mrtjp.projectred.fabrication.data.FabricationItemModelProvider; import mrtjp.projectred.fabrication.data.FabricationLanguageProvider; import mrtjp.projectred.fabrication.data.FabricationRecipeProvider; import mrtjp.projectred.fabrication.init.*; +import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraftforge.api.distmarker.Dist; @@ -40,14 +41,14 @@ public class ProjectRedFabrication { public static final DeferredRegister> BLOCK_ENTITY_TYPES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, MOD_ID); public static final DeferredRegister> MENU_TYPES = DeferredRegister.create(ForgeRegistries.MENU_TYPES, MOD_ID); public static final DeferredRegister> PARTS = DeferredRegister.create(MultipartType.MULTIPART_TYPES, MOD_ID); - - public static final SimpleCreativeTab FABRICATION_GROUP = new SimpleCreativeTab(MOD_ID, () -> new ItemStack(FabricationBlocks.IC_WORKBENCH_BLOCK.get())); + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MOD_ID); static { FabricationBlocks.register(); FabricationMenus.register(); FabricationItems.register(); FabricationParts.register(); + FabricationCreativeModeTab.register(); } public ProjectRedFabrication() { @@ -63,6 +64,7 @@ public ProjectRedFabrication() { BLOCK_ENTITY_TYPES.register(modEventBus); MENU_TYPES.register(modEventBus); PARTS.register(modEventBus); + CREATIVE_TABS.register(modEventBus); } private void commonSetup(final FMLCommonSetupEvent event) { @@ -71,12 +73,13 @@ private void commonSetup(final FMLCommonSetupEvent event) { private void onGatherDataEvent(final GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper fileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeClient(), new FabricationBlockStateModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new FabricationItemModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new FabricationLanguageProvider(generator)); + generator.addProvider(event.includeClient(), new FabricationBlockStateModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new FabricationItemModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new FabricationLanguageProvider(output)); - generator.addProvider(event.includeServer(), new FabricationRecipeProvider(generator)); + generator.addProvider(event.includeServer(), new FabricationRecipeProvider(output)); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationBlockStateModelProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationBlockStateModelProvider.java index 1e09e8d30..eced27179 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationBlockStateModelProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationBlockStateModelProvider.java @@ -4,7 +4,7 @@ import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.block.FabricationMachineBlock; import mrtjp.projectred.fabrication.block.ICWorkbenchBlock; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.BlockModelBuilder; import net.minecraftforge.client.model.generators.BlockStateProvider; @@ -20,8 +20,8 @@ @SuppressWarnings("DataFlowIssue") public class FabricationBlockStateModelProvider extends BlockStateProvider { - public FabricationBlockStateModelProvider(DataGenerator gen, ExistingFileHelper exFileHelper) { - super(gen, ProjectRedFabrication.MOD_ID, exFileHelper); + public FabricationBlockStateModelProvider(PackOutput output, ExistingFileHelper exFileHelper) { + super(output, ProjectRedFabrication.MOD_ID, exFileHelper); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationItemModelProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationItemModelProvider.java index 89196c6eb..8d9a7408f 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationItemModelProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationItemModelProvider.java @@ -1,7 +1,7 @@ package mrtjp.projectred.fabrication.data; import codechicken.lib.datagen.ItemModelProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import static mrtjp.projectred.fabrication.ProjectRedFabrication.MOD_ID; @@ -11,13 +11,8 @@ public class FabricationItemModelProvider extends ItemModelProvider { - public FabricationItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { - super(generator, MOD_ID, existingFileHelper); - } - - @Override - public String getName() { - return "ProjectRed-Fabrication Item Models"; + public FabricationItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, MOD_ID, existingFileHelper); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java index a53996a55..dce49f27e 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java @@ -1,6 +1,6 @@ package mrtjp.projectred.fabrication.data; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.LanguageProvider; import static mrtjp.projectred.fabrication.ProjectRedFabrication.MOD_ID; @@ -11,8 +11,8 @@ public class FabricationLanguageProvider extends LanguageProvider { - public FabricationLanguageProvider(DataGenerator gen) { - super(gen, MOD_ID, "en_us"); + public FabricationLanguageProvider(PackOutput output) { + super(output, MOD_ID, "en_us"); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationRecipeProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationRecipeProvider.java index ab3c230d1..145702403 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationRecipeProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationRecipeProvider.java @@ -1,7 +1,7 @@ package mrtjp.projectred.fabrication.data; import codechicken.lib.datagen.recipe.RecipeProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; @@ -11,18 +11,14 @@ import static mrtjp.projectred.core.init.CoreItems.SILICON_ITEM; import static mrtjp.projectred.core.init.CoreTags.ELECTROTINE_ALLOY_INGOT_TAG; import static mrtjp.projectred.core.init.CoreTags.SAPPHIRE_GEM_TAG; +import static mrtjp.projectred.fabrication.ProjectRedFabrication.MOD_ID; import static mrtjp.projectred.fabrication.init.FabricationBlocks.*; import static mrtjp.projectred.fabrication.init.FabricationItems.*; public class FabricationRecipeProvider extends RecipeProvider { - public FabricationRecipeProvider(DataGenerator dataGenerator) { - super(dataGenerator); - } - - @Override - public String getName() { - return "ProjectRed-Fabrication Recipes"; + public FabricationRecipeProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CTNListNode.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CTNListNode.java index 14431d2f4..9391544f0 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CTNListNode.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CTNListNode.java @@ -1,13 +1,13 @@ package mrtjp.projectred.fabrication.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.engine.log.ICCompilerLog.CompileTreeNode; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchCompileTab; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import mrtjp.projectred.redui.AbstractGuiNode; import mrtjp.projectred.redui.RedUISprite; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import javax.annotation.Nullable; @@ -116,22 +116,22 @@ public CompileTreeNodeListItem(CompileTreeNode node) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - blitSprite(stack, selected ? BACKGROUND_SELECTED : BACKGROUND_UNSELECTED); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + blitSprite(graphics, selected ? BACKGROUND_SELECTED : BACKGROUND_UNSELECTED); var fr = getRoot().getFontRenderer(); Component c = CompileTreeTab.getTitleForCTNNode(node).copy().withStyle(UNIFORM); - fr.draw(stack, c, getFrame().x() + 2, getFrame().y() + getFrame().height() / 2f - fr.lineHeight / 2f, 0xFFFFFF); + graphics.drawString(fr, c, getFrame().x() + 2, getFrame().y() + getFrame().height() / 2 - fr.lineHeight / 2, 0xFFFFFF, false); } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (!isFirstHit(mouse)) return; List toolTip = new LinkedList<>(); CompileTreeTab.buildTooltipForCTNNode(node, toolTip); - renderTooltip(stack, mouse, toolTip); + renderTooltip(graphics, mouse, toolTip); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileProblemsTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileProblemsTab.java index 2b2328846..eae29aac7 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileProblemsTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileProblemsTab.java @@ -2,7 +2,6 @@ import codechicken.lib.render.CCRenderState; import codechicken.lib.vec.Vector3; -import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.fengine.TileCoord; import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; @@ -14,7 +13,7 @@ import mrtjp.projectred.redui.AbstractGuiNode; import mrtjp.projectred.redui.ScrollBarNode; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.network.chat.Component; @@ -48,9 +47,8 @@ private void initSubNodes() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchCompileTab.TAB_BACKGROUND); - GuiComponent.blit(stack, getFrame().x(), getFrame().y(), 184, 223, getFrame().width(), getFrame().height(), 512, 512); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(ICWorkbenchCompileTab.TAB_BACKGROUND, getFrame().x(), getFrame().y(), 184, 223, getFrame().width(), getFrame().height(), 512, 512); } @Override @@ -90,9 +88,8 @@ public ScrollBar() { } @Override - protected void drawSlider(PoseStack stack, Rect sliderFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchCompileTab.TAB_BACKGROUND); - GuiComponent.blit(stack, sliderFrame.x(), sliderFrame.y(), 305, 58, sliderFrame.width(), sliderFrame.height(), 512, 512); + protected void drawSlider(GuiGraphics graphics, Rect sliderFrame) { + graphics.blit(ICWorkbenchCompileTab.TAB_BACKGROUND, sliderFrame.x(), sliderFrame.y(), 305, 58, sliderFrame.width(), sliderFrame.height(), 512, 512); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileStackTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileStackTab.java index a6707c8da..9e0be4c99 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileStackTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileStackTab.java @@ -3,7 +3,6 @@ import codechicken.lib.colour.EnumColour; import codechicken.lib.render.CCRenderState; import codechicken.lib.vec.Vector3; -import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.fengine.TileCoord; import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; @@ -14,7 +13,7 @@ import mrtjp.projectred.redui.AbstractGuiNode; import mrtjp.projectred.redui.ScrollBarNode; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.network.chat.Component; @@ -50,9 +49,8 @@ private void initSubNodes() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchCompileTab.TAB_BACKGROUND); - GuiComponent.blit(stack, getFrame().x(), getFrame().y(), 0, 223, getFrame().width(), getFrame().height(), 512, 512); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(ICWorkbenchCompileTab.TAB_BACKGROUND, getFrame().x(), getFrame().y(), 0, 223, getFrame().width(), getFrame().height(), 512, 512); } @Override @@ -98,9 +96,8 @@ public ScrollBar() { } @Override - protected void drawSlider(PoseStack stack, Rect sliderFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchCompileTab.TAB_BACKGROUND); - GuiComponent.blit(stack, sliderFrame.x(), sliderFrame.y(), 305, 58, sliderFrame.width(), sliderFrame.height(), 512, 512); + protected void drawSlider(GuiGraphics graphics, Rect sliderFrame) { + graphics.blit(ICWorkbenchCompileTab.TAB_BACKGROUND, sliderFrame.x(), sliderFrame.y(), 305, 58, sliderFrame.width(), sliderFrame.height(), 512, 512); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileTreeTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileTreeTab.java index ead8f1ae8..278433155 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileTreeTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/CompileTreeTab.java @@ -3,7 +3,6 @@ import codechicken.lib.colour.EnumColour; import codechicken.lib.render.CCRenderState; import codechicken.lib.vec.Vector3; -import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.fengine.TileCoord; import mrtjp.fengine.api.ICStepThroughAssembler; @@ -17,7 +16,7 @@ import mrtjp.projectred.redui.ScrollBarNode; import mrtjp.projectred.redui.SpriteButtonNode; import net.covers1624.quack.collection.FastStream; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; @@ -130,15 +129,14 @@ private void initSubNodes() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchCompileTab.TAB_BACKGROUND); - GuiComponent.blit(stack, getFrame().x(), getFrame().y(), 92, 223, getFrame().width(), getFrame().height(), 512, 512); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(ICWorkbenchCompileTab.TAB_BACKGROUND, getFrame().x(), getFrame().y(), 92, 223, getFrame().width(), getFrame().height(), 512, 512); // Title of current node if (currentNode != null) { var fr = getRoot().getFontRenderer(); Component c = getTitleForCTNNode(currentNode).copy().withStyle(UNIFORM_DARK_GRAY); - fr.draw(stack, c, getFrame().x() + 6, getFrame().y() + 21, 0xFFFFFF); + graphics.drawString(fr, c, getFrame().x() + 6, getFrame().y() + 21, 0xFFFFFF, false); } } @@ -323,9 +321,8 @@ public ScrollBar() { } @Override - protected void drawSlider(PoseStack stack, Rect sliderFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchCompileTab.TAB_BACKGROUND); - GuiComponent.blit(stack, sliderFrame.x(), sliderFrame.y(), 305, 58, sliderFrame.width(), sliderFrame.height(), 512, 512); + protected void drawSlider(GuiGraphics graphics, Rect sliderFrame) { + graphics.blit(ICWorkbenchCompileTab.TAB_BACKGROUND, sliderFrame.x(), sliderFrame.y(), 305, 58, sliderFrame.width(), sliderFrame.height(), 512, 512); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/EraserToolTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/EraserToolTab.java index 075f7743e..c36cc050c 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/EraserToolTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/EraserToolTab.java @@ -1,11 +1,9 @@ package mrtjp.projectred.fabrication.gui; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.editor.tools.EraseTool; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchScreen; import mrtjp.projectred.lib.Point; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import java.util.List; @@ -30,9 +28,8 @@ private void construct() { public TabButtonNode createButtonNode() { return new TabButtonNode(this, TabButtonNode.TabSide.LEFT) { @Override - public void renderIcon(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); - GuiComponent.blit(stack, getFrame().x() + 3, getFrame().y() + 3, 390, 16, 14, 14, 512, 512); + public void renderIcon(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(ICWorkbenchScreen.BACKGROUND, getFrame().x() + 3, getFrame().y() + 3, 390, 16, 14, 14, 512, 512); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java index ec9fb4cf9..fbc1b5635 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java @@ -6,15 +6,13 @@ import codechicken.lib.vec.Scale; import codechicken.lib.vec.TransformationList; import codechicken.lib.vec.Translation; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.editor.tools.GatePlacerTool; import mrtjp.projectred.fabrication.engine.gates.ICGateTileType; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchScreen; import mrtjp.projectred.integration.client.GateModelRenderer; import mrtjp.projectred.lib.Point; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -41,11 +39,11 @@ private void addGateButton(ICGateTileType type) { @Override public boolean isSelected() { return tool.getGateType() == type; } @Override - public void renderIcon(PoseStack stack, Point absPos, float partialFrame) { + public void renderIcon(GuiGraphics graphics, Point absPos, float partialFrame) { MultiBufferSource.BufferSource getter = Minecraft.getInstance().renderBuffers().bufferSource(); CCRenderState ccrs = CCRenderState.instance(); ccrs.reset(); - ccrs.bind(RenderType.cutout(), getter, stack); + ccrs.bind(RenderType.cutout(), getter, graphics.pose()); ccrs.overlay = OverlayTexture.NO_OVERLAY; ccrs.brightness = 0xF000F0; @@ -102,9 +100,8 @@ private void construct() { public TabButtonNode createButtonNode() { return new TabButtonNode(this, TabButtonNode.TabSide.LEFT) { @Override - public void renderIcon(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); - GuiComponent.blit(stack, getFrame().x() + 3, getFrame().y() + 3, 390, 31, 14, 14, 512, 512); + public void renderIcon(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(ICWorkbenchScreen.BACKGROUND, getFrame().x() + 3, getFrame().y() + 3, 390, 31, 14, 14, 512, 512); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ICEditorToolTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ICEditorToolTab.java index a18dda040..19174f614 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ICEditorToolTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ICEditorToolTab.java @@ -1,13 +1,12 @@ package mrtjp.projectred.fabrication.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.editor.tools.IICEditorTool; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchScreen; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.AbstractGuiNode; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; @@ -95,10 +94,8 @@ public IICEditorTool getTool() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); - - GuiComponent.blit(stack, getPosition().x, getPosition().y, 305, 0, 84, 222, 512, 512); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(ICWorkbenchScreen.BACKGROUND, getPosition().x, getPosition().y, 305, 0, 84, 222, 512, 512); //TODO: Render tool name on header } @@ -129,7 +126,7 @@ public TabButtonNode createButtonNode() { return new TabButtonNode(this, TabButtonNode.TabSide.LEFT) { @Override - public void renderIcon(PoseStack stack, Point mouse, float partialFrame) { + public void renderIcon(GuiGraphics graphics, Point mouse, float partialFrame) { } @Override @@ -143,7 +140,7 @@ protected interface ButtonController { void getTooltip(List tooltip); void onClick(); boolean isSelected(); - void renderIcon(PoseStack stack, Point absPos, float partialFrame); + void renderIcon(GuiGraphics graphics, Point absPos, float partialFrame); } private static class GroupHeaderNode extends AbstractGuiNode { @@ -156,13 +153,12 @@ public GroupHeaderNode(Component title) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { - GuiComponent.blit(stack, getPosition().x, getPosition().y, GROUP_U, GROUP_V, getFrame().width(), getFrame().height(), 512, 512); + graphics.blit(ICWorkbenchScreen.BACKGROUND, getPosition().x, getPosition().y, GROUP_U, GROUP_V, getFrame().width(), getFrame().height(), 512, 512); Font fontRenderer = getRoot().getFontRenderer(); - fontRenderer.draw(stack, title, getPosition().x + 2, getPosition().y + GROUP_HEIGHT / 2f - fontRenderer.lineHeight / 2f, 0xFFFFFF); + graphics.drawString(fontRenderer, title, getPosition().x + 2, getPosition().y + GROUP_HEIGHT / 2 - fontRenderer.lineHeight / 2, 0xFFFFFF); } } @@ -182,9 +178,8 @@ public AbstractButtonNode(ButtonController controller, int width, int height, Po } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { RenderSystem.enableBlend(); - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); boolean mouseover = getFrame().contains(mouse) && isFirstHit(mouse); boolean selected = controller.isSelected(); @@ -197,30 +192,30 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { // Background int uBackground = uvBg.x + (selected ? uvBgSelectedShift.x : 0); int vBackground = uvBg.y + (selected ? uvBgSelectedShift.y : 0); - GuiComponent.blit(stack, x, y, uBackground, vBackground, w, h, 512, 512); + graphics.blit(ICWorkbenchScreen.BACKGROUND, x, y, uBackground, vBackground, w, h, 512, 512); // Mouseover layer if (selected || mouseover) { int uMouseOver = uvBg.x + uvMouseOverShift.x; int vMouseOver = uvBg.y + uvMouseOverShift.y; - GuiComponent.blit(stack, x, y, uMouseOver, vMouseOver, w, h, 512, 512); + graphics.blit(ICWorkbenchScreen.BACKGROUND, x, y, uMouseOver, vMouseOver, w, h, 512, 512); } RenderSystem.disableBlend(); // Icon - controller.renderIcon(stack, getPosition(), partialFrame); + controller.renderIcon(graphics, getPosition(), partialFrame); } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (!isFirstHit(mouse)) return; List tooltip = new LinkedList<>(); controller.getTooltip(tooltip); - renderTooltip(stack, mouse, tooltip); + renderTooltip(graphics, mouse, tooltip); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ICRenderTypes.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ICRenderTypes.java index 017086cc5..5a81eed88 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ICRenderTypes.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ICRenderTypes.java @@ -3,24 +3,25 @@ import codechicken.lib.colour.EnumColour; import codechicken.lib.render.BlockRenderer; import codechicken.lib.render.CCRenderState; -import codechicken.lib.texture.AtlasRegistrar; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Vector3; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexFormat; -import com.mojang.math.Matrix4f; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.event.TextureStitchEvent; +import org.joml.Matrix4f; import java.util.OptionalDouble; import java.util.function.Function; @@ -68,12 +69,12 @@ public class ICRenderTypes { public static RenderType gridRenderType = RenderType.create(MOD_ID + ":ic_grid", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 256, false, false, RenderType.CompositeState.builder() - .setShaderState(RenderStateShard.BLOCK_SHADER) + .setShaderState(RenderStateShard.RENDERTYPE_CUTOUT_SHADER) .setTextureState(new RenderStateShard.TextureStateShard(PERFBOARD_TEXTURE, false, false)) // Mipped: Strange artifacts on render. Our normal world rendering is not mipped .setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY) .setDepthTestState(RenderStateShard.LEQUAL_DEPTH_TEST) .setCullState(RenderStateShard.CULL) - .setLightmapState(RenderStateShard.NO_LIGHTMAP) + .setLightmapState(RenderStateShard.LIGHTMAP) .setOverlayState(RenderStateShard.NO_OVERLAY) .setLayeringState(RenderStateShard.NO_LAYERING) .setOutputState(RenderStateShard.MAIN_TARGET) @@ -84,12 +85,12 @@ public class ICRenderTypes { public static RenderType gridEdgeRenderType = RenderType.create(MOD_ID + ":ic_grid_edge", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 256, false, false, RenderType.CompositeState.builder() - .setShaderState(RenderStateShard.BLOCK_SHADER) + .setShaderState(RenderStateShard.RENDERTYPE_CUTOUT_SHADER) .setTextureState(new RenderStateShard.TextureStateShard(PERFBOARD_EDGE_TEXTURE, false, false)) .setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY) .setDepthTestState(RenderStateShard.LEQUAL_DEPTH_TEST) .setCullState(RenderStateShard.CULL) - .setLightmapState(RenderStateShard.NO_LIGHTMAP) + .setLightmapState(RenderStateShard.LIGHTMAP) .setOverlayState(RenderStateShard.NO_OVERLAY) .setLayeringState(RenderStateShard.NO_LAYERING) .setOutputState(RenderStateShard.MAIN_TARGET) @@ -100,12 +101,12 @@ public class ICRenderTypes { public static RenderType gridCornerRenderType = RenderType.create(MOD_ID + ":ic_grid_corner", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 256, false, false, RenderType.CompositeState.builder() - .setShaderState(RenderStateShard.BLOCK_SHADER) + .setShaderState(RenderStateShard.RENDERTYPE_CUTOUT_SHADER) .setTextureState(new RenderStateShard.TextureStateShard(PERFBOARD_CORNER_TEXTURE, false, false)) .setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY) .setDepthTestState(RenderStateShard.LEQUAL_DEPTH_TEST) .setCullState(RenderStateShard.CULL) - .setLightmapState(RenderStateShard.NO_LIGHTMAP) + .setLightmapState(RenderStateShard.LIGHTMAP) .setOverlayState(RenderStateShard.NO_OVERLAY) .setLayeringState(RenderStateShard.NO_LAYERING) .setOutputState(RenderStateShard.MAIN_TARGET) @@ -154,6 +155,7 @@ public class ICRenderTypes { public static TextureAtlasSprite reflectIcon; public static void renderICGrid(PoseStack renderStack, MultiBufferSource getter, Cuboid6 bounds, CCRenderState ccrs) { + // Main double ymin = -2/16D; Cuboid6 box = new Cuboid6(bounds.min.x, ymin, bounds.min.z, bounds.max.x, 0, bounds.max.z); @@ -300,10 +302,12 @@ public static void renderConstrainedText(Component text, PoseStack stack, MultiB stack.pushPose(); stack.translate(x, y, z); stack.scale(s, 1.0F, s); - stack.mulPose(Vector3f.XP.rotationDegrees(90.0F)); + stack.mulPose(Axis.XP.rotationDegrees(90.0F)); // Render text - fontRenderer.draw(stack, text, 0, 0, EnumColour.WHITE.rgba()); + MultiBufferSource.BufferSource buffer = Minecraft.getInstance().renderBuffers().bufferSource(); + fontRenderer.drawInBatch(text, 0, 0, EnumColour.WHITE.rgba(), false, stack.last().pose(), buffer, Font.DisplayMode.NORMAL, 0, 15728880); + buffer.endBatch(); stack.popPose(); } @@ -317,15 +321,16 @@ public static void renderConstrainedCenteredText(Component text, PoseStack stack stack.pushPose(); stack.translate(x, y, z); stack.scale(s, 1.0F, s); - stack.mulPose(Vector3f.XP.rotationDegrees(90.0F)); + stack.mulPose(Axis.XP.rotationDegrees(90.0F)); // Render text ceneterd at desired position - fontRenderer.draw(stack, text, (float) (-fontRenderer.width(text) / 2), (float) (-fontRenderer.lineHeight / 2), EnumColour.WHITE.rgba()); + MultiBufferSource.BufferSource buffer = Minecraft.getInstance().renderBuffers().bufferSource(); + fontRenderer.drawInBatch(text, (float) (-fontRenderer.width(text) / 2), (float) (-fontRenderer.lineHeight / 2), EnumColour.WHITE.rgba(), false, stack.last().pose(), buffer, Font.DisplayMode.NORMAL, 0, 15728880); + buffer.endBatch(); stack.popPose(); } - public void sortComponents(Cuboid6 c) { if (c.min.x > c.max.x) { @@ -347,11 +352,13 @@ public void sortComponents(Cuboid6 c) { } } - public static void registerIcons(AtlasRegistrar registrar) { - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/perfboard"), i -> icSurfaceIcon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/perfboard_edge"), i -> icSurfaceBorderIcon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/perfboard_corner"), i -> icSurfaceCornerIcon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/rotate"), i -> rotateIcon = i); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/reflect"), i -> reflectIcon = i); + public static void onTextureStitchEvent(TextureStitchEvent.Post event) { + if (!event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) return; + + icSurfaceIcon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/perfboard")); + icSurfaceBorderIcon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/perfboard_edge")); + icSurfaceCornerIcon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/perfboard_corner")); + rotateIcon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/rotate")); + reflectIcon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/workbench_ui/reflect")); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/InteractToolTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/InteractToolTab.java index f488d5ba8..9eb860e9f 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/InteractToolTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/InteractToolTab.java @@ -1,11 +1,9 @@ package mrtjp.projectred.fabrication.gui; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.editor.tools.InteractTool; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchScreen; import mrtjp.projectred.lib.Point; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import java.util.List; @@ -30,9 +28,8 @@ private void construct() { public TabButtonNode createButtonNode() { return new TabButtonNode(this, TabButtonNode.TabSide.LEFT) { @Override - public void renderIcon(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); - GuiComponent.blit(stack, getFrame().x() + 3, getFrame().y() + 3, 390, 1, 14, 14, 512, 512); + public void renderIcon(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(ICWorkbenchScreen.BACKGROUND, getFrame().x() + 3, getFrame().y() + 3, 390, 1, 14, 14, 512, 512); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/PipelineDiagramNode.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/PipelineDiagramNode.java index 92e3f80c9..add20254b 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/PipelineDiagramNode.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/PipelineDiagramNode.java @@ -1,14 +1,12 @@ package mrtjp.projectred.fabrication.gui; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchInfoTab; import mrtjp.projectred.fabrication.lithography.LithographyPipeline; import mrtjp.projectred.fabrication.lithography.YieldCalculator; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.AbstractGuiNode; import mrtjp.projectred.redui.ItemStackNode; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.world.item.ItemStack; import java.util.ArrayList; @@ -43,7 +41,7 @@ private void initSubNodes() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { } @@ -82,11 +80,9 @@ private void addItem(ItemStack stack, int x, int y) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchInfoTab.TAB_BACKGROUND); - + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { // Draw the diagram centered in this node - GuiComponent.blit(stack, getFrame().x(), getFrame().y(), 1, 223, 280, 56, 512, 512); + graphics.blit(ICWorkbenchInfoTab.TAB_BACKGROUND, getFrame().x(), getFrame().y(), 1, 223, 280, 56, 512, 512); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ProblemListNode.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ProblemListNode.java index e84f614fe..b32090e33 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ProblemListNode.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/ProblemListNode.java @@ -1,7 +1,6 @@ package mrtjp.projectred.fabrication.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; import mrtjp.projectred.fabrication.engine.log.CompileProblem; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchCompileTab; @@ -9,6 +8,7 @@ import mrtjp.projectred.lib.Rect; import mrtjp.projectred.redui.AbstractGuiNode; import mrtjp.projectred.redui.RedUISprite; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import java.util.LinkedList; @@ -96,22 +96,22 @@ public IssueListItemNode(CompileProblem issue) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - blitSprite(stack, BACKGROUND_UNSELECTED); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + blitSprite(graphics, BACKGROUND_UNSELECTED); var fr = getRoot().getFontRenderer(); Component c = issue.getName().copy().withStyle(ICWorkbenchEditor.UNIFORM); - fr.draw(stack, c, getFrame().x() + 2, getFrame().y() + getFrame().height() / 2f - fr.lineHeight / 2f, 0xFFFFFF); + graphics.drawString(fr, c, getFrame().x() + 2, getFrame().y() + getFrame().height() / 2 - fr.lineHeight / 2, 0xFFFFFF, false); } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (!isFirstHit(mouse)) return; List toolTip = new LinkedList<>(); toolTip.add(issue.getName()); issue.buildToolTip(toolTip); - renderTooltip(stack, mouse, toolTip); + renderTooltip(graphics, mouse, toolTip); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/SelectionGridNode.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/SelectionGridNode.java index a0f546195..2d115b3bf 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/SelectionGridNode.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/SelectionGridNode.java @@ -1,11 +1,9 @@ package mrtjp.projectred.fabrication.gui; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchScreen; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.AbstractGuiNode; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; @@ -72,10 +70,7 @@ public SelectionGridButtonNode(int i) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); - + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { boolean mouseover = getFrame().contains(mouse) && isFirstHit(mouse); int state = SelectionGridNode.this.selectionCheckFunction.test(i) ? 2 : @@ -88,20 +83,19 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { int u = BUTTON_U; int v = BUTTON_V + BUTTON_V_SHIFT * state; - GuiComponent.blit(stack, x, y, u, v, w, h, 512, 512); - + graphics.blit(ICWorkbenchScreen.BACKGROUND, x, y, u, v, w, h, 512, 512); } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (!isFirstHit(mouse)) return; List tooltip = new LinkedList<>(); tooltipBuilder.accept(i, tooltip); - renderTooltip(stack, mouse, tooltip); + renderTooltip(graphics, mouse, tooltip); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/SimpleUVTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/SimpleUVTab.java index ba9f7ea6c..c03a1a40a 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/SimpleUVTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/SimpleUVTab.java @@ -1,11 +1,10 @@ package mrtjp.projectred.fabrication.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchScreen; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.AbstractGuiNode; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -73,14 +72,13 @@ public void onTabMinimized() { public TabButtonNode createButtonNode() { return new TabButtonNode(this, tabSide) { @Override - public void renderIcon(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, texture); - GuiComponent.blit(stack, getFrame().x() + 3, getFrame().y() + 3, u, v, 14, 14, 512, 512); + public void renderIcon(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(texture, getFrame().x() + 3, getFrame().y() + 3, u, v, 14, 14, 512, 512); StatusDot statusDot = SimpleUVTab.this.getStatusDot(); if (statusDot != StatusDot.NONE) { RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); - GuiComponent.blit(stack, getFrame().x() + 3 + 7, getFrame().y() + 3, 7, 7, statusDot.u, statusDot.v, 14, 14, 512, 512); + graphics.blit(texture, getFrame().x() + 3 + 7, getFrame().y() + 3, 7, 7, statusDot.u, statusDot.v, 14, 14, 512, 512); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/TabButtonNode.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/TabButtonNode.java index 007ea8f8f..631d50642 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/TabButtonNode.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/TabButtonNode.java @@ -1,11 +1,9 @@ package mrtjp.projectred.fabrication.gui; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchScreen; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.AbstractGuiNode; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; @@ -48,9 +46,7 @@ public void setTabState(TabState renderState) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); - + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { int x = getPosition().x; int y = getPosition().y; int u = side.u; @@ -73,18 +69,18 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { ev += side.inactiveOffsetV; } - GuiComponent.blit(stack, x, y, u, v, w, h, 512, 512); + graphics.blit(ICWorkbenchScreen.BACKGROUND, x, y, u, v, w, h, 512, 512); // Render extension if needed if (renderState == TabState.CLOSED || renderState == TabState.OPEN) { - GuiComponent.blit(stack, ex, ey, eu, ev, ew, eh, 512, 512); + graphics.blit(ICWorkbenchScreen.BACKGROUND, ex, ey, eu, ev, ew, eh, 512, 512); } - renderIcon(stack, mouse, partialFrame); + renderIcon(graphics, mouse, partialFrame); } @Override - public void drawFront(PoseStack stack, Point mouse, float partialFrame) { + public void drawFront(GuiGraphics graphics, Point mouse, float partialFrame) { if (!isFirstHit(mouse)) return; @@ -92,7 +88,7 @@ public void drawFront(PoseStack stack, Point mouse, float partialFrame) { List tooltip = new LinkedList<>(); buildTooltip(tooltip); - renderTooltip(stack, mouse, tooltip); + renderTooltip(graphics, mouse, tooltip); } @Override @@ -124,7 +120,7 @@ public void onTabStateChanged(TabState prevState, TabState newState) { } } - public abstract void renderIcon(PoseStack stack, Point mouse, float partialFrame); + public abstract void renderIcon(GuiGraphics graphics, Point mouse, float partialFrame); public abstract void buildTooltip(List tooltip); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/VerticalListNode.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/VerticalListNode.java index 20d49d3d5..fcca7afba 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/VerticalListNode.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/VerticalListNode.java @@ -1,13 +1,12 @@ package mrtjp.projectred.fabrication.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.lib.Point; import mrtjp.projectred.lib.Rect; import mrtjp.projectred.redui.AbstractGuiNode; import mrtjp.projectred.redui.RedUINode; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import java.util.function.Supplier; @@ -37,9 +36,9 @@ public void onSubTreePostDrawBack() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { //Background - GuiComponent.fill(stack, getFrame().x(), getFrame().y(), getFrame().x() + getFrame().width(), getFrame().y() + getFrame().height(), 0x7F000000); + graphics.fill(getFrame().x(), getFrame().y(), getFrame().x() + getFrame().width(), getFrame().y() + getFrame().height(), 0x7F000000); //TODO render top/bottom gradients } @@ -178,13 +177,13 @@ public void setVerticalAlignment(VerticalAlignment verticalAlignment) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { Font fontRenderer = getRoot().getFontRenderer(); Component text = textSupplier.get(); int x = getXForAlignment(fontRenderer, text); int y = getYForAlignment(fontRenderer); - fontRenderer.drawShadow(stack, text, x, y, textColor); + graphics.drawString(fontRenderer, text, x, y, textColor); } private Rect getPaddedFrame() { @@ -230,18 +229,18 @@ public TitleRow(Component title) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { //Line - GuiComponent.fill(stack, getFrame().x(), getFrame().y(), getFrame().x() + getFrame().width(), getFrame().y() + 1, 0xFF000000); + graphics.fill(getFrame().x(), getFrame().y(), getFrame().x() + getFrame().width(), getFrame().y() + 1, 0xFF000000); Font fontRenderer = getRoot().getFontRenderer(); int x = getFrame().midX() - fontRenderer.width(title) / 2; int y = getFrame().midY() - fontRenderer.lineHeight / 2; - fontRenderer.drawShadow(stack, title, x, y, TITLE_COLOR); + graphics.drawString(fontRenderer, title, x, y, TITLE_COLOR); //Line - GuiComponent.fill(stack, getFrame().x(), getFrame().y() + getFrame().height() - 1, getFrame().x() + getFrame().width(), getFrame().y() + getFrame().height(), 0xFF000000); + graphics.fill(getFrame().x(), getFrame().y() + getFrame().height() - 1, getFrame().x() + getFrame().width(), getFrame().y() + getFrame().height(), 0xFF000000); } } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/WirePlacerToolTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/WirePlacerToolTab.java index b5804dbdc..71f808fe2 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/WirePlacerToolTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/WirePlacerToolTab.java @@ -6,15 +6,13 @@ import codechicken.lib.vec.Scale; import codechicken.lib.vec.TransformationList; import codechicken.lib.vec.Translation; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.editor.tools.WirePlacerTool; import mrtjp.projectred.fabrication.engine.wires.ICWireTileType; import mrtjp.projectred.fabrication.gui.screen.ICWorkbenchScreen; import mrtjp.projectred.lib.Point; import mrtjp.projectred.transmission.client.WireModelRenderer; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -41,11 +39,11 @@ private void addWireButton(ICWireTileType type, boolean fullRow) { @Override public boolean isSelected() { return tool.getWireType() == type; } @Override - public void renderIcon(PoseStack stack, Point absPos, float partialFrame) { + public void renderIcon(GuiGraphics graphics, Point absPos, float partialFrame) { MultiBufferSource.BufferSource getter = Minecraft.getInstance().renderBuffers().bufferSource(); CCRenderState ccrs = CCRenderState.instance(); ccrs.reset(); - ccrs.bind(RenderType.cutout(), getter, stack); + ccrs.bind(RenderType.cutout(), getter, graphics.pose()); ccrs.overlay = OverlayTexture.NO_OVERLAY; ccrs.brightness = 0xF000F0; @@ -95,10 +93,8 @@ private void construct() { public TabButtonNode createButtonNode() { return new TabButtonNode(this, TabButtonNode.TabSide.LEFT) { @Override - public void renderIcon(PoseStack stack, Point mouse, float partialFrame) { - - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); - GuiComponent.blit(stack, getFrame().x() + 3, getFrame().y() + 3, 390, 46, 14, 14, 512, 512); + public void renderIcon(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(ICWorkbenchScreen.BACKGROUND, getFrame().x() + 3, getFrame().y() + 3, 390, 46, 14, 14, 512, 512); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchCompileTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchCompileTab.java index 886494935..b857f604e 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchCompileTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchCompileTab.java @@ -16,7 +16,7 @@ import mrtjp.projectred.redui.AbstractCheckboxNode; import mrtjp.projectred.redui.AbstractGuiNode; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -99,26 +99,26 @@ private void initSubNodes() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { RenderSystem.setShaderTexture(0, TAB_BACKGROUND); - GuiComponent.blit(stack, getFrame().x(), getFrame().y(), 0, 0, getFrame().width(), getFrame().height(), 512, 512); + graphics.blit(TAB_BACKGROUND, getFrame().x(), getFrame().y(), 0, 0, getFrame().width(), getFrame().height(), 512, 512); // Blueprint name in top left corner - getRoot().getFontRenderer().draw(stack, editor.getIcName(), getFrame().x() + 8, getFrame().y() + 6, EnumColour.GRAY.argb()); + graphics.drawString(getRoot().getFontRenderer(), editor.getIcName(), getFrame().x() + 8, getFrame().y() + 6, EnumColour.GRAY.argb(), false); // Progress bar RenderSystem.setShaderTexture(0, TAB_BACKGROUND); int barWidth = 91; int progress = editor.getStateMachine().getCompilerLog().getProgressScaled(barWidth); - GuiComponent.blit(stack, getFrame().x() + 208, getFrame().y() + 36, 304, 0, barWidth, 5, 512, 512); - GuiComponent.blit(stack, getFrame().x() + 208, getFrame().y() + 36, 304, 5, progress, 5, 512, 512); + graphics.blit(TAB_BACKGROUND, getFrame().x() + 208, getFrame().y() + 36, 304, 0, barWidth, 5, 512, 512); + graphics.blit(TAB_BACKGROUND, getFrame().x() + 208, getFrame().y() + 36, 304, 5, progress, 5, 512, 512); // Progress text ICCompilerLog log = editor.getStateMachine().getCompilerLog(); - getRoot().getFontRenderer().draw(stack, + graphics.drawString(getRoot().getFontRenderer(), Component.translatable(editor.getStateMachine().isCompiling() ? UL_COMPILE_PROGRESS : UL_COMPILE_DONE, log.getCompletedSteps(), log.getTotalSteps()) .withStyle(UNIFORM_DARK_GRAY), - getFrame().x() + 208, getFrame().y() + 42, EnumColour.GRAY.argb()); + getFrame().x() + 208, getFrame().y() + 42, EnumColour.GRAY.argb(), false); // Error Count Component errorText = log.getErrorCount() == 0 ? @@ -139,8 +139,8 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { .append(Component.translatable(UL_UNIT_WARNINGS, log.getWarningCount()) .withStyle(UNIFORM_DARK_GRAY)); - getRoot().getFontRenderer().draw(stack, errorText, getFrame().x() + 208, getFrame().y() + 52, EnumColour.GRAY.argb()); - getRoot().getFontRenderer().draw(stack, warningText, getFrame().x() + 208, getFrame().y() + 60, EnumColour.GRAY.argb()); + graphics.drawString(getRoot().getFontRenderer(), errorText, getFrame().x() + 208, getFrame().y() + 52, EnumColour.GRAY.argb(), false); + graphics.drawString(getRoot().getFontRenderer(), warningText, getFrame().x() + 208, getFrame().y() + 60, EnumColour.GRAY.argb(), false); } //TODO Reduce this reused code (ICEditorToolManager) @@ -287,24 +287,22 @@ protected boolean isButtonDisabled() { } @Override - protected void drawButtonBody(PoseStack stack, boolean mouseover) { - RenderSystem.setShaderTexture(0, TAB_BACKGROUND); - + protected void drawButtonBody(GuiGraphics graphics, boolean mouseover) { if (editor.getStateMachine().isCompiling()) { // Spinner long time = Minecraft.getInstance().level.getGameTime(); int progress = (int) (time / 2) % 8; int u = 305 + (15 * progress); int v = 26; - blitCentered(stack, u, v, 14, 14); + blitCentered(graphics, TAB_BACKGROUND, u, v, 14, 14); } else { // Hammer icon - blitCentered(stack, 305, 11, 14, 14); + blitCentered(graphics, TAB_BACKGROUND, 305, 11, 14, 14); } } - private void blitCentered(PoseStack stack, int u, int v, int width, int height) { - GuiComponent.blit(stack, + private void blitCentered(GuiGraphics graphics, ResourceLocation background, int u, int v, int width, int height) { + graphics.blit(background, getFrame().x() + (getFrame().width() - width) / 2, getFrame().y() + (getFrame().height() - height) / 2, u, v, width, height, 512, 512); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchEditTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchEditTab.java index c1dbad28d..c8ef89a27 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchEditTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchEditTab.java @@ -1,8 +1,6 @@ package mrtjp.projectred.fabrication.gui.screen; import codechicken.lib.colour.EnumColour; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.editor.ICEditorToolType; import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; import mrtjp.projectred.fabrication.editor.tools.*; @@ -11,7 +9,7 @@ import mrtjp.projectred.lib.Rect; import mrtjp.projectred.redui.AbstractGuiNode; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; public class ICWorkbenchEditTab extends AbstractGuiNode { @@ -76,16 +74,14 @@ private void onToolSwapped(ICEditorToolType newToolType) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, ICWorkbenchScreen.BACKGROUND); - + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { Rect frame = getFrame(); Font fontRenderer = getRoot().getFontRenderer(); - GuiComponent.blit(stack, frame.x(), frame.y(), 0, 0, frame.width(), frame.height(), 512, 512); + graphics.blit(ICWorkbenchScreen.BACKGROUND, frame.x(), frame.y(), 0, 0, frame.width(), frame.height(), 512, 512); // Blueprint name in top left corner - fontRenderer.draw(stack, editor.getIcName(), frame.x() + 8, frame.y() + 6, EnumColour.GRAY.argb()); + graphics.drawString(fontRenderer, editor.getIcName(), frame.x() + 8, frame.y() + 6, EnumColour.GRAY.argb(), false); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchInfoTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchInfoTab.java index 9ff368d0c..f444b3111 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchInfoTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchInfoTab.java @@ -1,8 +1,6 @@ package mrtjp.projectred.fabrication.gui.screen; import codechicken.lib.colour.EnumColour; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.fengine.TileCoord; import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; @@ -18,7 +16,7 @@ import mrtjp.projectred.redui.AbstractGuiNode; import mrtjp.projectred.redui.ScrollBarNode; import mrtjp.projectred.redui.TextBoxNode; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -86,9 +84,8 @@ private void initSubNodes() { ScrollBarNode scrollBarNode = new ScrollBarNode(ScrollBarNode.ScrollAxis.VERTICAL) { @Override - protected void drawSlider(PoseStack stack, Rect sliderFrame) { - RenderSystem.setShaderTexture(0, TAB_BACKGROUND); - GuiComponent.blit(stack, sliderFrame.x(), sliderFrame.y(), 305, 58, sliderFrame.width(), sliderFrame.height(), 512, 512); + protected void drawSlider(GuiGraphics graphics, Rect sliderFrame) { + graphics.blit(TAB_BACKGROUND, sliderFrame.x(), sliderFrame.y(), 305, 58, sliderFrame.width(), sliderFrame.height(), 512, 512); } @Override @@ -117,12 +114,11 @@ public void update() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, TAB_BACKGROUND); - GuiComponent.blit(stack, getFrame().x(), getFrame().y(), 0, 0, getFrame().width(), getFrame().height(), 512, 512); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(TAB_BACKGROUND, getFrame().x(), getFrame().y(), 0, 0, getFrame().width(), getFrame().height(), 512, 512); // Blueprint name in top left corner - getRoot().getFontRenderer().draw(stack, editor.getIcName(), getFrame().x() + 8, getFrame().y() + 6, EnumColour.GRAY.argb()); + graphics.drawString(getRoot().getFontRenderer(), editor.getIcName(), getFrame().x() + 8, getFrame().y() + 6, EnumColour.GRAY.argb(), false); } private ButtonArrayNode createPipelineButtons() { diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchScreen.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchScreen.java index c96236730..12e2d3ec5 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchScreen.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchScreen.java @@ -1,8 +1,6 @@ package mrtjp.projectred.fabrication.gui.screen; import codechicken.lib.colour.EnumColour; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; import mrtjp.projectred.fabrication.engine.log.ICCompilerLog; @@ -16,6 +14,7 @@ import mrtjp.projectred.redui.RedUIScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -93,8 +92,8 @@ private void initSubNodes() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - super.drawBack(stack, mouse, partialFrame); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + super.drawBack(graphics, mouse, partialFrame); } @Override @@ -158,16 +157,15 @@ private void initSubNodes() { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - RenderSystem.setShaderTexture(0, BACKGROUND); - blit(stack, getFrame().x(), getFrame().y(), 0, 222, getFrame().width(), getFrame().height(), 512, 512); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + graphics.blit(BACKGROUND, getFrame().x(), getFrame().y(), 0, 222, getFrame().width(), getFrame().height(), 512, 512); Font fontRenderer = getRoot().getFontRenderer(); Component text = Component.translatable(UL_PLACE_BLUEPRINT); - fontRenderer.draw(stack, text, - getFrame().midX() - fontRenderer.width(text) / 2f, - getFrame().y() + 6, EnumColour.GRAY.argb()); + graphics.drawString(fontRenderer, text, + getFrame().midX() - fontRenderer.width(text) / 2, + getFrame().y() + 6, EnumColour.GRAY.argb(), false); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/LithographyTableScreen.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/LithographyTableScreen.java index 4adde857b..a5ee38a56 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/LithographyTableScreen.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/LithographyTableScreen.java @@ -1,12 +1,11 @@ package mrtjp.projectred.fabrication.gui.screen.inventory; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.inventory.container.LithographyTableContainer; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -23,26 +22,25 @@ public LithographyTableScreen(LithographyTableContainer container, Inventory pla } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - super.drawBack(stack, mouse, partialFrame); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + super.drawBack(graphics, mouse, partialFrame); - RenderSystem.setShaderTexture(0, BACKGROUND); int x = getFrame().x(); int y = getFrame().y(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); int s = getMenu().getProgressScaled(24); - blit(stack, x + 80, y + 40, 176, 0, s + 1, 16); + graphics.blit(BACKGROUND, x + 80, y + 40, 176, 0, s + 1, 16); if (getMenu().canConductorWork()) - blit(stack, x + 16, y + 16, 177, 18, 7, 9); + graphics.blit(BACKGROUND, x + 16, y + 16, 177, 18, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 16, y + 26, 177, 27, 7, 48, getMenu().getChargeScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 16, y + 26, 177, 27, 7, 48, getMenu().getChargeScaled(48)); if (getMenu().isFlowFull()) - blit(stack, x + 27, y + 16, 185, 18, 7, 9); + graphics.blit(BACKGROUND, x + 27, y + 16, 185, 18, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 27, y + 26, 185, 27, 7, 48, getMenu().getFlowScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 27, y + 26, 185, 27, 7, 48, getMenu().getFlowScaled(48)); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PackagingTableScreen.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PackagingTableScreen.java index fa9e8c124..ee7dd1110 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PackagingTableScreen.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PackagingTableScreen.java @@ -1,13 +1,12 @@ package mrtjp.projectred.fabrication.gui.screen.inventory; import codechicken.lib.colour.EnumColour; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.inventory.container.PackagingTableContainer; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -25,27 +24,26 @@ public PackagingTableScreen(PackagingTableContainer container, Inventory playerI } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - super.drawBack(stack, mouse, partialFrame); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + super.drawBack(graphics, mouse, partialFrame); - RenderSystem.setShaderTexture(0, BACKGROUND); int x = getFrame().x(); int y = getFrame().y(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); int s = getMenu().getProgressScaled(20); - blit(stack, x + 104, y + 41, 176, 0, s + 1, 16); + graphics.blit(BACKGROUND, x + 104, y + 41, 176, 0, s + 1, 16); if (getMenu().canConductorWork()) - blit(stack, x + 16, y + 16, 177, 18, 7, 9); + graphics.blit(BACKGROUND, x + 16, y + 16, 177, 18, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 16, y + 26, 177, 27, 7, 48, getMenu().getChargeScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 16, y + 26, 177, 27, 7, 48, getMenu().getChargeScaled(48)); if (getMenu().isFlowFull()) - blit(stack, x + 27, y + 16, 185, 18, 7, 9); + graphics.blit(BACKGROUND, x + 27, y + 16, 185, 18, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 27, y + 26, 185, 27, 7, 48, getMenu().getFlowScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 27, y + 26, 185, 27, 7, 48, getMenu().getFlowScaled(48)); // Highlight problematic slots red. int mask = getMenu().getProblematicSlotMask(); @@ -53,7 +51,7 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { if ((mask & 1 << i) != 0) { Slot slot = getMenu().getSlot(i + 36); // Offset past player inventory int colour = EnumColour.RED.argb(0x55); - fillGradient(stack, + graphics.fillGradient( x + slot.x, y + slot.y, x + slot.x + 16, diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PlottingTableScreen.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PlottingTableScreen.java index db1ca597b..70f45e204 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PlottingTableScreen.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PlottingTableScreen.java @@ -1,12 +1,11 @@ package mrtjp.projectred.fabrication.gui.screen.inventory; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.inventory.container.PlottingTableContainer; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -23,26 +22,25 @@ public PlottingTableScreen(PlottingTableContainer container, Inventory playerInv } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - super.drawBack(stack, mouse, partialFrame); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + super.drawBack(graphics, mouse, partialFrame); - RenderSystem.setShaderTexture(0, BACKGROUND); int x = getFrame().x(); int y = getFrame().y(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); int s = getMenu().getProgressScaled(24); - blit(stack, x + 80, y + 40, 176, 0, s + 1, 16); + graphics.blit(BACKGROUND, x + 80, y + 40, 176, 0, s + 1, 16); if (getMenu().canConductorWork()) - blit(stack, x + 16, y + 16, 177, 18, 7, 9); + graphics.blit(BACKGROUND, x + 16, y + 16, 177, 18, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 16, y + 26, 177, 27, 7, 48, getMenu().getChargeScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 16, y + 26, 177, 27, 7, 48, getMenu().getChargeScaled(48)); if (getMenu().isFlowFull()) - blit(stack, x + 27, y + 16, 185, 18, 7, 9); + graphics.blit(BACKGROUND, x + 27, y + 16, 185, 18, 7, 9); - GuiLib.drawVerticalTank(stack, this, x + 27, y + 26, 185, 27, 7, 48, getMenu().getFlowScaled(48)); + GuiLib.drawVerticalTank(graphics, BACKGROUND, x + 27, y + 26, 185, 27, 7, 48, getMenu().getFlowScaled(48)); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationBlocks.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationBlocks.java index 2bf3d95ad..1695ca4fc 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationBlocks.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationBlocks.java @@ -45,10 +45,10 @@ public static void register() { PACKAGING_TABLE_BLOCK = BLOCKS.register(ID_PACKAGING_TABLE, PackagingTableBlock::new); // Block Items - ITEMS.register(ID_IC_WORKBENCH, () -> new BlockItem(IC_WORKBENCH_BLOCK.get(), new Item.Properties().tab(FABRICATION_GROUP))); - ITEMS.register(ID_PLOTTING_TABLE, () -> new BlockItem(PLOTTING_TABLE_BLOCK.get(), new Item.Properties().tab(FABRICATION_GROUP))); - ITEMS.register(ID_LITHOGRAPHY_TABLE, () -> new BlockItem(LITHOGRAPHY_TABLE_BLOCK.get(), new Item.Properties().tab(FABRICATION_GROUP))); - ITEMS.register(ID_PACKAGING_TABLE, () -> new BlockItem(PACKAGING_TABLE_BLOCK.get(), new Item.Properties().tab(FABRICATION_GROUP))); + ITEMS.register(ID_IC_WORKBENCH, () -> new BlockItem(IC_WORKBENCH_BLOCK.get(), new Item.Properties())); + ITEMS.register(ID_PLOTTING_TABLE, () -> new BlockItem(PLOTTING_TABLE_BLOCK.get(), new Item.Properties())); + ITEMS.register(ID_LITHOGRAPHY_TABLE, () -> new BlockItem(LITHOGRAPHY_TABLE_BLOCK.get(), new Item.Properties())); + ITEMS.register(ID_PACKAGING_TABLE, () -> new BlockItem(PACKAGING_TABLE_BLOCK.get(), new Item.Properties())); // Tiles IC_WORKBENCH_TILE = BLOCK_ENTITY_TYPES.register(ID_IC_WORKBENCH, () -> BlockEntityType.Builder.of(ICWorkbenchTile::new, IC_WORKBENCH_BLOCK.get()).build(null)); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationClientInit.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationClientInit.java index 64bb2d711..383aac553 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationClientInit.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationClientInit.java @@ -1,7 +1,6 @@ package mrtjp.projectred.fabrication.init; import codechicken.lib.model.ModelRegistryHelper; -import codechicken.lib.texture.SpriteRegistryHelper; import codechicken.multipart.api.MultipartClientRegistry; import mrtjp.projectred.fabrication.gui.ICRenderTypes; import mrtjp.projectred.fabrication.gui.screen.inventory.LithographyTableScreen; @@ -25,14 +24,13 @@ public static void init() { final IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); modEventBus.addListener(FabricationClientInit::clientSetup); + + // Register sprites + modEventBus.addListener(ICRenderTypes::onTextureStitchEvent); } private static void clientSetup(final FMLClientSetupEvent event) { - // Register sprites - SpriteRegistryHelper iconRegister = new SpriteRegistryHelper(); - iconRegister.addIIconRegister(ICRenderTypes::registerIcons); - // Register part renderers MultipartClientRegistry.register(FabricationParts.FABRICATED_GATE_PART.get(), GatePartRenderer.INSTANCE); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationCreativeModeTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationCreativeModeTab.java new file mode 100644 index 000000000..4e4b6d5de --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationCreativeModeTab.java @@ -0,0 +1,41 @@ +package mrtjp.projectred.fabrication.init; + +import mrtjp.projectred.integration.ProjectRedIntegration; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.RegistryObject; + +import static mrtjp.projectred.fabrication.ProjectRedFabrication.MOD_ID; +import static mrtjp.projectred.fabrication.init.FabricationBlocks.*; +import static mrtjp.projectred.fabrication.init.FabricationItems.*; + +public class FabricationCreativeModeTab { + + public static RegistryObject FABRICATION_CREATIVE_TAB; + + public static void register() { + FABRICATION_CREATIVE_TAB = ProjectRedIntegration.CREATIVE_TABS.register("fabrication", + () -> CreativeModeTab.builder() + .icon(() -> new ItemStack(IC_WORKBENCH_BLOCK.get())) + .title(Component.translatable("itemGroup." + MOD_ID)) + .displayItems((params, output) -> { + // Blocks + output.accept(IC_WORKBENCH_BLOCK.get()); + output.accept(PLOTTING_TABLE_BLOCK.get()); + output.accept(LITHOGRAPHY_TABLE_BLOCK.get()); + output.accept(PACKAGING_TABLE_BLOCK.get()); + + // Items + output.accept(IC_BLUEPRINT_ITEM.get()); + output.accept(BLANK_PHOTOMASK_ITEM.get()); + output.accept(PHOTOMASK_SET_ITEM.get()); + output.accept(ROUGH_SILICON_WAFER_ITEM.get()); + output.accept(ETCHED_SILICON_WAFER_ITEM.get()); + output.accept(VALID_DIE_ITEM.get()); + output.accept(INVALID_DIE_ITEM.get()); + }) + .build()); + } + +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableContainer.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableContainer.java index cd433eb57..f865dbc85 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableContainer.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableContainer.java @@ -16,7 +16,7 @@ public class LithographyTableContainer extends FabricationMachineContainer { public static ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); + BlockEntity tile = inventory.player.level().getBlockEntity(packet.readPos()); if (!(tile instanceof LithographyTableTile)) return null; return new LithographyTableContainer(inventory, (LithographyTableTile) tile, windowId); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableContainer.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableContainer.java index 92469bdff..d9f117a73 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableContainer.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableContainer.java @@ -16,7 +16,7 @@ public class PackagingTableContainer extends FabricationMachineContainer { public static ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); + BlockEntity tile = inventory.player.level().getBlockEntity(packet.readPos()); if (!(tile instanceof PackagingTableTile)) return null; return new PackagingTableContainer(inventory, (PackagingTableTile) tile, windowId); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableContainer.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableContainer.java index a3057c9b0..3c9c7c93b 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableContainer.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableContainer.java @@ -16,7 +16,7 @@ public class PlottingTableContainer extends FabricationMachineContainer { public static ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); + BlockEntity tile = inventory.player.level().getBlockEntity(packet.readPos()); if (!(tile instanceof PlottingTableTile)) return null; return new PlottingTableContainer(inventory, (PlottingTableTile) tile, windowId); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BaseSiliconWaferItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BaseSiliconWaferItem.java index c3f793ded..ce7e2c29f 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BaseSiliconWaferItem.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BaseSiliconWaferItem.java @@ -1,6 +1,5 @@ package mrtjp.projectred.fabrication.item; -import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.lithography.WaferType; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -20,8 +19,7 @@ public class BaseSiliconWaferItem extends Item { private final WaferType waferType; public BaseSiliconWaferItem(WaferType waferType) { - super(new Item.Properties() - .tab(ProjectRedFabrication.FABRICATION_GROUP)); + super(new Item.Properties()); this.waferType = waferType; } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BlankPhotomaskItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BlankPhotomaskItem.java index cb85d930c..7734db9d8 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BlankPhotomaskItem.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BlankPhotomaskItem.java @@ -1,12 +1,10 @@ package mrtjp.projectred.fabrication.item; -import mrtjp.projectred.fabrication.ProjectRedFabrication; import net.minecraft.world.item.Item; public class BlankPhotomaskItem extends Item { public BlankPhotomaskItem() { - super(new Item.Properties() - .tab(ProjectRedFabrication.FABRICATION_GROUP)); + super(new Item.Properties()); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/EtchedSiliconWaferItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/EtchedSiliconWaferItem.java index ec91eb77c..80bce8b39 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/EtchedSiliconWaferItem.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/EtchedSiliconWaferItem.java @@ -1,6 +1,5 @@ package mrtjp.projectred.fabrication.item; -import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.init.FabricationItems; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; @@ -17,7 +16,6 @@ public class EtchedSiliconWaferItem extends Item { public EtchedSiliconWaferItem() { super(new Item.Properties() - .tab(ProjectRedFabrication.FABRICATION_GROUP) .stacksTo(1)); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ICBlueprintItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ICBlueprintItem.java index 8bfb3b685..56dc816fe 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ICBlueprintItem.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ICBlueprintItem.java @@ -1,6 +1,5 @@ package mrtjp.projectred.fabrication.item; -import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.engine.InterfaceSpec; import mrtjp.projectred.fabrication.init.FabricationBlocks; import mrtjp.projectred.fabrication.init.FabricationItems; @@ -27,7 +26,6 @@ public class ICBlueprintItem extends Item { public ICBlueprintItem() { super(new Item.Properties() - .tab(ProjectRedFabrication.FABRICATION_GROUP) .stacksTo(1)); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/InvalidDieItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/InvalidDieItem.java index 87eba8c31..79e08ad12 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/InvalidDieItem.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/InvalidDieItem.java @@ -1,12 +1,10 @@ package mrtjp.projectred.fabrication.item; -import mrtjp.projectred.fabrication.ProjectRedFabrication; import net.minecraft.world.item.Item; public class InvalidDieItem extends Item { public InvalidDieItem() { - super(new Item.Properties() - .tab(ProjectRedFabrication.FABRICATION_GROUP)); + super(new Item.Properties()); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PhotomaskSetItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PhotomaskSetItem.java index 931fc1460..923cb3e45 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PhotomaskSetItem.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/PhotomaskSetItem.java @@ -1,6 +1,5 @@ package mrtjp.projectred.fabrication.item; -import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.init.FabricationItems; import mrtjp.projectred.integration.GateType; import net.minecraft.network.chat.Component; @@ -18,8 +17,7 @@ public class PhotomaskSetItem extends Item { public PhotomaskSetItem() { - super(new Item.Properties() - .tab(ProjectRedFabrication.FABRICATION_GROUP)); + super(new Item.Properties()); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ValidDieItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ValidDieItem.java index c018012eb..db878bf3c 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ValidDieItem.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ValidDieItem.java @@ -1,6 +1,5 @@ package mrtjp.projectred.fabrication.item; -import mrtjp.projectred.fabrication.ProjectRedFabrication; import mrtjp.projectred.fabrication.editor.EditorDataUtils; import mrtjp.projectred.integration.GateType; import net.minecraft.network.chat.Component; @@ -16,8 +15,7 @@ public class ValidDieItem extends Item { public ValidDieItem() { - super(new Item.Properties() - .tab(ProjectRedFabrication.FABRICATION_GROUP)); + super(new Item.Properties()); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/part/FabricatedGatePart.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/part/FabricatedGatePart.java index 3843be474..d2320258a 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/part/FabricatedGatePart.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/part/FabricatedGatePart.java @@ -39,7 +39,7 @@ public boolean preparePlacement(MultipartPlaceContext context) { if (!super.preparePlacement(context)) return false; - if (context.getPlayer() == null || context.getPlayer().getLevel().isClientSide()) return false; + if (context.getPlayer() == null || context.getPlayer().level().isClientSide()) return false; ItemStack stack = context.getItemInHand(); if (stack.isEmpty() || !stack.hasTag()) { diff --git a/fabrication/src/main/resources/META-INF/mods.toml b/fabrication/src/main/resources/META-INF/mods.toml index cce9764fd..35ec938f8 100644 --- a/fabrication/src/main/resources/META-INF/mods.toml +++ b/fabrication/src/main/resources/META-INF/mods.toml @@ -23,7 +23,7 @@ Redstone. The way it was meant to be. [[dependencies.projectred_fabrication]] modId="minecraft" mandatory=true - versionRange="[1.19.2]" + versionRange="[1.20.1]" ordering="NONE" side="BOTH" [[dependencies.projectred_fabrication]] diff --git a/fabrication/src/main/resources/assets/projectred_fabrication/textures/item/rough_silicon_wafer copy.png b/fabrication/src/main/resources/assets/projectred_fabrication/textures/item/base_silicon_wafer.png similarity index 100% rename from fabrication/src/main/resources/assets/projectred_fabrication/textures/item/rough_silicon_wafer copy.png rename to fabrication/src/main/resources/assets/projectred_fabrication/textures/item/base_silicon_wafer.png diff --git a/gradle.properties b/gradle.properties index 605ac8bf8..a135cc841 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,15 +1,15 @@ java_lang_version=17 -mc_version=1.19.2 -forge_version=43.3.0 +mc_version=1.20.1 +forge_version=47.1.65 mcp_mappings=official -mcp_mappings_version=1.19.2 +mcp_mappings_version=1.20.1 mod_version=5.0 -ccl_version=4.3.2.+ -cbm_version=3.2.0.+ +ccl_version=4.4.0.+ +cbm_version=3.3.0.+ -jei_version=11.5.0.+ -cct_version=1.101.3 +jei_version=15.3.0.+ +cct_version=1.110.3 fabrication_version=0.1.0-alpha-19 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 943f0cbfa754578e88a3dae77fce6e3dea56edbf..c1962a79e29d3e0ab67b14947c167a862655af9b 100755 GIT binary patch delta 13895 zcmZ8|Wmp``)-~=Hdu)0n3Y-8OvyK$p9^s9MM|Aj$miotNhy-{udLczZyd9uWtD)X_{|!LhIEF9y8(e*Z zW>^w$u&x|i9OjL=#6Nl~*ERulzX>8C-}o;iSMRYdfCU5d`~U{V4>HCg0HG4Xg2uP;fn!>S9+>LbuWbc0bETMQfo9~h}yI*TSv;Oikl~t-+xqI-`P$Rj@yi{mr2zC~s1snMT3!OPBdJ%IDnPXq+pl*Z>=+?qo${lkCSKmwTlVjfb3thU6B8yFjr!tphOs*G6 zwL`RyVAUXj4p=9&@PpWK)m+REuvHaq838TEhY^7W+JAp$ zZ^y;8`Z*@VqJ{sFFj?<|7SKS@G`$Yi)gx%nOi@Lr zCv0IJlFz0bP(eDIW(uWNq?;8zEAb+uGgnkLk;y!4XhA6=Eoa<`+|;6mOq>z`%ir@z$4)Mkd3 zF=hFo zyd{*bRQ4YUe^bU*Y`__)Uhu5NIjVJ~a}{lHp-_7wI?#EB11XcqmdY>pk`JJ) zW9Rt!tK=N>fZ!UDomwMnb`0EOvTjcNl=yW@$c!OAg*=l()GjZwSyJ+o^;Zi#I5*uP z$6qeih8&g8E(pNSneK>93A(8*%gvwv!0V|SqGcj55Y7`=N*@pJx_ig3uVuf-G~LJbm`7nxNcZ>Jgqy(LTHu_C2e>STp^Pm{}f&^)XU}vzuU`UV&>e& zqsXNXSs;Wri|?NhCq0vXC5$>9Cag$adyWz^x@NCiy2${9Dc)Y;J8k1Z933W$3$H}g zCQFU1XwzGm_WUheXvnDisH_%BdzMgNwk2^mHcQu*x>U%iN*B^8U(eVz1~(%`kV1Vb z=9T0xmN?bQMyrrd?u}jer}zV&sCK6zSm!zV8A8dP6THF=4*V{_K*E*K<)I(Q^(eV!m!vu##-2g|G z{RB;{gJB_X-w{ANq?ft_n!@=O8_gj6FxW&zO$7L3@NjWt@R{NxMbpHLk6;=2$0P5P=kKc1_85inX z#s$&s0zhV1cz>nRb#|D#N8Z-=Tphm)sGH>9cz3K3I)6XpimJW0(6$GtLzN(YPu9%R zdFXG9|30AZME4r@joC0IdvBBe08mF@+5Dd97p$h=n|pi80Cn2n{ev!S$llPGLqHva zZ3*OmW%!Qj>C$F!Ffafl7#I_1(gz!aa)b{ebU*=yH%^kr=~N?|2&2Df2o9X=2B?U!#R#+Cj45=f@=EcQx+9J z=X3~A=zbX29Fqn23m3dm}0Voj^Q9BjI=MiG+NZ)YCYn@r^qv(xE3=)&i z=(ML301=rNTptvUt2tnsPb1~G*DWFWoZfv)wV|uNW%?!)jju`jN(K-0$JYi!ofNup z9K%_ucHwutbZsl~vDQ!Jtj8uI6WA6K--@?8+_=t>g|kgUeC=w`IP9m&*fuoO3#A;t z&3@=3;J0>yjM89?h5MG$S`wW+=vyYOWQGhIP`^vScM8^JL{mGan5uTJPvAg$0z}8; z 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 J*WbtZ{{Z#P!zlm& delta 13442 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 508322917..0c85a1f75 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 65dcd68d6..aeb74cbb4 100755 --- a/gradlew +++ b/gradlew @@ -85,9 +85,6 @@ done APP_BASE_NAME=${0##*/} APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit -# 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 @@ -144,7 +141,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +149,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,6 +194,10 @@ if "$cygwin" || "$msys" ; then done fi + +# 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"' + # 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 diff --git a/illumination/build.gradle b/illumination/build.gradle index d56d93fb8..d91412ae5 100644 --- a/illumination/build.gradle +++ b/illumination/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.minecraftforge.gradle' + id 'net.neoforged.gradle' id 'com.matthewprenger.cursegradle' } @@ -26,10 +26,10 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" + minecraft "net.neoforged:forge:${mc_version}-${forge_version}" - implementation fg.deobf("codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") - implementation fg.deobf("codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") + implementation fg.deobf("io.codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") + implementation fg.deobf("io.codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") implementation project(":core") } diff --git a/illumination/src/main/generated/.cache/2b7776bd503c0a3d6dc4b121fe385660c1c6dc19 b/illumination/src/main/generated/.cache/0bff00c43f6afffc865d20256c78224a8f143cd8 similarity index 99% rename from illumination/src/main/generated/.cache/2b7776bd503c0a3d6dc4b121fe385660c1c6dc19 rename to illumination/src/main/generated/.cache/0bff00c43f6afffc865d20256c78224a8f143cd8 index 5bf4c7697..0b4731f15 100644 --- a/illumination/src/main/generated/.cache/2b7776bd503c0a3d6dc4b121fe385660c1c6dc19 +++ b/illumination/src/main/generated/.cache/0bff00c43f6afffc865d20256c78224a8f143cd8 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:08:22.223009 ProjectRed-Illumination Item Models +// 1.20.1 2024-05-02T16:39:29.131417 projectred_illumination Item models. a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_illumination/models/item/black_cage_light.json a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_illumination/models/item/black_fallout_light.json a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_illumination/models/item/black_fixture_light.json diff --git a/illumination/src/main/generated/.cache/73585f9635c75d62bca484a7ea9ba4b7d3c67a68 b/illumination/src/main/generated/.cache/7ae6c4ef44a093cc44e42d9d617e1d54a384e8ad similarity index 98% rename from illumination/src/main/generated/.cache/73585f9635c75d62bca484a7ea9ba4b7d3c67a68 rename to illumination/src/main/generated/.cache/7ae6c4ef44a093cc44e42d9d617e1d54a384e8ad index e33084706..3daf03023 100644 --- a/illumination/src/main/generated/.cache/73585f9635c75d62bca484a7ea9ba4b7d3c67a68 +++ b/illumination/src/main/generated/.cache/7ae6c4ef44a093cc44e42d9d617e1d54a384e8ad @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:08:22.239755 ProjectRed-Illumination Block Loot Tables +// 1.20.1 2024-05-02T16:39:29.129211 projectred_illumination Block Loot Tables ca2aba13d5b4bcbedec5753a41db442358432327 data/projectred_illumination/loot_tables/blocks/black_illumar_lamp.json 6f70dd57e208bacc8c06e451db975c57cfa5a3a6 data/projectred_illumination/loot_tables/blocks/black_inverted_illumar_lamp.json df6b2b1652062f4dbcabe57c04201f9c03b655ca data/projectred_illumination/loot_tables/blocks/blue_illumar_lamp.json diff --git a/illumination/src/main/generated/.cache/be1ef78e8a7cc1ad66607d87653d2e29da533af1 b/illumination/src/main/generated/.cache/be1ef78e8a7cc1ad66607d87653d2e29da533af1 index c50793f46..038f95aea 100644 --- a/illumination/src/main/generated/.cache/be1ef78e8a7cc1ad66607d87653d2e29da533af1 +++ b/illumination/src/main/generated/.cache/be1ef78e8a7cc1ad66607d87653d2e29da533af1 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:08:22.238879 ProjectRed-Illumination Block Models +// 1.20.1 2024-05-02T16:39:29.123203 ProjectRed-Illumination Block Models 0746294f4d3dd435feb6f198d7131a6fe4be71fa assets/projectred_illumination/blockstates/black_illumar_lamp.json 0746294f4d3dd435feb6f198d7131a6fe4be71fa assets/projectred_illumination/blockstates/black_inverted_illumar_lamp.json 14312633b8d330d240fa130218c89f36a16579c1 assets/projectred_illumination/blockstates/blue_illumar_lamp.json diff --git a/illumination/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/illumination/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 3930de9b5..807fa8569 100644 --- a/illumination/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/illumination/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19.2 2024-03-05T10:08:22.238073 Languages: en_us +// 1.20.1 2024-05-02T16:39:29.137345 Languages: en_us 548cfaf60e6a16b400fd90c0cc5da98891f425cf assets/projectred_illumination/lang/en_us.json diff --git a/illumination/src/main/generated/.cache/3c5437fdfe8bcc1d7d617f64e23b502caa42a0e1 b/illumination/src/main/generated/.cache/de8f1463ae18badd128ae0b90e2804a44e8f416c similarity index 99% rename from illumination/src/main/generated/.cache/3c5437fdfe8bcc1d7d617f64e23b502caa42a0e1 rename to illumination/src/main/generated/.cache/de8f1463ae18badd128ae0b90e2804a44e8f416c index 76e83bade..2aa36b3e4 100644 --- a/illumination/src/main/generated/.cache/3c5437fdfe8bcc1d7d617f64e23b502caa42a0e1 +++ b/illumination/src/main/generated/.cache/de8f1463ae18badd128ae0b90e2804a44e8f416c @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:08:22.240051 ProjectRed-Illumination Recipes +// 1.20.1 2024-05-02T16:39:29.138352 projectred_illumination Recipes. bab0e0ace8eafa4f132dd7aa9ea77ce3743620f1 data/projectred_illumination/recipes/black_cage_light.json 7346715a74ba4257b555898569b21950b6c69747 data/projectred_illumination/recipes/black_fallout_light.json 408cec0af00793db8e5895042fe84e4120c17b33 data/projectred_illumination/recipes/black_fixture_light.json diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/BlockLightType.java b/illumination/src/main/java/mrtjp/projectred/illumination/BlockLightType.java index 0a8740d85..91a063a4c 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/BlockLightType.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/BlockLightType.java @@ -3,6 +3,7 @@ import codechicken.lib.colour.EnumColour; import mrtjp.projectred.illumination.block.IllumarLampBlock; import mrtjp.projectred.illumination.tile.IllumarLampTile; +import net.covers1624.quack.collection.FastStream; import net.minecraft.core.BlockPos; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; @@ -46,7 +47,7 @@ public void registerBlocks(DeferredRegister blockRegistry, DeferredRegist String registryID = getRegistryID(color, false); blockSupplier.add(color, blockRegistry.register(registryID, () -> blockFactory.apply(colorFinal, false))); - itemBlockSupplier.add(color, itemRegistry.register(registryID, () -> new BlockItem(getBlock(colorFinal, false), new Item.Properties().tab(ProjectRedIllumination.ILLUMINATION_GROUP)))); + itemBlockSupplier.add(color, itemRegistry.register(registryID, () -> new BlockItem(getBlock(colorFinal, false), new Item.Properties()))); tileEntityTypeSupplier.add(color, tileRegistry.register(registryID, () -> BlockEntityType.Builder.of( (pos, state) -> tileFactory.create(colorFinal, false, pos, state), getBlock(colorFinal, false)) @@ -59,7 +60,7 @@ public void registerBlocks(DeferredRegister blockRegistry, DeferredRegist String invertedRegistryID = getRegistryID(color, true); invertedBlockSupplier.add(color, blockRegistry.register(invertedRegistryID, () -> blockFactory.apply(colorFinal, true))); - invertedItemBlockSupplier.add(color, itemRegistry.register(invertedRegistryID, () -> new BlockItem(getBlock(colorFinal, true), new Item.Properties().tab(ProjectRedIllumination.ILLUMINATION_GROUP)))); + invertedItemBlockSupplier.add(color, itemRegistry.register(invertedRegistryID, () -> new BlockItem(getBlock(colorFinal, true), new Item.Properties()))); invertedTileEntityTypeSupplier.add(color, tileRegistry.register(invertedRegistryID, () -> BlockEntityType.Builder.of( (pos, state) -> tileFactory.create(colorFinal, true, pos, state), getBlock(colorFinal, true)) @@ -71,6 +72,10 @@ public Block getBlock(int color, boolean inverted) { return inverted ? invertedBlockSupplier.get(color).get() : blockSupplier.get(color).get(); } + public Iterable allColors(boolean inverted) { + return FastStream.of(inverted ? invertedBlockSupplier : blockSupplier).map(RegistryObject::get); + } + public BlockEntityType getTileEntityType(int color, boolean inverted) { return inverted ? invertedTileEntityTypeSupplier.get(color).get() : tileEntityTypeSupplier.get(color).get(); } diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightProperties.java index b4150dd97..ffd567b2e 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightProperties.java @@ -10,7 +10,6 @@ import codechicken.lib.render.lighting.LightModel; import codechicken.lib.render.model.OBJParser; import codechicken.lib.render.pipeline.ColourMultiplier; -import codechicken.lib.texture.AtlasRegistrar; import codechicken.lib.util.TransformUtils; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Rotation; @@ -23,13 +22,14 @@ import mrtjp.projectred.illumination.part.MultipartLightPart; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.TextureStitchEvent; import java.util.Arrays; import java.util.HashMap; @@ -56,7 +56,7 @@ public boolean canFloat() { //region Client Registration @OnlyIn(Dist.CLIENT) - public abstract void registerIcons(AtlasRegistrar registrar); + public abstract void onTextureStitchEvent(TextureStitchEvent.Post event); //endregion //region Rendering @@ -104,7 +104,7 @@ public ColourMultiplier getColourMultiplier(int color, boolean isOn) { public IItemRenderer getItemRenderer() { return new IItemRenderer() { @Override - public void renderItem(ItemStack stack, ItemTransforms.TransformType transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { + public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { if (!(stack.getItem() instanceof MultipartLightPartItem lightItem)) return; CCRenderState ccrs = CCRenderState.instance(); diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightType.java b/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightType.java index 041292e45..965a7e455 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightType.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightType.java @@ -5,6 +5,7 @@ import codechicken.multipart.api.SimpleMultipartType; import mrtjp.projectred.illumination.item.MultipartLightPartItem; import mrtjp.projectred.illumination.part.*; +import net.covers1624.quack.collection.FastStream; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraftforge.registries.DeferredRegister; @@ -66,6 +67,10 @@ public Item getItem(int color, boolean inverted) { return inverted ? invertedItemSuppliers.get(color).get() : itemSuppliers.get(color).get(); } + public Iterable getAllItems(boolean inverted) { + return FastStream.of(inverted ? invertedItemSuppliers : itemSuppliers).map(RegistryObject::get); + } + public ItemStack makeStack(int colour, boolean inverted) { Item item = (inverted ? invertedItemSuppliers : itemSuppliers).get(colour).get(); return new ItemStack(item); diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/ProjectRedIllumination.java b/illumination/src/main/java/mrtjp/projectred/illumination/ProjectRedIllumination.java index cf66496ad..739bc5105 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/ProjectRedIllumination.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/ProjectRedIllumination.java @@ -1,16 +1,16 @@ package mrtjp.projectred.illumination; -import codechicken.lib.colour.EnumColour; -import codechicken.lib.gui.SimpleCreativeTab; import codechicken.multipart.api.MultipartType; import mrtjp.projectred.illumination.data.*; import mrtjp.projectred.illumination.init.IlluminationBlocks; import mrtjp.projectred.illumination.init.IlluminationClientInit; import mrtjp.projectred.illumination.init.IlluminationMicroMaterials; import mrtjp.projectred.illumination.init.IlluminationParts; +import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraftforge.api.distmarker.Dist; @@ -35,13 +35,13 @@ public class ProjectRedIllumination { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MOD_ID); public static final DeferredRegister> BLOCK_ENTITY_TYPES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, MOD_ID); public static final DeferredRegister> PART_TYPES = DeferredRegister.create(MultipartType.MULTIPART_TYPES, MOD_ID); - - public static final SimpleCreativeTab ILLUMINATION_GROUP = new SimpleCreativeTab(MOD_ID, () -> new ItemStack(BlockLightType.ILLUMAR_LAMP.getBlock(EnumColour.RED.ordinal(), true))); + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MOD_ID); static { IlluminationBlocks.register(); IlluminationParts.register(); IlluminationMicroMaterials.register(); + IlluminationCreativeModeTabs.register(); } public ProjectRedIllumination() { @@ -56,6 +56,7 @@ public ProjectRedIllumination() { ITEMS.register(modEventBus); BLOCK_ENTITY_TYPES.register(modEventBus); PART_TYPES.register(modEventBus); + CREATIVE_TABS.register(modEventBus); modEventBus.register(new IlluminationMicroMaterials()); } @@ -66,13 +67,14 @@ private void commonSetup(final FMLCommonSetupEvent event) { private void onGatherDataEvent(final GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper fileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeClient(), new IlluminationBlockStateModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new IlluminationItemModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new IlluminationLanguageProvider(generator)); + generator.addProvider(event.includeClient(), new IlluminationBlockStateModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new IlluminationItemModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new IlluminationLanguageProvider(output)); - generator.addProvider(event.includeServer(), new IlluminationBlockLootProvider(generator)); - generator.addProvider(event.includeServer(), new IlluminationRecipeProvider(generator)); + generator.addProvider(event.includeServer(), new IlluminationBlockLootProvider(output)); + generator.addProvider(event.includeServer(), new IlluminationRecipeProvider(output)); } } diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarLampBlock.java b/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarLampBlock.java index cec3bc090..faf1ae603 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarLampBlock.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarLampBlock.java @@ -16,10 +16,9 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.MapColor; import javax.annotation.Nullable; -import java.util.Random; public class IllumarLampBlock extends Block implements EntityBlock, RedstoneConnectorBlock { @@ -29,7 +28,8 @@ public class IllumarLampBlock extends Block implements EntityBlock, RedstoneConn private final boolean inverted; public IllumarLampBlock(int color, boolean inverted) { - super(BlockBehaviour.Properties.of(Material.BUILDABLE_GLASS) + super(BlockBehaviour.Properties.of() + .mapColor(state -> state.getValue(LIT) ? MapColor.byId(MapColor.TERRACOTTA_WHITE.id + color) : MapColor.COLOR_GRAY) .strength(0.5F) .lightLevel((state) -> state.getValue(LIT) ? 15 : 0)); diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampItemRenderer.java b/illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampItemRenderer.java index 1bca0b01b..12117e927 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampItemRenderer.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampItemRenderer.java @@ -14,20 +14,16 @@ import mrtjp.projectred.illumination.block.IllumarLampBlock; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelState; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.levelgen.RandomState; import org.jetbrains.annotations.Nullable; -import java.util.Random; - public class IllumarLampItemRenderer extends WrappedItemModel implements IItemRenderer { private static final Cuboid6 BLOCK_BOUNDS = Cuboid6.full.copy().expand(-0.02D); @@ -39,7 +35,7 @@ public IllumarLampItemRenderer(BakedModel wrapped) { } @Override - public void renderItem(ItemStack stack, ItemTransforms.TransformType transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { + public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { Item item = stack.getItem(); if (!(item instanceof BlockItem blockItem)) return; diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationBlockLootProvider.java b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationBlockLootProvider.java index 6b6c73f76..502d57517 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationBlockLootProvider.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationBlockLootProvider.java @@ -2,17 +2,14 @@ import codechicken.lib.datagen.LootTableProvider; import mrtjp.projectred.illumination.BlockLightType; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; -public class IlluminationBlockLootProvider extends LootTableProvider.BlockLootProvider { +import static mrtjp.projectred.illumination.ProjectRedIllumination.MOD_ID; - public IlluminationBlockLootProvider(DataGenerator dataGenerator) { - super(dataGenerator); - } +public class IlluminationBlockLootProvider extends LootTableProvider.BlockLootProvider { - @Override - public String getName() { - return "ProjectRed-Illumination Block Loot Tables"; + public IlluminationBlockLootProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationBlockStateModelProvider.java b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationBlockStateModelProvider.java index b6035bdf1..dd43ce9fa 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationBlockStateModelProvider.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationBlockStateModelProvider.java @@ -3,7 +3,7 @@ import mrtjp.projectred.illumination.BlockLightType; import mrtjp.projectred.illumination.ProjectRedIllumination; import mrtjp.projectred.illumination.block.IllumarLampBlock; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.BlockModelBuilder; import net.minecraftforge.client.model.generators.BlockStateProvider; @@ -14,8 +14,8 @@ public class IlluminationBlockStateModelProvider extends BlockStateProvider { - public IlluminationBlockStateModelProvider(DataGenerator gen, ExistingFileHelper exFileHelper) { - super(gen, ProjectRedIllumination.MOD_ID, exFileHelper); + public IlluminationBlockStateModelProvider(PackOutput output, ExistingFileHelper exFileHelper) { + super(output, ProjectRedIllumination.MOD_ID, exFileHelper); } @Override diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationCreativeModeTabs.java b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationCreativeModeTabs.java new file mode 100644 index 000000000..01c4ee0d9 --- /dev/null +++ b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationCreativeModeTabs.java @@ -0,0 +1,53 @@ +package mrtjp.projectred.illumination.data; + +import codechicken.lib.colour.EnumColour; +import mrtjp.projectred.illumination.BlockLightType; +import mrtjp.projectred.illumination.MultipartLightType; +import mrtjp.projectred.illumination.ProjectRedIllumination; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.registries.RegistryObject; + +public class IlluminationCreativeModeTabs { + + public static RegistryObject ILLUMINATION_CREATIVE_TAB; + + public static void register() { + ILLUMINATION_CREATIVE_TAB = ProjectRedIllumination.CREATIVE_TABS.register("illumination", + () -> CreativeModeTab.builder() + .icon(() -> new ItemStack(BlockLightType.ILLUMAR_LAMP.getBlock(EnumColour.RED.getWoolMeta(), true))) + .title(Component.translatable("itemGroup." + ProjectRedIllumination.MOD_ID)) + .displayItems((params, output) -> { + + // Block lights + for (BlockLightType lampType : BlockLightType.values()) { + // Non-inverted + for (Block b : lampType.allColors(false)) { + output.accept(b); + } + // Inverted + for (Block b : lampType.allColors(true)) { + output.accept(b); + } + } + + // Multipart lights + for (MultipartLightType type : MultipartLightType.values()) { + // Non-inverted + for (Item i : type.getAllItems(false)) { + output.accept(i); + } + // Inverted + for (Item i : type.getAllItems(true)) { + output.accept(i); + } + } + + }) + .build()); + + } +} diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationItemModelProvider.java b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationItemModelProvider.java index 28fd15e5c..7b1ea9f6b 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationItemModelProvider.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationItemModelProvider.java @@ -3,7 +3,7 @@ import codechicken.lib.datagen.ItemModelProvider; import mrtjp.projectred.illumination.BlockLightType; import mrtjp.projectred.illumination.MultipartLightType; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.common.data.ExistingFileHelper; @@ -11,13 +11,8 @@ public class IlluminationItemModelProvider extends ItemModelProvider { - public IlluminationItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { - super(generator, MOD_ID, existingFileHelper); - } - - @Override - public String getName() { - return "ProjectRed-Illumination Item Models"; + public IlluminationItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, MOD_ID, existingFileHelper); } @Override diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationLanguageProvider.java b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationLanguageProvider.java index 11aef80ea..017443282 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationLanguageProvider.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationLanguageProvider.java @@ -2,7 +2,7 @@ import mrtjp.projectred.illumination.BlockLightType; import mrtjp.projectred.illumination.MultipartLightType; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.LanguageProvider; import static mrtjp.projectred.illumination.ProjectRedIllumination.MOD_ID; @@ -13,8 +13,8 @@ public class IlluminationLanguageProvider extends LanguageProvider { "White", "Orange", "Magenta", "Light Blue", "Yellow", "Lime", "Pink", "Gray", "Light Gray", "Cyan", "Purple", "Blue", "Brown", "Green", "Red", "Black" }; - public IlluminationLanguageProvider(DataGenerator gen) { - super(gen, MOD_ID, "en_us"); + public IlluminationLanguageProvider(PackOutput output) { + super(output, MOD_ID, "en_us"); } @Override diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationRecipeProvider.java b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationRecipeProvider.java index b7233a8e9..e56e1ba1a 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationRecipeProvider.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/data/IlluminationRecipeProvider.java @@ -3,22 +3,18 @@ import codechicken.lib.datagen.recipe.RecipeProvider; import mrtjp.projectred.illumination.BlockLightType; import mrtjp.projectred.illumination.MultipartLightType; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; import static mrtjp.projectred.core.init.CoreItems.*; +import static mrtjp.projectred.illumination.ProjectRedIllumination.MOD_ID; public class IlluminationRecipeProvider extends RecipeProvider { - public IlluminationRecipeProvider(DataGenerator generatorIn) { - super(generatorIn); - } - - @Override - public String getName() { - return "ProjectRed-Illumination Recipes"; + public IlluminationRecipeProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/init/IlluminationClientInit.java b/illumination/src/main/java/mrtjp/projectred/illumination/init/IlluminationClientInit.java index cb4a4cd3d..3ebbc5e14 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/init/IlluminationClientInit.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/init/IlluminationClientInit.java @@ -1,7 +1,6 @@ package mrtjp.projectred.illumination.init; import codechicken.lib.model.ModelRegistryHelper; -import codechicken.lib.texture.SpriteRegistryHelper; import codechicken.multipart.api.MultipartClientRegistry; import mrtjp.projectred.illumination.BlockLightType; import mrtjp.projectred.illumination.MultipartLightType; @@ -13,6 +12,7 @@ import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.event.ModelEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @@ -28,26 +28,12 @@ public static void init() { final IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); modEventBus.addListener(IlluminationClientInit::clientSetup); + modEventBus.addListener(IlluminationClientInit::onModelBake); // Register Sprites - SpriteRegistryHelper iconRegister = new SpriteRegistryHelper(); for (MultipartLightType type : MultipartLightType.values()) { - iconRegister.addIIconRegister(type.getProperties()::registerIcons); + modEventBus.addListener(type.getProperties()::onTextureStitchEvent); } - - // Register custom block item models - ModelRegistryHelper modelHelper = new ModelRegistryHelper(); - modelHelper.registerCallback(e -> { - // Illumar lamp renderer - for (int color = 0; color < 16; color++) { - ResourceLocation blockRL = Objects.requireNonNull(ForgeRegistries.BLOCKS.getKey(BlockLightType.ILLUMAR_LAMP.getBlock(color, true))); - // Override default BlockItem renderer for the lit variants to render lamp glow - BakedModel litModel = e.getModels().get(new ModelResourceLocation(blockRL, "lit=true")); - e.getModels().put( - new ModelResourceLocation(blockRL, "inventory"), - new IllumarLampItemRenderer(litModel)); - } - }); } private static void clientSetup(final FMLClientSetupEvent event) { @@ -77,4 +63,18 @@ private static void clientSetup(final FMLClientSetupEvent event) { } } } + + public static void onModelBake(ModelEvent.ModifyBakingResult event) { + + // Replace item models for inverted lamps with a wrapped renderer that renders the lamp glow + for (int color = 0; color < 16; color++) { + ResourceLocation blockRL = Objects.requireNonNull(ForgeRegistries.BLOCKS.getKey(BlockLightType.ILLUMAR_LAMP.getBlock(color, true))); + // Override default BlockItem renderer for the lit variants to render lamp glow + BakedModel litModel = event.getModels().get(new ModelResourceLocation(blockRL, "lit=true")); + event.getModels().put( + new ModelResourceLocation(blockRL, "inventory"), + new IllumarLampItemRenderer(litModel)); + } + } + } diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/item/MultipartLightPartItem.java b/illumination/src/main/java/mrtjp/projectred/illumination/item/MultipartLightPartItem.java index f67f4e2ac..24e349ae9 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/item/MultipartLightPartItem.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/item/MultipartLightPartItem.java @@ -4,7 +4,6 @@ import codechicken.multipart.api.part.MultiPart; import codechicken.multipart.util.MultipartPlaceContext; import mrtjp.projectred.illumination.MultipartLightProperties; -import mrtjp.projectred.illumination.ProjectRedIllumination; import mrtjp.projectred.illumination.part.MultipartLightPart; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -17,7 +16,7 @@ public class MultipartLightPartItem extends ItemMultipart { private final boolean inverted; public MultipartLightPartItem(MultipartLightProperties lightProperties, int color, boolean inverted) { - super(new Item.Properties().tab(ProjectRedIllumination.ILLUMINATION_GROUP)); + super(new Item.Properties()); this.properties = lightProperties; this.color = color; this.inverted = inverted; diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/CageLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/CageLightProperties.java index a23698bd4..bef7fab58 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/CageLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/CageLightProperties.java @@ -1,16 +1,17 @@ package mrtjp.projectred.illumination.part; import codechicken.lib.render.CCModel; -import codechicken.lib.texture.AtlasRegistrar; import codechicken.lib.vec.Cuboid6; import mrtjp.projectred.illumination.MultipartLightProperties; import mrtjp.projectred.illumination.MultipartLightType; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.TextureStitchEvent; import javax.annotation.Nullable; import java.util.Map; @@ -44,8 +45,9 @@ public MultipartLightPart partFactory(int color, boolean inverted) { //region Rendering @Override @OnlyIn(Dist.CLIENT) - public void registerIcons(AtlasRegistrar registrar) { - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/cage_lamp"), i -> icon = i); + public void onTextureStitchEvent(TextureStitchEvent.Post event) { + if (!event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) return; + icon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/cage_lamp")); } @Override diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/FalloutLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/FalloutLightProperties.java index e5dcde9db..a2c2eb1d6 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/FalloutLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/FalloutLightProperties.java @@ -1,7 +1,6 @@ package mrtjp.projectred.illumination.part; import codechicken.lib.render.CCModel; -import codechicken.lib.texture.AtlasRegistrar; import codechicken.lib.vec.Cuboid6; import mrtjp.projectred.illumination.MultipartLightProperties; import mrtjp.projectred.illumination.MultipartLightType; @@ -11,6 +10,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.TextureStitchEvent; import javax.annotation.Nullable; import java.util.Map; @@ -43,8 +43,8 @@ public MultipartLightPart partFactory(int color, boolean inverted) { //region Rendering @Override @OnlyIn(Dist.CLIENT) - public void registerIcons(AtlasRegistrar registrar) { - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/fallout"), i -> icon = i); + public void onTextureStitchEvent(TextureStitchEvent.Post event) { + icon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/fallout")); } @Override diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/FixtureLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/FixtureLightProperties.java index b12c6a97e..5341f6aee 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/FixtureLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/FixtureLightProperties.java @@ -1,16 +1,17 @@ package mrtjp.projectred.illumination.part; import codechicken.lib.render.CCModel; -import codechicken.lib.texture.AtlasRegistrar; import codechicken.lib.vec.Cuboid6; import mrtjp.projectred.illumination.MultipartLightProperties; import mrtjp.projectred.illumination.MultipartLightType; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.TextureStitchEvent; import javax.annotation.Nullable; import java.util.Map; @@ -43,8 +44,9 @@ public MultipartLightPart partFactory(int color, boolean inverted) { //region Rendering @Override @OnlyIn(Dist.CLIENT) - public void registerIcons(AtlasRegistrar registrar) { - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/fixture"), i -> icon = i); + public void onTextureStitchEvent(TextureStitchEvent.Post event) { + if (!event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) return; + icon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/fixture")); } @Override diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/IllumarLampMicroMaterial.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/IllumarLampMicroMaterial.java index f3ae940e0..b1f34d646 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/IllumarLampMicroMaterial.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/IllumarLampMicroMaterial.java @@ -14,8 +14,8 @@ import net.minecraft.client.particle.ParticleEngine; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.level.block.Block; import org.jetbrains.annotations.Nullable; @@ -41,7 +41,7 @@ public void initializeClient(Consumer cons) { // Provide RenderDynamic implementation @Override - public void renderDynamic(MicroblockPart part, @Nullable ItemTransforms.TransformType transform, PoseStack pStack, MultiBufferSource buffers, int packedLight, int packedOverlay, float partialTicks) { + public void renderDynamic(MicroblockPart part, @Nullable ItemDisplayContext transform, PoseStack pStack, MultiBufferSource buffers, int packedLight, int packedOverlay, float partialTicks) { CCRenderState ccrs = CCRenderState.instance(); Cuboid6 cuboid = part.getBounds().copy().expand(0.025D); diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/LanternLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/LanternLightProperties.java index 118e88b93..75eb58d20 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/LanternLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/LanternLightProperties.java @@ -2,18 +2,19 @@ import codechicken.lib.raytracer.VoxelShapeCache; import codechicken.lib.render.CCModel; -import codechicken.lib.texture.AtlasRegistrar; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Rotation; import codechicken.lib.vec.Vector3; import mrtjp.projectred.illumination.MultipartLightProperties; import mrtjp.projectred.illumination.MultipartLightType; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.TextureStitchEvent; import javax.annotation.Nullable; import java.util.Arrays; @@ -47,8 +48,9 @@ public MultipartLightPart partFactory(int color, boolean inverted) { //region Rendering @Override @OnlyIn(Dist.CLIENT) - public void registerIcons(AtlasRegistrar registrar) { - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/lantern"), i -> icon = i); + public void onTextureStitchEvent(TextureStitchEvent.Post event) { + if (!event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) return; + icon = event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/lantern")); } @Override diff --git a/illumination/src/main/resources/META-INF/mods.toml b/illumination/src/main/resources/META-INF/mods.toml index c6445dace..c2d17faa7 100644 --- a/illumination/src/main/resources/META-INF/mods.toml +++ b/illumination/src/main/resources/META-INF/mods.toml @@ -23,7 +23,7 @@ Redstone. The way it was meant to be. [[dependencies.projectred_illumination]] modId="minecraft" mandatory=true - versionRange="[1.19.2]" + versionRange="[1.20.1]" ordering="NONE" side="BOTH" [[dependencies.projectred_illumination]] diff --git a/integration/build.gradle b/integration/build.gradle index b53f7bd2d..4510719c0 100644 --- a/integration/build.gradle +++ b/integration/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'net.minecraftforge.gradle' + id 'net.neoforged.gradle' id 'com.matthewprenger.cursegradle' } @@ -26,10 +26,10 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" + minecraft "net.neoforged:forge:${mc_version}-${forge_version}" - implementation fg.deobf("codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") - implementation fg.deobf("codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") + implementation fg.deobf("io.codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") + implementation fg.deobf("io.codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") implementation project(":core") } diff --git a/integration/src/main/generated/.cache/526ce634a960ac369a2c4b9b4759a1ac828072b9 b/integration/src/main/generated/.cache/8a6f9a0278662d141141aabe64bfbd22f6606579 similarity index 97% rename from integration/src/main/generated/.cache/526ce634a960ac369a2c4b9b4759a1ac828072b9 rename to integration/src/main/generated/.cache/8a6f9a0278662d141141aabe64bfbd22f6606579 index b028f17a0..285bb32bf 100644 --- a/integration/src/main/generated/.cache/526ce634a960ac369a2c4b9b4759a1ac828072b9 +++ b/integration/src/main/generated/.cache/8a6f9a0278662d141141aabe64bfbd22f6606579 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:08:58.30405 ProjectRed-Integration Item Models +// 1.20.1 2024-05-02T16:39:53.48876 projectred_integration Item models. a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_integration/models/item/and_cell_gate.json a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_integration/models/item/and_gate.json a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_integration/models/item/buffer_cell_gate.json diff --git a/integration/src/main/generated/.cache/d2e28d0b24700dc4dcfce7fd844e669cced81250 b/integration/src/main/generated/.cache/b9ddfcf5a3b2c71c82c4c7bcb7b68a2dc2a3f3f1 similarity index 97% rename from integration/src/main/generated/.cache/d2e28d0b24700dc4dcfce7fd844e669cced81250 rename to integration/src/main/generated/.cache/b9ddfcf5a3b2c71c82c4c7bcb7b68a2dc2a3f3f1 index b5c8d1fa5..a9de39877 100644 --- a/integration/src/main/generated/.cache/d2e28d0b24700dc4dcfce7fd844e669cced81250 +++ b/integration/src/main/generated/.cache/b9ddfcf5a3b2c71c82c4c7bcb7b68a2dc2a3f3f1 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:08:58.302205 ProjectRed-Integration Recipes +// 1.20.1 2024-05-02T16:39:53.491031 projectred_integration Recipes. df355cab46722957d5cbe1c6ebc11716169971ea data/projectred_integration/recipes/and_cell_gate.json 91a50b451caf2875f50ab609b2326df92604ef0f data/projectred_integration/recipes/and_gate.json 1c8bf4b74e0ac7abf896b5a472634db58decacf7 data/projectred_integration/recipes/buffer_cell_gate.json diff --git a/integration/src/main/generated/.cache/f683280d6f7a8a0c30af620bdaff75e1b58adcdb b/integration/src/main/generated/.cache/f683280d6f7a8a0c30af620bdaff75e1b58adcdb index 18318297e..2e8b632e5 100644 --- a/integration/src/main/generated/.cache/f683280d6f7a8a0c30af620bdaff75e1b58adcdb +++ b/integration/src/main/generated/.cache/f683280d6f7a8a0c30af620bdaff75e1b58adcdb @@ -1,2 +1,2 @@ -// 1.19.2 2024-03-05T10:08:58.297872 ProjectRed-Integration Language: en_us +// 1.20.1 2024-05-02T16:39:53.482941 ProjectRed-Integration Language: en_us dcb4ca976bb510c4a514ae6d16dfe4915792d7b7 assets/projectred_integration/lang/en_us.json diff --git a/integration/src/main/java/mrtjp/projectred/integration/GateType.java b/integration/src/main/java/mrtjp/projectred/integration/GateType.java index 0908dd01b..fe6914c14 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/GateType.java +++ b/integration/src/main/java/mrtjp/projectred/integration/GateType.java @@ -60,7 +60,7 @@ public enum GateType private @Nullable RegistryObject itemSupplier; private @Nullable RegistryObject> partSupplier; - private boolean isExternalGate; + private final boolean isExternalGate; GateType(@Nullable String unlocalName, @Nullable Function partFactory) { this.unlocalName = unlocalName; diff --git a/integration/src/main/java/mrtjp/projectred/integration/IntegrationNetwork.java b/integration/src/main/java/mrtjp/projectred/integration/IntegrationNetwork.java index a8ba5439d..716e8e929 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/IntegrationNetwork.java +++ b/integration/src/main/java/mrtjp/projectred/integration/IntegrationNetwork.java @@ -94,10 +94,10 @@ public void handlePacket(PacketCustom packet, ServerPlayer sender, ServerGamePac switch (packet.getType()) { case INCR_TIMER_FROM_CLIENT: - handleIncrTimerMessage(sender.level, packet); + handleIncrTimerMessage(sender.level(), packet); break; case INCR_COUNTER_FROM_CLIENT: - handleIncrCounterMessage(sender.level, packet); + handleIncrCounterMessage(sender.level(), packet); break; default: // unknown key diff --git a/integration/src/main/java/mrtjp/projectred/integration/ProjectRedIntegration.java b/integration/src/main/java/mrtjp/projectred/integration/ProjectRedIntegration.java index 153c89878..b4a99e3a1 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/ProjectRedIntegration.java +++ b/integration/src/main/java/mrtjp/projectred/integration/ProjectRedIntegration.java @@ -1,13 +1,16 @@ package mrtjp.projectred.integration; -import codechicken.lib.gui.SimpleCreativeTab; import codechicken.multipart.api.MultipartType; import mrtjp.projectred.integration.data.IntegrationItemModelProvider; import mrtjp.projectred.integration.data.IntegrationLanguageProvider; import mrtjp.projectred.integration.data.IntegrationRecipeProvider; import mrtjp.projectred.integration.init.IntegrationClientInit; +import mrtjp.projectred.integration.init.IntegrationCreativeModeTabs; import mrtjp.projectred.integration.init.IntegrationParts; +import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.data.ExistingFileHelper; @@ -33,11 +36,11 @@ public class ProjectRedIntegration { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MOD_ID); public static final DeferredRegister> PART_TYPES = DeferredRegister.create(MultipartType.MULTIPART_TYPES, MOD_ID); - - public static final SimpleCreativeTab CREATIVE_TAB = new SimpleCreativeTab(MOD_ID, GateType.OR::makeStack); + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MOD_ID); static { IntegrationParts.register(); + IntegrationCreativeModeTabs.register(); } public ProjectRedIntegration() { @@ -50,6 +53,7 @@ public ProjectRedIntegration() { ITEMS.register(modEventBus); PART_TYPES.register(modEventBus); + CREATIVE_TABS.register(modEventBus); } private void commonSetup(final FMLCommonSetupEvent event) { @@ -58,11 +62,12 @@ private void commonSetup(final FMLCommonSetupEvent event) { private void onGatherDataEvent(final GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper fileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeClient(), new IntegrationItemModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new IntegrationLanguageProvider(generator)); + generator.addProvider(event.includeClient(), new IntegrationItemModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new IntegrationLanguageProvider(output)); - generator.addProvider(event.includeServer(), new IntegrationRecipeProvider(generator)); + generator.addProvider(event.includeServer(), new IntegrationRecipeProvider(output)); } } diff --git a/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java b/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java index cf1b83e06..a770df69f 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java +++ b/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java @@ -27,6 +27,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.event.TextureStitchEvent; import javax.annotation.Nullable; import java.util.*; @@ -102,47 +103,47 @@ public class GateComponentModels { public static IconTransformation ioCrimpConnectorIcon; public static IconTransformation ioColourBoxIcon; - public static void registerIcons(AtlasRegistrar registrar) { + public static void onTextureStitchEvent(TextureStitchEvent.Post event) { //@formatter:off - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/base"), i -> baseIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/wire_material_border"), i -> wireBorderIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/wire_material_off"), i -> wireOffIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/wire_material_on"), i -> wireOnIcon = new IconTransformation(i)); - - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/redstone_torch_off"), i -> redstoneTorchOffIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/redstone_torch"), i -> redstoneTorchOnIcon = new IconTransformation(i)); - - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/yellow_chip_off"), i -> yellowChipOffIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/yellow_chip_on"), i -> yellowChipOnIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/red_chip_off"), i -> redChipOffIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/red_chip_on"), i -> redChipOnIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/minus_chip_off"), i -> minusChipOffIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/minus_chip_on"), i -> minusChipOnIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/plus_chip_off"), i -> plusChipOffIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/plus_chip_on"), i -> plusChipOnIcon = new IconTransformation(i)); - - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/solar_dual_mode"), i -> solarDualMode = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/solar_sky_mode"), i -> solarSkyMode = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/solar_block_mode"), i -> solarBlockMode = new IconTransformation(i)); - - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/rain_sensor"), i -> rainSensorIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/lever"), i -> leverIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/pointer"), i -> pointerIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/bus_xcvr"), i -> busXcvrIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/null_cell"), i -> nullCellIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/logic_cell"), i -> logicCellIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/and_cell"), i -> andCellIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/transparent_latch_cell"), i -> transparentLatchCellIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/bus_randomizer"), i -> busRandIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/bus_converter"), i -> busConvIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/bus_input_panel"), i -> busInputIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/segment_display"), i -> segment = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/segment_display_digit"), i -> segmentDisp = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/ic_active"), i -> icChipIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/ic_inert"), i -> icChipIconOff = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/ic_housing"), i -> icHousingIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_crimp"), i -> ioCrimpConnectorIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_colour_box"), i -> ioColourBoxIcon = new IconTransformation(i)); + baseIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/base"))); + wireBorderIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/wire_material_border"))); + wireOffIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/wire_material_off"))); + wireOnIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/wire_material_on"))); + + redstoneTorchOffIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/redstone_torch_off"))); + redstoneTorchOnIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/redstone_torch"))); + + yellowChipOffIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/yellow_chip_off"))); + yellowChipOnIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/yellow_chip_on"))); + redChipOffIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/red_chip_off"))); + redChipOnIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/red_chip_on"))); + minusChipOffIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/minus_chip_off"))); + minusChipOnIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/minus_chip_on"))); + plusChipOffIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/plus_chip_off"))); + plusChipOnIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/plus_chip_on"))); + + solarDualMode = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/solar_dual_mode"))); + solarSkyMode = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/solar_sky_mode"))); + solarBlockMode = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/solar_block_mode"))); + + rainSensorIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/rain_sensor"))); + leverIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/lever"))); + pointerIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/pointer"))); + busXcvrIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/bus_xcvr"))); + nullCellIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/null_cell"))); + logicCellIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/logic_cell"))); + andCellIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/and_cell"))); + transparentLatchCellIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/transparent_latch_cell"))); + busRandIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/bus_randomizer"))); + busConvIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/bus_converter"))); + busInputIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/bus_input_panel"))); + segment = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/segment_display"))); + segmentDisp = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/segment_display_digit"))); + icChipIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/ic_active"))); + icChipIconOff = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/ic_inert"))); + icHousingIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/ic_housing"))); + ioCrimpConnectorIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/io_crimp"))); + ioColourBoxIcon = new IconTransformation(event.getAtlas().getSprite(new ResourceLocation(MOD_ID, "block/io_colour_box"))); //@formatter:on } @@ -1495,7 +1496,7 @@ public void renderModel(Transformation t, int orient, CCRenderState ccrs) { icChipModel[orient].render(ccrs, t, icChipIcon); } - public void renderName(String name, PoseStack mStack, Transformation t1, int argb) { + public void renderName(String name, Transformation t1, PoseStack mStack, MultiBufferSource bufferSource, int argb, int packedLight) { Component nameComponent = Component.literal(name).withStyle(UNIFORM); Font fr = Minecraft.getInstance().font; @@ -1519,7 +1520,7 @@ public void renderName(String name, PoseStack mStack, Transformation t1, int arg // Draw text mStack.pushPose(); mStack.mulPoseMatrix(m.toMatrix4f()); - fr.draw(mStack, nameComponent, 0, 0, argb); + fr.drawInBatch(nameComponent, 0, 0, argb, false, mStack.last().pose(), bufferSource, Font.DisplayMode.NORMAL, 0, packedLight); mStack.popPose(); } diff --git a/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java b/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java index 637a194c4..b5b28ab92 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java +++ b/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java @@ -4,25 +4,26 @@ import codechicken.lib.math.MathHelper; import codechicken.lib.render.CCRenderState; import codechicken.lib.render.buffer.TransformingVertexConsumer; -import codechicken.lib.texture.AtlasRegistrar; import codechicken.lib.vec.Transformation; import codechicken.lib.vec.Vector3; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; import mrtjp.projectred.integration.GateType; import mrtjp.projectred.integration.part.GatePart; import mrtjp.projectred.integration.part.IGateRenderData; import mrtjp.projectred.lib.VecLib; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.DustParticleOptions; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.client.event.TextureStitchEvent; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3f; import java.util.ArrayList; import java.util.Arrays; @@ -148,8 +149,9 @@ private GateRenderer getRenderer(int renderIndex) { } } - public static void registerIcons(AtlasRegistrar registrar) { - GateComponentModels.registerIcons(registrar); + public static void onTextureStitchEvent(TextureStitchEvent.Post event) { + if (!event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) return; + GateComponentModels.onTextureStitchEvent(event); // TODO find a way around calling into all renderers, having them call into all component models // (it was only used for 2d wires) } @@ -1960,7 +1962,7 @@ public void renderDynamic(CCRenderState ccrs, Transformation t) { public void renderCustomDynamic(CCRenderState ccrs, Transformation t, PoseStack mStack, MultiBufferSource buffers, int packedLight, int packedOverlay, float partialTicks) { // Render name - icHousing.renderName(name, mStack, t, runtimeError ? EnumColour.RED.argb() : EnumColour.WHITE.argb()); + icHousing.renderName(name, t, mStack, buffers, runtimeError ? EnumColour.RED.argb() : EnumColour.WHITE.argb(), packedLight); // Render glass ccrs.reset(); diff --git a/integration/src/main/java/mrtjp/projectred/integration/client/GatePartItemRenderer.java b/integration/src/main/java/mrtjp/projectred/integration/client/GatePartItemRenderer.java index 0adab1dcc..a576f5e3d 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/client/GatePartItemRenderer.java +++ b/integration/src/main/java/mrtjp/projectred/integration/client/GatePartItemRenderer.java @@ -9,7 +9,7 @@ import mrtjp.projectred.integration.item.BaseGatePartItem; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; @@ -29,7 +29,7 @@ public boolean isGui3d() { @Override public boolean usesBlockLight() { - return true; + return false; } @Override @@ -38,7 +38,7 @@ public boolean usesBlockLight() { } @Override - public void renderItem(ItemStack stack, ItemTransforms.TransformType transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { + public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { if (!(stack.getItem() instanceof BaseGatePartItem gateItem)) return; diff --git a/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationItemModelProvider.java b/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationItemModelProvider.java index 0ff215d92..683998558 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationItemModelProvider.java +++ b/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationItemModelProvider.java @@ -2,9 +2,7 @@ import codechicken.lib.datagen.ItemModelProvider; import mrtjp.projectred.integration.GateType; -import net.minecraft.data.DataGenerator; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.model.generators.ModelFile; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nonnull; @@ -13,14 +11,8 @@ public class IntegrationItemModelProvider extends ItemModelProvider { - public IntegrationItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { - super(generator, MOD_ID, existingFileHelper); - } - - @Nonnull - @Override - public String getName() { - return "ProjectRed-Integration Item Models"; + public IntegrationItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, MOD_ID, existingFileHelper); } @Override diff --git a/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationLanguageProvider.java b/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationLanguageProvider.java index 748da107d..a346fdbb1 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationLanguageProvider.java +++ b/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationLanguageProvider.java @@ -1,15 +1,15 @@ package mrtjp.projectred.integration.data; import mrtjp.projectred.integration.GateType; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.LanguageProvider; import static mrtjp.projectred.integration.ProjectRedIntegration.MOD_ID; public class IntegrationLanguageProvider extends LanguageProvider { - public IntegrationLanguageProvider(DataGenerator gen) { - super(gen, MOD_ID, "en_us"); + public IntegrationLanguageProvider(PackOutput output) { + super(output, MOD_ID, "en_us"); } @Override diff --git a/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationRecipeProvider.java b/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationRecipeProvider.java index 76faaccbc..06cefdef4 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationRecipeProvider.java +++ b/integration/src/main/java/mrtjp/projectred/integration/data/IntegrationRecipeProvider.java @@ -2,22 +2,18 @@ import codechicken.lib.datagen.recipe.RecipeProvider; import mrtjp.projectred.integration.GateType; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; import static mrtjp.projectred.core.init.CoreItems.*; import static mrtjp.projectred.core.init.CoreTags.ILLUMAR_TAG; +import static mrtjp.projectred.integration.ProjectRedIntegration.MOD_ID; public class IntegrationRecipeProvider extends RecipeProvider { - public IntegrationRecipeProvider(DataGenerator generatorIn) { - super(generatorIn); - } - - @Override - public String getName() { - return "ProjectRed-Integration Recipes"; + public IntegrationRecipeProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/integration/src/main/java/mrtjp/projectred/integration/gui/screen/CounterScreen.java b/integration/src/main/java/mrtjp/projectred/integration/gui/screen/CounterScreen.java index d95ed1de7..c219f271c 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/gui/screen/CounterScreen.java +++ b/integration/src/main/java/mrtjp/projectred/integration/gui/screen/CounterScreen.java @@ -1,14 +1,13 @@ package mrtjp.projectred.integration.gui.screen; import codechicken.lib.packet.PacketCustom; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.integration.IntegrationNetwork; import mrtjp.projectred.integration.part.ComplexGatePart; import mrtjp.projectred.integration.part.GatePart; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.ButtonNode; import mrtjp.projectred.redui.RedUIScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -56,23 +55,22 @@ private void createButton(int x, int y, int w, int h, int id, int delta) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - super.drawBack(stack, mouse, partialFrame); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + super.drawBack(graphics, mouse, partialFrame); - RenderSystem.setShaderTexture(0, BACKGROUND); int x = getFrame().x(); int y = getFrame().y(); int w = getFrame().width(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); String s = "Maximum: " + counterGate.getCounterMax(); - getFontRenderer().draw(stack, s, x + (w - getFontRenderer().width(s)) / 2f, y + 5, 0x404040); + graphics.drawString(getFontRenderer(), s, x + (w - getFontRenderer().width(s)) / 2f, y + 5, 0x404040, false); s = "Increment: " + counterGate.getCounterIncr(); - getFontRenderer().draw(stack, s, x + (w - getFontRenderer().width(s)) / 2f, y + 45, 0x404040); + graphics.drawString(getFontRenderer(), s, x + (w - getFontRenderer().width(s)) / 2f, y + 45, 0x404040, false); s = "Decrement: " + counterGate.getCounterDecr(); - getFontRenderer().draw(stack, s, x + (w - getFontRenderer().width(s)) / 2f, y + 85, 0x404040); + graphics.drawString(getFontRenderer(), s, x + (w - getFontRenderer().width(s)) / 2f, y + 85, 0x404040, false); s = "State: " + counterGate.getCounterValue(); - getFontRenderer().draw(stack, s, x + (w - getFontRenderer().width(s)) / 2f, y + 125, 0x404040); + graphics.drawString(getFontRenderer(), s, x + (w - getFontRenderer().width(s)) / 2f, y + 125, 0x404040, false); } @Override diff --git a/integration/src/main/java/mrtjp/projectred/integration/gui/screen/TimerScreen.java b/integration/src/main/java/mrtjp/projectred/integration/gui/screen/TimerScreen.java index 1c216a198..b3af6181e 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/gui/screen/TimerScreen.java +++ b/integration/src/main/java/mrtjp/projectred/integration/gui/screen/TimerScreen.java @@ -1,14 +1,13 @@ package mrtjp.projectred.integration.gui.screen; import codechicken.lib.packet.PacketCustom; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.integration.IntegrationNetwork; import mrtjp.projectred.integration.part.ComplexGatePart; import mrtjp.projectred.integration.part.GatePart; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.ButtonNode; import mrtjp.projectred.redui.RedUIScreen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -51,18 +50,17 @@ private void createButton(int x, int y, int w, int h, String text, int delta) { } @Override - public void drawBack(PoseStack stack, Point mouse, float partialFrame) { - super.drawBack(stack, mouse, partialFrame); + public void drawBack(GuiGraphics graphics, Point mouse, float partialFrame) { + super.drawBack(graphics, mouse, partialFrame); - RenderSystem.setShaderTexture(0, BACKGROUND); int x = getFrame().x(); int y = getFrame().y(); - blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); + graphics.blit(BACKGROUND, x, y, 0, 0, getFrame().width(), getFrame().height()); String s = String.format("Timer interval: %.2fs", timerGate.getTimerMax() * 0.05); int sw = getFontRenderer().width(s); - getFontRenderer().draw(stack, s, x + (getFrame().width() - sw)/2f, y + 8, 0x404040); + graphics.drawString(getFontRenderer(), s, x + (getFrame().width() - sw)/2f, y + 8f, 0x404040, false); } @Override diff --git a/integration/src/main/java/mrtjp/projectred/integration/init/IntegrationClientInit.java b/integration/src/main/java/mrtjp/projectred/integration/init/IntegrationClientInit.java index 11e7a5cc8..7bc97f8b6 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/init/IntegrationClientInit.java +++ b/integration/src/main/java/mrtjp/projectred/integration/init/IntegrationClientInit.java @@ -1,7 +1,6 @@ package mrtjp.projectred.integration.init; import codechicken.lib.model.ModelRegistryHelper; -import codechicken.lib.texture.SpriteRegistryHelper; import codechicken.lib.util.ResourceUtils; import codechicken.multipart.api.MultipartClientRegistry; import mrtjp.projectred.integration.GateType; @@ -25,8 +24,7 @@ public static void init() { modEventBus.addListener(IntegrationClientInit::clientSetup); // Register sprites - SpriteRegistryHelper spriteHelper = new SpriteRegistryHelper(modEventBus); - spriteHelper.addIIconRegister(GateModelRenderer::registerIcons); + modEventBus.addListener(GateModelRenderer::onTextureStitchEvent); } private static void clientSetup(final FMLClientSetupEvent event) { diff --git a/integration/src/main/java/mrtjp/projectred/integration/init/IntegrationCreativeModeTabs.java b/integration/src/main/java/mrtjp/projectred/integration/init/IntegrationCreativeModeTabs.java new file mode 100644 index 000000000..2110cb365 --- /dev/null +++ b/integration/src/main/java/mrtjp/projectred/integration/init/IntegrationCreativeModeTabs.java @@ -0,0 +1,29 @@ +package mrtjp.projectred.integration.init; + +import mrtjp.projectred.integration.GateType; +import mrtjp.projectred.integration.ProjectRedIntegration; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraftforge.registries.RegistryObject; + +@SuppressWarnings("NotNullFieldNotInitialized") +public class IntegrationCreativeModeTabs { + + public static RegistryObject INTEGRATION_CREATIVE_TAB; + + public static void register() { + INTEGRATION_CREATIVE_TAB = ProjectRedIntegration.CREATIVE_TABS.register("integration", + () -> CreativeModeTab.builder() + .icon(GateType.OR::makeStack) + .title(Component.translatable("itemGroup." + ProjectRedIntegration.MOD_ID)) + .displayItems((params, output) -> { + // Gates + for (GateType type : GateType.values()) { + if (!type.isExternalGate()) + output.accept(type.makeStack()); + } + }) + .build()); + } + +} diff --git a/integration/src/main/java/mrtjp/projectred/integration/item/GatePartItem.java b/integration/src/main/java/mrtjp/projectred/integration/item/GatePartItem.java index 7d578848e..c2de90791 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/item/GatePartItem.java +++ b/integration/src/main/java/mrtjp/projectred/integration/item/GatePartItem.java @@ -1,13 +1,16 @@ package mrtjp.projectred.integration.item; import mrtjp.projectred.integration.GateType; -import mrtjp.projectred.integration.ProjectRedIntegration; import net.minecraft.world.item.Item; public class GatePartItem extends BaseGatePartItem { public GatePartItem(GateType gateType) { - super(new Item.Properties().tab(ProjectRedIntegration.CREATIVE_TAB), gateType); + super(new Item.Properties(), gateType); + } + + public GateType getGateType() { + return gateType; } } diff --git a/integration/src/main/java/mrtjp/projectred/integration/part/ArrayGatePart.java b/integration/src/main/java/mrtjp/projectred/integration/part/ArrayGatePart.java index 279347426..fceb9f612 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/part/ArrayGatePart.java +++ b/integration/src/main/java/mrtjp/projectred/integration/part/ArrayGatePart.java @@ -259,7 +259,7 @@ public boolean preparePlacement(MultipartPlaceContext context) { if (canCross() && context.getPlayer() != null) { // Note: tile() is not available yet, must access from player.level - MultiPart tpart = BlockMultipart.getPart(context.getPlayer().getLevel(), context.getClickedPos(), getSide()^1); + MultiPart tpart = BlockMultipart.getPart(context.getPlayer().level(), context.getClickedPos(), getSide()^1); if (tpart instanceof ArrayGatePart part) { if (part.getGateType() == getGateType() && (part.getRotation() & 1) == (getRotation() & 1)) { setRotation((getRotation() + 1) % 4); diff --git a/integration/src/main/resources/META-INF/mods.toml b/integration/src/main/resources/META-INF/mods.toml index f0c66d7e8..80e928c4c 100644 --- a/integration/src/main/resources/META-INF/mods.toml +++ b/integration/src/main/resources/META-INF/mods.toml @@ -23,7 +23,7 @@ Redstone. The way it was meant to be. [[dependencies.projectred_integration]] modId="minecraft" mandatory=true - versionRange="[1.19.2]" + versionRange="[1.20.1]" ordering="NONE" side="BOTH" [[dependencies.projectred_integration]] diff --git a/runtime/build.gradle b/runtime/build.gradle index a7380ca6f..731860a6b 100644 --- a/runtime/build.gradle +++ b/runtime/build.gradle @@ -2,7 +2,7 @@ * Used only for generating run configs that include all ProjectRed modules in the classpath. */ plugins { - id 'net.minecraftforge.gradle' + id 'net.neoforged.gradle' id 'org.spongepowered.mixin' } @@ -36,7 +36,7 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" + minecraft "net.neoforged:forge:${mc_version}-${forge_version}" runtimeOnly project(":core") runtimeOnly project(":expansion") diff --git a/settings.gradle b/settings.gradle index bc5405e50..11d53add0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,6 +1,6 @@ pluginManagement { repositories { - maven { url = 'https://maven.minecraftforge.net/' } + maven { url = 'https://maven.neoforged.net/releases' } maven { url = 'https://repo.spongepowered.org/maven' } gradlePluginPortal() } @@ -8,10 +8,10 @@ pluginManagement { plugins { id 'java' id 'maven-publish' - id 'net.covers1624.signing' version '1.1.3' apply false - id 'com.matthewprenger.cursegradle' version '1.4.0' apply false - id 'net.minecraftforge.gradle' version '5.1.+' apply false - id 'org.spongepowered.mixin' version '0.7.+' apply false + id 'net.covers1624.signing' version '1.1.3' apply false + id 'com.matthewprenger.cursegradle' version '1.4.0' apply false + id 'net.neoforged.gradle' version '[6.0.18,6.2)' apply false + id 'org.spongepowered.mixin' version '0.7.+' apply false id 'com.github.johnrengelman.shadow' version '7.1.+' apply false } } diff --git a/transmission/build.gradle b/transmission/build.gradle index f537527ba..cbd9a4452 100644 --- a/transmission/build.gradle +++ b/transmission/build.gradle @@ -1,10 +1,8 @@ plugins { - id 'net.minecraftforge.gradle' + id 'net.neoforged.gradle' id 'com.matthewprenger.cursegradle' } -apply plugin: 'net.minecraftforge.gradle' - String mod_id = 'projectred_transmission' minecraft { @@ -28,10 +26,10 @@ minecraft { } dependencies { - minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" + minecraft "net.neoforged:forge:${mc_version}-${forge_version}" - implementation fg.deobf("codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") - implementation fg.deobf("codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") + implementation fg.deobf("io.codechicken:CodeChickenLib:${mc_version}-${ccl_version}:universal") + implementation fg.deobf("io.codechicken:CBMultipart:${mc_version}-${cbm_version}:universal") implementation project(":core") } diff --git a/transmission/src/main/generated/.cache/1eb909bc2f32a9d98a678d7fc96e42309be491b5 b/transmission/src/main/generated/.cache/1eb909bc2f32a9d98a678d7fc96e42309be491b5 new file mode 100644 index 000000000..f7d141d2f --- /dev/null +++ b/transmission/src/main/generated/.cache/1eb909bc2f32a9d98a678d7fc96e42309be491b5 @@ -0,0 +1 @@ +// 1.20.1 2024-05-02T16:40:18.848466 Tags for minecraft:block mod id projectred_transmission diff --git a/transmission/src/main/generated/.cache/6d0840d31557e28cf82c27a6ae2284c2850a7e58 b/transmission/src/main/generated/.cache/559edefec34c0193b89f0dfbc70e66bb4fcf6966 similarity index 99% rename from transmission/src/main/generated/.cache/6d0840d31557e28cf82c27a6ae2284c2850a7e58 rename to transmission/src/main/generated/.cache/559edefec34c0193b89f0dfbc70e66bb4fcf6966 index 4e6867492..e3dec1e07 100644 --- a/transmission/src/main/generated/.cache/6d0840d31557e28cf82c27a6ae2284c2850a7e58 +++ b/transmission/src/main/generated/.cache/559edefec34c0193b89f0dfbc70e66bb4fcf6966 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:09:30.859178 ProjectRed-Transmission Item Models +// 1.20.1 2024-05-02T16:40:18.847339 projectred_transmission Item models. a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_transmission/models/item/black_bundled_wire.json a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_transmission/models/item/black_framed_bundled_wire.json a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_transmission/models/item/black_framed_insulated_wire.json diff --git a/transmission/src/main/generated/.cache/16031a72c26639038310f7abc4fd8c962ad52894 b/transmission/src/main/generated/.cache/5d3ba082c682ce8e4c01b877afa3197c3fa54da9 similarity index 99% rename from transmission/src/main/generated/.cache/16031a72c26639038310f7abc4fd8c962ad52894 rename to transmission/src/main/generated/.cache/5d3ba082c682ce8e4c01b877afa3197c3fa54da9 index 9d9d9e83f..56d279432 100644 --- a/transmission/src/main/generated/.cache/16031a72c26639038310f7abc4fd8c962ad52894 +++ b/transmission/src/main/generated/.cache/5d3ba082c682ce8e4c01b877afa3197c3fa54da9 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:09:30.847892 ProjectRed-Transmission: Recipes +// 1.20.1 2024-05-02T16:40:18.836961 projectred_transmission Recipes. 71e2e52a7b175704511bfbfc797273a571b3454d data/projectred_transmission/recipes/black_bundled_wire_re_color.json 8bb55138c596884ab4e2832e0c9f09d8f0622b0c data/projectred_transmission/recipes/black_framed_bundled_wire.json 693f4ae8e23485b6a9382f290b323d53f5345103 data/projectred_transmission/recipes/black_framed_bundled_wire_re_color.json diff --git a/transmission/src/main/generated/.cache/6b41d303ff2565e607848497b87d2268a31dea17 b/transmission/src/main/generated/.cache/6b41d303ff2565e607848497b87d2268a31dea17 index 7d3f9129b..0d20cdad3 100644 --- a/transmission/src/main/generated/.cache/6b41d303ff2565e607848497b87d2268a31dea17 +++ b/transmission/src/main/generated/.cache/6b41d303ff2565e607848497b87d2268a31dea17 @@ -1,2 +1,2 @@ -// 1.19.2 2024-03-05T10:09:30.86349 ProjectRed-Transmission Language: en_us +// 1.20.1 2024-05-02T16:40:18.832331 ProjectRed-Transmission Language: en_us cda4b4c2989b506f91bbf873bd6d2740737858d5 assets/projectred_transmission/lang/en_us.json diff --git a/transmission/src/main/generated/.cache/e54b2aa820d3c45e5a8670f80d66b111475d334d b/transmission/src/main/generated/.cache/e54b2aa820d3c45e5a8670f80d66b111475d334d index 40ca289b2..b78029404 100644 --- a/transmission/src/main/generated/.cache/e54b2aa820d3c45e5a8670f80d66b111475d334d +++ b/transmission/src/main/generated/.cache/e54b2aa820d3c45e5a8670f80d66b111475d334d @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-05T10:09:30.864767 ProjectRed-Transmission Item Tags +// 1.20.1 2024-05-02T16:40:18.845929 ProjectRed-Transmission Item Tags 946c13729332ac057e694b19d5f346f5cc988720 data/projectred_transmission/tags/items/bundled_wire.json e3811a48b41aa59405dff97fc2b0e20dd2eb8e2e data/projectred_transmission/tags/items/framed_bundled_wire.json 29175698d4c23dcd00104b141f048063721eb7ee data/projectred_transmission/tags/items/framed_insulated_wire.json diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/ProjectRedTransmission.java b/transmission/src/main/java/mrtjp/projectred/transmission/ProjectRedTransmission.java index e1fabb2db..a78810968 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/ProjectRedTransmission.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/ProjectRedTransmission.java @@ -1,19 +1,20 @@ package mrtjp.projectred.transmission; -import codechicken.lib.gui.SimpleCreativeTab; import codechicken.multipart.api.MultipartType; import mrtjp.projectred.api.ProjectRedAPI; import mrtjp.projectred.core.RedstonePropagator; -import mrtjp.projectred.transmission.data.TransmissionItemModelProvider; -import mrtjp.projectred.transmission.data.TransmissionItemTagsProvider; -import mrtjp.projectred.transmission.data.TransmissionLanguageProvider; -import mrtjp.projectred.transmission.data.TransmissionRecipeProvider; +import mrtjp.projectred.transmission.data.*; import mrtjp.projectred.transmission.init.TransmissionClientInit; +import mrtjp.projectred.transmission.init.TransmissionCreativeModeTabs; import mrtjp.projectred.transmission.init.TransmissionParts; +import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.data.BlockTagsProvider; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.event.server.ServerAboutToStartEvent; @@ -34,13 +35,13 @@ public class ProjectRedTransmission { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MOD_ID); public static final DeferredRegister> PART_TYPES = DeferredRegister.create(MultipartType.MULTIPART_TYPES, MOD_ID); - - public static final SimpleCreativeTab TRANSMISSION_GROUP = new SimpleCreativeTab(MOD_ID, WireType.RED_ALLOY::makeStack); + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MOD_ID); static { ProjectRedAPI.transmissionAPI = TransmissionAPI.INSTANCE; TransmissionParts.register(); + TransmissionCreativeModeTabs.register(); } public ProjectRedTransmission() { @@ -53,6 +54,7 @@ public ProjectRedTransmission() { ITEMS.register(modEventBus); PART_TYPES.register(modEventBus); + CREATIVE_TABS.register(modEventBus); MinecraftForge.EVENT_BUS.addListener(this::onServerStartEvent); } @@ -63,13 +65,16 @@ private void commonSetup(final FMLCommonSetupEvent event) { private void onGatherDataEvent(final GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper fileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeClient(), new TransmissionItemModelProvider(generator, fileHelper)); - generator.addProvider(event.includeClient(), new TransmissionLanguageProvider(generator)); + generator.addProvider(event.includeClient(), new TransmissionItemModelProvider(output, fileHelper)); + generator.addProvider(event.includeClient(), new TransmissionLanguageProvider(output)); - generator.addProvider(event.includeServer(), new TransmissionItemTagsProvider(generator, fileHelper)); - generator.addProvider(event.includeServer(), new TransmissionRecipeProvider(generator)); + BlockTagsProvider blockTagsProvider = new TransmissionBlockTagsProvider(output, event.getLookupProvider(), fileHelper); + generator.addProvider(event.includeServer(), blockTagsProvider); + generator.addProvider(event.includeServer(), new TransmissionItemTagsProvider(output, event.getLookupProvider(), blockTagsProvider.contentsGetter(), fileHelper)); + generator.addProvider(event.includeServer(), new TransmissionRecipeProvider(output)); } private void onServerStartEvent(final ServerAboutToStartEvent event) { diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/WireType.java b/transmission/src/main/java/mrtjp/projectred/transmission/WireType.java index f089d04d3..edeeea084 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/WireType.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/WireType.java @@ -1,19 +1,20 @@ package mrtjp.projectred.transmission; import codechicken.lib.colour.EnumColour; -import codechicken.lib.texture.SpriteRegistryHelper; import codechicken.multipart.api.MultipartType; import codechicken.multipart.api.SimpleMultipartType; import com.google.common.collect.ImmutableList; import mrtjp.projectred.transmission.item.CenterWirePartItem; import mrtjp.projectred.transmission.item.FaceWirePartItem; import mrtjp.projectred.transmission.part.*; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.RegistryObject; @@ -200,21 +201,19 @@ public List getTextures() { } @OnlyIn (Dist.CLIENT) - public void registerTextures(SpriteRegistryHelper spriteHelper) { - if (textureNames.isEmpty()) { - return; - } + public void onTextureStitchEvent(TextureStitchEvent.Post event) { + if (!event.getAtlas().location().equals(TextureAtlas.LOCATION_BLOCKS)) return; + + if (textureNames.isEmpty()) return; + textures = new ArrayList<>(textureNames.size()); for (int i = 0; i < textureNames.size(); i++) { textures.add(null); } - spriteHelper.addIIconRegister(SpriteRegistryHelper.TEXTURES, registrar -> { - for (int i = 0; i < textureNames.size(); i++) { - int finalI = i; - ResourceLocation tex = new ResourceLocation(MOD_ID, "block/" + textureNames.get(i)); - registrar.registerSprite(tex, sprite -> textures.set(finalI, sprite)); - } - }); + for (int i = 0; i < textureNames.size(); i++) { + ResourceLocation tex = new ResourceLocation(MOD_ID, "block/" + textureNames.get(i)); + textures.set(i, event.getAtlas().getSprite(tex)); + } } public void registerParts(DeferredRegister> partRegistry, DeferredRegister itemRegistry) { diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/client/FramedWireHighlightRenderer.java b/transmission/src/main/java/mrtjp/projectred/transmission/client/FramedWireHighlightRenderer.java index b324302cd..1c06af397 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/client/FramedWireHighlightRenderer.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/client/FramedWireHighlightRenderer.java @@ -32,7 +32,7 @@ public boolean renderHighlight(Player player, InteractionHand hand, BlockHitResu if (!(hit instanceof PartRayTraceResult partHit)) return false; - TileMultipart tile = BlockMultipart.getTile(player.level, hit.getBlockPos()); + TileMultipart tile = BlockMultipart.getTile(player.level(), hit.getBlockPos()); if (tile == null) return false; if (partHit.part instanceof BaseCenterWirePart wire) { diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/client/FramedWirePartItemRenderer.java b/transmission/src/main/java/mrtjp/projectred/transmission/client/FramedWirePartItemRenderer.java index 98cf030df..0c0f3728f 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/client/FramedWirePartItemRenderer.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/client/FramedWirePartItemRenderer.java @@ -10,7 +10,7 @@ import mrtjp.projectred.transmission.item.CenterWirePartItem; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; public class FramedWirePartItemRenderer implements IItemRenderer { @@ -40,7 +40,7 @@ public PerspectiveModelState getModelState() { } @Override - public void renderItem(ItemStack stack, ItemTransforms.TransformType transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { + public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { if (!(stack.getItem() instanceof CenterWirePartItem)) return; diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/client/WirePartItemRenderer.java b/transmission/src/main/java/mrtjp/projectred/transmission/client/WirePartItemRenderer.java index c0788e70e..c4e59fb1a 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/client/WirePartItemRenderer.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/client/WirePartItemRenderer.java @@ -10,7 +10,7 @@ import mrtjp.projectred.transmission.item.FaceWirePartItem; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; public class WirePartItemRenderer implements IItemRenderer { @@ -40,7 +40,7 @@ public PerspectiveModelState getModelState() { } @Override - public void renderItem(ItemStack stack, ItemTransforms.TransformType transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { + public void renderItem(ItemStack stack, ItemDisplayContext transformType, PoseStack mStack, MultiBufferSource getter, int packedLight, int packedOverlay) { if (!(stack.getItem() instanceof FaceWirePartItem)) return; diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionBlockTagsProvider.java b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionBlockTagsProvider.java new file mode 100644 index 000000000..3da69ac02 --- /dev/null +++ b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionBlockTagsProvider.java @@ -0,0 +1,23 @@ +package mrtjp.projectred.transmission.data; + +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraftforge.common.data.BlockTagsProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; + +import static mrtjp.projectred.transmission.ProjectRedTransmission.MOD_ID; + +public class TransmissionBlockTagsProvider extends BlockTagsProvider { + + public TransmissionBlockTagsProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, MOD_ID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.Provider pProvider) { + + } +} diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionItemModelProvider.java b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionItemModelProvider.java index 422726c5f..8870bece6 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionItemModelProvider.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionItemModelProvider.java @@ -2,20 +2,15 @@ import codechicken.lib.datagen.ItemModelProvider; import mrtjp.projectred.transmission.WireType; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import static mrtjp.projectred.transmission.ProjectRedTransmission.MOD_ID; public class TransmissionItemModelProvider extends ItemModelProvider { - public TransmissionItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { - super(generator, MOD_ID, existingFileHelper); - } - - @Override - public String getName() { - return "ProjectRed-Transmission Item Models"; + public TransmissionItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, MOD_ID, existingFileHelper); } @Override diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionItemTagsProvider.java b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionItemTagsProvider.java index 4af9a4987..ce39fa29d 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionItemTagsProvider.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionItemTagsProvider.java @@ -1,22 +1,23 @@ package mrtjp.projectred.transmission.data; import mrtjp.projectred.transmission.WireType; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; import net.minecraft.data.tags.TagsProvider; -import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; import static mrtjp.projectred.transmission.ProjectRedTransmission.MOD_ID; import static mrtjp.projectred.transmission.init.TransmissionTags.*; public class TransmissionItemTagsProvider extends ItemTagsProvider { - public TransmissionItemTagsProvider(DataGenerator generator, @Nullable ExistingFileHelper existingFileHelper) { - super(generator, new BlockTagsProvider(generator, MOD_ID, existingFileHelper), MOD_ID, existingFileHelper); + public TransmissionItemTagsProvider(PackOutput output, CompletableFuture lookupProvider, CompletableFuture> blockTags, @Nullable ExistingFileHelper helper) { + super(output, lookupProvider, blockTags, MOD_ID, helper); } @Override @@ -25,9 +26,9 @@ public String getName() { } @Override - protected void addTags() { + protected void addTags(HolderLookup.Provider pProvider) { // Insulated wires - TagsProvider.TagAppender b = tag(INSULATED_WIRE_ITEM_TAG); + var b = tag(INSULATED_WIRE_ITEM_TAG); for (WireType type : WireType.INSULATED_WIRES) { b.add(type.getItem()); } diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionLanguageProvider.java b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionLanguageProvider.java index a631d6772..9081a6a64 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionLanguageProvider.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionLanguageProvider.java @@ -1,7 +1,7 @@ package mrtjp.projectred.transmission.data; import mrtjp.projectred.transmission.WireType; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.LanguageProvider; import static mrtjp.projectred.transmission.ProjectRedTransmission.MOD_ID; @@ -12,8 +12,8 @@ public class TransmissionLanguageProvider extends LanguageProvider { "White", "Orange", "Magenta", "Light Blue", "Yellow", "Lime", "Pink", "Gray", "Light Gray", "Cyan", "Purple", "Blue", "Brown", "Green", "Red", "Black" }; - public TransmissionLanguageProvider(DataGenerator gen) { - super(gen, MOD_ID, "en_us"); + public TransmissionLanguageProvider(PackOutput output) { + super(output, MOD_ID, "en_us"); } @Override diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionRecipeProvider.java b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionRecipeProvider.java index bfdc581b4..bc71407c4 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionRecipeProvider.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/data/TransmissionRecipeProvider.java @@ -4,7 +4,7 @@ import codechicken.lib.datagen.recipe.RecipeProvider; import codechicken.lib.util.CCLTags; import mrtjp.projectred.transmission.WireType; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; @@ -20,13 +20,8 @@ public class TransmissionRecipeProvider extends RecipeProvider { - public TransmissionRecipeProvider(DataGenerator generatorIn) { - super(generatorIn); - } - - @Override - public String getName() { - return "ProjectRed-Transmission: Recipes"; + public TransmissionRecipeProvider(PackOutput output) { + super(output, MOD_ID); } @Override diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/init/TransmissionClientInit.java b/transmission/src/main/java/mrtjp/projectred/transmission/init/TransmissionClientInit.java index 0a125df1b..b8b5cb8f1 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/init/TransmissionClientInit.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/init/TransmissionClientInit.java @@ -1,7 +1,6 @@ package mrtjp.projectred.transmission.init; import codechicken.lib.model.ModelRegistryHelper; -import codechicken.lib.texture.SpriteRegistryHelper; import codechicken.microblock.client.MicroMaterialClientRegistry; import codechicken.multipart.api.MultipartClientRegistry; import mrtjp.projectred.transmission.WireType; @@ -24,9 +23,8 @@ public static void init() { modEventBus.addListener(TransmissionClientInit::clientSetup); // Register sprites - SpriteRegistryHelper spriteHelper = new SpriteRegistryHelper(modEventBus); for (WireType type : WireType.values()) { - type.registerTextures(spriteHelper); + modEventBus.addListener(type::onTextureStitchEvent); } } diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/init/TransmissionCreativeModeTabs.java b/transmission/src/main/java/mrtjp/projectred/transmission/init/TransmissionCreativeModeTabs.java new file mode 100644 index 000000000..37cb55d49 --- /dev/null +++ b/transmission/src/main/java/mrtjp/projectred/transmission/init/TransmissionCreativeModeTabs.java @@ -0,0 +1,28 @@ +package mrtjp.projectred.transmission.init; + +import mrtjp.projectred.transmission.ProjectRedTransmission; +import mrtjp.projectred.transmission.WireType; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraftforge.registries.RegistryObject; + +@SuppressWarnings("NotNullFieldNotInitialized") +public class TransmissionCreativeModeTabs { + + public static RegistryObject TRANSMISSION_CREATIVE_TAB; + + public static void register() { + TRANSMISSION_CREATIVE_TAB = ProjectRedTransmission.CREATIVE_TABS.register("transmission", + () -> CreativeModeTab.builder() + .icon(WireType.RED_ALLOY::makeStack) + .title(Component.translatable("itemGroup." + ProjectRedTransmission.MOD_ID)) + .displayItems((params, output) -> { + + // Wires + for (WireType type : WireType.values()) { + output.accept(type.makeStack()); + } + }) + .build()); + } +} diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/item/CenterWirePartItem.java b/transmission/src/main/java/mrtjp/projectred/transmission/item/CenterWirePartItem.java index 8aa91f202..ed193a635 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/item/CenterWirePartItem.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/item/CenterWirePartItem.java @@ -3,7 +3,6 @@ import codechicken.multipart.api.ItemMultipart; import codechicken.multipart.api.part.MultiPart; import codechicken.multipart.util.MultipartPlaceContext; -import mrtjp.projectred.transmission.ProjectRedTransmission; import mrtjp.projectred.transmission.WireType; import mrtjp.projectred.transmission.part.BaseWirePart; import net.minecraft.core.Direction; @@ -14,7 +13,7 @@ public class CenterWirePartItem extends ItemMultipart { private final WireType type; public CenterWirePartItem(WireType type) { - super(new Item.Properties().tab(ProjectRedTransmission.TRANSMISSION_GROUP)); + super(new Item.Properties()); this.type = type; } diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/item/FaceWirePartItem.java b/transmission/src/main/java/mrtjp/projectred/transmission/item/FaceWirePartItem.java index c6171fb03..d4ee215e8 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/item/FaceWirePartItem.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/item/FaceWirePartItem.java @@ -4,7 +4,6 @@ import codechicken.multipart.api.part.MultiPart; import codechicken.multipart.util.MultipartPlaceContext; import mrtjp.projectred.core.PlacementLib; -import mrtjp.projectred.transmission.ProjectRedTransmission; import mrtjp.projectred.transmission.WireType; import mrtjp.projectred.transmission.part.BaseWirePart; import net.minecraft.core.BlockPos; @@ -16,7 +15,7 @@ public class FaceWirePartItem extends ItemMultipart { private final WireType type; public FaceWirePartItem(WireType type) { - super(new Item.Properties().tab(ProjectRedTransmission.TRANSMISSION_GROUP)); + super(new Item.Properties()); this.type = type; } diff --git a/transmission/src/main/resources/META-INF/mods.toml b/transmission/src/main/resources/META-INF/mods.toml index 8b8ccd93a..f180e321b 100644 --- a/transmission/src/main/resources/META-INF/mods.toml +++ b/transmission/src/main/resources/META-INF/mods.toml @@ -24,7 +24,7 @@ Redstone. The way it was meant to be. [[dependencies.projectred_transmission]] modId="minecraft" mandatory=true - versionRange="[1.19.2]" + versionRange="[1.20.1]" ordering="NONE" side="BOTH" [[dependencies.projectred_transmission]]