diff --git a/src/generated/resources/.cache/4d58d921702f57799841730d3d537abc5ea398a2 b/src/generated/resources/.cache/4d58d921702f57799841730d3d537abc5ea398a2 index 33ae072d..279134a3 100644 --- a/src/generated/resources/.cache/4d58d921702f57799841730d3d537abc5ea398a2 +++ b/src/generated/resources/.cache/4d58d921702f57799841730d3d537abc5ea398a2 @@ -1,4 +1,4 @@ -// 1.21.1 2024-12-15T19:07:20.8340143 Item Models: nautec +// 1.21.1 2024-12-15T22:05:05.897545572 Item Models: nautec 53692692f57914fc54eb6ebf416ce1cb7789e57b assets/nautec/models/item/air_bottle.json cc6ee3887ec6e0c53216dc681ac7b32b34182253 assets/nautec/models/item/anchor.json 2e336fce57acffa1d0eb621baa30a26f665b4924 assets/nautec/models/item/aquarine_steel_axe.json @@ -46,10 +46,10 @@ ed25e860594336997f83adfb9143324db4569abc assets/nautec/models/item/diving_boots. 8ab1faa99a5bfcc960d471854c6416ca0a1573e3 assets/nautec/models/item/diving_leggings.json c085f601646336ad76e9a613649bcffc3a304c9a assets/nautec/models/item/dolphin_fin.json 0620a4b87e92446ecf5521b595d2f1a6a9401529 assets/nautec/models/item/drowned_lungs.json -4d2bc30dbb5e9bca7902cfeafeb133ff4facbee8 assets/nautec/models/item/eas_bucket.json +61a7044af6e7a6c51552eb1abfa03e96aa677420 assets/nautec/models/item/eas_bucket.json 81b061a707ce97739bf742ee8c4832e9612c3f18 assets/nautec/models/item/eas_vial.json 7bdd896a173f2dbd2cf64ff41e82f6c5525dcf49 assets/nautec/models/item/eldritch_heart.json -d26c5a9588cd86145f6c2e03e5fd5eabc4ed0f07 assets/nautec/models/item/etching_acid_bucket.json +3e19378d1e8cd3808548edc4bbb93a4dfe4ade74 assets/nautec/models/item/etching_acid_bucket.json cb07777d8dcd1c00bea806efc2b7f64c6c13a8c3 assets/nautec/models/item/fishing_station.json 490588573d27c343b055c02b137c221a71866aa8 assets/nautec/models/item/gear.json 2b617afc38ea0b797aeba3ca00dfb25f33be4bd3 assets/nautec/models/item/glass_vial.json @@ -60,16 +60,18 @@ d30193c75aab5ff8f4d4945df8689f575874c0f0 assets/nautec/models/item/laser_channel e2a54f360d7c345a624bfd88678359ffce2af94d assets/nautec/models/item/long_distance_laser.json 2a5b3ee493a3b20a37c3f391ebd960de088f2b7c assets/nautec/models/item/mixer.json 420392d152f0164245752585ea3f0e85b95b0cce assets/nautec/models/item/mutator.json +da47351a6e7410de2b6761d4c90edf257d4620aa assets/nautec/models/item/oil_barrel.json +8664d92d6fab3566ac9169968450df573210f227 assets/nautec/models/item/oil_bucket.json c30b2391537fbc383c41aebe69a6eab8b2f9bd31 assets/nautec/models/item/petri_dish.json 888fbf8e3629b4cd0df267581ac130f534f80ac5 assets/nautec/models/item/petri_dish_bacteria.json e8d19ed0a058c92c28efb20a5f8887ff0b78770f assets/nautec/models/item/polished_prismarine.json +113d63fc1bd37fbe0fb477446a06eafa25ce09b1 assets/nautec/models/item/prism_monocle.json 8e22e42d27bc66bc91cc76fd66d0ff5457b585b1 assets/nautec/models/item/prismarine_crystal.json 8b90a03798a28c038b1c16da2f723e90694d182b assets/nautec/models/item/prismarine_crystal_shard.json 09882392c9745a728907f265dd968977ca0f171b assets/nautec/models/item/prismarine_laser_relay.json b01055cbe0dd02e958fe1063758658a9be6b753a assets/nautec/models/item/prismarine_sand.json e0209c5f64b38c19f4b8cc62dc90d23fd5f3bad0 assets/nautec/models/item/prismatic_battery.json -113d63fc1bd37fbe0fb477446a06eafa25ce09b1 assets/nautec/models/item/prism_monocle.json 0441fb5aafacad25af44cc70caad7de17d4d7762 assets/nautec/models/item/rusty_crate.json 546756658cb53a34f117de278d075cbdd09c70ba assets/nautec/models/item/rusty_gear.json -8af43812b6a13031c60720373e6e2aa8b3aa3367 assets/nautec/models/item/salt_water_bucket.json +e706cc4892f1d7f29d5b1940770668d233d0bf94 assets/nautec/models/item/saltwater_bucket.json 5d79cd8fb5d6550d2d8a61aa19dbf6f13ceecb72 assets/nautec/models/item/whisk.json diff --git a/src/generated/resources/.cache/76a19663e3d8e02fd582710c2facdc314b5575a1 b/src/generated/resources/.cache/76a19663e3d8e02fd582710c2facdc314b5575a1 index 124a8854..b6277f46 100644 --- a/src/generated/resources/.cache/76a19663e3d8e02fd582710c2facdc314b5575a1 +++ b/src/generated/resources/.cache/76a19663e3d8e02fd582710c2facdc314b5575a1 @@ -1,4 +1,4 @@ -// 1.21.1 2024-12-15T13:39:38.353720754 Block States: nautec +// 1.21.1 2024-12-15T22:34:29.540723671 Block States: nautec 3f3049296b6ec6590b05af441a717618bb232b69 assets/nautec/blockstates/aquarine_steel_block.json 414381329d7663eb1d1db8c3f42df8d9932d2cfe assets/nautec/blockstates/aquatic_catalyst.json 920d567f0ae8731bc428c8970aac5400741ea87d assets/nautec/blockstates/augmentation_station.json @@ -16,6 +16,7 @@ db6a852fb0c5f4ea3f9dc93c00de3525ae2c3c66 assets/nautec/blockstates/deep_sea_drai 7fd72e44fd8677c659e8b261fcaa92b12a845b78 assets/nautec/blockstates/laser_junction.json ad55c3b07839453f1153e1bb0eafcfd55cd2f9e1 assets/nautec/blockstates/long_distance_laser.json 64a25cd06f6d770e7408fbde89cfb1413550aeb5 assets/nautec/blockstates/mixer.json +2cff0fd603426a38baa3cc8123cace04d0d5adf1 assets/nautec/blockstates/oil_barrel.json bc5914e8ef7efce89c87e7320a64f1f02348ac6c assets/nautec/blockstates/polished_prismarine.json 60fb5b3f304282655d6b248eeea7e227ec8055bd assets/nautec/blockstates/prismarine_laser_relay.json 7930832874f271dd9739dd2fd92a54954d014df8 assets/nautec/blockstates/prismarine_sand.json @@ -57,6 +58,8 @@ bc44096b66b26bf80656c02a0e512fa19c975f52 assets/nautec/models/block/deep_sea_dra 0c5628852a14882a978590d77c2eb5db5947f6c9 assets/nautec/models/block/deep_sea_drain_part_8_open.json e7497701db027ba0deb6bc9e037e68ab2daac886 assets/nautec/models/block/deep_sea_drain_wall.json b37caee681c78c96ef2e66c6a0d4584a47d5b1e3 assets/nautec/models/block/long_distance_laser.json +27172c9baefa576bf8a79ccdc5b3b0ed3884af8b assets/nautec/models/block/oil_barrel.json +72d472aea78ba1bd9deec024c16a52c5ed241876 assets/nautec/models/block/oil_barrel_horizontal.json 670931d9593810682e11609b5c7ed2a908ef9b39 assets/nautec/models/block/polished_prismarine.json f5f0d62affc876c65918c16c43280cb89f629648 assets/nautec/models/block/prismarine_sand.json f0941592f6b903fd57c9c8b95ec434d91d1f69f2 assets/nautec/models/block/rusty_crate.json diff --git a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 708e15bc..302c48c0 100644 --- a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.21.1 2024-11-05T21:59:37.295948882 Recipes +// 1.21.1 2024-12-15T20:55:07.969230843 Recipes 11639f08778ec1107c05d822f9beaa1f90e3bb32 data/minecraft/advancement/recipes/misc/cast_iron_ingot_blasting.json 5f305b97f7366fc61918bd266d0bacfa386b16c1 data/minecraft/advancement/recipes/misc/cast_iron_nugget_to_ingot.json c01db9d69b288d37c769cf605b945ebf60a08e21 data/minecraft/advancement/recipes/misc/diving_chestplate.json @@ -90,9 +90,9 @@ a4bdb97abe0834d405f7584452f78242585e02ff data/nautec/recipe/item_transformation/ 3ff56013c9c1926be24f71bdb57c93527ef7ee28 data/nautec/recipe/laser_junction.json 11d23344db3f6e98c1520328fd6c883bccd8ca57 data/nautec/recipe/long_distance_laser.json 4925f952a200ae56a4e1ad04a45897be4988aad4 data/nautec/recipe/mixer.json -35a2d38352317596d0e56958db954ee65944fd30 data/nautec/recipe/mixing/dried_kelp_slime_ball_prismarine_crystals_seagrass.json -33cb8c2e11304d00aa38c66d64e202ca4230e924 data/nautec/recipe/mixing/pufferfish_gunpowder_bone_meal.json -e1a573744441ccee013b6f985c3872142911e29b data/nautec/recipe/mixing/raw_iron_prismarine_crystals_to_aquarine_steel_compound.json +9374bb4c1bb1a3e8eb1312ee701560a68be7d033 data/nautec/recipe/mixing/dried_kelp_slime_ball_prismarine_crystals_seagrass.json +b00568e1261638147c0e1f2433821bb6aa9f42b9 data/nautec/recipe/mixing/pufferfish_gunpowder_bone_meal.json +ac8c8ef9122a3e1312b101ce23af51ae019143e5 data/nautec/recipe/mixing/raw_iron_prismarine_crystals_to_aquarine_steel_compound.json 674df651148d747a200794f496996b82ca94e72f data/nautec/recipe/nautec_guide.json cd9bfbdf0f0468399cc4700d0c360b8283253c96 data/nautec/recipe/polished_prismarine.json 4fe8f6115c759c654e132afedec76d846f0a89d5 data/nautec/recipe/prism_monocle.json diff --git a/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index cf6d1bce..4f3bb2a9 100644 --- a/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.21.1 2024-12-15T19:56:36.865469462 Languages: en_us -2b776d2e529ff9f3da361d89a83dcc9c16fcd923 assets/nautec/lang/en_us.json +// 1.21.1 2024-12-15T20:55:07.97208459 Languages: en_us +02e2bf78f797075e71df78423d05779abc093c05 assets/nautec/lang/en_us.json diff --git a/src/generated/resources/.cache/eb748cc26e43de416ad491bd48ccca24d169a651 b/src/generated/resources/.cache/eb748cc26e43de416ad491bd48ccca24d169a651 index 358e6fce..86875391 100644 --- a/src/generated/resources/.cache/eb748cc26e43de416ad491bd48ccca24d169a651 +++ b/src/generated/resources/.cache/eb748cc26e43de416ad491bd48ccca24d169a651 @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-30T17:58:20.5863696 Books: nautec +// 1.21.1 2024-12-15T20:55:07.9620151 Books: nautec 6d944fd1b3f4f8d8baf18317dbdea1e50476ed05 data/nautec/modonomicon/books/nautec_guide/book.json ea5fe754ad19a1903e7a9d19f39e3b1488e59cfe data/nautec/modonomicon/books/nautec_guide/categories/getting_started.json 41b01f32b9f23cf1eb5a33085b98bd30f0a1f943 data/nautec/modonomicon/books/nautec_guide/categories/laser_augmentation.json @@ -19,7 +19,7 @@ a46ba5de3d71172e50fe191f2d6ef51327d7f188 data/nautec/modonomicon/books/nautec_gu 513198812cfe6695951eb9e1f60fd3fcf8d36ee6 data/nautec/modonomicon/books/nautec_guide/entries/laser_augmentation/long_distance_laser.json c03c7b650f9ea70b95dcb4465e44d1abaa28d838 data/nautec/modonomicon/books/nautec_guide/entries/laser_augmentation/mob_augments.json d70be2eaf9729ca163499da6d7a33730cf7e07f2 data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/charger.json -86bf0538af8e99ca0d8477c0c301c0a7938dea44 data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/chemistry_introduction.json +bb25a50ac33f339011a5a153e21eff93381ae8b5 data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/chemistry_introduction.json 36ffcf02fad4cee8ac0db723f1c03bc2df14049e data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/crystal_shards.json 34c421cb513a6d5ac4631180a2bbd14aa09d021a data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/drain.json a7779a4159c603668355d3064d5bf7b4560a3490 data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/laser_manipulation.json diff --git a/src/generated/resources/assets/nautec/lang/en_us.json b/src/generated/resources/assets/nautec/lang/en_us.json index 5cf368e4..0bae53a8 100644 --- a/src/generated/resources/assets/nautec/lang/en_us.json +++ b/src/generated/resources/assets/nautec/lang/en_us.json @@ -151,9 +151,9 @@ "book.nautec.nautec_guide.tooltip": "Nautec Guide Tooltip", "curios.identifier.battery": "Battery", "curios.identifier.prism_monocle": "Monocle", - "fluid_type.nautec.electrolyte_algae_serum": "Electrolyte Algae Serum", + "fluid_type.nautec.eas": "Electrolyte Algae Serum", "fluid_type.nautec.etching_acid": "Etching Acid", - "fluid_type.nautec.soap_water": "Salt Water", + "fluid_type.nautec.saltwater": "Salt Water", "item.nautec.air_bottle": "Pressurized Air Bottle", "item.nautec.ancient_valve": "Ancient Valve", "item.nautec.aquarine_steel_axe": "Aquarine Steel Axe", @@ -198,7 +198,7 @@ "item.nautec.prismarine_crystal_shard": "Prismarine Crystal Shard", "item.nautec.prismatic_battery": "Prismatic Battery", "item.nautec.rusty_gear": "Rusty Gear", - "item.nautec.salt_water_bucket": "Salt Water Bucket", + "item.nautec.saltwater_bucket": "Salt Water Bucket", "item.nautec.syringe_robot_arm": "Syringe Robot Arm", "item.nautec.valve": "Valve", "item.nautec.whisk": "Whisk", diff --git a/src/generated/resources/assets/nautec/models/item/eas_bucket.json b/src/generated/resources/assets/nautec/models/item/eas_bucket.json index 9736e31c..16c3d97c 100644 --- a/src/generated/resources/assets/nautec/models/item/eas_bucket.json +++ b/src/generated/resources/assets/nautec/models/item/eas_bucket.json @@ -1,6 +1,5 @@ { - "parent": "minecraft:item/generated", - "textures": { - "layer0": "nautec:item/eas_bucket" - } + "parent": "neoforge:item/bucket", + "fluid": "nautec:eas", + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nautec/models/item/etching_acid_bucket.json b/src/generated/resources/assets/nautec/models/item/etching_acid_bucket.json index 44234ba2..be5358b3 100644 --- a/src/generated/resources/assets/nautec/models/item/etching_acid_bucket.json +++ b/src/generated/resources/assets/nautec/models/item/etching_acid_bucket.json @@ -1,6 +1,5 @@ { - "parent": "minecraft:item/generated", - "textures": { - "layer0": "nautec:item/etching_acid_bucket" - } + "parent": "neoforge:item/bucket", + "fluid": "nautec:etching_acid", + "loader": "neoforge:fluid_container" } \ No newline at end of file diff --git a/src/generated/resources/assets/nautec/models/item/salt_water_bucket.json b/src/generated/resources/assets/nautec/models/item/salt_water_bucket.json deleted file mode 100644 index 9dfdefa1..00000000 --- a/src/generated/resources/assets/nautec/models/item/salt_water_bucket.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "nautec:item/salt_water_bucket" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/chemistry_introduction.json b/src/generated/resources/data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/chemistry_introduction.json index fe97d076..9f6d6db7 100644 --- a/src/generated/resources/data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/chemistry_introduction.json +++ b/src/generated/resources/data/nautec/modonomicon/books/nautec_guide/entries/laser_chemistry/chemistry_introduction.json @@ -39,7 +39,7 @@ "type": "modonomicon:none" }, "item": { - "item": "nautec:salt_water_bucket" + "item": "nautec:saltwater_bucket" }, "text": "book.nautec.nautec_guide.laser_chemistry.chemistry_introduction.salt_water.text", "title": "book.nautec.nautec_guide.laser_chemistry.chemistry_introduction.salt_water.title" diff --git a/src/generated/resources/data/nautec/recipe/mixing/dried_kelp_slime_ball_prismarine_crystals_seagrass.json b/src/generated/resources/data/nautec/recipe/mixing/dried_kelp_slime_ball_prismarine_crystals_seagrass.json index 0173fd56..e124b24c 100644 --- a/src/generated/resources/data/nautec/recipe/mixing/dried_kelp_slime_ball_prismarine_crystals_seagrass.json +++ b/src/generated/resources/data/nautec/recipe/mixing/dried_kelp_slime_ball_prismarine_crystals_seagrass.json @@ -3,11 +3,11 @@ "duration": 200, "fluid_ingredient": { "amount": 1000, - "id": "nautec:salt_water" + "id": "nautec:saltwater" }, "fluid_result": { "amount": 1000, - "id": "nautec:electrolyte_algae_serum" + "id": "nautec:eas" }, "ingredients": [ { diff --git a/src/generated/resources/data/nautec/recipe/mixing/pufferfish_gunpowder_bone_meal.json b/src/generated/resources/data/nautec/recipe/mixing/pufferfish_gunpowder_bone_meal.json index 59a31ed1..1d3819f2 100644 --- a/src/generated/resources/data/nautec/recipe/mixing/pufferfish_gunpowder_bone_meal.json +++ b/src/generated/resources/data/nautec/recipe/mixing/pufferfish_gunpowder_bone_meal.json @@ -3,7 +3,7 @@ "duration": 150, "fluid_ingredient": { "amount": 1000, - "id": "nautec:salt_water" + "id": "nautec:saltwater" }, "fluid_result": { "amount": 1000, diff --git a/src/generated/resources/data/nautec/recipe/mixing/raw_iron_prismarine_crystals_to_aquarine_steel_compound.json b/src/generated/resources/data/nautec/recipe/mixing/raw_iron_prismarine_crystals_to_aquarine_steel_compound.json index d3e9029e..0a8730c6 100644 --- a/src/generated/resources/data/nautec/recipe/mixing/raw_iron_prismarine_crystals_to_aquarine_steel_compound.json +++ b/src/generated/resources/data/nautec/recipe/mixing/raw_iron_prismarine_crystals_to_aquarine_steel_compound.json @@ -3,7 +3,7 @@ "duration": 100, "fluid_ingredient": { "amount": 1000, - "id": "nautec:salt_water" + "id": "nautec:saltwater" }, "fluid_result": {}, "ingredients": [ diff --git a/src/main/java/com/portingdeadmods/nautec/Nautec.java b/src/main/java/com/portingdeadmods/nautec/Nautec.java index 30ccbd5d..6198525e 100644 --- a/src/main/java/com/portingdeadmods/nautec/Nautec.java +++ b/src/main/java/com/portingdeadmods/nautec/Nautec.java @@ -67,10 +67,8 @@ public Nautec(IEventBus modEventBus, ModContainer modContainer) { NTEntities.ENTITIES.register(modEventBus); NTItems.ITEMS.register(modEventBus); - NTFluids.FLUIDS.register(modEventBus); NTBlocks.BLOCKS.register(modEventBus); NTRecipes.SERIALIZERS.register(modEventBus); - NTFluidTypes.FLUID_TYPES.register(modEventBus); NTDataAttachments.ATTACHMENTS.register(modEventBus); NTArgumentTypes.ARGUMENT_TYPES.register(modEventBus); NTBlockEntityTypes.BLOCK_ENTITIES.register(modEventBus); @@ -85,6 +83,8 @@ public Nautec(IEventBus modEventBus, ModContainer modContainer) { NTLootModifier.LOOT_MODIFIERS.register(modEventBus); NTBacteriaSerializers.SERIALIZERS.register(modEventBus); + NTFluids.HELPER.register(modEventBus); + modEventBus.addListener(this::onRegisterAugments); modEventBus.addListener(this::registerCapabilities); diff --git a/src/main/java/com/portingdeadmods/nautec/NautecClient.java b/src/main/java/com/portingdeadmods/nautec/NautecClient.java index bee8875c..b38c029b 100644 --- a/src/main/java/com/portingdeadmods/nautec/NautecClient.java +++ b/src/main/java/com/portingdeadmods/nautec/NautecClient.java @@ -66,6 +66,7 @@ import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent; import net.neoforged.neoforge.client.gui.ConfigurationScreen; import net.neoforged.neoforge.client.gui.IConfigScreenFactory; +import net.neoforged.neoforge.client.model.DynamicFluidContainerModel; import net.neoforged.neoforge.fluids.FluidType; import net.neoforged.neoforge.fluids.capability.templates.FluidHandlerItemStack; import net.neoforged.neoforge.registries.DeferredHolder; @@ -242,5 +243,6 @@ private void registerColorHandlers(RegisterColorHandlersEvent.Item event) { Bacteria bacteria = BacteriaHelper.getBacteria(Minecraft.getInstance().level.registryAccess(), stack.get(NTDataComponents.BACTERIA).bacteria()); return layer == 1 ? bacteria.stats().color() : -1; }, NTItems.PETRI_DISH); + event.register(new DynamicFluidContainerModel.Colors(), NTFluids.SALT_WATER.getBucket()); } -} \ No newline at end of file +} diff --git a/src/main/java/com/portingdeadmods/nautec/api/bacteria/Bacteria.java b/src/main/java/com/portingdeadmods/nautec/api/bacteria/Bacteria.java index 2e6ccfbd..e749d8f7 100644 --- a/src/main/java/com/portingdeadmods/nautec/api/bacteria/Bacteria.java +++ b/src/main/java/com/portingdeadmods/nautec/api/bacteria/Bacteria.java @@ -26,7 +26,7 @@ public interface Bacteria { */ ResourceLocation id(); - BacteriaStats stats(); + BaseBacteriaStats stats(); BacteriaSerializer<?> getSerializer(); } diff --git a/src/main/java/com/portingdeadmods/nautec/api/bacteria/BaseBacteriaStats.java b/src/main/java/com/portingdeadmods/nautec/api/bacteria/BaseBacteriaStats.java new file mode 100644 index 00000000..61656786 --- /dev/null +++ b/src/main/java/com/portingdeadmods/nautec/api/bacteria/BaseBacteriaStats.java @@ -0,0 +1,17 @@ +package com.portingdeadmods.nautec.api.bacteria; + +import net.minecraft.world.item.Item; + +public interface BaseBacteriaStats { + Item resource(); + + float growthRate(); + + float mutationResistance(); + + float productionRate(); + + int lifespan(); + + int color(); +} diff --git a/src/main/java/com/portingdeadmods/nautec/api/fluids/FluidTemplate.java b/src/main/java/com/portingdeadmods/nautec/api/fluids/FluidTemplate.java new file mode 100644 index 00000000..0a266bb0 --- /dev/null +++ b/src/main/java/com/portingdeadmods/nautec/api/fluids/FluidTemplate.java @@ -0,0 +1,11 @@ +package com.portingdeadmods.nautec.api.fluids; + +import net.minecraft.resources.ResourceLocation; + +public interface FluidTemplate { + ResourceLocation getStillTexture(); + + ResourceLocation getFlowingTexture(); + + ResourceLocation getOverlayTexture(); +} diff --git a/src/main/java/com/portingdeadmods/nautec/api/fluids/NTFluid.java b/src/main/java/com/portingdeadmods/nautec/api/fluids/NTFluid.java new file mode 100644 index 00000000..25ef6e6a --- /dev/null +++ b/src/main/java/com/portingdeadmods/nautec/api/fluids/NTFluid.java @@ -0,0 +1,71 @@ +package com.portingdeadmods.nautec.api.fluids; +import net.minecraft.core.Vec3i; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.neoforged.neoforge.fluids.BaseFlowingFluid; +import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.neoforge.registries.DeferredItem; +import org.joml.Vector4i; + +import java.util.function.Supplier; + +public abstract class NTFluid { + public Supplier<BaseFlowingFluid.Source> stillFluid; + public Supplier<BaseFlowingFluid.Flowing> flowingFluid; + + public Supplier<FluidType> fluidType; + + public Supplier<LiquidBlock> block; + public Supplier<BucketItem> bucket; + public DeferredItem<BucketItem> deferredBucket; + + protected BaseFlowingFluid.Properties properties; + + protected final String name; + + public NTFluid(String name) { + this.stillFluid = () -> new BaseFlowingFluid.Source(fluidProperties()); + this.flowingFluid = () -> new BaseFlowingFluid.Flowing(fluidProperties()); + this.name = name; + } + + public BlockBehaviour.Properties blockProperties() { + return BlockBehaviour.Properties.of(); + } + + public BaseFlowingFluid.Properties fluidProperties() { + return new BaseFlowingFluid.Properties(fluidType, stillFluid, flowingFluid); + } + + public BaseFlowingFluid.Source getStillFluid() { + return stillFluid.get(); + } + + public BaseFlowingFluid.Flowing getFlowingFluid() { + return flowingFluid.get(); + } + + public Supplier<FluidType> getFluidType() { + return fluidType; + } + + public Item getBucket() { + return getDeferredBucket().get(); + } + + public DeferredItem<BucketItem> getDeferredBucket() { + return deferredBucket; + } + + public String getName() { + return name; + } + + public Supplier<FluidType> registerFluidType(FluidType.Properties properties, Vector4i color, FluidTemplate template) { + return () -> new BaseFluidType(template.getStillTexture(), template.getFlowingTexture(), template.getOverlayTexture(), color, properties); + } +} + diff --git a/src/main/java/com/portingdeadmods/nautec/api/multiblocks/Multiblock.java b/src/main/java/com/portingdeadmods/nautec/api/multiblocks/Multiblock.java index d8baa288..ee4f09e7 100644 --- a/src/main/java/com/portingdeadmods/nautec/api/multiblocks/Multiblock.java +++ b/src/main/java/com/portingdeadmods/nautec/api/multiblocks/Multiblock.java @@ -87,8 +87,8 @@ public interface Multiblock { Int2ObjectMap<Block> getDefinition(); /** - * This method provides the block entity type for the controller of your multiblock. - * @return the blockentity type of your controllers blockentity + * This method provides the block entity resource for the controller of your multiblock. + * @return the blockentity resource of your controllers blockentity */ BlockEntityType<? extends MultiblockEntity> getMultiBlockEntityType(); diff --git a/src/main/java/com/portingdeadmods/nautec/client/hud/DivingSuitOverlay.java b/src/main/java/com/portingdeadmods/nautec/client/hud/DivingSuitOverlay.java index ef4d4deb..ebeb15ab 100644 --- a/src/main/java/com/portingdeadmods/nautec/client/hud/DivingSuitOverlay.java +++ b/src/main/java/com/portingdeadmods/nautec/client/hud/DivingSuitOverlay.java @@ -3,19 +3,15 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.portingdeadmods.nautec.Nautec; import com.portingdeadmods.nautec.data.NTDataComponentsUtils; -import com.portingdeadmods.nautec.registries.NTFluidTypes; import com.portingdeadmods.nautec.registries.NTItems; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.FluidTags; import net.minecraft.util.Mth; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.material.Fluids; -import net.neoforged.neoforge.fluids.FluidType; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/com/portingdeadmods/nautec/client/renderer/blockentities/FishingStationBERenderer.java b/src/main/java/com/portingdeadmods/nautec/client/renderer/blockentities/FishingStationBERenderer.java index 7c7b08cc..1e5e2bc7 100644 --- a/src/main/java/com/portingdeadmods/nautec/client/renderer/blockentities/FishingStationBERenderer.java +++ b/src/main/java/com/portingdeadmods/nautec/client/renderer/blockentities/FishingStationBERenderer.java @@ -19,17 +19,13 @@ public FishingStationBERenderer(BlockEntityRendererProvider.Context ctx) { this.model.setupAnim(); } - private int getLightLevel(Level level, BlockPos pos) { - return LevelRenderer.getLightColor(level, pos); - } - @Override public void render(FishingStationBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { poseStack.pushPose(); { poseStack.translate(0.5, 0.5, 0.5); poseStack.translate(1.75, -0.125, 0); - this.model.renderToBuffer(poseStack, FishingNetModel.MATERIAL.buffer(bufferSource, RenderType::entityCutout), getLightLevel(blockEntity.getLevel(), blockEntity.getBlockPos().above()), packedOverlay); + this.model.renderToBuffer(poseStack, FishingNetModel.MATERIAL.buffer(bufferSource, RenderType::entityCutout), packedLight, packedOverlay); } poseStack.popPose(); } diff --git a/src/main/java/com/portingdeadmods/nautec/compat/jei/NTJeiPlugin.java b/src/main/java/com/portingdeadmods/nautec/compat/jei/NTJeiPlugin.java index 8b73c2b7..cbcff7ee 100644 --- a/src/main/java/com/portingdeadmods/nautec/compat/jei/NTJeiPlugin.java +++ b/src/main/java/com/portingdeadmods/nautec/compat/jei/NTJeiPlugin.java @@ -5,6 +5,7 @@ import com.portingdeadmods.nautec.content.recipes.*; import com.portingdeadmods.nautec.datagen.recipeBuilder.AugmentationRecipeBuilder; import com.portingdeadmods.nautec.registries.NTBlocks; +import com.portingdeadmods.nautec.registries.NTFluids; import com.portingdeadmods.nautec.registries.NTItems; import mezz.jei.api.IModPlugin; import mezz.jei.api.JeiPlugin; @@ -93,7 +94,7 @@ public void registerRecipes(IRecipeRegistration registration) { public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { registration.addRecipeCatalyst(new ItemStack(NTBlocks.AQUATIC_CATALYST.get()), AquaticCatalystChannelingRecipeCategory.RECIPE_TYPE); - registration.addRecipeCatalyst(new ItemStack(NTItems.ETCHING_ACID_BUCKET.get()), + registration.addRecipeCatalyst(new ItemStack(NTFluids.ETCHING_ACID.getBucket()), ItemEtchingRecipeCategory.RECIPE_TYPE); registration.addRecipeCatalyst(new ItemStack(NTBlocks.MIXER.get()), MixingRecipeCategory.RECIPE_TYPE); diff --git a/src/main/java/com/portingdeadmods/nautec/compat/jei/categories/ItemEtchingRecipeCategory.java b/src/main/java/com/portingdeadmods/nautec/compat/jei/categories/ItemEtchingRecipeCategory.java index 58ecbaee..8cb17040 100644 --- a/src/main/java/com/portingdeadmods/nautec/compat/jei/categories/ItemEtchingRecipeCategory.java +++ b/src/main/java/com/portingdeadmods/nautec/compat/jei/categories/ItemEtchingRecipeCategory.java @@ -1,7 +1,9 @@ package com.portingdeadmods.nautec.compat.jei.categories; import com.portingdeadmods.nautec.Nautec; +import com.portingdeadmods.nautec.api.fluids.NTFluid; import com.portingdeadmods.nautec.content.recipes.ItemEtchingRecipe; +import com.portingdeadmods.nautec.registries.NTFluids; import com.portingdeadmods.nautec.registries.NTItems; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; @@ -32,7 +34,7 @@ public class ItemEtchingRecipeCategory implements IRecipeCategory<ItemEtchingRec public ItemEtchingRecipeCategory(IGuiHelper helper) { this.background = helper.createBlankDrawable(80, 28); - this.icon = helper.createDrawableIngredient(VanillaTypes.ITEM_STACK, new ItemStack(NTItems.ETCHING_ACID_BUCKET.get())); + this.icon = helper.createDrawableIngredient(VanillaTypes.ITEM_STACK, new ItemStack(NTFluids.ETCHING_ACID.getBucket())); } @Override diff --git a/src/main/java/com/portingdeadmods/nautec/compat/modonomicon/datagen/book/nautec_guide/laser_chemistry/ChemistryIntroductionEntry.java b/src/main/java/com/portingdeadmods/nautec/compat/modonomicon/datagen/book/nautec_guide/laser_chemistry/ChemistryIntroductionEntry.java index 213d20e9..d108517e 100644 --- a/src/main/java/com/portingdeadmods/nautec/compat/modonomicon/datagen/book/nautec_guide/laser_chemistry/ChemistryIntroductionEntry.java +++ b/src/main/java/com/portingdeadmods/nautec/compat/modonomicon/datagen/book/nautec_guide/laser_chemistry/ChemistryIntroductionEntry.java @@ -7,6 +7,7 @@ import com.klikli_dev.modonomicon.api.datagen.book.page.BookSpotlightPageModel; import com.klikli_dev.modonomicon.api.datagen.book.page.BookTextPageModel; import com.mojang.datafixers.util.Pair; +import com.portingdeadmods.nautec.registries.NTFluids; import com.portingdeadmods.nautec.registries.NTItems; public class ChemistryIntroductionEntry extends EntryProvider { @@ -34,7 +35,7 @@ protected void generatePages() { """); this.page("eas", () -> BookSpotlightPageModel.create() .withTitle(this.context().pageTitle()) - .withItem(NTItems.EAS_BUCKET.get()) + .withItem(NTFluids.EAS.getBucket()) .withText(this.context().pageText())); this.pageTitle("Electrolyte Algae Serum"); this.pageText(""" @@ -46,7 +47,7 @@ Electrolyte Algae Serum (EAS) is one of the first chemicals this.page("salt_water", () -> BookSpotlightPageModel.create() .withTitle(this.context().pageTitle()) - .withItem(NTItems.SALT_WATER_BUCKET.get()) + .withItem(NTFluids.SALT_WATER.getBucket()) .withText(this.context().pageText())); this.pageTitle("Salt Water"); this.pageText(""" @@ -75,7 +76,7 @@ protected Pair<Integer, Integer> entryBackground() { @Override protected BookIconModel entryIcon() { - return BookIconModel.create(NTItems.EAS_BUCKET.get()); + return BookIconModel.create(NTFluids.EAS.getBucket()); } @Override diff --git a/src/main/java/com/portingdeadmods/nautec/content/bacteria/BacteriaStats.java b/src/main/java/com/portingdeadmods/nautec/content/bacteria/BacteriaStats.java index 766cd44d..31fe54e3 100644 --- a/src/main/java/com/portingdeadmods/nautec/content/bacteria/BacteriaStats.java +++ b/src/main/java/com/portingdeadmods/nautec/content/bacteria/BacteriaStats.java @@ -2,21 +2,22 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import com.portingdeadmods.nautec.api.bacteria.BaseBacteriaStats; import com.portingdeadmods.nautec.utils.codec.CodecUtils; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.item.Item; -public record BacteriaStats(Item type, +public record BacteriaStats(Item resource, float growthRate, float mutationResistance, float productionRate, int lifespan, - int color) { + int color) implements BaseBacteriaStats { public static final Codec<BacteriaStats> CODEC = RecordCodecBuilder.create( instance -> instance.group( - CodecUtils.ITEM_CODEC.fieldOf("type").forGetter(BacteriaStats::type), + CodecUtils.ITEM_CODEC.fieldOf("type").forGetter(BacteriaStats::resource), Codec.FLOAT.fieldOf("growth_rate").forGetter(BacteriaStats::growthRate), Codec.FLOAT.fieldOf("mutation_resistance").forGetter(BacteriaStats::mutationResistance), Codec.FLOAT.fieldOf("production_rate").forGetter(BacteriaStats::productionRate), @@ -27,7 +28,7 @@ public record BacteriaStats(Item type, public static final StreamCodec<RegistryFriendlyByteBuf, BacteriaStats> STREAM_CODEC = StreamCodec.composite( CodecUtils.ITEM_STREAM_CODEC, - BacteriaStats::type, + BacteriaStats::resource, ByteBufCodecs.FLOAT, BacteriaStats::growthRate, ByteBufCodecs.FLOAT, diff --git a/src/main/java/com/portingdeadmods/nautec/content/blockentities/multiblock/controller/DrainBlockEntity.java b/src/main/java/com/portingdeadmods/nautec/content/blockentities/multiblock/controller/DrainBlockEntity.java index ec874971..d9ce4ed0 100644 --- a/src/main/java/com/portingdeadmods/nautec/content/blockentities/multiblock/controller/DrainBlockEntity.java +++ b/src/main/java/com/portingdeadmods/nautec/content/blockentities/multiblock/controller/DrainBlockEntity.java @@ -134,7 +134,7 @@ private void performDraining() { if (hasWater()) { if (openAndFormed()) { if (level.getBiome(worldPosition).is(BiomeTags.IS_OCEAN)) { - getFluidHandler().fill(new FluidStack(NTFluids.SALT_WATER_SOURCE.get(), NTConfig.drainSaltWaterAmount), IFluidHandler.FluidAction.EXECUTE); + getFluidHandler().fill(new FluidStack(NTFluids.SALT_WATER.getStillFluid(), NTConfig.drainSaltWaterAmount), IFluidHandler.FluidAction.EXECUTE); } } } diff --git a/src/main/java/com/portingdeadmods/nautec/content/blocks/FishingStationBlock.java b/src/main/java/com/portingdeadmods/nautec/content/blocks/FishingStationBlock.java index d378d0cd..9828c199 100644 --- a/src/main/java/com/portingdeadmods/nautec/content/blocks/FishingStationBlock.java +++ b/src/main/java/com/portingdeadmods/nautec/content/blocks/FishingStationBlock.java @@ -4,14 +4,34 @@ import com.portingdeadmods.nautec.api.blockentities.ContainerBlockEntity; import com.portingdeadmods.nautec.api.blocks.blockentities.LaserBlock; import com.portingdeadmods.nautec.registries.NTBlockEntityTypes; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.stream.Stream; public class FishingStationBlock extends LaserBlock { + public static final VoxelShape SHAPE = Stream.of( + Block.box(0, 10, 0, 16, 16, 16), + Block.box(4, 6, 4, 12, 10, 12), + Block.box(0, 0, 0, 16, 6, 16) + ).reduce(Shapes::or).get(); + public FishingStationBlock(Properties properties) { super(properties); } + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + @Override public BlockEntityType<? extends ContainerBlockEntity> getBlockEntityType() { return NTBlockEntityTypes.FISHING_STATION.get(); diff --git a/src/main/java/com/portingdeadmods/nautec/content/commands/arguments/AugmentTypeArgumentType.java b/src/main/java/com/portingdeadmods/nautec/content/commands/arguments/AugmentTypeArgumentType.java index 7ec38e5c..aa4a0a4b 100644 --- a/src/main/java/com/portingdeadmods/nautec/content/commands/arguments/AugmentTypeArgumentType.java +++ b/src/main/java/com/portingdeadmods/nautec/content/commands/arguments/AugmentTypeArgumentType.java @@ -21,7 +21,7 @@ public class AugmentTypeArgumentType implements ArgumentType<AugmentType<?>> { private static final AugmentTypeArgumentType INSTANCE = new AugmentTypeArgumentType(); private static final DynamicCommandExceptionType UNKNOWN_TYPE = new DynamicCommandExceptionType( - type -> Component.literal("Unknown augment type: " + type)); + type -> Component.literal("Unknown augment resource: " + type)); public static Set<String> suggestions = new HashSet<>(); private AugmentTypeArgumentType() { diff --git a/src/main/java/com/portingdeadmods/nautec/content/fluids/EASFluid.java b/src/main/java/com/portingdeadmods/nautec/content/fluids/EASFluid.java new file mode 100644 index 00000000..740b6cb7 --- /dev/null +++ b/src/main/java/com/portingdeadmods/nautec/content/fluids/EASFluid.java @@ -0,0 +1,25 @@ +package com.portingdeadmods.nautec.content.fluids; + +import com.portingdeadmods.nautec.api.fluids.NTFluid; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.neoforged.neoforge.fluids.BaseFlowingFluid; +import net.neoforged.neoforge.fluids.FluidType; +import org.joml.Vector4i; + +public class EASFluid extends NTFluid { + public EASFluid(String name) { + super(name); + this.fluidType = registerFluidType(FluidType.Properties.create(), new Vector4i(255, 255, 255, 255), FluidTemplates.EAS); + } + + @Override + public BaseFlowingFluid.Properties fluidProperties() { + return super.fluidProperties().block(this.block).bucket(this.deferredBucket); + } + + @Override + public BlockBehaviour.Properties blockProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.WATER); + } +} diff --git a/src/main/java/com/portingdeadmods/nautec/content/fluids/EtchingAcidFluid.java b/src/main/java/com/portingdeadmods/nautec/content/fluids/EtchingAcidFluid.java new file mode 100644 index 00000000..089d193d --- /dev/null +++ b/src/main/java/com/portingdeadmods/nautec/content/fluids/EtchingAcidFluid.java @@ -0,0 +1,25 @@ +package com.portingdeadmods.nautec.content.fluids; + +import com.portingdeadmods.nautec.api.fluids.NTFluid; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.neoforged.neoforge.fluids.BaseFlowingFluid; +import net.neoforged.neoforge.fluids.FluidType; +import org.joml.Vector4i; + +public class EtchingAcidFluid extends NTFluid { + public EtchingAcidFluid(String name) { + super(name); + this.fluidType = registerFluidType(FluidType.Properties.create(), new Vector4i(255, 255, 255, 255), FluidTemplates.ETCHING_ACID); + } + + @Override + public BaseFlowingFluid.Properties fluidProperties() { + return super.fluidProperties().block(this.block).bucket(this.deferredBucket); + } + + @Override + public BlockBehaviour.Properties blockProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.LAVA); + } +} diff --git a/src/main/java/com/portingdeadmods/nautec/content/fluids/FluidTemplates.java b/src/main/java/com/portingdeadmods/nautec/content/fluids/FluidTemplates.java new file mode 100644 index 00000000..d9c59af9 --- /dev/null +++ b/src/main/java/com/portingdeadmods/nautec/content/fluids/FluidTemplates.java @@ -0,0 +1,52 @@ +package com.portingdeadmods.nautec.content.fluids; + +import com.portingdeadmods.nautec.Nautec; +import com.portingdeadmods.nautec.api.fluids.FluidTemplate; +import net.minecraft.resources.ResourceLocation; + +public enum FluidTemplates implements FluidTemplate { + MOLTEN_METAL(ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "fluid/molten_fluid_still"), + ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "fluid/molten_fluid_flow"), + ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "fluid/molten_fluid_overlay")), + OIL(ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "fluid/oil_fluid_still"), + ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "fluid/oil_fluid_flow"), + ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "fluid/oil_overlay")), + EAS(modFluidTexture("eas_fluid"), + modFluidTexture("eas_fluid"), + ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "misc/in_water")), + ETCHING_ACID(modFluidTexture("etching_acid"), + modFluidTexture("etching_acid"), + ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "misc/in_water")), + WATER(ResourceLocation.parse("block/water_still"), + ResourceLocation.parse("block/water_flow"), + ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "misc/in_soap_water")); + + private final ResourceLocation still; + private final ResourceLocation flowing; + private final ResourceLocation overlay; + + FluidTemplates(ResourceLocation still, ResourceLocation flowing, ResourceLocation overlay) { + this.still = still; + this.flowing = flowing; + this.overlay = overlay; + } + + @Override + public ResourceLocation getStillTexture() { + return still; + } + + @Override + public ResourceLocation getFlowingTexture() { + return flowing; + } + + @Override + public ResourceLocation getOverlayTexture() { + return overlay; + } + + private static ResourceLocation modFluidTexture(String name) { + return ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "fluid/" + name); + } +} \ No newline at end of file diff --git a/src/main/java/com/portingdeadmods/nautec/content/fluids/OilFluid.java b/src/main/java/com/portingdeadmods/nautec/content/fluids/OilFluid.java new file mode 100644 index 00000000..dfdd936f --- /dev/null +++ b/src/main/java/com/portingdeadmods/nautec/content/fluids/OilFluid.java @@ -0,0 +1,25 @@ +package com.portingdeadmods.nautec.content.fluids; + +import com.portingdeadmods.nautec.api.fluids.NTFluid; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.neoforged.neoforge.fluids.BaseFlowingFluid; +import net.neoforged.neoforge.fluids.FluidType; +import org.joml.Vector4i; + +public class OilFluid extends NTFluid { + public OilFluid(String name) { + super(name); + this.fluidType = registerFluidType(FluidType.Properties.create(), new Vector4i(255, 255, 255, 255), FluidTemplates.OIL); + } + + @Override + public BaseFlowingFluid.Properties fluidProperties() { + return super.fluidProperties().block(this.block).bucket(this.deferredBucket); + } + + @Override + public BlockBehaviour.Properties blockProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.LAVA); + } +} \ No newline at end of file diff --git a/src/main/java/com/portingdeadmods/nautec/content/fluids/SaltWaterFluid.java b/src/main/java/com/portingdeadmods/nautec/content/fluids/SaltWaterFluid.java new file mode 100644 index 00000000..0cbfb468 --- /dev/null +++ b/src/main/java/com/portingdeadmods/nautec/content/fluids/SaltWaterFluid.java @@ -0,0 +1,25 @@ +package com.portingdeadmods.nautec.content.fluids; + +import com.portingdeadmods.nautec.api.fluids.NTFluid; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.neoforged.neoforge.fluids.BaseFlowingFluid; +import net.neoforged.neoforge.fluids.FluidType; +import org.joml.Vector4i; + +public class SaltWaterFluid extends NTFluid { + public SaltWaterFluid(String name) { + super(name); + this.fluidType = registerFluidType(FluidType.Properties.create(), new Vector4i(174, 227, 227, 176), FluidTemplates.WATER); + } + + @Override + public BaseFlowingFluid.Properties fluidProperties() { + return super.fluidProperties().block(this.block).bucket(this.deferredBucket); + } + + @Override + public BlockBehaviour.Properties blockProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.WATER); + } +} diff --git a/src/main/java/com/portingdeadmods/nautec/datagen/BlockModelProvider.java b/src/main/java/com/portingdeadmods/nautec/datagen/BlockModelProvider.java index 751d7c30..5a24d082 100644 --- a/src/main/java/com/portingdeadmods/nautec/datagen/BlockModelProvider.java +++ b/src/main/java/com/portingdeadmods/nautec/datagen/BlockModelProvider.java @@ -62,6 +62,18 @@ protected void registerStatesAndModels() { augmentationStationExtension(NTBlocks.AUGMENTATION_STATION_EXTENSION.get()); simpleBlock(NTBlocks.DRAIN_WALL.get()); + + axisBlock(NTBlocks.OIL_BARREL.get(), models().cubeBottomTop( + name(NTBlocks.OIL_BARREL.get()), + blockTexture(NTBlocks.OIL_BARREL.get(), "_side"), + blockTexture(NTBlocks.OIL_BARREL.get(), "_bottom"), + blockTexture(NTBlocks.OIL_BARREL.get()) + ), models().cubeBottomTop( + name(NTBlocks.OIL_BARREL.get()) + "_horizontal", + blockTexture(NTBlocks.OIL_BARREL.get(), "_side"), + blockTexture(NTBlocks.OIL_BARREL.get()), + blockTexture(NTBlocks.OIL_BARREL.get(), "_bottom") + )); } private void augmentationStationController(AugmentationStationBlock augmentationStationBlock) { @@ -275,6 +287,11 @@ private ModelFile createActiveACModel(AquaticCatalystBlock block, Direction acti return builder; } + public ResourceLocation blockTexture(Block block, String suffix) { + ResourceLocation name = key(block); + return ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/" + name.getPath() + suffix); + } + private ResourceLocation existingModelFile(Block block) { ResourceLocation name = key(block); return ResourceLocation.fromNamespaceAndPath(name.getNamespace(), ModelProvider.BLOCK_FOLDER + "/" + name.getPath()); diff --git a/src/main/java/com/portingdeadmods/nautec/datagen/EnUsProvider.java b/src/main/java/com/portingdeadmods/nautec/datagen/EnUsProvider.java index 1ab84e4c..f432408d 100644 --- a/src/main/java/com/portingdeadmods/nautec/datagen/EnUsProvider.java +++ b/src/main/java/com/portingdeadmods/nautec/datagen/EnUsProvider.java @@ -3,9 +3,8 @@ import com.klikli_dev.modonomicon.api.datagen.AbstractModonomiconLanguageProvider; import com.klikli_dev.modonomicon.api.datagen.ModonomiconLanguageProvider; import com.portingdeadmods.nautec.Nautec; -import com.portingdeadmods.nautec.compat.modonomicon.ModonomiconCompat; import com.portingdeadmods.nautec.registries.NTBlocks; -import com.portingdeadmods.nautec.registries.NTFluidTypes; +import com.portingdeadmods.nautec.registries.NTFluids; import com.portingdeadmods.nautec.utils.Utils; import net.minecraft.data.PackOutput; import net.neoforged.neoforge.fluids.FluidType; @@ -27,16 +26,16 @@ protected void addTranslations() { add("nautec.creative_tab.main", "NauTec"); - addFluidType(NTFluidTypes.SALT_WATER_FLUID_TYPE, "Salt Water"); - addFluidType(NTFluidTypes.EAS_FLUID_TYPE, "Electrolyte Algae Serum"); - addFluidType(NTFluidTypes.ETCHING_ACID_FLUID_TYPE, "Etching Acid"); + addFluidType(NTFluids.SALT_WATER.getFluidType(), "Salt Water"); + addFluidType(NTFluids.EAS.getFluidType(), "Electrolyte Algae Serum"); + addFluidType(NTFluids.ETCHING_ACID.getFluidType(), "Etching Acid"); addItem(PRISM_MONOCLE, "Prism Monocle"); addItem(AQUARINE_STEEL_INGOT, "Aquarine Steel Ingot"); addItem(ATLANTIC_GOLD_INGOT, "Atlantic Gold Ingot"); addItem(ATLANTIC_GOLD_NUGGET, "Atlantic Gold Nugget"); - addItem(SALT_WATER_BUCKET, "Salt Water Bucket"); - addItem(EAS_BUCKET, "Electrolyte Algae Serum (EAS) Bucket"); + addItem(NTFluids.SALT_WATER.getDeferredBucket(), "Salt Water Bucket"); + addItem(NTFluids.EAS.getDeferredBucket(), "Electrolyte Algae Serum (EAS) Bucket"); addItem(GLASS_VIAL, "Glass Vial"); addItem(ELECTROLYTE_ALGAE_SERUM_VIAL, "Electrolyte Algae Serum (EAS) Vial"); addItem(CROWBAR, "Crowbar"); diff --git a/src/main/java/com/portingdeadmods/nautec/datagen/ItemModelProvider.java b/src/main/java/com/portingdeadmods/nautec/datagen/ItemModelProvider.java index 17f115bc..a7f06e25 100644 --- a/src/main/java/com/portingdeadmods/nautec/datagen/ItemModelProvider.java +++ b/src/main/java/com/portingdeadmods/nautec/datagen/ItemModelProvider.java @@ -1,16 +1,22 @@ package com.portingdeadmods.nautec.datagen; import com.portingdeadmods.nautec.Nautec; +import com.portingdeadmods.nautec.api.fluids.NTFluid; import com.portingdeadmods.nautec.registries.NTBlocks; +import com.portingdeadmods.nautec.registries.NTFluids; import com.portingdeadmods.nautec.registries.NTItems; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.material.Fluid; import net.neoforged.neoforge.client.model.generators.ItemModelBuilder; import net.neoforged.neoforge.client.model.generators.ModelFile; +import net.neoforged.neoforge.client.model.generators.loaders.DynamicFluidContainerModelBuilder; import net.neoforged.neoforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.NotNull; import java.util.Objects; import java.util.function.Supplier; @@ -65,9 +71,9 @@ protected void registerModels() { handHeldItem(NTItems.AQUARINE_WRENCH.get()); handHeldItem(NTItems.CROWBAR.get()); - basicItem(NTItems.SALT_WATER_BUCKET.get()); - basicItem(NTItems.EAS_BUCKET.get()); - basicItem(NTItems.ETCHING_ACID_BUCKET.get()); + for (NTFluid fluid : NTFluids.HELPER.getFluids()) { + bucket(fluid.getStillFluid()); + } aquarineSteelTool(NTItems.AQUARINE_AXE.get()); aquarineSteelTool(NTItems.AQUARINE_HOE.get()); @@ -86,6 +92,16 @@ protected void registerModels() { blockItems(); } + private void bucket(Fluid f) { + withExistingParent(key(f.getBucket()).getPath(), ResourceLocation.fromNamespaceAndPath("neoforge", "item/bucket")) + .customLoader(DynamicFluidContainerModelBuilder::begin) + .fluid(f); + } + + private static @NotNull ResourceLocation key(ItemLike item) { + return BuiltInRegistries.ITEM.getKey(item.asItem()); + } + private void blockItems() { for (Supplier<BlockItem> blockItem : NTItems.BLOCK_ITEMS) { parentItemBlock(blockItem.get()); diff --git a/src/main/java/com/portingdeadmods/nautec/datagen/RecipesProvider.java b/src/main/java/com/portingdeadmods/nautec/datagen/RecipesProvider.java index 30cb2d21..fa198372 100644 --- a/src/main/java/com/portingdeadmods/nautec/datagen/RecipesProvider.java +++ b/src/main/java/com/portingdeadmods/nautec/datagen/RecipesProvider.java @@ -492,7 +492,7 @@ private static void divingArmorRecipes(@NotNull RecipeOutput pRecipeOutput) { .duration(200) .save(pRecipeOutput); - ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, NTItems.ETCHING_ACID_BUCKET) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, NTFluids.ETCHING_ACID.getBucket()) .requires(Items.POISONOUS_POTATO) .requires(Items.GUNPOWDER) .requires(Items.BONE_MEAL) @@ -509,8 +509,8 @@ private static void chemistryRecipes(@NotNull RecipeOutput pRecipeOutput) { iwcFromItemLike(Items.PRISMARINE_CRYSTALS, 1), iwcFromItemLike(Items.SEAGRASS, 5)) .duration(200) - .fluidIngredient(new FluidStack(NTFluids.SALT_WATER_SOURCE.get(), 1000)) - .fluidResult(new FluidStack(NTFluids.EAS_SOURCE.get(), 1000)) + .fluidIngredient(new FluidStack(NTFluids.SALT_WATER.getStillFluid(), 1000)) + .fluidResult(new FluidStack(NTFluids.EAS.getStillFluid(), 1000)) .save(pRecipeOutput); MixingRecipeBuilder.newRecipe(ItemStack.EMPTY) @@ -518,15 +518,15 @@ private static void chemistryRecipes(@NotNull RecipeOutput pRecipeOutput) { iwcFromItemLike(Items.GUNPOWDER, 1), iwcFromItemLike(Items.BONE_MEAL, 1)) .duration(150) - .fluidIngredient(new FluidStack(NTFluids.SALT_WATER_SOURCE.get(), 1000)) - .fluidResult(new FluidStack(NTFluids.ETCHING_ACID_SOURCE.get(), 1000)) + .fluidIngredient(new FluidStack(NTFluids.SALT_WATER.getStillFluid(), 1000)) + .fluidResult(new FluidStack(NTFluids.ETCHING_ACID.getStillFluid(), 1000)) .save(pRecipeOutput); MixingRecipeBuilder.newRecipe(NTItems.AQUARINE_STEEL_COMPOUND.toStack(5)) .ingredients(iwcFromItemLike(Items.RAW_IRON, 2), iwcFromItemLike(Items.PRISMARINE_CRYSTALS, 1)) .duration(100) - .fluidIngredient(new FluidStack(NTFluids.SALT_WATER_SOURCE.get(), 1000)) + .fluidIngredient(new FluidStack(NTFluids.SALT_WATER.getStillFluid(), 1000)) .fluidResult(FluidStack.EMPTY) .save(pRecipeOutput); } diff --git a/src/main/java/com/portingdeadmods/nautec/events/NTEvents.java b/src/main/java/com/portingdeadmods/nautec/events/NTEvents.java index deb98350..fa66537f 100644 --- a/src/main/java/com/portingdeadmods/nautec/events/NTEvents.java +++ b/src/main/java/com/portingdeadmods/nautec/events/NTEvents.java @@ -6,6 +6,7 @@ import com.portingdeadmods.nautec.api.augments.Augment; import com.portingdeadmods.nautec.api.augments.AugmentSlot; import com.portingdeadmods.nautec.api.augments.AugmentType; +import com.portingdeadmods.nautec.api.fluids.NTFluid; import com.portingdeadmods.nautec.api.items.IPowerItem; import com.portingdeadmods.nautec.capabilities.NTCapabilities; import com.portingdeadmods.nautec.capabilities.power.IPowerStorage; @@ -56,11 +57,11 @@ public static void onItemEntityTick(EntityTickEvent.Post event) { if (event.getEntity() instanceof ItemEntity itemEntity) { Level level = itemEntity.level(); - if (itemEntity.isInFluidType(NTFluidTypes.ETCHING_ACID_FLUID_TYPE.get())) { + if (itemEntity.isInFluidType(NTFluids.ETCHING_ACID.getFluidType().get())) { ItemEtching.processItemEtching(itemEntity, level); } - if (itemEntity.isInFluidType(NTFluidTypes.EAS_FLUID_TYPE.get()) || level.getBlockState(itemEntity.blockPosition().below()).getFluidState().is(NTFluids.EAS_SOURCE.get())) { + if (itemEntity.isInFluidType(NTFluids.EAS.getFluidType().get()) || level.getBlockState(itemEntity.blockPosition().below()).getFluidState().is(NTFluids.EAS.getStillFluid())) { ItemInfusion.processPowerItemInfusion(itemEntity, level); } } diff --git a/src/main/java/com/portingdeadmods/nautec/mixin/BucketItemMixin.java b/src/main/java/com/portingdeadmods/nautec/mixin/BucketItemMixin.java index 91c66c04..eb2c1c0c 100644 --- a/src/main/java/com/portingdeadmods/nautec/mixin/BucketItemMixin.java +++ b/src/main/java/com/portingdeadmods/nautec/mixin/BucketItemMixin.java @@ -1,6 +1,7 @@ package com.portingdeadmods.nautec.mixin; import com.portingdeadmods.nautec.NTConfig; +import com.portingdeadmods.nautec.registries.NTFluids; import com.portingdeadmods.nautec.registries.NTItems; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.core.BlockPos; @@ -51,7 +52,7 @@ private void onUse(Level level, Player player, InteractionHand hand, CallbackInf ItemStack filledBucket = bucketPickup.pickupBlock(player, level, blockPos, blockState); if (!filledBucket.isEmpty()) { - filledBucket = new ItemStack(NTItems.SALT_WATER_BUCKET.asItem()); + filledBucket = new ItemStack(NTFluids.SALT_WATER.getBucket()); player.awardStat(Stats.ITEM_USED.get(Items.BUCKET)); bucketPickup.getPickupSound(blockState).ifPresent(soundEvent -> diff --git a/src/main/java/com/portingdeadmods/nautec/registries/NTBlocks.java b/src/main/java/com/portingdeadmods/nautec/registries/NTBlocks.java index c9179655..85eceeef 100644 --- a/src/main/java/com/portingdeadmods/nautec/registries/NTBlocks.java +++ b/src/main/java/com/portingdeadmods/nautec/registries/NTBlocks.java @@ -35,6 +35,10 @@ public final class NTBlocks { BlockBehaviour.Properties.ofFullCopy(Blocks.BARREL)); public static final DeferredBlock<CrateBlock> RUSTY_CRATE = registerBlockAndItem("rusty_crate", CrateBlock::new, BlockBehaviour.Properties.ofFullCopy(Blocks.BARREL)); + public static final DeferredBlock<RotatedPillarBlock> OIL_BARREL = registerBlockAndItem("oil_barrel", RotatedPillarBlock::new, + BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BLOCK)); + public static final DeferredBlock<Block> BROWN_POLYMER_BLOCK = registerBlockAndItem("brown_polymer_block", Block::new, + BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BLOCK)); public static final DeferredBlock<RotatedPillarBlock> DARK_PRISMARINE_PILLAR = registerBlockAndItem("dark_prismarine_pillar", RotatedPillarBlock::new, BlockBehaviour.Properties.ofFullCopy(Blocks.DARK_PRISMARINE)); public static final DeferredBlock<Block> CHISELED_DARK_PRISMARINE = registerBlockAndItem("chiseled_dark_prismarine", Block::new, @@ -91,17 +95,6 @@ public final class NTBlocks { AugmentationStationExtensionBlock::new, BlockBehaviour.Properties.ofFullCopy(Blocks.DARK_PRISMARINE)); - - // FLUIDS - public static final DeferredBlock<LiquidBlock> SALT_WATER_FLUID_BLOCK = BLOCKS.register("salt_water_block", - () -> new LiquidBlock(NTFluids.SALT_WATER_SOURCE.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER))); - - public static final DeferredBlock<LiquidBlock> EAS_FLUID_BLOCK = BLOCKS.register("electrolyte_algae_serum_block", - () -> new LiquidBlock(NTFluids.EAS_SOURCE.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER))); - - public static final DeferredBlock<LiquidBlock> ETCHING_ACID_FLUID_BLOCK = BLOCKS.register("etching_acid_block", - () -> new LiquidBlock(NTFluids.ETCHING_ACID_SOURCE.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER))); - public static final DeferredBlock<CreativePowerSourceBlock> CREATIVE_POWER_SOURCE = registerBlockAndItem("creative_power_source", CreativePowerSourceBlock::new, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BLOCK), false, true); diff --git a/src/main/java/com/portingdeadmods/nautec/registries/NTCreativeTabs.java b/src/main/java/com/portingdeadmods/nautec/registries/NTCreativeTabs.java index 8f0bd997..4efb2088 100644 --- a/src/main/java/com/portingdeadmods/nautec/registries/NTCreativeTabs.java +++ b/src/main/java/com/portingdeadmods/nautec/registries/NTCreativeTabs.java @@ -3,6 +3,7 @@ import com.portingdeadmods.nautec.NTRegistries; import com.portingdeadmods.nautec.Nautec; import com.portingdeadmods.nautec.api.bacteria.Bacteria; +import com.portingdeadmods.nautec.api.fluids.NTFluid; import com.portingdeadmods.nautec.api.items.IBacteriaItem; import com.portingdeadmods.nautec.api.items.IPowerItem; import com.portingdeadmods.nautec.capabilities.NTCapabilities; @@ -16,12 +17,14 @@ import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.BucketItem; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Blocks; import net.neoforged.fml.ModList; +import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; import java.util.Optional; @@ -63,11 +66,14 @@ public final class NTCreativeTabs { output.accept(ModonomiconCompat.getItemStack()); } - output.accept(NTItems.SALT_WATER_BUCKET); - output.accept(NTItems.EAS_BUCKET); - output.accept(NTItems.ETCHING_ACID_BUCKET); - output.accept(NTBlocks.CREATIVE_POWER_SOURCE); + + for (NTFluid fluid : NTFluids.HELPER.getFluids()) { + DeferredItem<BucketItem> deferredBucket = fluid.getDeferredBucket(); + Nautec.LOGGER.debug("Bucket: {}", deferredBucket); + output.accept(deferredBucket); + } + }) .build()); diff --git a/src/main/java/com/portingdeadmods/nautec/registries/NTFluidTypes.java b/src/main/java/com/portingdeadmods/nautec/registries/NTFluidTypes.java deleted file mode 100644 index b7c5ff7d..00000000 --- a/src/main/java/com/portingdeadmods/nautec/registries/NTFluidTypes.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.portingdeadmods.nautec.registries; - -import com.portingdeadmods.nautec.Nautec; -import com.portingdeadmods.nautec.api.fluids.BaseFluidType; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvents; -import net.neoforged.neoforge.common.SoundAction; -import net.neoforged.neoforge.fluids.FluidType; -import net.neoforged.neoforge.registries.DeferredRegister; -import net.neoforged.neoforge.registries.NeoForgeRegistries; -import org.joml.Vector4i; - -import java.util.function.Supplier; - -public final class NTFluidTypes { - - public static final DeferredRegister<FluidType> FLUID_TYPES = - DeferredRegister.create(NeoForgeRegistries.FLUID_TYPES, Nautec.MODID); - - public static final Supplier<FluidType> SALT_WATER_FLUID_TYPE = register("soap_water", - FluidType.Properties.create().lightLevel(2).density(15).viscosity(5).sound(SoundAction.get("drink"), - SoundEvents.HONEY_DRINK), new Vector4i(174, 227, 227, 176), FluidTemplate.WATER); - - public static final Supplier<FluidType> EAS_FLUID_TYPE = register("electrolyte_algae_serum", - FluidType.Properties.create().lightLevel(2).density(30).viscosity(5).sound(SoundAction.get("drink"), - SoundEvents.HONEY_DRINK), new Vector4i(255, 255, 255, 255), FluidTemplate.EAS); - - public static final Supplier<FluidType> ETCHING_ACID_FLUID_TYPE = register("etching_acid", - FluidType.Properties.create().lightLevel(2).density(5).viscosity(1).sound(SoundAction.get("drink"), - SoundEvents.HONEY_DRINK), new Vector4i(255, 255, 255, 255), FluidTemplate.ETCHING_ACID); - - private static Supplier<FluidType> register(String name, FluidType.Properties properties, Vector4i color, FluidTemplate template) { - return FLUID_TYPES.register(name, () -> new BaseFluidType(template.still, template.flowing, template.overlay, color, properties)); - } - - public enum FluidTemplate { - WATER(ResourceLocation.withDefaultNamespace("block/water_still"), - ResourceLocation.withDefaultNamespace("block/water_flow"), - ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "misc/in_water")), - EAS(modFluidTexture("eas_fluid"), modFluidTexture("eas_fluid"), ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "misc/in_water")), - - ETCHING_ACID(modFluidTexture("etching_acid"), modFluidTexture("etching_acid"), ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "misc/in_water")); - - private final ResourceLocation still; - private final ResourceLocation flowing; - private final ResourceLocation overlay; - - FluidTemplate(ResourceLocation still, ResourceLocation flowing, ResourceLocation overlay) { - this.still = still; - this.flowing = flowing; - this.overlay = overlay; - } - - private static ResourceLocation modFluidTexture(String name) { - return ResourceLocation.fromNamespaceAndPath(Nautec.MODID, "fluid/"+name); - } - } - -} diff --git a/src/main/java/com/portingdeadmods/nautec/registries/NTFluids.java b/src/main/java/com/portingdeadmods/nautec/registries/NTFluids.java index 77b8b69a..194a55b3 100644 --- a/src/main/java/com/portingdeadmods/nautec/registries/NTFluids.java +++ b/src/main/java/com/portingdeadmods/nautec/registries/NTFluids.java @@ -1,6 +1,11 @@ package com.portingdeadmods.nautec.registries; import com.portingdeadmods.nautec.Nautec; +import com.portingdeadmods.nautec.content.fluids.EASFluid; +import com.portingdeadmods.nautec.content.fluids.EtchingAcidFluid; +import com.portingdeadmods.nautec.content.fluids.OilFluid; +import com.portingdeadmods.nautec.content.fluids.SaltWaterFluid; +import com.portingdeadmods.nautec.utils.FluidRegistrationHelper; import net.minecraft.core.registries.Registries; import net.minecraft.world.level.material.FlowingFluid; import net.minecraft.world.level.material.Fluid; @@ -10,36 +15,10 @@ import java.util.function.Supplier; public final class NTFluids { + public static final FluidRegistrationHelper HELPER = new FluidRegistrationHelper(NTBlocks.BLOCKS, NTItems.ITEMS, Nautec.MODID); - public static final DeferredRegister<Fluid> FLUIDS = DeferredRegister.create(Registries.FLUID, Nautec.MODID); - - public static final Supplier<FlowingFluid> SALT_WATER_SOURCE = FLUIDS.register("salt_water", - () -> new BaseFlowingFluid.Source(NTFluids.SALT_WATER_PROPERTIES)); - public static final Supplier<FlowingFluid> SALT_WATER_FLOWING = FLUIDS.register("salt_water_flowing", - () -> new BaseFlowingFluid.Flowing(NTFluids.SALT_WATER_PROPERTIES)); - - public static final Supplier<FlowingFluid> EAS_SOURCE = FLUIDS.register("electrolyte_algae_serum", - () -> new BaseFlowingFluid.Source(NTFluids.EAS_PROPERTIES)); - public static final Supplier<FlowingFluid> EAS_FLOWING = FLUIDS.register("electrolyte_algae_serum_flowing", - () -> new BaseFlowingFluid.Flowing(NTFluids.EAS_PROPERTIES)); - - public static final Supplier<FlowingFluid> ETCHING_ACID_SOURCE = FLUIDS.register("etching_acid", - () -> new BaseFlowingFluid.Source(NTFluids.ETCHING_ACID_PROPERTIES)); - public static final Supplier<FlowingFluid> ETCHING_ACID_FLOWING = FLUIDS.register("etching_acid_flowing", - () -> new BaseFlowingFluid.Flowing(NTFluids.ETCHING_ACID_PROPERTIES)); - - public static final BaseFlowingFluid.Properties SALT_WATER_PROPERTIES = new BaseFlowingFluid.Properties( - NTFluidTypes.SALT_WATER_FLUID_TYPE, SALT_WATER_SOURCE, SALT_WATER_FLOWING) - .slopeFindDistance(2).levelDecreasePerBlock(2).block(NTBlocks.SALT_WATER_FLUID_BLOCK) - .bucket(NTItems.SALT_WATER_BUCKET); - - public static final BaseFlowingFluid.Properties EAS_PROPERTIES = new BaseFlowingFluid.Properties( - NTFluidTypes.EAS_FLUID_TYPE, EAS_SOURCE, EAS_FLOWING) - .slopeFindDistance(2).levelDecreasePerBlock(2).block(NTBlocks.EAS_FLUID_BLOCK) - .bucket(NTItems.EAS_BUCKET); - - public static final BaseFlowingFluid.Properties ETCHING_ACID_PROPERTIES = new BaseFlowingFluid.Properties( - NTFluidTypes.ETCHING_ACID_FLUID_TYPE, ETCHING_ACID_SOURCE, ETCHING_ACID_FLOWING) - .slopeFindDistance(4).levelDecreasePerBlock(1).block(NTBlocks.ETCHING_ACID_FLUID_BLOCK) - .bucket(NTItems.ETCHING_ACID_BUCKET); + public static final OilFluid OIL = HELPER.registerFluid(new OilFluid("oil")); + public static final SaltWaterFluid SALT_WATER = HELPER.registerFluid(new SaltWaterFluid("saltwater")); + public static final EASFluid EAS = HELPER.registerFluid(new EASFluid("eas")); + public static final EtchingAcidFluid ETCHING_ACID = HELPER.registerFluid(new EtchingAcidFluid("etching_acid")); } diff --git a/src/main/java/com/portingdeadmods/nautec/registries/NTItems.java b/src/main/java/com/portingdeadmods/nautec/registries/NTItems.java index f52560bb..10147dad 100644 --- a/src/main/java/com/portingdeadmods/nautec/registries/NTItems.java +++ b/src/main/java/com/portingdeadmods/nautec/registries/NTItems.java @@ -40,6 +40,7 @@ public final class NTItems { AirBottleItem::new, new Item.Properties().stacksTo(16)); public static final DeferredItem<Item> AQUARINE_STEEL_COMPOUND = registerItem("aquarine_steel_compound", Item::new, new Item.Properties()); + public static final DeferredItem<Item> SALT = registerItem("salt", Item::new, new Item.Properties()); // MACHINE PARTS public static final DeferredItem<Item> RUSTY_GEAR = registerItem("rusty_gear", @@ -120,14 +121,6 @@ public final class NTItems { public static final DeferredItem<AquarinePickaxeItem> AQUARINE_PICKAXE = registerItem("aquarine_steel_pickaxe", AquarinePickaxeItem::new); public static final DeferredItem<AquarineShovelItem> AQUARINE_SHOVEL = registerItem("aquarine_steel_shovel", AquarineShovelItem::new); - // BUCKETS - public static final DeferredItem<BucketItem> SALT_WATER_BUCKET = registerItemBucket("salt_water_bucket", - () -> new BucketItem(NTFluids.SALT_WATER_SOURCE.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); - public static final DeferredItem<BucketItem> EAS_BUCKET = registerItemBucket("eas_bucket", - () -> new BucketItem(NTFluids.EAS_SOURCE.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); - public static final DeferredItem<BucketItem> ETCHING_ACID_BUCKET = registerItemBucket("etching_acid_bucket", - () -> new BucketItem(NTFluids.ETCHING_ACID_SOURCE.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); - // TOOLS public static final DeferredItem<AquarineWrenchItem> AQUARINE_WRENCH = registerItem("aquarine_steel_wrench", AquarineWrenchItem::new, new Item.Properties()); diff --git a/src/main/java/com/portingdeadmods/nautec/utils/AugmentClientHelper.java b/src/main/java/com/portingdeadmods/nautec/utils/AugmentClientHelper.java index 18688599..746deca8 100644 --- a/src/main/java/com/portingdeadmods/nautec/utils/AugmentClientHelper.java +++ b/src/main/java/com/portingdeadmods/nautec/utils/AugmentClientHelper.java @@ -8,7 +8,7 @@ import java.util.HashMap; -public class AugmentClientHelper { +public final class AugmentClientHelper { public static void initCache(Player player) { AugmentLayerRenderer.AUGMENTS_CACHE = new HashMap<>(AugmentHelper.getAugments(player)); } diff --git a/src/main/java/com/portingdeadmods/nautec/utils/FluidRegistrationHelper.java b/src/main/java/com/portingdeadmods/nautec/utils/FluidRegistrationHelper.java new file mode 100644 index 00000000..f8671d3a --- /dev/null +++ b/src/main/java/com/portingdeadmods/nautec/utils/FluidRegistrationHelper.java @@ -0,0 +1,95 @@ +package com.portingdeadmods.nautec.utils; +import com.portingdeadmods.nautec.api.fluids.NTFluid; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.material.Fluid; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.fluids.FluidType; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.neoforged.neoforge.registries.NeoForgeRegistries; + +import java.util.ArrayList; +import java.util.List; + +public final class FluidRegistrationHelper { + private final List<NTFluid> fluids = new ArrayList<>(); + + private final DeferredRegister.Blocks blockRegister; + private final DeferredRegister.Items itemRegister; + private final DeferredRegister<FluidType> fluidTypeRegister; + private final DeferredRegister<Fluid> fluidRegister; + + private boolean createFluidsRegister; + + public FluidRegistrationHelper(DeferredRegister.Blocks blockRegister, + DeferredRegister.Items itemRegister, + DeferredRegister<FluidType> fluidTypeRegister, + DeferredRegister<Fluid> fluidRegister) { + this.blockRegister = blockRegister; + this.itemRegister = itemRegister; + this.fluidTypeRegister = fluidTypeRegister; + this.fluidRegister = fluidRegister; + } + + public FluidRegistrationHelper(DeferredRegister.Blocks blockRegister, DeferredRegister.Items itemRegister, String modid) { + this(blockRegister, itemRegister, DeferredRegister.create(NeoForgeRegistries.FLUID_TYPES, modid), DeferredRegister.create(Registries.FLUID, modid)); + this.createFluidsRegister = true; + } + + public <T extends NTFluid> T registerFluid(T fluid) { + fluid.stillFluid = getFluidRegister().register(fluid.getName(), fluid.stillFluid); + fluid.flowingFluid = getFluidRegister().register(flowing(fluid.getName()), fluid.flowingFluid); + fluid.fluidType = getFluidTypeRegister().register(fluid.getName(), fluid.fluidType); + + fluid.block = () -> new LiquidBlock(fluid.stillFluid.get(), fluid.blockProperties()); + + fluid.block = getBlockRegister().register(fluid(fluid.getName()), fluid.block); + + fluid.deferredBucket = getItemRegister().register(bucket(fluid.getName()), () -> new BucketItem(fluid.stillFluid.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + + this.fluids.add(fluid); + return fluid; + } + + public DeferredRegister.Blocks getBlockRegister() { + return blockRegister; + } + + public DeferredRegister.Items getItemRegister() { + return itemRegister; + } + + public DeferredRegister<FluidType> getFluidTypeRegister() { + return fluidTypeRegister; + } + + public DeferredRegister<Fluid> getFluidRegister() { + return fluidRegister; + } + + public List<NTFluid> getFluids() { + return fluids; + } + + public void register(IEventBus modEventBus) { + if (createFluidsRegister) { + getFluidRegister().register(modEventBus); + getFluidTypeRegister().register(modEventBus); + } + } + + private static String fluid(String fluid) { + return fluid + "_fluid"; + } + + private static String flowing(String fluid) { + return fluid + "_flowing"; + } + + private static String bucket(String fluid) { + return fluid + "_bucket"; + } +} \ No newline at end of file diff --git a/src/main/java/com/portingdeadmods/nautec/utils/Tooltips.java b/src/main/java/com/portingdeadmods/nautec/utils/Tooltips.java index 8ad6cc6c..ec235a69 100644 --- a/src/main/java/com/portingdeadmods/nautec/utils/Tooltips.java +++ b/src/main/java/com/portingdeadmods/nautec/utils/Tooltips.java @@ -6,25 +6,29 @@ import java.util.List; -public class Tooltips { - public static void trans(List<Component> components, String key, ChatFormatting ... formatings) { - tt(components,Component.translatable(key), formatings); +public final class Tooltips { + public static void trans(List<Component> components, String key, ChatFormatting... formatings) { + tt(components, Component.translatable(key), formatings); } - public static void transInsert(List<Component> components, String key,String additional, ChatFormatting ... formatings){ + + public static void transInsert(List<Component> components, String key, String additional, ChatFormatting... formatings) { MutableComponent trans = apply(Component.translatable(key), formatings); MutableComponent lit = apply(Component.literal(additional), formatings); components.add(trans.append(lit)); } - public static void transtrans(List<Component> components, String key,String additional, ChatFormatting ... formatings){ + + public static void transtrans(List<Component> components, String key, String additional, ChatFormatting... formatings) { MutableComponent trans = apply(Component.translatable(key), formatings); MutableComponent extra = apply(Component.translatable(additional), formatings); components.add(trans.append(extra)); } - public static void tt(List<Component> components, MutableComponent c, ChatFormatting ... formatings){ + + public static void tt(List<Component> components, MutableComponent c, ChatFormatting... formatings) { apply(c, formatings); components.add(c); } - public static MutableComponent apply(MutableComponent component,ChatFormatting ... formattings) { + + public static MutableComponent apply(MutableComponent component, ChatFormatting... formattings) { for (ChatFormatting formatting : formattings) { component = component.withStyle(formatting); } diff --git a/src/main/resources/assets/nautec/models/block/fishing_station.json b/src/main/resources/assets/nautec/models/block/fishing_station.json index c3aaef26..b3f9db9d 100644 --- a/src/main/resources/assets/nautec/models/block/fishing_station.json +++ b/src/main/resources/assets/nautec/models/block/fishing_station.json @@ -47,6 +47,37 @@ } } ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, "groups": [ { "name": "group", diff --git a/src/main/resources/assets/nautec/textures/item/cast_iron_ingot.png b/src/main/resources/assets/nautec/textures/item/cast_iron_ingot.png index 17ab48e6..95d20c15 100644 Binary files a/src/main/resources/assets/nautec/textures/item/cast_iron_ingot.png and b/src/main/resources/assets/nautec/textures/item/cast_iron_ingot.png differ diff --git a/src/main/resources/assets/nautec/textures/item/eas_bucket.png b/src/main/resources/assets/nautec/textures/item/eas_bucket.png deleted file mode 100644 index 3a4db28f..00000000 Binary files a/src/main/resources/assets/nautec/textures/item/eas_bucket.png and /dev/null differ diff --git a/src/main/resources/assets/nautec/textures/item/etching_acid_bucket.png b/src/main/resources/assets/nautec/textures/item/etching_acid_bucket.png deleted file mode 100644 index c7a25e3e..00000000 Binary files a/src/main/resources/assets/nautec/textures/item/etching_acid_bucket.png and /dev/null differ diff --git a/src/main/resources/assets/nautec/textures/item/salt_water_bucket.png b/src/main/resources/assets/nautec/textures/item/salt_water_bucket.png deleted file mode 100644 index 44ec4f70..00000000 Binary files a/src/main/resources/assets/nautec/textures/item/salt_water_bucket.png and /dev/null differ