From 3b2e14a6f75132bd6fc98994fe1ddbb7adc821ee Mon Sep 17 00:00:00 2001 From: paisc Date: Sat, 8 Feb 2025 14:26:57 +0100 Subject: [PATCH] added bandid added mummy added cobra added saber added sand blocks --- .../312521ee7b4c00e6c741df82cdce5f2d2f8b7ae3 | 3 + .../blockstates/sandstone_bricks.json | 7 + .../blockstates/sandstone_rock_shade_1.json | 7 + .../blockstates/sandstone_rock_shade_2.json | 7 + .../blockstates/sandstone_rock_shade_3.json | 7 + .../blockstates/sandstone_rock_shade_4.json | 7 + .../blockstates/sandstone_rock_shade_5.json | 7 + .../blockstates/sandstone_rock_shade_6.json | 7 + .../blockstates/sandstone_rock_shade_7.json | 7 + .../blockstates/sandstone_rock_shade_8.json | 7 + .../blockstates/sandstone_tile_bricks.json | 7 + .../blockstates/wiped_sand_shade_1.json | 7 + .../blockstates/wiped_sand_shade_2.json | 7 + .../models/block/sandstone_bricks.json | 6 + .../models/block/sandstone_rock_shade_1.json | 6 + .../models/block/sandstone_rock_shade_2.json | 6 + .../models/block/sandstone_rock_shade_3.json | 6 + .../models/block/sandstone_rock_shade_4.json | 6 + .../models/block/sandstone_rock_shade_5.json | 6 + .../models/block/sandstone_rock_shade_6.json | 6 + .../models/block/sandstone_rock_shade_7.json | 6 + .../models/block/sandstone_rock_shade_8.json | 6 + .../models/block/sandstone_tile_bricks.json | 6 + .../models/block/wiped_sand_shade_1.json | 6 + .../models/block/wiped_sand_shade_2.json | 6 + .../models/item/dune_staff.json | 0 .../voltexdesertupdate/models/item/saber.json | 6 + .../models/item/sandstone_bricks.json | 3 + .../models/item/sandstone_rock_shade_1.json | 3 + .../models/item/sandstone_rock_shade_2.json | 3 + .../models/item/sandstone_rock_shade_3.json | 3 + .../models/item/sandstone_rock_shade_4.json | 3 + .../models/item/sandstone_rock_shade_5.json | 3 + .../models/item/sandstone_rock_shade_6.json | 3 + .../models/item/sandstone_rock_shade_7.json | 3 + .../models/item/sandstone_rock_shade_8.json | 3 + .../models/item/sandstone_tile_bricks.json | 3 + .../models/item/wiped_sand_shade_1.json | 3 + .../models/item/wiped_sand_shade_2.json | 3 + .../loot_table/blocks/quicksand_block.json | 20 + .../loot_table/blocks/sandstone_bricks.json | 20 + .../blocks/sandstone_rock_shade_1.json | 20 + .../blocks/sandstone_rock_shade_2.json | 20 + .../blocks/sandstone_rock_shade_3.json | 20 + .../blocks/sandstone_rock_shade_4.json | 20 + .../blocks/sandstone_rock_shade_5.json | 20 + .../blocks/sandstone_rock_shade_6.json | 20 + .../blocks/sandstone_rock_shade_7.json | 20 + .../blocks/sandstone_rock_shade_8.json | 20 + .../blocks/sandstone_tile_bricks.json | 20 + .../loot_table/blocks/wiped_sand_shade_1.json | 20 + .../loot_table/blocks/wiped_sand_shade_2.json | 20 + .../worldgen/configured_feature/palm.json | 57 +++ .../worldgen/placed_feature/palm_placed.json | 47 +++ .../net/voltexstudios/VoltexDesertUpdate.java | 7 +- .../VoltexDesertUpdateClient.java | 16 +- .../VoltexDesertUpdateDataGenerator.java | 3 +- .../net/voltexstudios/blocks/ModBlocks.java | 26 ++ .../blocks/custom/QuicksandBlock.java | 21 +- .../datagen/ModLootTableProvider.java | 14 + .../datagen/ModModelProvider.java | 18 + .../datagen/ModRegistryDataGenerator.java | 25 ++ .../net/voltexstudios/entity/ModEntities.java | 18 +- .../client/bandit/BanditAnimations.java | 7 + .../entity/client/bandit/BanditModel.java | 151 ++++++++ .../entity/client/bandit/BanditRenderer.java | 65 ++++ .../entity/client/cobra/CobraAnimations.java | 133 +++++++ .../entity/client/cobra/CobraModel.java | 75 ++++ .../entity/client/cobra/CobraRenderer.java | 32 ++ .../entity/client/mummy/MummyAnimations.java | 357 ++++++++++++++++++ .../entity/client/mummy/MummyModel.java | 78 ++++ .../entity/client/mummy/MummyRenderer.java | 32 ++ .../{ => vulture}/VultureAnimations.java | 2 +- .../client/{ => vulture}/VultureModel.java | 2 +- .../client/{ => vulture}/VultureRenderer.java | 2 +- .../entity/custom/BanditEntity.java | 133 +++++++ .../entity/custom/CobraEntity.java | 96 +++++ .../entity/custom/DuneProjectileEntity.java | 23 ++ .../entity/custom/MummyEntity.java | 86 +++++ .../net/voltexstudios/item/ModItemGroups.java | 16 +- .../java/net/voltexstudios/item/ModItems.java | 11 +- .../voltexstudios/item/custom/SaberItem.java | 12 + .../world/ModConfiguredFeatures.java | 2 + .../assets/voltexdesertupdate/lang/en_us.json | 16 +- .../textures/block textures.zip | Bin 0 -> 7416 bytes .../blocks/sandstone_bricks.png | Bin 0 -> 359 bytes .../blocks/sandstone_rock_1.png | Bin 0 -> 510 bytes .../blocks/sandstone_rock_2.png | Bin 0 -> 527 bytes .../blocks/sandstone_rock_3.png | Bin 0 -> 522 bytes .../blocks/sandstone_rock_4.png | Bin 0 -> 521 bytes .../blocks/sandstone_rock_5.png | Bin 0 -> 554 bytes .../blocks/sandstone_rock_6.png | Bin 0 -> 549 bytes .../blocks/sandstone_rock_7.png | Bin 0 -> 527 bytes .../blocks/sandstone_rock_8.png | Bin 0 -> 518 bytes .../blocks/sandstone_tilebricks.png | Bin 0 -> 432 bytes .../block textures/blocks/wiped_sand_1.png | Bin 0 -> 411 bytes .../block textures/blocks/wiped_sand_2.png | Bin 0 -> 412 bytes .../textures/block/palm_log.png | Bin 644 -> 529 bytes .../textures/block/palm_log_top.png | Bin 536 -> 406 bytes .../textures/block/palm_planks.png | Bin 0 -> 478 bytes .../textures/block/sandstone_bricks.png | Bin 0 -> 359 bytes .../textures/block/sandstone_rock_shade_1.png | Bin 0 -> 510 bytes .../textures/block/sandstone_rock_shade_2.png | Bin 0 -> 527 bytes .../textures/block/sandstone_rock_shade_3.png | Bin 0 -> 522 bytes .../textures/block/sandstone_rock_shade_4.png | Bin 0 -> 521 bytes .../textures/block/sandstone_rock_shade_5.png | Bin 0 -> 554 bytes .../textures/block/sandstone_rock_shade_6.png | Bin 0 -> 549 bytes .../textures/block/sandstone_rock_shade_7.png | Bin 0 -> 527 bytes .../textures/block/sandstone_rock_shade_8.png | Bin 0 -> 518 bytes .../textures/block/sandstone_tile_bricks.png | Bin 0 -> 432 bytes .../textures/block/wiped_sand_shade_1.png | Bin 0 -> 411 bytes .../textures/block/wiped_sand_shade_2.png | Bin 0 -> 412 bytes .../textures/entity/bandit/bandit.png | Bin 0 -> 3803 bytes .../textures/entity/cobra/cobra.png | Bin 0 -> 1486 bytes .../textures/entity/mummy/mummy.png | Bin 0 -> 1650 bytes .../textures/item/saber.png | Bin 0 -> 347 bytes .../resources/voltexdesertupdate.mixins.json | 8 +- 117 files changed, 2030 insertions(+), 22 deletions(-) create mode 100644 src/main/generated/.cache/312521ee7b4c00e6c741df82cdce5f2d2f8b7ae3 create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_bricks.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_1.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_2.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_3.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_4.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_5.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_6.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_7.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_8.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_tile_bricks.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/wiped_sand_shade_1.json create mode 100644 src/main/generated/assets/voltexdesertupdate/blockstates/wiped_sand_shade_2.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_bricks.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_1.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_2.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_3.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_4.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_5.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_6.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_7.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_8.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/sandstone_tile_bricks.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/wiped_sand_shade_1.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/block/wiped_sand_shade_2.json rename src/main/{resources => generated}/assets/voltexdesertupdate/models/item/dune_staff.json (100%) create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/saber.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_bricks.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_1.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_2.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_3.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_4.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_5.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_6.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_7.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_8.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/sandstone_tile_bricks.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/wiped_sand_shade_1.json create mode 100644 src/main/generated/assets/voltexdesertupdate/models/item/wiped_sand_shade_2.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/quicksand_block.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_bricks.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_1.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_2.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_3.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_4.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_5.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_6.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_7.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_8.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_tile_bricks.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/wiped_sand_shade_1.json create mode 100644 src/main/generated/data/voltexdesertupdate/loot_table/blocks/wiped_sand_shade_2.json create mode 100644 src/main/generated/data/voltexdesertupdate/worldgen/configured_feature/palm.json create mode 100644 src/main/generated/data/voltexdesertupdate/worldgen/placed_feature/palm_placed.json create mode 100644 src/main/java/net/voltexstudios/datagen/ModRegistryDataGenerator.java create mode 100644 src/main/java/net/voltexstudios/entity/client/bandit/BanditAnimations.java create mode 100644 src/main/java/net/voltexstudios/entity/client/bandit/BanditModel.java create mode 100644 src/main/java/net/voltexstudios/entity/client/bandit/BanditRenderer.java create mode 100644 src/main/java/net/voltexstudios/entity/client/cobra/CobraAnimations.java create mode 100644 src/main/java/net/voltexstudios/entity/client/cobra/CobraModel.java create mode 100644 src/main/java/net/voltexstudios/entity/client/cobra/CobraRenderer.java create mode 100644 src/main/java/net/voltexstudios/entity/client/mummy/MummyAnimations.java create mode 100644 src/main/java/net/voltexstudios/entity/client/mummy/MummyModel.java create mode 100644 src/main/java/net/voltexstudios/entity/client/mummy/MummyRenderer.java rename src/main/java/net/voltexstudios/entity/client/{ => vulture}/VultureAnimations.java (98%) rename src/main/java/net/voltexstudios/entity/client/{ => vulture}/VultureModel.java (98%) rename src/main/java/net/voltexstudios/entity/client/{ => vulture}/VultureRenderer.java (96%) create mode 100644 src/main/java/net/voltexstudios/entity/custom/BanditEntity.java create mode 100644 src/main/java/net/voltexstudios/entity/custom/CobraEntity.java create mode 100644 src/main/java/net/voltexstudios/entity/custom/MummyEntity.java create mode 100644 src/main/java/net/voltexstudios/item/custom/SaberItem.java create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures.zip create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_bricks.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_1.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_2.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_3.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_4.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_5.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_6.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_7.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_8.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_tilebricks.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/wiped_sand_1.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/wiped_sand_2.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/palm_planks.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_bricks.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_1.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_2.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_3.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_4.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_5.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_6.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_7.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_8.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_tile_bricks.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/wiped_sand_shade_1.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/block/wiped_sand_shade_2.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/entity/bandit/bandit.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/entity/cobra/cobra.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/entity/mummy/mummy.png create mode 100644 src/main/resources/assets/voltexdesertupdate/textures/item/saber.png diff --git a/src/main/generated/.cache/312521ee7b4c00e6c741df82cdce5f2d2f8b7ae3 b/src/main/generated/.cache/312521ee7b4c00e6c741df82cdce5f2d2f8b7ae3 new file mode 100644 index 0000000..aa2c90c --- /dev/null +++ b/src/main/generated/.cache/312521ee7b4c00e6c741df82cdce5f2d2f8b7ae3 @@ -0,0 +1,3 @@ +// 1.21.1 2025-02-07T19:09:08.6447576 VoltexDesertUpdate/ +3d00d260ef61a03ff3b98c011ee1465b91dcd987 data\voltexdesertupdate\worldgen\configured_feature\palm.json +e644e0605cf42a2e5e5d97e6677675375619cf44 data\voltexdesertupdate\worldgen\placed_feature\palm_placed.json diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_bricks.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_bricks.json new file mode 100644 index 0000000..778590a --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_bricks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_bricks" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_1.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_1.json new file mode 100644 index 0000000..4ce497f --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_1.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_rock_shade_1" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_2.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_2.json new file mode 100644 index 0000000..4158e8c --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_2.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_rock_shade_2" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_3.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_3.json new file mode 100644 index 0000000..04ba61e --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_3.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_rock_shade_3" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_4.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_4.json new file mode 100644 index 0000000..65fd7fd --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_4.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_rock_shade_4" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_5.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_5.json new file mode 100644 index 0000000..384e060 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_5.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_rock_shade_5" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_6.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_6.json new file mode 100644 index 0000000..a0abb40 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_6.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_rock_shade_6" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_7.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_7.json new file mode 100644 index 0000000..9ef312e --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_7.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_rock_shade_7" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_8.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_8.json new file mode 100644 index 0000000..0fe52fc --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_rock_shade_8.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_rock_shade_8" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_tile_bricks.json b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_tile_bricks.json new file mode 100644 index 0000000..3fee395 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/sandstone_tile_bricks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/sandstone_tile_bricks" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/wiped_sand_shade_1.json b/src/main/generated/assets/voltexdesertupdate/blockstates/wiped_sand_shade_1.json new file mode 100644 index 0000000..1c53784 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/wiped_sand_shade_1.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/wiped_sand_shade_1" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/blockstates/wiped_sand_shade_2.json b/src/main/generated/assets/voltexdesertupdate/blockstates/wiped_sand_shade_2.json new file mode 100644 index 0000000..4801331 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/blockstates/wiped_sand_shade_2.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "voltexdesertupdate:block/wiped_sand_shade_2" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_bricks.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_bricks.json new file mode 100644 index 0000000..e01bca5 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_bricks" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_1.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_1.json new file mode 100644 index 0000000..a421c55 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_rock_shade_1" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_2.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_2.json new file mode 100644 index 0000000..e6ef214 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_rock_shade_2" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_3.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_3.json new file mode 100644 index 0000000..1e0b6e0 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_3.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_rock_shade_3" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_4.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_4.json new file mode 100644 index 0000000..10be313 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_4.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_rock_shade_4" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_5.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_5.json new file mode 100644 index 0000000..4e388b7 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_5.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_rock_shade_5" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_6.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_6.json new file mode 100644 index 0000000..e246070 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_6.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_rock_shade_6" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_7.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_7.json new file mode 100644 index 0000000..4e2081f --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_7.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_rock_shade_7" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_8.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_8.json new file mode 100644 index 0000000..4d98a94 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_rock_shade_8.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_rock_shade_8" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_tile_bricks.json b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_tile_bricks.json new file mode 100644 index 0000000..fa57313 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/sandstone_tile_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/sandstone_tile_bricks" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/wiped_sand_shade_1.json b/src/main/generated/assets/voltexdesertupdate/models/block/wiped_sand_shade_1.json new file mode 100644 index 0000000..0185683 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/wiped_sand_shade_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/wiped_sand_shade_1" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/block/wiped_sand_shade_2.json b/src/main/generated/assets/voltexdesertupdate/models/block/wiped_sand_shade_2.json new file mode 100644 index 0000000..a1d76df --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/block/wiped_sand_shade_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "voltexdesertupdate:block/wiped_sand_shade_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/voltexdesertupdate/models/item/dune_staff.json b/src/main/generated/assets/voltexdesertupdate/models/item/dune_staff.json similarity index 100% rename from src/main/resources/assets/voltexdesertupdate/models/item/dune_staff.json rename to src/main/generated/assets/voltexdesertupdate/models/item/dune_staff.json diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/saber.json b/src/main/generated/assets/voltexdesertupdate/models/item/saber.json new file mode 100644 index 0000000..e835ff0 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/saber.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "voltexdesertupdate:item/saber" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_bricks.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_bricks.json new file mode 100644 index 0000000..49f8fb1 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_bricks" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_1.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_1.json new file mode 100644 index 0000000..2d4c8d7 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_1.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_rock_shade_1" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_2.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_2.json new file mode 100644 index 0000000..ecca48e --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_2.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_rock_shade_2" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_3.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_3.json new file mode 100644 index 0000000..e581959 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_3.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_rock_shade_3" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_4.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_4.json new file mode 100644 index 0000000..379cd85 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_4.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_rock_shade_4" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_5.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_5.json new file mode 100644 index 0000000..0b8ee9b --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_5.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_rock_shade_5" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_6.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_6.json new file mode 100644 index 0000000..d31a361 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_6.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_rock_shade_6" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_7.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_7.json new file mode 100644 index 0000000..eaea6b8 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_7.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_rock_shade_7" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_8.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_8.json new file mode 100644 index 0000000..df31d60 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_rock_shade_8.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_rock_shade_8" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_tile_bricks.json b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_tile_bricks.json new file mode 100644 index 0000000..aa08077 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/sandstone_tile_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/sandstone_tile_bricks" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/wiped_sand_shade_1.json b/src/main/generated/assets/voltexdesertupdate/models/item/wiped_sand_shade_1.json new file mode 100644 index 0000000..cbc86bf --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/wiped_sand_shade_1.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/wiped_sand_shade_1" +} \ No newline at end of file diff --git a/src/main/generated/assets/voltexdesertupdate/models/item/wiped_sand_shade_2.json b/src/main/generated/assets/voltexdesertupdate/models/item/wiped_sand_shade_2.json new file mode 100644 index 0000000..38480a6 --- /dev/null +++ b/src/main/generated/assets/voltexdesertupdate/models/item/wiped_sand_shade_2.json @@ -0,0 +1,3 @@ +{ + "parent": "voltexdesertupdate:block/wiped_sand_shade_2" +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/quicksand_block.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/quicksand_block.json new file mode 100644 index 0000000..eb2ef50 --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/quicksand_block.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:quicksand_block" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_bricks.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_bricks.json new file mode 100644 index 0000000..93f5a65 --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_bricks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_bricks" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_1.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_1.json new file mode 100644 index 0000000..551e718 --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_1.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_rock_shade_1" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_2.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_2.json new file mode 100644 index 0000000..ca7d06c --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_2.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_rock_shade_2" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_3.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_3.json new file mode 100644 index 0000000..cbc62fe --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_3.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_rock_shade_3" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_4.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_4.json new file mode 100644 index 0000000..49f5b17 --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_4.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_rock_shade_4" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_5.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_5.json new file mode 100644 index 0000000..f268d8d --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_5.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_rock_shade_5" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_6.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_6.json new file mode 100644 index 0000000..ab1b218 --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_6.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_rock_shade_6" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_7.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_7.json new file mode 100644 index 0000000..096aa52 --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_7.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_rock_shade_7" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_8.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_8.json new file mode 100644 index 0000000..f6cb5a4 --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_rock_shade_8.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_rock_shade_8" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_tile_bricks.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_tile_bricks.json new file mode 100644 index 0000000..760b2cb --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/sandstone_tile_bricks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:sandstone_tile_bricks" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/wiped_sand_shade_1.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/wiped_sand_shade_1.json new file mode 100644 index 0000000..90b87c9 --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/wiped_sand_shade_1.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:wiped_sand_shade_1" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/loot_table/blocks/wiped_sand_shade_2.json b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/wiped_sand_shade_2.json new file mode 100644 index 0000000..feedcee --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/loot_table/blocks/wiped_sand_shade_2.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "voltexdesertupdate:wiped_sand_shade_2" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/worldgen/configured_feature/palm.json b/src/main/generated/data/voltexdesertupdate/worldgen/configured_feature/palm.json new file mode 100644 index 0000000..64b211b --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/worldgen/configured_feature/palm.json @@ -0,0 +1,57 @@ +{ + "type": "minecraft:tree", + "config": { + "decorators": [], + "dirt_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:dirt" + } + }, + "foliage_placer": { + "type": "minecraft:acacia_foliage_placer", + "offset": 1, + "radius": 3 + }, + "foliage_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "voltexdesertupdate:palm_leaves", + "Properties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + } + } + }, + "force_dirt": false, + "ignore_vines": false, + "minimum_size": { + "type": "minecraft:two_layers_feature_size", + "limit": 1, + "lower_size": 0, + "upper_size": 2 + }, + "trunk_placer": { + "type": "minecraft:bending_trunk_placer", + "base_height": 3, + "bend_length": { + "type": "minecraft:uniform", + "max_inclusive": 2, + "min_inclusive": 1 + }, + "height_rand_a": 2, + "height_rand_b": 0, + "min_height_for_leaves": 4 + }, + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "voltexdesertupdate:palm_log", + "Properties": { + "axis": "y" + } + } + } + } +} \ No newline at end of file diff --git a/src/main/generated/data/voltexdesertupdate/worldgen/placed_feature/palm_placed.json b/src/main/generated/data/voltexdesertupdate/worldgen/placed_feature/palm_placed.json new file mode 100644 index 0000000..a072432 --- /dev/null +++ b/src/main/generated/data/voltexdesertupdate/worldgen/placed_feature/palm_placed.json @@ -0,0 +1,47 @@ +{ + "feature": "voltexdesertupdate:palm", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:weighted_list", + "distribution": [ + { + "data": 2, + "weight": 9 + }, + { + "data": 4, + "weight": 1 + } + ] + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:surface_water_depth_filter", + "max_water_depth": 0 + }, + { + "type": "minecraft:heightmap", + "heightmap": "OCEAN_FLOOR" + }, + { + "type": "minecraft:biome" + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:would_survive", + "state": { + "Name": "voltexdesertupdate:palm_sapling", + "Properties": { + "stage": "0" + } + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/java/net/voltexstudios/VoltexDesertUpdate.java b/src/main/java/net/voltexstudios/VoltexDesertUpdate.java index 8c7aa2b..c406aa0 100644 --- a/src/main/java/net/voltexstudios/VoltexDesertUpdate.java +++ b/src/main/java/net/voltexstudios/VoltexDesertUpdate.java @@ -4,9 +4,11 @@ import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; import net.fabricmc.fabric.api.registry.FlammableBlockRegistry; -import net.minecraft.block.FireBlock; import net.voltexstudios.blocks.ModBlocks; import net.voltexstudios.entity.ModEntities; +import net.voltexstudios.entity.custom.BanditEntity; +import net.voltexstudios.entity.custom.CobraEntity; +import net.voltexstudios.entity.custom.MummyEntity; import net.voltexstudios.entity.custom.VultureEntity; import net.voltexstudios.item.ModItemGroups; import net.voltexstudios.item.ModItems; @@ -29,6 +31,9 @@ public class VoltexDesertUpdate implements ModInitializer { ModEntities.registerModEntities(); FabricDefaultAttributeRegistry.register(ModEntities.VULTURE_ENTITY, VultureEntity.createVultureAttributes()); + FabricDefaultAttributeRegistry.register(ModEntities.BANDIT_ENTITY, BanditEntity.createBanditAttributes()); + FabricDefaultAttributeRegistry.register(ModEntities.COBRA_ENTITY, CobraEntity.createCobraAttributes()); + FabricDefaultAttributeRegistry.register(ModEntities.MUMMY_ENTITY, MummyEntity.createMummyAttributes()); FlammableBlockRegistry.getDefaultInstance().add(ModBlocks.PALM_LOG, 5, 5); FlammableBlockRegistry.getDefaultInstance().add(ModBlocks.PALM_WOOD, 5, 5); diff --git a/src/main/java/net/voltexstudios/VoltexDesertUpdateClient.java b/src/main/java/net/voltexstudios/VoltexDesertUpdateClient.java index 1aadabd..c6defbd 100644 --- a/src/main/java/net/voltexstudios/VoltexDesertUpdateClient.java +++ b/src/main/java/net/voltexstudios/VoltexDesertUpdateClient.java @@ -7,8 +7,14 @@ import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.minecraft.client.render.RenderLayer; import net.voltexstudios.blocks.ModBlocks; import net.voltexstudios.entity.ModEntities; -import net.voltexstudios.entity.client.VultureModel; -import net.voltexstudios.entity.client.VultureRenderer; +import net.voltexstudios.entity.client.bandit.BanditModel; +import net.voltexstudios.entity.client.bandit.BanditRenderer; +import net.voltexstudios.entity.client.cobra.CobraModel; +import net.voltexstudios.entity.client.cobra.CobraRenderer; +import net.voltexstudios.entity.client.mummy.MummyModel; +import net.voltexstudios.entity.client.mummy.MummyRenderer; +import net.voltexstudios.entity.client.vulture.VultureModel; +import net.voltexstudios.entity.client.vulture.VultureRenderer; public class VoltexDesertUpdateClient implements ClientModInitializer { @@ -19,6 +25,12 @@ public class VoltexDesertUpdateClient implements ClientModInitializer { BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.PALM_SAPLING, RenderLayer.getCutout()); EntityModelLayerRegistry.registerModelLayer(VultureModel.VULTURE, VultureModel::getTexturedModelData); + EntityModelLayerRegistry.registerModelLayer(BanditModel.BANDIT, BanditModel::getTexturedModelData); + EntityModelLayerRegistry.registerModelLayer(CobraModel.COBRA, CobraModel::getTexturedModelData); + EntityModelLayerRegistry.registerModelLayer(MummyModel.MUMMY, MummyModel::getTexturedModelData); EntityRendererRegistry.register(ModEntities.VULTURE_ENTITY, VultureRenderer::new); + EntityRendererRegistry.register(ModEntities.BANDIT_ENTITY, BanditRenderer::new); + EntityRendererRegistry.register(ModEntities.COBRA_ENTITY, CobraRenderer::new); + EntityRendererRegistry.register(ModEntities.MUMMY_ENTITY, MummyRenderer::new); } } diff --git a/src/main/java/net/voltexstudios/VoltexDesertUpdateDataGenerator.java b/src/main/java/net/voltexstudios/VoltexDesertUpdateDataGenerator.java index f665ade..50229b1 100644 --- a/src/main/java/net/voltexstudios/VoltexDesertUpdateDataGenerator.java +++ b/src/main/java/net/voltexstudios/VoltexDesertUpdateDataGenerator.java @@ -10,6 +10,7 @@ import net.voltexstudios.datagen.ModLootTableProvider; import net.voltexstudios.datagen.ModModelProvider; import net.voltexstudios.world.ModConfiguredFeatures; import net.voltexstudios.world.ModPlacedFeatures; +import net.voltexstudios.datagen.ModRegistryDataGenerator; public class VoltexDesertUpdateDataGenerator implements DataGeneratorEntrypoint { @@ -21,7 +22,7 @@ public class VoltexDesertUpdateDataGenerator implements DataGeneratorEntrypoint pack.addProvider(ModItemTagProvider::new); pack.addProvider(ModLootTableProvider::new); pack.addProvider(ModModelProvider::new); - + pack.addProvider(ModRegistryDataGenerator::new); } diff --git a/src/main/java/net/voltexstudios/blocks/ModBlocks.java b/src/main/java/net/voltexstudios/blocks/ModBlocks.java index cf454cf..3bcda83 100644 --- a/src/main/java/net/voltexstudios/blocks/ModBlocks.java +++ b/src/main/java/net/voltexstudios/blocks/ModBlocks.java @@ -19,6 +19,32 @@ public class ModBlocks { public static final Block QUICKSAND_BLOCK = registerBlock("quicksand_block", new QuicksandBlock(AbstractBlock.Settings.copy(Blocks.POWDER_SNOW))); + public static final Block WIPED_SAND_SHADE_1 = registerBlock("wiped_sand_shade_1", + new Block(AbstractBlock.Settings.copy(Blocks.SAND))); + public static final Block WIPED_SAND_SHADE_2 = registerBlock("wiped_sand_shade_2", + new Block(AbstractBlock.Settings.copy(Blocks.SAND))); + public static final Block SANDSTONE_BRICKS = registerBlock("sandstone_bricks", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + public static final Block SANDSTONE_TILE_BRICKS = registerBlock("sandstone_tile_bricks", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + public static final Block SANDSTONE_ROCK_SHADE_1 = registerBlock("sandstone_rock_shade_1", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + public static final Block SANDSTONE_ROCK_SHADE_2 = registerBlock("sandstone_rock_shade_2", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + public static final Block SANDSTONE_ROCK_SHADE_3 = registerBlock("sandstone_rock_shade_3", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + public static final Block SANDSTONE_ROCK_SHADE_4 = registerBlock("sandstone_rock_shade_4", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + public static final Block SANDSTONE_ROCK_SHADE_5 = registerBlock("sandstone_rock_shade_5", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + public static final Block SANDSTONE_ROCK_SHADE_6 = registerBlock("sandstone_rock_shade_6", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + public static final Block SANDSTONE_ROCK_SHADE_7 = registerBlock("sandstone_rock_shade_7", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + public static final Block SANDSTONE_ROCK_SHADE_8 = registerBlock("sandstone_rock_shade_8", + new Block(AbstractBlock.Settings.copy(Blocks.SANDSTONE))); + + public static final Block PALM_LOG = registerBlock("palm_log", new PillarBlock(AbstractBlock.Settings.copy(Blocks.OAK_LOG))); public static final Block PALM_WOOD = registerBlock("palm_wood", diff --git a/src/main/java/net/voltexstudios/blocks/custom/QuicksandBlock.java b/src/main/java/net/voltexstudios/blocks/custom/QuicksandBlock.java index 3a2db52..58282ed 100644 --- a/src/main/java/net/voltexstudios/blocks/custom/QuicksandBlock.java +++ b/src/main/java/net/voltexstudios/blocks/custom/QuicksandBlock.java @@ -15,13 +15,13 @@ import net.minecraft.registry.tag.EntityTypeTags; import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.random.Random; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.*; +import net.voltexstudios.blocks.ModBlocks; import org.jetbrains.annotations.Nullable; import java.util.Optional; @@ -43,14 +43,20 @@ public class QuicksandBlock extends Block implements FluidDrainable { return CODEC; } + /* + @Override protected boolean isSideInvisible(BlockState state, BlockState stateFrom, Direction direction) { return stateFrom.isOf(this) || super.isSideInvisible(state, stateFrom, direction); } + */ + + @Override protected VoxelShape getCullingShape(BlockState state, BlockView world, BlockPos pos) { return VoxelShapes.empty(); } + @Override protected void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) { if (!(entity instanceof LivingEntity) || entity.getBlockStateAtPos().isOf(this)) { entity.slowMovement(state, new Vec3d(0.8999999761581421, 1.5, 0.8999999761581421)); @@ -67,6 +73,7 @@ public class QuicksandBlock extends Block implements FluidDrainable { } } + @Override public void onLandedUpon(World world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { if (!((double)fallDistance < 4.0) && entity instanceof LivingEntity livingEntity) { LivingEntity.FallSounds fallSounds = livingEntity.getFallSounds(); @@ -75,6 +82,7 @@ public class QuicksandBlock extends Block implements FluidDrainable { } } + @Override protected VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { if (context instanceof EntityShapeContext entityShapeContext) { Entity entity = entityShapeContext.getEntity(); @@ -93,11 +101,13 @@ public class QuicksandBlock extends Block implements FluidDrainable { return VoxelShapes.empty(); } + @Override protected VoxelShape getCameraCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { return VoxelShapes.empty(); + } - public static boolean canWalkOnQuicksand(Entity entity) { + private boolean canWalkOnQuicksand(Entity entity) { if (entity.getType().isIn(EntityTypeTags.POWDER_SNOW_WALKABLE_MOBS)) { return true; } else { @@ -105,25 +115,30 @@ public class QuicksandBlock extends Block implements FluidDrainable { } } + @Override public ItemStack tryDrainFluid(@Nullable PlayerEntity player, WorldAccess world, BlockPos pos, BlockState state) { world.setBlockState(pos, Blocks.AIR.getDefaultState(), Block.NOTIFY_ALL_AND_REDRAW); if (!world.isClient()) { world.syncWorldEvent(WorldEvents.BLOCK_BROKEN, pos, Block.getRawIdFromState(state)); } - return new ItemStack(Items.POWDER_SNOW_BUCKET); + return new ItemStack(ModBlocks.QUICKSAND_BLOCK.asItem()); } + @Override public Optional getBucketFillSound() { return Optional.of(SoundEvents.ITEM_BUCKET_FILL_POWDER_SNOW); } + @Override protected boolean canPathfindThrough(BlockState state, NavigationType type) { return true; } + /* @Override public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { return VoxelShapes.empty(); // Optional: also prevents outline rendering } + */ } diff --git a/src/main/java/net/voltexstudios/datagen/ModLootTableProvider.java b/src/main/java/net/voltexstudios/datagen/ModLootTableProvider.java index 595b96d..828f200 100644 --- a/src/main/java/net/voltexstudios/datagen/ModLootTableProvider.java +++ b/src/main/java/net/voltexstudios/datagen/ModLootTableProvider.java @@ -15,10 +15,24 @@ public class ModLootTableProvider extends FabricBlockLootTableProvider { @Override public void generate() { + addDrop(ModBlocks.QUICKSAND_BLOCK); addDrop(ModBlocks.PALM_LOG); addDrop(ModBlocks.PALM_WOOD); addDrop(ModBlocks.PALM_PLANKS); addDrop(ModBlocks.PALM_SAPLING); addDrop(ModBlocks.PALM_LEAVES, leavesDrops(ModBlocks.PALM_LEAVES, ModBlocks.PALM_SAPLING, 0.0625F)); + + addDrop(ModBlocks.WIPED_SAND_SHADE_1); + addDrop(ModBlocks.WIPED_SAND_SHADE_2); + addDrop(ModBlocks.SANDSTONE_BRICKS); + addDrop(ModBlocks.SANDSTONE_TILE_BRICKS); + addDrop(ModBlocks.SANDSTONE_ROCK_SHADE_1); + addDrop(ModBlocks.SANDSTONE_ROCK_SHADE_2); + addDrop(ModBlocks.SANDSTONE_ROCK_SHADE_3); + addDrop(ModBlocks.SANDSTONE_ROCK_SHADE_4); + addDrop(ModBlocks.SANDSTONE_ROCK_SHADE_5); + addDrop(ModBlocks.SANDSTONE_ROCK_SHADE_6); + addDrop(ModBlocks.SANDSTONE_ROCK_SHADE_7); + addDrop(ModBlocks.SANDSTONE_ROCK_SHADE_8); } } diff --git a/src/main/java/net/voltexstudios/datagen/ModModelProvider.java b/src/main/java/net/voltexstudios/datagen/ModModelProvider.java index 4df4b2b..b858041 100644 --- a/src/main/java/net/voltexstudios/datagen/ModModelProvider.java +++ b/src/main/java/net/voltexstudios/datagen/ModModelProvider.java @@ -7,6 +7,7 @@ import net.minecraft.data.client.ItemModelGenerator; import net.minecraft.data.client.Models; import net.minecraft.data.client.TexturedModel; import net.voltexstudios.blocks.ModBlocks; +import net.voltexstudios.item.ModItems; public class ModModelProvider extends FabricModelProvider { @@ -22,10 +23,27 @@ public class ModModelProvider extends FabricModelProvider { blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.PALM_PLANKS); blockStateModelGenerator.registerSingleton(ModBlocks.PALM_LEAVES, TexturedModel.LEAVES); blockStateModelGenerator.registerTintableCrossBlockState(ModBlocks.PALM_SAPLING, BlockStateModelGenerator.TintType.NOT_TINTED); + + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.WIPED_SAND_SHADE_1); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.WIPED_SAND_SHADE_2); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_BRICKS); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_TILE_BRICKS); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_ROCK_SHADE_1); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_ROCK_SHADE_2); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_ROCK_SHADE_3); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_ROCK_SHADE_4); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_ROCK_SHADE_5); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_ROCK_SHADE_6); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_ROCK_SHADE_7); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SANDSTONE_ROCK_SHADE_8); } @Override public void generateItemModels(ItemModelGenerator itemModelGenerator) { itemModelGenerator.register(ModBlocks.PALM_SAPLING.asItem(), Models.GENERATED); + + // Registering items + itemModelGenerator.register(ModItems.SABER, Models.HANDHELD); + itemModelGenerator.register(ModItems.DUNE_STAFF, Models.GENERATED); } } diff --git a/src/main/java/net/voltexstudios/datagen/ModRegistryDataGenerator.java b/src/main/java/net/voltexstudios/datagen/ModRegistryDataGenerator.java new file mode 100644 index 0000000..6a63693 --- /dev/null +++ b/src/main/java/net/voltexstudios/datagen/ModRegistryDataGenerator.java @@ -0,0 +1,25 @@ +package net.voltexstudios.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; + +import java.util.concurrent.CompletableFuture; + +public class ModRegistryDataGenerator extends FabricDynamicRegistryProvider { + public ModRegistryDataGenerator(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, registriesFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) { + entries.addAll(registries.getWrapperOrThrow(RegistryKeys.CONFIGURED_FEATURE)); + entries.addAll(registries.getWrapperOrThrow(RegistryKeys.PLACED_FEATURE)); + } + + @Override + public String getName() { + return ""; + } +} diff --git a/src/main/java/net/voltexstudios/entity/ModEntities.java b/src/main/java/net/voltexstudios/entity/ModEntities.java index 20ce049..36d4c89 100644 --- a/src/main/java/net/voltexstudios/entity/ModEntities.java +++ b/src/main/java/net/voltexstudios/entity/ModEntities.java @@ -6,8 +6,7 @@ import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.util.Identifier; import net.voltexstudios.VoltexDesertUpdate; -import net.voltexstudios.entity.custom.DuneProjectileEntity; -import net.voltexstudios.entity.custom.VultureEntity; +import net.voltexstudios.entity.custom.*; public class ModEntities { @@ -22,6 +21,21 @@ public class ModEntities { EntityType.Builder.create(DuneProjectileEntity::new, SpawnGroup.MISC) .dimensions(0.25f, 0.25f).build()); + public static final EntityType BANDIT_ENTITY = Registry.register(Registries.ENTITY_TYPE, + Identifier.of(VoltexDesertUpdate.MOD_ID, "bandit_entity"), + EntityType.Builder.create(BanditEntity::new, SpawnGroup.CREATURE) + .dimensions(0.5f, 2f).build()); + + public static final EntityType COBRA_ENTITY = Registry.register(Registries.ENTITY_TYPE, + Identifier.of(VoltexDesertUpdate.MOD_ID, "cobra_entity"), + EntityType.Builder.create(CobraEntity::new, SpawnGroup.CREATURE) + .dimensions(0.5f, 0.8f).build()); + + public static final EntityType MUMMY_ENTITY = Registry.register(Registries.ENTITY_TYPE, + Identifier.of(VoltexDesertUpdate.MOD_ID, "mummy_entity"), + EntityType.Builder.create(MummyEntity::new, SpawnGroup.CREATURE) + .dimensions(0.5f, 2f).build()); + public static void registerModEntities() { VoltexDesertUpdate.LOGGER.info("Registering Mod Entities for " + VoltexDesertUpdate.MOD_ID); } diff --git a/src/main/java/net/voltexstudios/entity/client/bandit/BanditAnimations.java b/src/main/java/net/voltexstudios/entity/client/bandit/BanditAnimations.java new file mode 100644 index 0000000..933e0fb --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/client/bandit/BanditAnimations.java @@ -0,0 +1,7 @@ +package net.voltexstudios.entity.client.bandit; + +import net.minecraft.client.render.entity.animation.Animation; + +public class BanditAnimations { + public static final Animation ANIMATION = Animation.Builder.create(0f).build(); +} diff --git a/src/main/java/net/voltexstudios/entity/client/bandit/BanditModel.java b/src/main/java/net/voltexstudios/entity/client/bandit/BanditModel.java new file mode 100644 index 0000000..758bfbd --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/client/bandit/BanditModel.java @@ -0,0 +1,151 @@ +package net.voltexstudios.entity.client.bandit; + +import net.minecraft.client.model.*; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.entity.model.CrossbowPosing; +import net.minecraft.client.render.entity.model.EntityModelLayer; +import net.minecraft.client.render.entity.model.ModelWithArms; +import net.minecraft.client.render.entity.model.SinglePartEntityModel; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.mob.IllagerEntity; +import net.minecraft.util.Arm; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.MathHelper; +import net.voltexstudios.VoltexDesertUpdate; +import net.voltexstudios.entity.custom.BanditEntity; + +public class BanditModel extends SinglePartEntityModel implements ModelWithArms { + + public static final EntityModelLayer BANDIT = new EntityModelLayer(Identifier.of(VoltexDesertUpdate.MOD_ID, "bandit"), "main"); + + private final ModelPart mambo; + private final ModelPart head; + private final ModelPart body; + private final ModelPart arms; + private final ModelPart right_leg; + private final ModelPart left_leg; + private final ModelPart right_arm; + private final ModelPart left_arm; + + public BanditModel(ModelPart root) { + this.mambo = root.getChild("mambo"); + this.head = this.mambo.getChild("head"); + this.body = this.mambo.getChild("body"); + this.arms = this.mambo.getChild("arms"); + this.right_leg = this.mambo.getChild("right_leg"); + this.left_leg = this.mambo.getChild("left_leg"); + this.right_arm = this.mambo.getChild("right_arm"); + this.left_arm = this.mambo.getChild("left_arm"); + } + public static TexturedModelData getTexturedModelData() { + ModelData modelData = new ModelData(); + ModelPartData modelPartData = modelData.getRoot(); + ModelPartData mambo = modelPartData.addChild("mambo", ModelPartBuilder.create(), ModelTransform.pivot(0.0F, 24.0F, 0.0F)); + + ModelPartData head = mambo.addChild("head", ModelPartBuilder.create().uv(28, 18).cuboid(-4.0F, -10.0F, -4.0F, 8.0F, 10.0F, 8.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, -24.0F, 0.0F)); + + ModelPartData nose = head.addChild("nose", ModelPartBuilder.create().uv(52, 36).cuboid(-1.0F, -1.0F, -6.0F, 2.0F, 4.0F, 2.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, -2.0F, 0.0F)); + + ModelPartData headwear = head.addChild("headwear", ModelPartBuilder.create().uv(64, 0).cuboid(-4.0F, -10.0F, -4.0F, 8.0F, 10.0F, 8.0F, new Dilation(0.51F)), ModelTransform.pivot(0.0F, 0.0F, 0.0F)); + + ModelPartData headwear2 = head.addChild("headwear2", ModelPartBuilder.create().uv(0, 0).cuboid(-7.0F, -7.0F, -8.3F, 14.0F, 14.0F, 4.0F, new Dilation(0.0F)) + .uv(0, 0).cuboid(-7.0F, -7.0F, -8.3F, 14.0F, 14.0F, 4.0F, new Dilation(0.0F)), ModelTransform.of(0.0F, 0.0F, 0.0F, -1.5708F, 0.0F, 0.0F)); + + ModelPartData body = mambo.addChild("body", ModelPartBuilder.create().uv(36, 0).cuboid(-4.0F, 0.0F, -3.0F, 8.0F, 12.0F, 6.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, -24.0F, 0.0F)); + + ModelPartData bodywear = body.addChild("bodywear", ModelPartBuilder.create().uv(0, 18).cuboid(-4.0F, 0.0F, -3.0F, 8.0F, 20.0F, 6.0F, new Dilation(0.5F)), ModelTransform.pivot(0.0F, 0.0F, 0.0F)); + + ModelPartData arms = mambo.addChild("arms", ModelPartBuilder.create().uv(28, 36).cuboid(-4.0F, 2.0F, -2.0F, 8.0F, 4.0F, 4.0F, new Dilation(0.0F)) + .uv(32, 44).cuboid(-8.0F, -2.0F, -2.0F, 4.0F, 8.0F, 4.0F, new Dilation(0.0F)), ModelTransform.of(0.0F, -21.05F, -1.05F, -0.7505F, 0.0F, 0.0F)); + + ModelPartData mirrored = arms.addChild("mirrored", ModelPartBuilder.create().uv(48, 44).cuboid(4.0F, -23.05F, -3.05F, 4.0F, 8.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 21.05F, 1.05F)); + + ModelPartData right_leg = mambo.addChild("right_leg", ModelPartBuilder.create().uv(0, 44).cuboid(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(-2.0F, -12.0F, 0.0F)); + + ModelPartData left_leg = mambo.addChild("left_leg", ModelPartBuilder.create().uv(16, 44).cuboid(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(2.0F, -12.0F, 0.0F)); + + ModelPartData right_arm = mambo.addChild("right_arm", ModelPartBuilder.create().uv(0, 60).cuboid(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(-5.0F, -22.0F, 0.0F)); + + ModelPartData left_arm = mambo.addChild("left_arm", ModelPartBuilder.create().uv(16, 60).mirrored().cuboid(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.0F)).mirrored(false), ModelTransform.pivot(5.0F, -22.0F, 0.0F)); + return TexturedModelData.of(modelData, 128, 128); + } + + @Override + public void setAngles(BanditEntity banditEntity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.head.yaw = netHeadYaw * (float) (Math.PI / 180.0); + this.head.pitch = headPitch * (float) (Math.PI / 180.0); + if (this.riding) { + this.right_arm.pitch = (float) (-Math.PI / 5); + this.right_arm.yaw = 0.0F; + this.right_arm.roll = 0.0F; + this.left_arm.pitch = (float) (-Math.PI / 5); + this.left_arm.yaw = 0.0F; + this.left_arm.roll = 0.0F; + this.right_leg.pitch = -1.4137167F; + this.right_leg.yaw = (float) (Math.PI / 10); + this.right_leg.roll = 0.07853982F; + this.left_leg.pitch = -1.4137167F; + this.left_leg.yaw = (float) (-Math.PI / 10); + this.left_leg.roll = -0.07853982F; + } else { + this.right_arm.pitch = MathHelper.cos(limbSwing * 0.6662F + (float) Math.PI) * 2.0F * limbSwingAmount * 0.5F; + this.right_arm.yaw = 0.0F; + this.right_arm.roll = 0.0F; + this.left_arm.pitch = MathHelper.cos(limbSwing * 0.6662F) * 2.0F * limbSwingAmount * 0.5F; + this.left_arm.yaw = 0.0F; + this.left_arm.roll = 0.0F; + this.right_leg.pitch = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount * 0.5F; + this.right_leg.yaw = 0.0F; + this.right_leg.roll = 0.0F; + this.left_leg.pitch = MathHelper.cos(limbSwing * 0.6662F + (float) Math.PI) * 1.4F * limbSwingAmount * 0.5F; + this.left_leg.yaw = 0.0F; + this.left_leg.roll = 0.0F; + } + + IllagerEntity.State state = banditEntity.getState(); + if (state == IllagerEntity.State.ATTACKING) { + if (banditEntity.getMainHandStack().isEmpty()) { + CrossbowPosing.meleeAttack(this.left_arm, this.right_arm, true, this.handSwingProgress, ageInTicks); + } else { + CrossbowPosing.meleeAttack(this.right_arm, this.left_arm, banditEntity, this.handSwingProgress, ageInTicks); + } + } else if (state == IllagerEntity.State.CROSSBOW_CHARGE) { + CrossbowPosing.charge(this.right_arm, this.left_arm, banditEntity, true); + } else if (state == IllagerEntity.State.CELEBRATING) { + this.right_arm.pivotZ = 0.0F; + this.right_arm.pivotX = -5.0F; + this.right_arm.pitch = MathHelper.cos(ageInTicks * 0.6662F) * 0.05F; + this.right_arm.roll = 2.670354F; + this.right_arm.yaw = 0.0F; + this.left_arm.pivotZ = 0.0F; + this.left_arm.pivotX = 5.0F; + this.left_arm.pitch = MathHelper.cos(ageInTicks * 0.6662F) * 0.05F; + this.left_arm.roll = (float) (-Math.PI * 3.0 / 4.0); + this.left_arm.yaw = 0.0F; + } + + boolean bl = state == IllagerEntity.State.CROSSED; + this.arms.visible = bl; + this.left_arm.visible = !bl; + this.right_arm.visible = !bl; + } + + @Override + public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, int color) { + mambo.render(matrices, vertexConsumer, light, overlay, color); + } + + private ModelPart getAttackingArm(Arm arm) { + return arm == Arm.LEFT ? this.left_arm : this.right_arm; + } + + @Override + public ModelPart getPart() { + return mambo; + } + + @Override + public void setArmAngle(Arm arm, MatrixStack matrices) { + this.getAttackingArm(arm).rotate(matrices); + } +} \ No newline at end of file diff --git a/src/main/java/net/voltexstudios/entity/client/bandit/BanditRenderer.java b/src/main/java/net/voltexstudios/entity/client/bandit/BanditRenderer.java new file mode 100644 index 0000000..d26c59a --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/client/bandit/BanditRenderer.java @@ -0,0 +1,65 @@ +package net.voltexstudios.entity.client.bandit; + +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.client.render.entity.feature.HeldItemFeatureRenderer; +import net.minecraft.client.render.entity.model.IllagerEntityModel; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.mob.VindicatorEntity; +import net.minecraft.util.Identifier; +import net.voltexstudios.VoltexDesertUpdate; +import net.voltexstudios.entity.custom.BanditEntity; + +public class BanditRenderer extends MobEntityRenderer> { + + public BanditRenderer(EntityRendererFactory.Context context) { + super(context, new BanditModel<>(context.getPart(BanditModel.BANDIT)), 0.5f); + this.addFeature( + new HeldItemFeatureRenderer<>(this, context.getHeldItemRenderer()) { + public void render( + MatrixStack matrixStack, + VertexConsumerProvider vertexConsumerProvider, + int i, + BanditEntity banditEntity, + float f, + float g, + float h, + float j, + float k, + float l + ) { + if (banditEntity.isAttacking()) { + matrixStack.push(); + + // Adjust the position of the item to the hand + if (banditEntity.isLeftHanded()) { + matrixStack.translate(0.0625, 1.3, 0.0625); // Adjust these values as needed + } else { + matrixStack.translate(-0.0625, 1.3, 0.0625); // Adjust these values as needed + } + + super.render(matrixStack, vertexConsumerProvider, i, banditEntity, f, g, h, j, k, l); + matrixStack.pop(); + } + } + } + ); + } + + @Override + public Identifier getTexture(BanditEntity entity) { + return Identifier.of(VoltexDesertUpdate.MOD_ID, "textures/entity/bandit/bandit.png"); + } + + @Override + public void render(BanditEntity livingEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i) { + if(livingEntity.isBaby()) { + matrixStack.scale(0.5f, 0.5f, 0.5f); + } else { + matrixStack.scale(1f, 1f, 1f); + } + + super.render(livingEntity, f, g, matrixStack, vertexConsumerProvider, i); + } +} diff --git a/src/main/java/net/voltexstudios/entity/client/cobra/CobraAnimations.java b/src/main/java/net/voltexstudios/entity/client/cobra/CobraAnimations.java new file mode 100644 index 0000000..451b709 --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/client/cobra/CobraAnimations.java @@ -0,0 +1,133 @@ +package net.voltexstudios.entity.client.cobra; + +import net.minecraft.client.render.entity.animation.Animation; +import net.minecraft.client.render.entity.animation.AnimationHelper; +import net.minecraft.client.render.entity.animation.Keyframe; +import net.minecraft.client.render.entity.animation.Transformation; + +public class CobraAnimations { + + public static final Animation MOVE = Animation.Builder.create(1f).looping() + .addBoneAnimation("head", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(5f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC))) + .addBoneAnimation("tounge", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 0f, 3f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("body", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(0f, 5f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.75f, AnimationHelper.createRotationalVector(0f, -5f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC))) + .addBoneAnimation("bone", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(0f, -20f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.75f, AnimationHelper.createRotationalVector(0f, 20f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC))) + .addBoneAnimation("bone2", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(0f, -32.5f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.75f, AnimationHelper.createRotationalVector(0f, 32.5f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC))).build(); + public static final Animation IDLE_TOUNGE = Animation.Builder.create(0.6766666f) + .addBoneAnimation("tounge", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 0f, 3f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.08343333f, AnimationHelper.createTranslationalVector(0f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.5834334f, AnimationHelper.createTranslationalVector(0f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.6766666f, AnimationHelper.createTranslationalVector(0f, 0f, 3f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("tounge", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.08343333f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.20834334f, AnimationHelper.createRotationalVector(17.5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(-5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.2916767f, AnimationHelper.createRotationalVector(17.5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.3433333f, AnimationHelper.createRotationalVector(-5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.375f, AnimationHelper.createRotationalVector(-5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(17.5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.4583433f, AnimationHelper.createRotationalVector(-5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(-5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.5416766f, AnimationHelper.createRotationalVector(17.5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.5834334f, AnimationHelper.createRotationalVector(-5f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.6766666f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.LINEAR))).build(); + public static final Animation IDLE = Animation.Builder.create(0.6766666f) + .addBoneAnimation("tounge", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 0f, 3f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("tounge", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.LINEAR))).build(); + public static final Animation ATTACK = Animation.Builder.create(0.625f) + .addBoneAnimation("head", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.125f, AnimationHelper.createRotationalVector(-22.5f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.3433333f, AnimationHelper.createRotationalVector(70f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.625f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC))) + .addBoneAnimation("head_look", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.125f, AnimationHelper.createRotationalVector(25f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.3433333f, AnimationHelper.createRotationalVector(-40f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.625f, AnimationHelper.createRotationalVector(0f, 0f, 0f), + Transformation.Interpolations.CUBIC))) + .addBoneAnimation("tounge", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 0f, 3f), + Transformation.Interpolations.CUBIC))).build(); + +} diff --git a/src/main/java/net/voltexstudios/entity/client/cobra/CobraModel.java b/src/main/java/net/voltexstudios/entity/client/cobra/CobraModel.java new file mode 100644 index 0000000..0d5f1c1 --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/client/cobra/CobraModel.java @@ -0,0 +1,75 @@ +package net.voltexstudios.entity.client.cobra; + +import net.minecraft.client.model.*; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.entity.model.EntityModelLayer; +import net.minecraft.client.render.entity.model.SinglePartEntityModel; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.MathHelper; +import net.voltexstudios.VoltexDesertUpdate; +import net.voltexstudios.entity.custom.CobraEntity; + +public class CobraModel extends SinglePartEntityModel { + + public static final EntityModelLayer COBRA = new EntityModelLayer(Identifier.of(VoltexDesertUpdate.MOD_ID, "cobra"), "main"); + + private final ModelPart cobra; + private final ModelPart head; + private final ModelPart body; + + public CobraModel(ModelPart root) { + this.cobra = root.getChild("mambo"); + this.head = this.cobra.getChild("head"); + this.body = this.cobra.getChild("body"); + } + + public static TexturedModelData getTexturedModelData() { + ModelData modelData = new ModelData(); + ModelPartData modelPartData = modelData.getRoot(); + ModelPartData mambo = modelPartData.addChild("mambo", ModelPartBuilder.create(), ModelTransform.pivot(0.5F, 14.0F, -13.0F)); + + ModelPartData head = mambo.addChild("head", ModelPartBuilder.create().uv(20, 9).cuboid(-1.5F, -9.125F, -2.125F, 3.0F, 10.0F, 3.0F, new Dilation(0.0F)) + .uv(20, 22).cuboid(-4.0F, -12.125F, -0.125F, 8.0F, 8.0F, 0.0F, new Dilation(0.0F)), ModelTransform.pivot(-0.5F, 9.125F, 6.125F)); + + ModelPartData head_look = head.addChild("head_look", ModelPartBuilder.create().uv(0, 20).cuboid(-2.0F, -2.8333F, -4.3333F, 4.0F, 3.0F, 6.0F, new Dilation(0.0F)) + .uv(32, 20).cuboid(-1.5F, 0.1667F, -4.3333F, 0.0F, 1.0F, 1.0F, new Dilation(0.0F)) + .uv(32, 19).cuboid(1.5F, 0.1667F, -4.3333F, 0.0F, 1.0F, 1.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, -9.2917F, -0.7917F)); + + ModelPartData tounge = head_look.addChild("tounge", ModelPartBuilder.create().uv(0, 29).cuboid(-1.5F, 0.0F, -3.0F, 3.0F, 0.0F, 3.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 0.1667F, -4.3333F)); + + ModelPartData body = mambo.addChild("body", ModelPartBuilder.create().uv(0, 0).cuboid(-2.0F, -2.0F, 0.0F, 4.0F, 4.0F, 6.0F, new Dilation(0.0F)), ModelTransform.pivot(-0.5F, 8.0F, 7.0F)); + + ModelPartData bone = body.addChild("bone", ModelPartBuilder.create().uv(0, 10).cuboid(-2.0F, -2.0F, 0.0F, 4.0F, 4.0F, 6.0F, new Dilation(0.01F)), ModelTransform.pivot(0.0F, 0.0F, 6.0F)); + + ModelPartData bone2 = bone.addChild("bone2", ModelPartBuilder.create().uv(20, 0).cuboid(-1.0F, -1.0F, 0.0F, 2.0F, 2.0F, 7.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 1.0F, 6.0F)); + return TexturedModelData.of(modelData, 64, 64); + } + + @Override + public void setAngles(CobraEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.getPart().traverse().forEach(ModelPart::resetTransform); + this.setHeadAngles(netHeadYaw, headPitch); + + this.animateMovement(CobraAnimations.MOVE, limbSwing, limbSwingAmount, 2f, 2.5f); + this.updateAnimation(entity.idleAnimationState, CobraAnimations.IDLE, ageInTicks, 1f); + } + + private void setHeadAngles(float headYaw, float headPitch) { + headYaw = MathHelper.clamp(headYaw, -30.0F, 30.0F); + headPitch = MathHelper.clamp(headPitch, -25.0F, 45.0F); + + this.head.yaw = headYaw * 0.017453292F; + this.head.pitch = headPitch * 0.017453292F; + } + + @Override + public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, int color) { + cobra.render(matrices, vertexConsumer, light, overlay, color); + } + + @Override + public ModelPart getPart() { + return cobra; + } +} diff --git a/src/main/java/net/voltexstudios/entity/client/cobra/CobraRenderer.java b/src/main/java/net/voltexstudios/entity/client/cobra/CobraRenderer.java new file mode 100644 index 0000000..1361615 --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/client/cobra/CobraRenderer.java @@ -0,0 +1,32 @@ +package net.voltexstudios.entity.client.cobra; + +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Identifier; +import net.voltexstudios.VoltexDesertUpdate; +import net.voltexstudios.entity.custom.CobraEntity; + +public class CobraRenderer extends MobEntityRenderer> { + + public CobraRenderer(EntityRendererFactory.Context context) { + super(context, new CobraModel<>(context.getPart(CobraModel.COBRA)), 0.5f); + } + + @Override + public Identifier getTexture(CobraEntity entity) { + return Identifier.of(VoltexDesertUpdate.MOD_ID, "textures/entity/cobra/cobra.png"); + } + + @Override + public void render(CobraEntity livingEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i) { + if(livingEntity.isBaby()) { + matrixStack.scale(0.5f, 0.5f, 0.5f); + } else { + matrixStack.scale(1f, 1f, 1f); + } + + super.render(livingEntity, f, g, matrixStack, vertexConsumerProvider, i); + } +} diff --git a/src/main/java/net/voltexstudios/entity/client/mummy/MummyAnimations.java b/src/main/java/net/voltexstudios/entity/client/mummy/MummyAnimations.java new file mode 100644 index 0000000..b94cfb1 --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/client/mummy/MummyAnimations.java @@ -0,0 +1,357 @@ +package net.voltexstudios.entity.client.mummy; + +import net.minecraft.client.render.entity.animation.Animation; +import net.minecraft.client.render.entity.animation.AnimationHelper; +import net.minecraft.client.render.entity.animation.Keyframe; +import net.minecraft.client.render.entity.animation.Transformation; + +public class MummyAnimations { + + public static final Animation WALK = Animation.Builder.create(1f).looping() + .addBoneAnimation("mambo", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, -3f, -2f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.08343333f, AnimationHelper.createTranslationalVector(0f, -2f, -2f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createTranslationalVector(0f, -2f, -2f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createTranslationalVector(0f, -3f, -2f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5834334f, AnimationHelper.createTranslationalVector(0f, -2f, -2f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.9167666f, AnimationHelper.createTranslationalVector(0f, -2f, -2f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createTranslationalVector(0f, -3f, -2f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("mambo", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(10f, 0f, 0f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("head", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-7.49f, 0.33f, 2.48f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.08343333f, AnimationHelper.createRotationalVector(0.02f, -0.06f, 2.34f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.16766666f, AnimationHelper.createRotationalVector(-7.49f, 0.33f, 2.48f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(-7.31f, -4.95f, 0.64f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5834334f, AnimationHelper.createRotationalVector(0.02f, -0.06f, 2.34f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.6766666f, AnimationHelper.createRotationalVector(-7.49f, 0.33f, 2.48f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(-7.49f, 0.33f, 2.48f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("body", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 27.5f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.16766666f, AnimationHelper.createRotationalVector(0f, -0.83f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(0f, -27.5f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.6766666f, AnimationHelper.createRotationalVector(0f, 0.83f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(0f, 27.5f, 0f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_arm", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(-1f, -1f, -4f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.5f, AnimationHelper.createTranslationalVector(0f, -1f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createTranslationalVector(-1f, -1f, -4f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_arm", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-89.65f, -4.99f, -10.06f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.08343333f, AnimationHelper.createRotationalVector(-97.49f, -4.98f, -10.89f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(-97.49f, -4.98f, -10.89f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(-91.71f, -4.94f, -15.07f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5834334f, AnimationHelper.createRotationalVector(-97.49f, -4.98f, -10.89f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.9167666f, AnimationHelper.createRotationalVector(-97.49f, -4.98f, -10.89f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(-89.65f, -4.99f, -10.06f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_arm", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, -1f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.5f, AnimationHelper.createTranslationalVector(1f, -1f, -4f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createTranslationalVector(0f, -1f, 0f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_arm", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-104.78f, 2.58f, 9.67f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.08343333f, AnimationHelper.createRotationalVector(-107.74f, 4.15f, 15.73f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(-107.74f, 4.15f, 15.73f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(-99.34f, 4.46f, 16.94f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5834334f, AnimationHelper.createRotationalVector(-107.74f, 4.15f, 15.73f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.9167666f, AnimationHelper.createRotationalVector(-107.74f, 4.15f, 15.73f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(-104.78f, 2.58f, 9.67f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_leg", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 4f, -4f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.08343333f, AnimationHelper.createTranslationalVector(0f, 2.67f, -3f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createTranslationalVector(0f, 1.33f, 1f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createTranslationalVector(0f, 2f, 2f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5834334f, AnimationHelper.createTranslationalVector(0f, 1.33f, 1f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.6766666f, AnimationHelper.createTranslationalVector(0f, 1f, -1f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.9167666f, AnimationHelper.createTranslationalVector(0f, 4f, -3f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createTranslationalVector(0f, 4f, -4f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_leg", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-17.1f, -6.26f, -3.29f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(15f, 0f, 7.5f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.6766666f, AnimationHelper.createRotationalVector(44.51f, -0.05f, -18.09f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.9167666f, AnimationHelper.createRotationalVector(-40.22f, -6.05f, 0.86f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(-17.1f, -6.26f, -3.29f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_leg", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 2f, 2f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.08343333f, AnimationHelper.createTranslationalVector(0f, 1f, 2f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.16766666f, AnimationHelper.createTranslationalVector(0f, 1f, -1f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createTranslationalVector(0f, 4f, -3f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createTranslationalVector(0f, 4f, -4f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5834334f, AnimationHelper.createTranslationalVector(0f, 2.5f, -3f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.9167666f, AnimationHelper.createTranslationalVector(0f, 1.3f, 1f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createTranslationalVector(0f, 2f, 2f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_leg", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(15f, 0f, 7.5f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.16766666f, AnimationHelper.createRotationalVector(44.51f, 0.05f, 18.09f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(-40.22f, 6.05f, -0.86f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5f, AnimationHelper.createRotationalVector(-17.1f, -6.26f, -3.29f), + Transformation.Interpolations.CUBIC), + new Keyframe(1f, AnimationHelper.createRotationalVector(15f, 0f, 7.5f), + Transformation.Interpolations.LINEAR))).build(); + + + public static final Animation IDLE = Animation.Builder.create(2f).looping() + .addBoneAnimation("mambo", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, -3f, -2f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.7916766f, AnimationHelper.createTranslationalVector(0f, -3.5f, -2f), + Transformation.Interpolations.CUBIC), + new Keyframe(2f, AnimationHelper.createTranslationalVector(0f, -3f, -2f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("mambo", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(10f, 0f, 0f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("head", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-7.49f, 0.33f, 2.48f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.7916766f, AnimationHelper.createRotationalVector(-2.5f, 2.82f, 2.37f), + Transformation.Interpolations.CUBIC), + new Keyframe(2f, AnimationHelper.createRotationalVector(-7.49f, 0.33f, 2.48f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("body", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 27.5f, 0f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("body", + new Transformation(Transformation.Targets.SCALE, + new Keyframe(0f, AnimationHelper.createScalingVector(1f, 1f, 1f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.7916766f, AnimationHelper.createScalingVector(0.98f, 0.98f, 0.98f), + Transformation.Interpolations.CUBIC), + new Keyframe(2f, AnimationHelper.createScalingVector(1f, 1f, 1f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_arm", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(-1f, -1f, -4f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_arm", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-89.65f, -4.99f, -10.06f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.7916766f, AnimationHelper.createRotationalVector(-84.36f, -9.03f, -0.79f), + Transformation.Interpolations.CUBIC), + new Keyframe(2f, AnimationHelper.createRotationalVector(-89.65f, -4.99f, -10.06f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_arm", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, -1f, 0f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_arm", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-104.78f, 2.58f, 9.67f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.7916766f, AnimationHelper.createRotationalVector(-96.6f, 4.28f, -1.81f), + Transformation.Interpolations.CUBIC), + new Keyframe(2f, AnimationHelper.createRotationalVector(-104.78f, 2.58f, 9.67f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_leg", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 4f, -4f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.7916766f, AnimationHelper.createTranslationalVector(0f, 4.5f, -3.75f), + Transformation.Interpolations.CUBIC), + new Keyframe(2f, AnimationHelper.createTranslationalVector(0f, 4f, -4f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_leg", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-17.1f, -6.26f, -3.29f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_leg", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 2f, 2f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.7916766f, AnimationHelper.createTranslationalVector(0f, 2.5f, 2.25f), + Transformation.Interpolations.CUBIC), + new Keyframe(2f, AnimationHelper.createTranslationalVector(0f, 2f, 2f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_leg", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(15f, 0f, 7.5f), + Transformation.Interpolations.LINEAR))).build(); + + + public static final Animation ATTACK = Animation.Builder.create(0.625f) + .addBoneAnimation("mambo", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, -3f, -2f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createTranslationalVector(0f, -2f, 1f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createTranslationalVector(0f, -3f, -2f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("mambo", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(10f, 0f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(-17.5f, 0f, 0f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(10f, 0f, 0f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("head", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-7.49f, 0.33f, 2.48f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(-69.99f, 3.46f, 4.11f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(-7.49f, 0.33f, 2.48f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("body", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(0f, 27.5f, 0f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_arm", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(-1f, -1f, -4f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createTranslationalVector(-1f, 0f, -3f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createTranslationalVector(-1f, -1f, -4f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_arm", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-89.65f, -4.99f, -10.06f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(-174.35f, -3.03f, 19.95f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.2916767f, AnimationHelper.createRotationalVector(-165.27f, -3.29f, 15.96f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(-77.15f, -4.99f, -10.06f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5834334f, AnimationHelper.createRotationalVector(-89.65f, -4.99f, -10.06f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_arm", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, -1f, 0f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createTranslationalVector(0f, 0f, 1f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createTranslationalVector(0f, -1f, 0f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_arm", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-104.78f, 2.58f, 9.67f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(-165.02f, 12.67f, -10.65f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.2916767f, AnimationHelper.createRotationalVector(-159.18f, 11.33f, -7.95f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(-92.28f, 2.58f, 9.67f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.5834334f, AnimationHelper.createRotationalVector(-104.78f, 2.58f, 9.67f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_leg", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 4f, -4f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.125f, AnimationHelper.createTranslationalVector(0f, 1f, -4f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.25f, AnimationHelper.createTranslationalVector(0f, 3.5f, -3.5f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createTranslationalVector(0f, 4f, -4f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("left_leg", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(-17.1f, -6.26f, -3.29f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.125f, AnimationHelper.createRotationalVector(-27.1f, -6.26f, -3.29f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(-19.6f, -6.26f, -3.29f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(-17.1f, -6.26f, -3.29f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_leg", + new Transformation(Transformation.Targets.TRANSLATE, + new Keyframe(0f, AnimationHelper.createTranslationalVector(0f, 2f, 2f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createTranslationalVector(0f, 0.5f, 3f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.4167667f, AnimationHelper.createTranslationalVector(0f, 2f, 2f), + Transformation.Interpolations.LINEAR))) + .addBoneAnimation("right_leg", + new Transformation(Transformation.Targets.ROTATE, + new Keyframe(0f, AnimationHelper.createRotationalVector(15f, 0f, 7.5f), + Transformation.Interpolations.LINEAR), + new Keyframe(0.25f, AnimationHelper.createRotationalVector(50f, 0f, 7.5f), + Transformation.Interpolations.CUBIC), + new Keyframe(0.4167667f, AnimationHelper.createRotationalVector(15f, 0f, 7.5f), + Transformation.Interpolations.LINEAR))).build(); +} diff --git a/src/main/java/net/voltexstudios/entity/client/mummy/MummyModel.java b/src/main/java/net/voltexstudios/entity/client/mummy/MummyModel.java new file mode 100644 index 0000000..e1ad582 --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/client/mummy/MummyModel.java @@ -0,0 +1,78 @@ +package net.voltexstudios.entity.client.mummy; + +import net.minecraft.client.model.*; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.entity.model.EntityModelLayer; +import net.minecraft.client.render.entity.model.SinglePartEntityModel; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.MathHelper; +import net.voltexstudios.VoltexDesertUpdate; +import net.voltexstudios.entity.custom.MummyEntity; + +public class MummyModel extends SinglePartEntityModel { + + public static final EntityModelLayer MUMMY = new EntityModelLayer(Identifier.of(VoltexDesertUpdate.MOD_ID, "mummy"), "main"); + + private final ModelPart mummy; + private final ModelPart head; + + public MummyModel(ModelPart root) { + this.mummy = root.getChild("mambo"); + this.head = this.mummy.getChild("head"); + } + + public static TexturedModelData getTexturedModelData() { + ModelData modelData = new ModelData(); + ModelPartData modelPartData = modelData.getRoot(); + ModelPartData mambo = modelPartData.addChild("mambo", ModelPartBuilder.create(), ModelTransform.pivot(0.0F, 0.0F, 0.0F)); + + ModelPartData head = mambo.addChild("head", ModelPartBuilder.create().uv(0, 0).cuboid(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new Dilation(0.0F)) + .uv(30, 32).cuboid(-2.0F, -6.0F, 3.0F, 0.0F, 9.0F, 3.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 0.0F, 0.0F)); + + ModelPartData body = mambo.addChild("body", ModelPartBuilder.create().uv(0, 16).cuboid(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 0.0F, 0.0F)); + + ModelPartData left_arm = mambo.addChild("left_arm", ModelPartBuilder.create().uv(32, 0).cuboid(-1.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, new Dilation(0.0F)) + .uv(44, 24).cuboid(2.0F, 2.0F, 0.0F, 2.0F, 6.0F, 0.0F, new Dilation(0.0F)) + .uv(40, 16).cuboid(0.0F, 6.0F, 2.0F, 0.0F, 4.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(5.0F, 2.0F, 0.0F)); + + ModelPartData right_arm = mambo.addChild("right_arm", ModelPartBuilder.create().uv(16, 32).cuboid(-2.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, new Dilation(0.0F)) + .uv(40, 40).cuboid(-4.0F, 0.0F, 0.0F, 2.0F, 6.0F, 0.0F, new Dilation(0.0F)) + .uv(36, 32).cuboid(0.0F, 6.0F, 2.0F, 0.0F, 4.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(-5.0F, 2.0F, 0.0F)); + + ModelPartData left_leg = mambo.addChild("left_leg", ModelPartBuilder.create().uv(24, 16).mirrored().cuboid(-1.9F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.0F)).mirrored(false) + .uv(40, 24).cuboid(2.1F, 4.0F, 0.0F, 2.0F, 8.0F, 0.0F, new Dilation(0.0F)), ModelTransform.pivot(1.9F, 12.0F, 0.0F)); + + ModelPartData right_leg = mambo.addChild("right_leg", ModelPartBuilder.create().uv(0, 32).cuboid(-2.1F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.0F)) + .uv(36, 40).cuboid(-4.1F, 1.0F, 0.0F, 2.0F, 8.0F, 0.0F, new Dilation(0.0F)), ModelTransform.pivot(-1.9F, 12.0F, 0.0F)); + + return TexturedModelData.of(modelData, 64, 64); + } + + @Override + public void setAngles(MummyEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.getPart().traverse().forEach(ModelPart::resetTransform); + this.setHeadAngles(netHeadYaw, headPitch); + + this.animateMovement(MummyAnimations.WALK, limbSwing, limbSwingAmount, 2f, 2.5f); + //this.updateAnimation(entity.idleAnimationState, MummyAnimations.IDLE, ageInTicks, 1f); + } + + private void setHeadAngles(float headYaw, float headPitch) { + headYaw = MathHelper.clamp(headYaw, -30.0F, 30.0F); + headPitch = MathHelper.clamp(headPitch, -25.0F, 45.0F); + + this.head.yaw = headYaw * 0.017453292F; + this.head.pitch = headPitch * 0.017453292F; + } + + @Override + public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, int color) { + mummy.render(matrices, vertexConsumer, light, overlay, color); + } + + @Override + public ModelPart getPart() { + return this.mummy; + } +} diff --git a/src/main/java/net/voltexstudios/entity/client/mummy/MummyRenderer.java b/src/main/java/net/voltexstudios/entity/client/mummy/MummyRenderer.java new file mode 100644 index 0000000..41e3c0e --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/client/mummy/MummyRenderer.java @@ -0,0 +1,32 @@ +package net.voltexstudios.entity.client.mummy; + +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Identifier; +import net.voltexstudios.VoltexDesertUpdate; +import net.voltexstudios.entity.custom.MummyEntity; + +public class MummyRenderer extends MobEntityRenderer> { + + public MummyRenderer(EntityRendererFactory.Context context) { + super(context, new MummyModel<>(context.getPart(MummyModel.MUMMY)), 0.5f); + } + + @Override + public Identifier getTexture(MummyEntity entity) { + return Identifier.of(VoltexDesertUpdate.MOD_ID, "textures/entity/mummy/mummy.png"); + } + + @Override + public void render(MummyEntity livingEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i) { + if(livingEntity.isBaby()) { + matrixStack.scale(0.5f, 0.5f, 0.5f); + } else { + matrixStack.scale(1f, 1f, 1f); + } + + super.render(livingEntity, f, g, matrixStack, vertexConsumerProvider, i); + } +} diff --git a/src/main/java/net/voltexstudios/entity/client/VultureAnimations.java b/src/main/java/net/voltexstudios/entity/client/vulture/VultureAnimations.java similarity index 98% rename from src/main/java/net/voltexstudios/entity/client/VultureAnimations.java rename to src/main/java/net/voltexstudios/entity/client/vulture/VultureAnimations.java index f95461d..386a7e7 100644 --- a/src/main/java/net/voltexstudios/entity/client/VultureAnimations.java +++ b/src/main/java/net/voltexstudios/entity/client/vulture/VultureAnimations.java @@ -1,4 +1,4 @@ -package net.voltexstudios.entity.client; +package net.voltexstudios.entity.client.vulture; import net.minecraft.client.render.entity.animation.Animation; import net.minecraft.client.render.entity.animation.AnimationHelper; diff --git a/src/main/java/net/voltexstudios/entity/client/VultureModel.java b/src/main/java/net/voltexstudios/entity/client/vulture/VultureModel.java similarity index 98% rename from src/main/java/net/voltexstudios/entity/client/VultureModel.java rename to src/main/java/net/voltexstudios/entity/client/vulture/VultureModel.java index 4264341..f5113c0 100644 --- a/src/main/java/net/voltexstudios/entity/client/VultureModel.java +++ b/src/main/java/net/voltexstudios/entity/client/vulture/VultureModel.java @@ -1,4 +1,4 @@ -package net.voltexstudios.entity.client; +package net.voltexstudios.entity.client.vulture; import net.minecraft.client.model.*; import net.minecraft.client.render.VertexConsumer; diff --git a/src/main/java/net/voltexstudios/entity/client/VultureRenderer.java b/src/main/java/net/voltexstudios/entity/client/vulture/VultureRenderer.java similarity index 96% rename from src/main/java/net/voltexstudios/entity/client/VultureRenderer.java rename to src/main/java/net/voltexstudios/entity/client/vulture/VultureRenderer.java index acb7438..82f348b 100644 --- a/src/main/java/net/voltexstudios/entity/client/VultureRenderer.java +++ b/src/main/java/net/voltexstudios/entity/client/vulture/VultureRenderer.java @@ -1,4 +1,4 @@ -package net.voltexstudios.entity.client; +package net.voltexstudios.entity.client.vulture; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.EntityRendererFactory; diff --git a/src/main/java/net/voltexstudios/entity/custom/BanditEntity.java b/src/main/java/net/voltexstudios/entity/custom/BanditEntity.java new file mode 100644 index 0000000..a75ea72 --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/custom/BanditEntity.java @@ -0,0 +1,133 @@ +package net.voltexstudios.entity.custom; + +import net.minecraft.entity.*; +import net.minecraft.entity.ai.NavigationConditions; +import net.minecraft.entity.ai.goal.*; +import net.minecraft.entity.ai.pathing.MobNavigation; +import net.minecraft.entity.attribute.DefaultAttributeContainer; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.mob.HostileEntity; +import net.minecraft.entity.mob.IllagerEntity; +import net.minecraft.entity.mob.MobEntity; +import net.minecraft.entity.passive.VillagerEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.raid.RaiderEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.LocalDifficulty; +import net.minecraft.world.ServerWorldAccess; +import net.minecraft.world.World; +import net.voltexstudios.item.ModItems; +import org.jetbrains.annotations.Nullable; + +public class BanditEntity extends IllagerEntity { + + public BanditEntity(EntityType entityType, World world) { + super(entityType, world); + } + + @Override + protected void initGoals() { + super.initGoals(); + this.goalSelector.add(0, new SwimGoal(this)); + this.goalSelector.add(2, new IllagerEntity.LongDoorInteractGoal(this)); + this.goalSelector.add(3, new RaiderEntity.PatrolApproachGoal(this, 10.0F)); + this.goalSelector.add(4, new MeleeAttackGoal(this, 1.0, false)); + //this.targetSelector.add(1, new RevengeGoal(this, RaiderEntity.class).setGroupRevenge()); + this.targetSelector.add(2, new ActiveTargetGoal<>(this, PlayerEntity.class, true)); + this.targetSelector.add(3, new ActiveTargetGoal<>(this, VillagerEntity.class, true)); + //this.targetSelector.add(4, new BanditEntity.TargetGoal(this)); + this.goalSelector.add(8, new WanderAroundGoal(this, 0.6)); + this.goalSelector.add(9, new LookAtEntityGoal(this, PlayerEntity.class, 3.0F, 1.0F)); + this.goalSelector.add(10, new LookAtEntityGoal(this, MobEntity.class, 8.0F)); + } + + @Nullable + @Override + public EntityData initialize(ServerWorldAccess world, LocalDifficulty difficulty, SpawnReason spawnReason, @Nullable EntityData entityData) { + EntityData entityData2 = super.initialize(world, difficulty, spawnReason, entityData); + ((MobNavigation)this.getNavigation()).setCanPathThroughDoors(true); + Random random = world.getRandom(); + this.initEquipment(random, difficulty); + this.updateEnchantments(world, random, difficulty); + return entityData2; + } + + @Override + public IllagerEntity.State getState() { + if (this.isAttacking()) { + return IllagerEntity.State.ATTACKING; + } else { + return this.isCelebrating() ? IllagerEntity.State.CELEBRATING : IllagerEntity.State.CROSSED; + } + } + + @Override + protected void mobTick() { + if (!this.isAiDisabled() && NavigationConditions.hasMobNavigation(this)) { + boolean bl = ((ServerWorld)this.getWorld()).hasRaidAt(this.getBlockPos()); + ((MobNavigation)this.getNavigation()).setCanPathThroughDoors(bl); + } + + super.mobTick(); + } + + public static DefaultAttributeContainer.Builder createBanditAttributes() { + return HostileEntity.createHostileAttributes() + .add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.35F) + .add(EntityAttributes.GENERIC_FOLLOW_RANGE, 12.0) + .add(EntityAttributes.GENERIC_MAX_HEALTH, 24.0) + .add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 5.0); + } + + @Override + protected void initEquipment(Random random, LocalDifficulty localDifficulty) { + this.equipStack(EquipmentSlot.MAINHAND, ModItems.SABER.getDefaultStack()); + } + + @Override + public void addBonusForWave(ServerWorld world, int wave, boolean unused) { + + } + + @Override + protected SoundEvent getAmbientSound() { + return SoundEvents.ENTITY_PILLAGER_AMBIENT; + } + + @Override + protected SoundEvent getDeathSound() { + return SoundEvents.ENTITY_PILLAGER_DEATH; + } + + @Override + protected SoundEvent getHurtSound(DamageSource source) { + return SoundEvents.ENTITY_PILLAGER_HURT; + } + + + @Override + public SoundEvent getCelebratingSound() { + return SoundEvents.ENTITY_PILLAGER_CELEBRATE; + } + + static class TargetGoal extends ActiveTargetGoal { + public TargetGoal(BanditEntity banditEntity) { + super(banditEntity, LivingEntity.class, 0, true, true, LivingEntity::isMobOrPlayer); + } + + @Override + public boolean canStart() { + return super.canStart(); + } + + @Override + public void start() { + super.start(); + this.mob.setDespawnCounter(0); + } + } +} diff --git a/src/main/java/net/voltexstudios/entity/custom/CobraEntity.java b/src/main/java/net/voltexstudios/entity/custom/CobraEntity.java new file mode 100644 index 0000000..f51f9a3 --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/custom/CobraEntity.java @@ -0,0 +1,96 @@ +package net.voltexstudios.entity.custom; + +import net.minecraft.block.BlockState; +import net.minecraft.entity.AnimationState; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.ai.goal.*; +import net.minecraft.entity.attribute.DefaultAttributeContainer; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.mob.HostileEntity; +import net.minecraft.entity.mob.MobEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.World; +import net.voltexstudios.blocks.ModBlocks; + +import java.util.EnumSet; + +public class CobraEntity extends HostileEntity { + + public final AnimationState idleAnimationState = new AnimationState(); + private int idleAnimationTimeout = 0; + + public CobraEntity(EntityType entityType, World world) { + super(entityType, world); + } + + @Override + protected void initGoals() { + this.goalSelector.add(1, new SwimGoal(this)); + this.goalSelector.add(1, new CobraEntity.QuicksandJumpGoal(this, this.getWorld())); + this.goalSelector.add(4, new MeleeAttackGoal(this, 0.8, false)); + this.goalSelector.add(5, new WanderAroundGoal(this, 0.8)); + + this.targetSelector.add(1, new RevengeGoal(this).setGroupRevenge()); + this.targetSelector.add(2, new ActiveTargetGoal<>(this, PlayerEntity.class, true)); + } + + @Override + public void tick() { + super.tick(); + + if (this.getWorld().isClient()) { + this.setupAnimationStates(); + } + } + + private void setupAnimationStates() { + if (this.idleAnimationTimeout <= 0) { + this.idleAnimationTimeout = 14; + this.idleAnimationState.start(this.age); + } else { + --this.idleAnimationTimeout; + } + } + + public static DefaultAttributeContainer.Builder createCobraAttributes() { + return HostileEntity.createHostileAttributes() + .add(EntityAttributes.GENERIC_MAX_HEALTH, 8.0) + .add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.4f) + .add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 1.0); + } + + static class QuicksandJumpGoal extends Goal { + private final MobEntity entity; + private final World world; + + public QuicksandJumpGoal(MobEntity entity, World world) { + this.entity = entity; + this.world = world; + this.setControls(EnumSet.of(Goal.Control.JUMP)); + } + + @Override + public boolean canStart() { + boolean bl = this.entity.hurtTime > 0; + if (bl) { + BlockPos blockPos = this.entity.getBlockPos().up(); + BlockState blockState = this.world.getBlockState(blockPos); + return blockState.isOf(ModBlocks.QUICKSAND_BLOCK) || blockState.getCollisionShape(this.world, blockPos) == VoxelShapes.empty(); + } else { + return false; + } + } + + @Override + public boolean shouldRunEveryTick() { + return true; + } + + @Override + public void tick() { + this.entity.getJumpControl().setActive(); + } + } +} diff --git a/src/main/java/net/voltexstudios/entity/custom/DuneProjectileEntity.java b/src/main/java/net/voltexstudios/entity/custom/DuneProjectileEntity.java index 58259f1..3673ec5 100644 --- a/src/main/java/net/voltexstudios/entity/custom/DuneProjectileEntity.java +++ b/src/main/java/net/voltexstudios/entity/custom/DuneProjectileEntity.java @@ -6,6 +6,7 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.projectile.thrown.ThrownItemEntity; import net.minecraft.item.Item; import net.minecraft.item.Items; +import net.minecraft.particle.ParticleTypes; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.world.World; @@ -22,6 +23,27 @@ public class DuneProjectileEntity extends ThrownItemEntity { super(EntityType.EGG, livingEntity, world); } + @Override + public void tick() { + super.tick(); + System.out.println("Entity ID: " + this.getId()); // Debug-Nachricht + World world = this.getWorld(); + if (world.isClient) { + System.out.println("Spawning particles on client!"); // Debug-Nachricht + for (int i = 0; i < 5; i++) { + world.addParticle( + ParticleTypes.FLAME, + this.getX() + (random.nextDouble() - 0.5) * 0.5, + this.getY() + (random.nextDouble() - 0.5) * 0.5, + this.getZ() + (random.nextDouble() - 0.5) * 0.5, + 0.0D, + 0.0D, + 0.0D + ); + } + } + } + @Override protected void onCollision(HitResult hitResult) { super.onCollision(hitResult); @@ -36,6 +58,7 @@ public class DuneProjectileEntity extends ThrownItemEntity { super.onEntityHit(entityHitResult); Entity entity = entityHitResult.getEntity(); entity.damage(this.getDamageSources().thrown(this, this.getOwner()), DAMAGE); + this.discard(); } diff --git a/src/main/java/net/voltexstudios/entity/custom/MummyEntity.java b/src/main/java/net/voltexstudios/entity/custom/MummyEntity.java new file mode 100644 index 0000000..4b8bac9 --- /dev/null +++ b/src/main/java/net/voltexstudios/entity/custom/MummyEntity.java @@ -0,0 +1,86 @@ +package net.voltexstudios.entity.custom; + +import net.minecraft.entity.AnimationState; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.ai.goal.*; +import net.minecraft.entity.attribute.DefaultAttributeContainer; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.mob.HostileEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.world.World; + +public class MummyEntity extends HostileEntity { + + public final AnimationState idleAnimationState = new AnimationState(); + private int idleAnimationTimeout = 0; + + public MummyEntity(EntityType entityType, World world) { + super(entityType, world); + } + + @Override + protected void initGoals() { + this.goalSelector.add(8, new LookAtEntityGoal(this, PlayerEntity.class, 8.0F)); + this.goalSelector.add(8, new LookAroundGoal(this)); + + this.goalSelector.add(2, new MummyAttackGoal(this, 1f, false)); + this.goalSelector.add(7, new WanderAroundGoal(this, 0.7f)); + this.targetSelector.add(2, new ActiveTargetGoal<>(this, PlayerEntity.class, true)); + } + + @Override + public void tick() { + super.tick(); + + if (this.getWorld().isClient()) { + this.setupAnimationStates(); + } + } + + private void setupAnimationStates() { + if (this.idleAnimationTimeout <= 0) { + this.idleAnimationTimeout = 40; + this.idleAnimationState.start(this.age); + } else { + --this.idleAnimationTimeout; + } + } + + public static DefaultAttributeContainer.Builder createMummyAttributes() { + return HostileEntity.createHostileAttributes() + .add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.30F) + .add(EntityAttributes.GENERIC_FOLLOW_RANGE, 12.0) + .add(EntityAttributes.GENERIC_MAX_HEALTH, 24.0) + .add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 5.0); + } + + static class MummyAttackGoal extends MeleeAttackGoal { + private final MummyEntity mummy; + private int ticks; + + + public MummyAttackGoal(MummyEntity mummy, double speed, boolean pauseWhenMobIdle) { + super(mummy, speed, pauseWhenMobIdle); + this.mummy = mummy; + } + + @Override + public void start() { + super.start(); + this.ticks = 0; + } + + @Override + public void stop() { + super.stop(); + this.mummy.setAttacking(false); + } + + @Override + public void tick() { + super.tick(); + this.ticks++; + this.mummy.setAttacking(this.ticks >= 5 && this.getCooldown() < this.getMaxCooldown() / 2); + } + } +} diff --git a/src/main/java/net/voltexstudios/item/ModItemGroups.java b/src/main/java/net/voltexstudios/item/ModItemGroups.java index 184de7d..da452f5 100644 --- a/src/main/java/net/voltexstudios/item/ModItemGroups.java +++ b/src/main/java/net/voltexstudios/item/ModItemGroups.java @@ -14,10 +14,11 @@ public class ModItemGroups { public static final ItemGroup DESERT_UPDATE_GROUP = Registry.register(Registries.ITEM_GROUP, Identifier.of(VoltexDesertUpdate.MOD_ID, "desert_update"), - FabricItemGroup.builder().icon(() -> new ItemStack(ModItems.DUNE_STAFF)) + FabricItemGroup.builder().icon(() -> new ItemStack(ModItems.SABER)) .displayName(Text.translatable("itemgroup.voltexdesertupdate.desert_update")) .entries((displayContext, entries) -> { entries.add(ModItems.DUNE_STAFF); + entries.add(ModItems.SABER); entries.add(ModBlocks.QUICKSAND_BLOCK); entries.add(ModBlocks.PALM_WOOD); @@ -25,6 +26,19 @@ public class ModItemGroups { entries.add(ModBlocks.PALM_LEAVES); entries.add(ModBlocks.PALM_SAPLING); entries.add(ModBlocks.PALM_LOG); + + entries.add(ModBlocks.WIPED_SAND_SHADE_1); + entries.add(ModBlocks.WIPED_SAND_SHADE_2); + entries.add(ModBlocks.SANDSTONE_BRICKS); + entries.add(ModBlocks.SANDSTONE_TILE_BRICKS); + entries.add(ModBlocks.SANDSTONE_ROCK_SHADE_1); + entries.add(ModBlocks.SANDSTONE_ROCK_SHADE_2); + entries.add(ModBlocks.SANDSTONE_ROCK_SHADE_3); + entries.add(ModBlocks.SANDSTONE_ROCK_SHADE_4); + entries.add(ModBlocks.SANDSTONE_ROCK_SHADE_5); + entries.add(ModBlocks.SANDSTONE_ROCK_SHADE_6); + entries.add(ModBlocks.SANDSTONE_ROCK_SHADE_7); + entries.add(ModBlocks.SANDSTONE_ROCK_SHADE_8); }).build()); public static void registerItemGroups() { diff --git a/src/main/java/net/voltexstudios/item/ModItems.java b/src/main/java/net/voltexstudios/item/ModItems.java index 89e7735..b358848 100644 --- a/src/main/java/net/voltexstudios/item/ModItems.java +++ b/src/main/java/net/voltexstudios/item/ModItems.java @@ -1,14 +1,14 @@ package net.voltexstudios.item; import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroups; +import net.minecraft.item.*; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.util.Identifier; import net.minecraft.util.Rarity; import net.voltexstudios.VoltexDesertUpdate; import net.voltexstudios.item.custom.DuneStaffItem; +import net.voltexstudios.item.custom.SaberItem; public class ModItems { @@ -18,6 +18,12 @@ public class ModItems { .fireproof() )); + public static final Item SABER = registerItem("saber", new SaberItem(ToolMaterials.IRON, new Item.Settings() + .attributeModifiers( + SwordItem.createAttributeModifiers(ToolMaterials.IRON, 3, -2.4F) + ) + )); + private static Item registerItem(String name, Item item) { return Registry.register(Registries.ITEM, Identifier.of(VoltexDesertUpdate.MOD_ID, name), item); } @@ -28,6 +34,7 @@ public class ModItems { ItemGroupEvents.modifyEntriesEvent(ItemGroups.TOOLS).register(entries -> { // add items to the ingredients tab entries.add(DUNE_STAFF); + entries.add(SABER); }); } } diff --git a/src/main/java/net/voltexstudios/item/custom/SaberItem.java b/src/main/java/net/voltexstudios/item/custom/SaberItem.java new file mode 100644 index 0000000..426da35 --- /dev/null +++ b/src/main/java/net/voltexstudios/item/custom/SaberItem.java @@ -0,0 +1,12 @@ +package net.voltexstudios.item.custom; + +import net.minecraft.item.ItemStack; +import net.minecraft.item.SwordItem; +import net.minecraft.item.ToolMaterial; + +public class SaberItem extends SwordItem { + + public SaberItem(ToolMaterial toolMaterial, Settings settings) { + super(toolMaterial, settings); + } +} diff --git a/src/main/java/net/voltexstudios/world/ModConfiguredFeatures.java b/src/main/java/net/voltexstudios/world/ModConfiguredFeatures.java index 7bc61da..2361b94 100644 --- a/src/main/java/net/voltexstudios/world/ModConfiguredFeatures.java +++ b/src/main/java/net/voltexstudios/world/ModConfiguredFeatures.java @@ -21,6 +21,8 @@ public class ModConfiguredFeatures { public static void bootstrap(Registerable> context) { + VoltexDesertUpdate.LOGGER.info("Bootstrapping ModConfiguredFeatures"); + register(context, PALM_KEY, Feature.TREE, new TreeFeatureConfig.Builder( BlockStateProvider.of(ModBlocks.PALM_LOG), new BendingTrunkPlacer(3, 2, 0, 4, UniformIntProvider.create(1, 2)), diff --git a/src/main/resources/assets/voltexdesertupdate/lang/en_us.json b/src/main/resources/assets/voltexdesertupdate/lang/en_us.json index 0f27fb0..7d0df70 100644 --- a/src/main/resources/assets/voltexdesertupdate/lang/en_us.json +++ b/src/main/resources/assets/voltexdesertupdate/lang/en_us.json @@ -1,7 +1,9 @@ { "item.voltexdesertupdate.dune_staff": "Staff of the Dunes", + "item.voltexdesertupdate.saber": "Saber", "entity.voltexdesertupdate.vulture": "Vulture", + "entity.voltexdesertupdate.bandit": "Bandit", "itemgroup.voltexdesertupdate.desert_update": "Desert Update", @@ -10,6 +12,18 @@ "block.voltexdesertupdate.palm_wood": "Palm Wood", "block.voltexdesertupdate.palm_planks": "Palm Planks", "block.voltexdesertupdate.palm_leaves": "Palm Leaves", - "block.voltexdesertupdate.palm_sapling": "Palm Sapling" + "block.voltexdesertupdate.palm_sapling": "Palm Sapling", + "block.voltexdesertupdate.sandstone_bricks": "Sandstone Bricks", + "block.voltexdesertupdate.sandstone_tile_bricks": "Sandstone Tile Bricks", + "block.voltexdesertupdate.wiped_sand_shade_1": "Wiped Sand", + "block.voltexdesertupdate.wiped_sand_shade_2": "Wiped Sand", + "block.voltexdesertupdate.sandstone_rock_shade_1": "Sandstone Rock", + "block.voltexdesertupdate.sandstone_rock_shade_2": "Sandstone Rock", + "block.voltexdesertupdate.sandstone_rock_shade_3": "Sandstone Rock", + "block.voltexdesertupdate.sandstone_rock_shade_4": "Sandstone Rock", + "block.voltexdesertupdate.sandstone_rock_shade_5": "Sandstone Rock", + "block.voltexdesertupdate.sandstone_rock_shade_6": "Sandstone Rock", + "block.voltexdesertupdate.sandstone_rock_shade_7": "Sandstone Rock", + "block.voltexdesertupdate.sandstone_rock_shade_8": "Sandstone Rock" } \ No newline at end of file diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block textures.zip b/src/main/resources/assets/voltexdesertupdate/textures/block textures.zip new file mode 100644 index 0000000000000000000000000000000000000000..14b76b4084950ae8158f71d1ccfd9db98eeab97a GIT binary patch literal 7416 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 FV1jMGppgIo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_1.png b/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_1.png new file mode 100644 index 0000000000000000000000000000000000000000..df92292ce6cd0e84f4cd5507ab4c300a533d9eba GIT binary patch literal 510 zcmVPx$xJg7oR5*=QQo)MbFc6)UV-U6!99XS=F$Tx5xBc|~K+nAv8cIvRF&MMp#3?q> zSPa;P9%d`HI!VL4dGF2B)9;^O#;(~MKEJ-L9$zZCKEW_ z4tY7x*RgAMGLlkxJOBid+8hD^0EAirzzzUba(i=p442IzcO*rH(+vQ$$?VYI&!^|t zH=J%nC>D!TTW=2c=9m=K#~2y$RDWr|f0a@JfH>r35GfW)gp0)>QrzU_B}KJ2$M;{~ z7K>sf7wZ3nYLng1Cn=R3dNxCZ+GKH@YLf{fWUiGQ{5wIUrnY_z7hat&?qnnYzz#ik zFp>u+MHR;>01zP;4|%zg6N|;oVW<^j{xm-TfMv)u8@om&FP@nQg*F-cV@w>UkKy7? zhgywYBc<9LvNpktI~gq&L#>jc@_yLf=J2y-LD!!5$O!;I9H(~Z*$?M%$V+W9#t06J zwMwb@^K1^Mwq7ibT{F*D9>f^oA7j^WH&e~?Rhul-YHyDB^T|gpSQ!!WDnqRni|oWl z8AR%SK22>60D_e*_9IdM;o>;;$#C8>%|fmI0#&pkOjb!dH2?qr07*qoM6N<$f=Oc8 A`~Uy| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_2.png b/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8af43f52d53ad59822393a26047377f1d1bdb1 GIT binary patch literal 527 zcmV+q0`UEbP)Px$$w@>(R5*=IQeBGMFc6-oEs4Y^4qoInBv{nYr}hNB#@?V;>8*NzLZMIHq%TCL%cCFp47J5xGidF?c%9> zra(n*#8dZd?ShWIbB)wvHIWGq0H`JT2mkuB^&w7a(N|D3Nc%zZr4 z`Er@*?0kLMHIMfFJci+Xxd;lhaa;1SoR_t&m`3U`v!<6H-+!u!1OQ>}0<~nLVTcq6 zwdAE_ueMb=FMr+NQy>xj2^GFJTI6Q6T&s!PA36>bhFIhVr&*C35r)WG(VyV|gIaFf zw%xUSx-^t}EC67C=y-#XOkCRvrx^f*A@b1LMf4{@fyhTx$e4%q0|2m%^42)l+?ZKX z4nq`0Za5!faGJHdHibro&NXTx$w&4kSW)UR1ww_jtx_J2M?SvxEZWD8@5l`R08X?0 zq2oNkrI6}bWEMEY>9;cb?pV_)P36_)dI zwOpsl1v?8v{C7%)6o`|gDpAYTa=md|01)hq0`VzXZGY%+nx$sA@AB55!oLh8D(<|I Rmq!2q002ovPDHLkV1fue_P+oC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_3.png b/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1f50eef2d8a35b59279c5755b2df404a6288aaf0 GIT binary patch literal 522 zcmV+l0`>igP)Px$#7RU!R5*=IQq6AKKoFj6kYGo)?BIiT6m$&c<_R+gEW`vFfxam20x5fKqs?=Mw)@lR)ODS3ACJxD z(j`gMb=}53e=I%#=gXy2@P4(nuEBUToE5pyF!L+x+sDJtN9H~esp%w-BNm}R3-9A7 zZ1;ni@o4z#@d@550Ic`Yjc<&mp)`I!{^oNK<#@%gJR@RuCa2aTo$x`tr zm?R!-w)gL-!`Sqik$ zgQzE>)!O!EMGmxOWo0Tqk89u>#1WU3Kf1FJiFg$rWo2bsP95FZWGQPs9u4PPx$!%0LzR5*=IQq6AEFc2P0g*9=sannjEaaJf74)74X1Mk55@HRXGHzW>=#9mTq zMU`lBkd1|p;2>kM*jZh^Q&)PzqGy^BY%8f&v7Q^tNc9^y zD7RKU43Cv7_Y<|gOH6`VFL(gRj2we3Z!TchhyCB_d^!mCewq%) z<0?(hr^D{<{$2H!=;?4gDk5rpKSo{`wswWkBqkBopRqXj4a-iC?+N$B1EiRvE-3>W8{~f)!luNJxT)ruu5?VLGnls zl`C^=1#?lmf|y(1NhWzbW8^XRnbEDM{X{~PTMH1>^3(cGZj01@qTE_UTo-n;ZI;TF zI3s3RB_a}$Bw4D=jNWXU#`gfA#2FFEDn)GwVU^<2jP!kTZ4vPw^L{Hr$!vKZ00000 LNkvXXu0mjfUP9$v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_5.png b/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_5.png new file mode 100644 index 0000000000000000000000000000000000000000..db9a64903843b2c5c56b763fe023e323bcfc75c3 GIT binary patch literal 554 zcmV+_0@eMAP)Px$I-@~Qk!>y0tBb^Z0S^ameeR8nB2)Ol5J6sJX@ zZPNztq)@~*ZBgiE-y2i28B3F7!~=lh)Vdx303c-?0M0&tT*B#*oj+FFUAONhrw8Qj zoI4J~1sE_EJ4e;fu9ysPSsb$z**mpVrpHe<*-UcUeQohAtYkfP9vQxqCv z4BjbDpEbP5D|KEj=0E=22JeVJ_>}S2LZwivb(JPb(^@nWVw6J3j7p(Mh!JP`gNK)+ zIIZeUwcX+B#v+?B0su{Gu>+AvTo$s0<6X0V-nbMBz>@J{OpV<*s@eBa zsFd+?F<-5#F>->+LX5b|l=0vlIvJx>oUYbYRc`>`?8~PsbKg!Ur>hT_opS(i!Lz2d sFoCAqzn9`T4FB8idRa~hnNHt40r{pYmI==$?*IS*07*qoM6N<$f&`8Fi2wiq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_6.png b/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ce8227c0a6f1a18878ea0a52558357a0ae0a49 GIT binary patch literal 549 zcmV+=0^0qFP)Px$-$_J4R5*=IQq7LjFc6-2>$>( zm4cc^du5)jmh-Pa?}K+NI47ifY7`OIn`$=Y)>;bF4-pX;k|W}zA0lZ5=iu?AQdG6s z`}pqdo3WlsA(UbOV6CMNLK1PAXA8*zpdTU?v!V#jvEW_fgOG|a-|r0okd1tq8m;jP zN9BHq3=t_GVHT3#ZQC)lkjiL1oASm7^2SI}C>6XDQk8i&=An3v4^KU_dfU((X#)VT zklb2Jd1wz=Q6M5=CS{)WLo`}bCi*;$4~;je6vn%~k3@us0G5ppqcwGt)ZRx#6jH60 z^Yx}0SI)>;KSUa(kScgbNyb&CQmi*sRT}`f_;CBG-t9S@S1(_5odbaRrLxwZ;k;|R nXSg^VPk$cTo9mJ%$%ONN?p`gE=D3@C00000NkvXXu0mjfSi|<8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_7.png b/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_7.png new file mode 100644 index 0000000000000000000000000000000000000000..60647b38c6ee96c7f9045043cd37b2ab0e20d763 GIT binary patch literal 527 zcmV+q0`UEbP)Px$$w@>(R5*=IQq5}IFc2PVBQf4YazL?ZS=^oi?OXIx`WStszF3bvErEh@DKai= zd9xZc8*dM@G0{mH=9}+lRQ&kLwD0As`}Zz2X6&GJ47k003aH1c1$#&n;XoSS(#UJ*Vg5+)w%isk=Rb$T z?%{!QJ}-;Pl)7=8GPiEqdM{%TQKqh!pHIJ0YXDG9-Bd=4P-4!MDx&Tetny z|IL&X5g9Ds3U$`)`yRE9bG(MZ?5tauopp+sg^P&b^;AZ8FV@d0GCQ(&KKoDT>XF{tp+RFY<%V R+ll}H002ovPDHLkV1lgv@Pq&W literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_8.png b/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/sandstone_rock_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ddb87a0a8ce097226e04a1862081bb3a45f4ff GIT binary patch literal 518 zcmV+h0{Q)kP)Px$z)3_wR5*=IQoU~5Fc3a75>EzcE1&=)t~@lz-n~Hk5P6`!WT!5LJH$}YR77P_ zu|83uI~*c}6M4Ar?~bc)k6*lRJ52Zc{RG508e^qWJ9qNFWbIrv3;}>ORt-aNuIiDz zZ#8qCY;ro~?E++kb%X#N6F6Tr;x zjap-mO_OJN7=na}bF{`!QLh9Dh+6yn;s z4J#swbCjZU)dVO29VTWL%+KeJh{VQjyYap?#xBZnj>;M<`2@3J^>iMW(9G<8n`e24 zNxUgh)XV^wxpr>JBk?*+?>(zO=U(Q>ZzJEZ3PX@QvIplXYph_h+POGK?_0?vpQppr z!I!K7^hiQvjU@_dd3fJSw@CF!)>vjfY>Q*lEGt*yEY49z$;<#G$+F6l^|5JA-V@Qy z*N4035Hg|Px$YDq*vR5*=ok}*%iFc5{Gi!&Ivsf4OZRfPmY8ITxQSlRhE{0)8#VlF!)QrD(i zC<#>*DRx~Cb_BykM-}kqcjwdlo=@c23jnD!fasm~)|bWf`W65yN{vjlZHmqL&HVs? z_cnTG>ynz>zMxj>24Jc!T0zx;skZcn3c*-CoKcNt2WJwUk|LEBtK}1oh zUIx5Hb-w1*-M*ld`G35(6uRVqi82_Qq$BL$y+teHVb7bE=v1kZSS_E9mz2(Ux*){A ad-Vg-H!U3q-y9hL0000Px$RY^oaR5*=glEG@jFbsxOH4F>k7S`Cj!&HkGurV{TO;t&7MRR2dx`qvP2@{ z?8(hI1e8I?_#+4;h!)ifaW)YVp;*CnBCsMF9tIg~8!sF}q0gScx+P)sU0SqhS}!CL zQ6&MmD7rGRL{UW!K!1EGxNy$ngh)neX#=d41eSA^a~`KEX~gf{mB3T002ovPDHLk FV1j4Ws!{*| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/wiped_sand_2.png b/src/main/resources/assets/voltexdesertupdate/textures/block textures/blocks/wiped_sand_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7674e0b3f735e9ad1052ba0640a953df9478d3 GIT binary patch literal 412 zcmV;N0b~A&P)Px$R!KxbR5*=gl1**{Aq<6IVI&4DvPmbJRn(lhH|nmZNHwb{88$&UMJiGkZ;D!V zgKXoU_Zgnv-(Gc10GvoIrD+b+Tub@y>g^Jy+2rK|006yRy5U6b%eiTe$Cp}4c;4Ta zvklSu(S&IRP}3CvGi->p6t_Rv5OqyWv#x3Io`&JL-SGs#hM1QRC(<-K5gP2sTL7kM zuBBK%+7P>9o=hSMvz^GmJY4~R%{p!c$jWR+40Y4j+r|2^(>KjzrOnocy1PVO6EEnJ z6#$!V3^qh3!Wx2pJsusGL9WY&Xjs~1kah6hhDbf!3JIHLqid?^+J~^sM!!Ee5gTGn zSC)lo9-8LCd-irB^=BKb=VT7twnUYDDSnC#+K<+cVVZw$$%$-VqrcaEIn&iOwZ|vN z+7LU8=^xXHSU>KLr|$N%rYp+;41cbF7WMnF0ql;a9{dKqkuaU(b6(s40000UChCdRgKoKBI=nC4UbpHWb z&%_>)(m3vi(lkK%bs?ThT?!h0e*ac<0dh+GS7kYOk@B_+*Xe22X;u*t4=}Ll?OHcL z45Kav1o3W~wf95>&_*o^6fONcXSpIk4#UgKZx>?(%tliYwJfFJ_a8F+k|5nrrB+0;Zw)d#f%l+ZjwcEJU zRMeV;7-i_FnSJ(8rwbq{MDGloS_8D2>e}*Kj2@ABmuQm zV7J>IkGmVL(|_mJi;H0sLrxEezcI|L0eAbHL)&0+ZQ{MaA#ZlAU(0OwMtxioD+l<|ENy}j@7{B$3~$K2cRxdHoK%E!Y} zG$#pu{rtOnBmgZdV6_4_Bg*FKxtx?bP>IQr48*X!+#^Tp;% zDc0J0_0Dy(S#!l&u?A#`YHd;LTH^Tl@C7(c6Yy(V`VD^oFU$o_qXi32lU@QQA}ix) delta 573 zcmV-D0>b@~1cU{UFn0w85IuM9$BRwdv_?T{rFKy*p%z!}M3I84 zA_xl7g-h{=`43$B4+KSP{Xo%Lty-HVP4e>c?w$ML;-aXt8<;a^&N(A)U%dbz#s~la z5w)gGZiNs4taZldtZI7Ss1F*I#iUNSOR!VvA#%c&5 zgrJ_i|L(nCUp~FF*NZU{(dLy!08&Z-A%v`Ld$-#;H@~yj6Aw1mz4uBfV+=EA5+OuN zNh!5@w)O7Ykbjw#QW>lOD5U_*H5(}!snkJlptW|+#Tei24>H($Z;XjC5`g71Ez4o= zp!enQxH~ANl+1kT{3#;x-fN;}qftA*FyF8o#GUJ_*1DoF%)UK0ol;=tY(Pqhh=yZM zDG4D$2*zl|?1`wZt=76ftYVBQrP-!7ron9c!IjfhS4#mS;m!*_>+89&UwbpuVsr~%JkIZ0<$q8mBsCNE@F&xs$V!Nzr4hg`E zk3Wg1Ju)+;l)AVu3t(b-Jh6jOCGOwsWN2Q~o}C78G%WM0|CSqDQw^om(XjjljgCvw L1dE!7lj{K{=0p-+ diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/palm_log_top.png b/src/main/resources/assets/voltexdesertupdate/textures/block/palm_log_top.png index fbafe6d9848942d1c82b07a4f51a43cabc213e36..253d7bb60955afb21be1202d1a79a6ab13a12a4f 100644 GIT binary patch delta 332 zcmV-S0ki&?1eODkF@H8mL_t(IjdhYiPQx$|ML(@u;wr{SBs3s4MX*8~pxlAmaMH3x zAf!kw3PN>iYO8T27Gnk%iZ}jIJb&JN`{3bz+8Br3WqkmUXM*%(tmsUsr2ueyq0*yy zCae$Dakf}`E~}IR@K~=zV_c=w>&GVmv+e-MVc%`G^Y*)K3xBuS0=T;>00{QJIoAx6 zb|XEjm(~aCgP_fdg$XQ1u>x0{D$xM$1C!<5|K=o;8 zJ=)~3PlD#2w~mIUR*Y0?*(cC+%#)-zbypU`_+yDF1 zQxT~XX96G{eL)8)-cB2x(#v9dMzTKq{F~KFdK7!7;#gzB^{GnpCh_b2kq~(%7OU{` ewn|AT>!-%^%O{J;SbYKcrMzGWw`16o@&P9AIHB(V delta 463 zcmV;=0WkiS1DFJmF@Ly8L_t(Ija5=hZrd;v9EwjQEnA7~B#7OjZqd&TdW!CPjBa|N z0=-Iso}!BY28u2WtFRqQp(u)!x_FM@zSWz@$KlL?;>+icr&9%>D6Wsk$MyPES(bJE zv|QeM@4fd`Ri`NtQC&af`HXhE^6RHJIM+nVKE5x20sufj27eSulJN2OpC#Si-T?T0 z+AF1ano??vIaMcyAp~w-WLH&H69c8xyPNy*EQIiS{r0fm8)Fzg{M`art(G*hI_E+N zLWp4)gb2taF1blxOuEsz5sBJcgq+YkZ~sh|MJVaR*It5V9%=7D%mrt;Z0 zKHROwesd`Au74Jz)Wu?+jDR_~an3pCxbM0SfJzkrYn!Af3Z+!znzQ><;i8z%7$c?h z-UCROfGfu6JI@=O4|{9dwsDP=l8C6PYVZGJ-5g4lD%;rc5spYoIiDAlBtj{LrX?a{ z%-Wc)>tc*Em1(VGj4?*7HEXlh(xp}*#F#ppW*MWlvqUP!zqWsfh;QPx$en~_@R5*=ol22>fKoG@8)>yle&90$POo&1Xg&uq{z4X#U&N=j&@6_+-TW&HY zc5@ha5l#mon5U8Se*32Q{qU1QG8)Zf41=P5|4~^zZ4m&BMhb~S>b5&m zS5{RkJsBhcH15K z005@e06;!)OaP!N1OSdnRhSiy2^aI3nT%H(x45#|?y$|q9LLr+C{1gd^_zDbt*RVH z@^Q6sR#gHZ41$V|qs)m409IAxV{4o9AO3w_+TwnBn;n~4X9g+JhmY{?+qInc+3Re2 z{i%lk747@Z9S{K4Z$7(}HX9HmxdQP_MQBukx{`&r9wQ;R& zGKp+K&OtKCt5q&<<{C?dBkoU+uRG$tfP#<5mp`mWCHJQS3it~Y68S_vp;#BP);1K9 z1h<&agiW4iw&H$yo7ZLtlX>zkNxcKpjSP>Z)vWmd000hUSV?A0O#mtY000O800000 U007cclK=n!07*qoM6N<$f(CNQqW}N^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_bricks.png b/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..f7345227295e52ece35877302332d1fa2e4c99b3 GIT binary patch literal 359 zcmV-t0hs=YP)Px$AxT6*R5*=|QL$>nKnzukJRE1=WD3Sp*KS?%5&7UQow{~NheC&7@Q@TkF@c;T zH28)Nuc()L=`DAX-bwF0ZN}3x{re;p#-%!2*14L9;`E6yG@XTM7A7K~fkQ1cU1&Ph z*^&q^W6w!tk%%@pr4N7toew7>#O~^xuF=S|#h_u_a!Ke| z`fwS09$ue()uJ|C_coe{x8Tv zY74aotIoM%bjla+t2U`PS7T8;^?TdHc{mvEhWhZE`36AzwD4>X-*5l`002ovPDHLk FV1jMGppgIo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_1.png b/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_1.png new file mode 100644 index 0000000000000000000000000000000000000000..df92292ce6cd0e84f4cd5507ab4c300a533d9eba GIT binary patch literal 510 zcmVPx$xJg7oR5*=QQo)MbFc6)UV-U6!99XS=F$Tx5xBc|~K+nAv8cIvRF&MMp#3?q> zSPa;P9%d`HI!VL4dGF2B)9;^O#;(~MKEJ-L9$zZCKEW_ z4tY7x*RgAMGLlkxJOBid+8hD^0EAirzzzUba(i=p442IzcO*rH(+vQ$$?VYI&!^|t zH=J%nC>D!TTW=2c=9m=K#~2y$RDWr|f0a@JfH>r35GfW)gp0)>QrzU_B}KJ2$M;{~ z7K>sf7wZ3nYLng1Cn=R3dNxCZ+GKH@YLf{fWUiGQ{5wIUrnY_z7hat&?qnnYzz#ik zFp>u+MHR;>01zP;4|%zg6N|;oVW<^j{xm-TfMv)u8@om&FP@nQg*F-cV@w>UkKy7? zhgywYBc<9LvNpktI~gq&L#>jc@_yLf=J2y-LD!!5$O!;I9H(~Z*$?M%$V+W9#t06J zwMwb@^K1^Mwq7ibT{F*D9>f^oA7j^WH&e~?Rhul-YHyDB^T|gpSQ!!WDnqRni|oWl z8AR%SK22>60D_e*_9IdM;o>;;$#C8>%|fmI0#&pkOjb!dH2?qr07*qoM6N<$f=Oc8 A`~Uy| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_2.png b/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8af43f52d53ad59822393a26047377f1d1bdb1 GIT binary patch literal 527 zcmV+q0`UEbP)Px$$w@>(R5*=IQeBGMFc6-oEs4Y^4qoInBv{nYr}hNB#@?V;>8*NzLZMIHq%TCL%cCFp47J5xGidF?c%9> zra(n*#8dZd?ShWIbB)wvHIWGq0H`JT2mkuB^&w7a(N|D3Nc%zZr4 z`Er@*?0kLMHIMfFJci+Xxd;lhaa;1SoR_t&m`3U`v!<6H-+!u!1OQ>}0<~nLVTcq6 zwdAE_ueMb=FMr+NQy>xj2^GFJTI6Q6T&s!PA36>bhFIhVr&*C35r)WG(VyV|gIaFf zw%xUSx-^t}EC67C=y-#XOkCRvrx^f*A@b1LMf4{@fyhTx$e4%q0|2m%^42)l+?ZKX z4nq`0Za5!faGJHdHibro&NXTx$w&4kSW)UR1ww_jtx_J2M?SvxEZWD8@5l`R08X?0 zq2oNkrI6}bWEMEY>9;cb?pV_)P36_)dI zwOpsl1v?8v{C7%)6o`|gDpAYTa=md|01)hq0`VzXZGY%+nx$sA@AB55!oLh8D(<|I Rmq!2q002ovPDHLkV1fue_P+oC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_3.png b/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1f50eef2d8a35b59279c5755b2df404a6288aaf0 GIT binary patch literal 522 zcmV+l0`>igP)Px$#7RU!R5*=IQq6AKKoFj6kYGo)?BIiT6m$&c<_R+gEW`vFfxam20x5fKqs?=Mw)@lR)ODS3ACJxD z(j`gMb=}53e=I%#=gXy2@P4(nuEBUToE5pyF!L+x+sDJtN9H~esp%w-BNm}R3-9A7 zZ1;ni@o4z#@d@550Ic`Yjc<&mp)`I!{^oNK<#@%gJR@RuCa2aTo$x`tr zm?R!-w)gL-!`Sqik$ zgQzE>)!O!EMGmxOWo0Tqk89u>#1WU3Kf1FJiFg$rWo2bsP95FZWGQPs9u4PPx$!%0LzR5*=IQq6AEFc2P0g*9=sannjEaaJf74)74X1Mk55@HRXGHzW>=#9mTq zMU`lBkd1|p;2>kM*jZh^Q&)PzqGy^BY%8f&v7Q^tNc9^y zD7RKU43Cv7_Y<|gOH6`VFL(gRj2we3Z!TchhyCB_d^!mCewq%) z<0?(hr^D{<{$2H!=;?4gDk5rpKSo{`wswWkBqkBopRqXj4a-iC?+N$B1EiRvE-3>W8{~f)!luNJxT)ruu5?VLGnls zl`C^=1#?lmf|y(1NhWzbW8^XRnbEDM{X{~PTMH1>^3(cGZj01@qTE_UTo-n;ZI;TF zI3s3RB_a}$Bw4D=jNWXU#`gfA#2FFEDn)GwVU^<2jP!kTZ4vPw^L{Hr$!vKZ00000 LNkvXXu0mjfUP9$v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_5.png b/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_5.png new file mode 100644 index 0000000000000000000000000000000000000000..db9a64903843b2c5c56b763fe023e323bcfc75c3 GIT binary patch literal 554 zcmV+_0@eMAP)Px$I-@~Qk!>y0tBb^Z0S^ameeR8nB2)Ol5J6sJX@ zZPNztq)@~*ZBgiE-y2i28B3F7!~=lh)Vdx303c-?0M0&tT*B#*oj+FFUAONhrw8Qj zoI4J~1sE_EJ4e;fu9ysPSsb$z**mpVrpHe<*-UcUeQohAtYkfP9vQxqCv z4BjbDpEbP5D|KEj=0E=22JeVJ_>}S2LZwivb(JPb(^@nWVw6J3j7p(Mh!JP`gNK)+ zIIZeUwcX+B#v+?B0su{Gu>+AvTo$s0<6X0V-nbMBz>@J{OpV<*s@eBa zsFd+?F<-5#F>->+LX5b|l=0vlIvJx>oUYbYRc`>`?8~PsbKg!Ur>hT_opS(i!Lz2d sFoCAqzn9`T4FB8idRa~hnNHt40r{pYmI==$?*IS*07*qoM6N<$f&`8Fi2wiq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_6.png b/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ce8227c0a6f1a18878ea0a52558357a0ae0a49 GIT binary patch literal 549 zcmV+=0^0qFP)Px$-$_J4R5*=IQq7LjFc6-2>$>( zm4cc^du5)jmh-Pa?}K+NI47ifY7`OIn`$=Y)>;bF4-pX;k|W}zA0lZ5=iu?AQdG6s z`}pqdo3WlsA(UbOV6CMNLK1PAXA8*zpdTU?v!V#jvEW_fgOG|a-|r0okd1tq8m;jP zN9BHq3=t_GVHT3#ZQC)lkjiL1oASm7^2SI}C>6XDQk8i&=An3v4^KU_dfU((X#)VT zklb2Jd1wz=Q6M5=CS{)WLo`}bCi*;$4~;je6vn%~k3@us0G5ppqcwGt)ZRx#6jH60 z^Yx}0SI)>;KSUa(kScgbNyb&CQmi*sRT}`f_;CBG-t9S@S1(_5odbaRrLxwZ;k;|R nXSg^VPk$cTo9mJ%$%ONN?p`gE=D3@C00000NkvXXu0mjfSi|<8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_7.png b/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_7.png new file mode 100644 index 0000000000000000000000000000000000000000..60647b38c6ee96c7f9045043cd37b2ab0e20d763 GIT binary patch literal 527 zcmV+q0`UEbP)Px$$w@>(R5*=IQq5}IFc2PVBQf4YazL?ZS=^oi?OXIx`WStszF3bvErEh@DKai= zd9xZc8*dM@G0{mH=9}+lRQ&kLwD0As`}Zz2X6&GJ47k003aH1c1$#&n;XoSS(#UJ*Vg5+)w%isk=Rb$T z?%{!QJ}-;Pl)7=8GPiEqdM{%TQKqh!pHIJ0YXDG9-Bd=4P-4!MDx&Tetny z|IL&X5g9Ds3U$`)`yRE9bG(MZ?5tauopp+sg^P&b^;AZ8FV@d0GCQ(&KKoDT>XF{tp+RFY<%V R+ll}H002ovPDHLkV1lgv@Pq&W literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_8.png b/src/main/resources/assets/voltexdesertupdate/textures/block/sandstone_rock_shade_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ddb87a0a8ce097226e04a1862081bb3a45f4ff GIT binary patch literal 518 zcmV+h0{Q)kP)Px$z)3_wR5*=IQoU~5Fc3a75>EzcE1&=)t~@lz-n~Hk5P6`!WT!5LJH$}YR77P_ zu|83uI~*c}6M4Ar?~bc)k6*lRJ52Zc{RG508e^qWJ9qNFWbIrv3;}>ORt-aNuIiDz zZ#8qCY;ro~?E++kb%X#N6F6Tr;x zjap-mO_OJN7=na}bF{`!QLh9Dh+6yn;s z4J#swbCjZU)dVO29VTWL%+KeJh{VQjyYap?#xBZnj>;M<`2@3J^>iMW(9G<8n`e24 zNxUgh)XV^wxpr>JBk?*+?>(zO=U(Q>ZzJEZ3PX@QvIplXYph_h+POGK?_0?vpQppr z!I!K7^hiQvjU@_dd3fJSw@CF!)>vjfY>Q*lEGt*yEY49z$;<#G$+F6l^|5JA-V@Qy z*N4035Hg|Px$YDq*vR5*=ok}*%iFc5{Gi!&Ivsf4OZRfPmY8ITxQSlRhE{0)8#VlF!)QrD(i zC<#>*DRx~Cb_BykM-}kqcjwdlo=@c23jnD!fasm~)|bWf`W65yN{vjlZHmqL&HVs? z_cnTG>ynz>zMxj>24Jc!T0zx;skZcn3c*-CoKcNt2WJwUk|LEBtK}1oh zUIx5Hb-w1*-M*ld`G35(6uRVqi82_Qq$BL$y+teHVb7bE=v1kZSS_E9mz2(Ux*){A ad-Vg-H!U3q-y9hL0000Px$RY^oaR5*=glEG@jFbsxOH4F>k7S`Cj!&HkGurV{TO;t&7MRR2dx`qvP2@{ z?8(hI1e8I?_#+4;h!)ifaW)YVp;*CnBCsMF9tIg~8!sF}q0gScx+P)sU0SqhS}!CL zQ6&MmD7rGRL{UW!K!1EGxNy$ngh)neX#=d41eSA^a~`KEX~gf{mB3T002ovPDHLk FV1j4Ws!{*| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/block/wiped_sand_shade_2.png b/src/main/resources/assets/voltexdesertupdate/textures/block/wiped_sand_shade_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7674e0b3f735e9ad1052ba0640a953df9478d3 GIT binary patch literal 412 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/voltexdesertupdate/textures/entity/mummy/mummy.png b/src/main/resources/assets/voltexdesertupdate/textures/entity/mummy/mummy.png new file mode 100644 index 0000000000000000000000000000000000000000..c42701ea457b4fff13ac4992d422dd272728b4e5 GIT binary patch literal 1650 zcmV-&295cNP)Px*5=lfsRCt{2T0LuHR}ei4>b9_=B2pn(Bo{6O#@Zs_VhJg?SxB>_4XM-RC**Gg zw;_$e5EiyEW($LhwK2GGVH<-BIfeXGxPB?(d3$s;qxYn}+TG%vN+0jz&fGI|&&<6I zlwkTW&h2wH8RP!$2Ay8N`2YUyruf|H_0ei~XYSwlw%aIs2jlQyFCPp?Xtlfe@cu2H zZL|OY-~aH_QqQT1X4wU1G@c9uFlQv59C3Yd3IN5R*-^{j{_duDN2k}HadK*uI)IJ0 z&+L?~?Oj}+A7g8Kx40*pj8`7eU^v44-A(Zf&)F$a>Hvf12s8e1niT_97A%WayNg!4 zi)=E+U^rUo8OxwFu1=2jb2HkDaWkB0%4{gh0k>CYxj9V@zQ4P{<1}*}@qBY9NlvK5 zfL6O(7ReY^@|yQ@$wb$9@eF%9z5f5tpPu6S;&g^l ztL7FDrCzjEzzo-<#7-CtN5y9|q%3<+AI7;l%vhF9#v$WUF`$wIl;+-Gl^OPXSqK~+ z>=nzb&a&kKhK0qCuYXD70AA;@AcK3^c$sVUo<+~I|318b3s880Sh1|Wh|pvsy!Dn7 z8V^F_(yp^X8#sa4^B<=fK(TKBS$NrX_CK>LH5!Kpd-=1CRxv2{wi#rG+BIsJ8t5rS zzLyhbtKFS5Fv|QOcBEoJ5dyr9+sohl{3`(90N()sUgKZ<{nwu}hDFACU@5JMR1E|< zUs;$<#_5va?bTVX1_8itzyDEuW(RoR-@W^%7??hbDeh4plJy}>iZntp2b>)3=LiZJ zNMd3M%*HSS%s5SCW`w@O=WWf2rZ=0Mg7kbK~= zgp(~7W65&>g33=3%^-wD_B$KI*DV6S!xKX(8PHTu-d>&MoSBUQHuF5oo*`9)&-L`Q z2nTg~s@SfIxtE#p(}u+3G;=eu$=IsPlZBkY7-C88i#vd;KO3MbF)uk))#w~@>^$o! zq>AmTa2WuKJ!646g^jje06VCv_O}_=CGfK|z+xV<$SI3_ao2^93I|vstFJ{il3p`{_tQgPgMzmbpQ|8Yk#pZUU8!9 zw^t^YX$m+?V8j5!r!t}G4a{Qydiqg@a+r8dGDT?g^_EfX8-kRig_(*eg}pba6jmwA zgI=~oHh2n8t3U)r7=#Ht%O^+sdCEP4xoQwnxWH*hXzz~i^YRBM=GjU18^5ot`Eh%7 zmZw}P=Bhzee$l3gR~Ui%`Ubnt5@}h{rOzA;M{{(aK8*8Z9U=DqU^tple{2LNHIE%p zO<>^J*8IWm*LyF|k7o?F2}^~U5KszhdkYfV24+RHF%snsNW81Ac)q#QNKJc2(GP&k zh*yHbp{l}@$C@*uWfu;6ykaeB4mdg5&vnp?X0%ES^9<^aQkAZ-I(J<=!&sCAHKq-k z6r(LMt`nl=RP_V`A(UGEF~V|~m#<~&b-tfV>2(?KsrW{JxI8~Dl$~YnPOp#0X*So+ ziV$^tzec#5qh8a)s9XlSMvI-V6>|>g^!jrOZqdmQ4?63gW1oLjG*nnvwWmfzyFQ-M zV=U_HM~cqIbbWEU_T16*BrtDC;7R;w0~3yt^EN@WlB{yx$DFh3DU)R|#{ewR`c`;V z9;irC4Ulq+YgH6d*lK`i12pRQFWMx96iOg9_DL_It^c73oOE1KOj1t&FA(ahed}P8C7 z(LcTE;EOJX#BK41Ue>f9uRi!)=kzQUMc*Gq)mpl|vh#d4M4$g@oqy>5p9}naQLPbX mMvV`F!N8Xq;hE;^%b*2ha{w_2Tne5HqC8#wT-G@yGywqd+=Fib literal 0 HcmV?d00001 diff --git a/src/main/resources/voltexdesertupdate.mixins.json b/src/main/resources/voltexdesertupdate.mixins.json index 25ae644..634647f 100644 --- a/src/main/resources/voltexdesertupdate.mixins.json +++ b/src/main/resources/voltexdesertupdate.mixins.json @@ -3,13 +3,9 @@ "package": "net.voltexstudios.mixin", "compatibilityLevel": "JAVA_21", "mixins": [ - "ExampleMixin", - "LivingEntityAccessor" + "ExampleMixin" ], "injectors": { "defaultRequire": 1 - }, - "client": [ - "EntityMixin" - ] + } } \ No newline at end of file