diff --git a/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale.json b/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale.json new file mode 100644 index 0000000000..1070986f15 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "aether_ii:block/mossy_undershale" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale_slab.json b/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale_slab.json new file mode 100644 index 0000000000..043149cb9d --- /dev/null +++ b/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "aether_ii:block/mossy_undershale_slab" + }, + "type=double": { + "model": "aether_ii:block/mossy_undershale" + }, + "type=top": { + "model": "aether_ii:block/mossy_undershale_slab_top" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale_stairs.json b/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale_stairs.json new file mode 100644 index 0000000000..cfd8dde6d7 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "aether_ii:block/mossy_undershale_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "aether_ii:block/mossy_undershale_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "aether_ii:block/mossy_undershale_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "aether_ii:block/mossy_undershale_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "aether_ii:block/mossy_undershale_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "aether_ii:block/mossy_undershale_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "aether_ii:block/mossy_undershale_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "aether_ii:block/mossy_undershale_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "aether_ii:block/mossy_undershale_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "aether_ii:block/mossy_undershale_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "aether_ii:block/mossy_undershale_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "aether_ii:block/mossy_undershale_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "aether_ii:block/mossy_undershale_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "aether_ii:block/mossy_undershale_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale_wall.json b/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale_wall.json new file mode 100644 index 0000000000..8172a1556e --- /dev/null +++ b/src/generated/resources/assets/aether_ii/blockstates/mossy_undershale_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "apply": { + "model": "aether_ii:block/mossy_undershale_wall_post" + }, + "when": { + "up": "true" + } + }, + { + "apply": { + "model": "aether_ii:block/mossy_undershale_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, + { + "apply": { + "model": "aether_ii:block/mossy_undershale_wall_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "low" + } + }, + { + "apply": { + "model": "aether_ii:block/mossy_undershale_wall_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "low" + } + }, + { + "apply": { + "model": "aether_ii:block/mossy_undershale_wall_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "low" + } + }, + { + "apply": { + "model": "aether_ii:block/mossy_undershale_wall_side_tall", + "uvlock": true + }, + "when": { + "north": "tall" + } + }, + { + "apply": { + "model": "aether_ii:block/mossy_undershale_wall_side_tall", + "uvlock": true, + "y": 90 + }, + "when": { + "east": "tall" + } + }, + { + "apply": { + "model": "aether_ii:block/mossy_undershale_wall_side_tall", + "uvlock": true, + "y": 180 + }, + "when": { + "south": "tall" + } + }, + { + "apply": { + "model": "aether_ii:block/mossy_undershale_wall_side_tall", + "uvlock": true, + "y": 270 + }, + "when": { + "west": "tall" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/blockstates/theran_globe.json b/src/generated/resources/assets/aether_ii/blockstates/theran_globe.json new file mode 100644 index 0000000000..1bb9d94d8c --- /dev/null +++ b/src/generated/resources/assets/aether_ii/blockstates/theran_globe.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "aether_ii:block/theran_globe" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/items/mossy_undershale.json b/src/generated/resources/assets/aether_ii/items/mossy_undershale.json new file mode 100644 index 0000000000..d33e27ee29 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/items/mossy_undershale.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/items/mossy_undershale_slab.json b/src/generated/resources/assets/aether_ii/items/mossy_undershale_slab.json new file mode 100644 index 0000000000..2271eec4bf --- /dev/null +++ b/src/generated/resources/assets/aether_ii/items/mossy_undershale_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "aether_ii:block/mossy_undershale_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/items/mossy_undershale_stairs.json b/src/generated/resources/assets/aether_ii/items/mossy_undershale_stairs.json new file mode 100644 index 0000000000..5614277c80 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/items/mossy_undershale_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "aether_ii:block/mossy_undershale_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/items/mossy_undershale_wall.json b/src/generated/resources/assets/aether_ii/items/mossy_undershale_wall.json new file mode 100644 index 0000000000..6ced880e7f --- /dev/null +++ b/src/generated/resources/assets/aether_ii/items/mossy_undershale_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "aether_ii:block/mossy_undershale_wall_inventory" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/items/painting_template_far.json b/src/generated/resources/assets/aether_ii/items/painting_template_far.json new file mode 100644 index 0000000000..fd5e2d13cb --- /dev/null +++ b/src/generated/resources/assets/aether_ii/items/painting_template_far.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "aether_ii:item/painting_template_far" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/items/theran_globe.json b/src/generated/resources/assets/aether_ii/items/theran_globe.json new file mode 100644 index 0000000000..1d8d456e9b --- /dev/null +++ b/src/generated/resources/assets/aether_ii/items/theran_globe.json @@ -0,0 +1,9 @@ +{ + "model": { + "type": "minecraft:special", + "base": "aether_ii:item/theran_globe", + "model": { + "type": "aether_ii:theran_globe" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/lang/en_us.json b/src/generated/resources/assets/aether_ii/lang/en_us.json index f4ad931bcd..ac82cd1c33 100644 --- a/src/generated/resources/assets/aether_ii/lang/en_us.json +++ b/src/generated/resources/assets/aether_ii/lang/en_us.json @@ -110,6 +110,7 @@ "aether_ii.container.fungal_cache": "Fungal Cache", "aether_ii.container.sage_chest": "Sage Chest", "aether_ii.container.sentry_crate": "Sentry Crate", + "aether_ii.filled_map.veradexian_library": "Veradexian Library Explorer Map", "aether_ii.guidebook_bestiary.description.entity.aether_ii.aechor_plant": "“Hazardous plants that grow across The Aether's Holy Isles.\n\nAechor plants suck up a vast amount of nutrients and minerals from their surrounding territory, making them a precious food source for many animals in the Holy Isles. To defend themselves from potential predators, they developed toxic barbs that can be projected outward at targets they sense near their roots. While individually these barbs aren't very harmful, their toxins can build up and cause some negative effects if untreated.\n\nThe petals of aechor plants are a favorite food of baby moas, offering enough nutrients to help them grow into strong flight-ready adults.”", "aether_ii.guidebook_bestiary.description.entity.aether_ii.aerbunny": "“Friendly creatures that roam The Aether's Holy Isles.\n\nThey are deeply social creatures that enjoy the company of other species, including the people of The Aether and human visitors. an aerbunny's coat has a condensed layer of aercloud nestled beneath their fur, which allows them to float gently through the air.\n\nFeeding an aerbunny its favorite fruit allows it to be tamed. This allows them to be held, granting their natural gliding abilities to someone travelling The Aether.”", "aether_ii.guidebook_bestiary.description.entity.aether_ii.arctic_burrukai": "“Protective creatures found roaming The Aether's Holy Isles.\n\nArctic burrukai have a thicker undercoat than other burrukai and their armor is an icy blue that helps hide their size and numbers in snowstorms. Burrukai are largely peaceful creatures, but they will respond harshly to aggression, using their heavy weight and sharp horns to charge at potential threats.\n\nTheir armor plating is incredibly durable, making it a valuable material for crafting armor and shields.”", @@ -205,6 +206,7 @@ "aether_ii.music.boss.slider_fight": "Emile van Krieken - Labyrinth's Vengeance", "aether_ii.music.eulogy_for_a_whale": "sunsette - Eulogy for a Whale", "aether_ii.music.exhale": "sunsette - Exhale", + "aether_ii.music.mineshaft_ambience": "sunsette - Mineshaft Ambience", "aether_ii.music.polarity": "sunsette - Polarity", "aether_ii.music.sunbeam": "sunsette - Sunbeam", "aether_ii.music.thin_air": "sunsette - Thin Air", @@ -669,6 +671,10 @@ "block.aether_ii.mossy_holystone_slab": "Mossy Holystone Slab", "block.aether_ii.mossy_holystone_stairs": "Mossy Holystone Stairs", "block.aether_ii.mossy_holystone_wall": "Mossy Holystone Wall", + "block.aether_ii.mossy_undershale": "Mossy Undershale", + "block.aether_ii.mossy_undershale_slab": "Mossy Undershale Slab", + "block.aether_ii.mossy_undershale_stairs": "Mossy Undershale Stairs", + "block.aether_ii.mossy_undershale_wall": "Mossy Undershale Wall", "block.aether_ii.mossy_wisproot_log": "Mossy Wisproot Log", "block.aether_ii.mossy_wisproot_log_base": "Mossy Wisproot Log Base", "block.aether_ii.mossy_wisproot_trunk": "Mossy Wisproot Trunk", @@ -856,6 +862,7 @@ "block.aether_ii.tangled_branches": "Tangled Branches", "block.aether_ii.tarabloom": "Tarabloom", "block.aether_ii.tarahesp_flowers": "Tarahesp Flowers", + "block.aether_ii.theran_globe": "Theran Globe", "block.aether_ii.tiled_quicksoil_glass": "Tiled Quicksoil Glass", "block.aether_ii.tiled_quicksoil_glass_pane": "Tiled Quicksoil Glass Pane", "block.aether_ii.treasure_doorway_block": "Treasure Doorway Block", @@ -1366,6 +1373,10 @@ "item.aether_ii.neptune_leggings.nitrogen_internals.ability.tooltip.2": "§9Set Pieces:§r %s", "item.aether_ii.neptune_scale": "Neptune Scale", "item.aether_ii.orange": "Orange", + "item.aether_ii.painting_template_far": "Painting Template", + "item.aether_ii.painting_template_far.nitrogen_internals.ability.tooltip.1": "§eFar", + "item.aether_ii.painting_template_far.nitrogen_internals.ability.tooltip.2": "§7The Aether Team", + "item.aether_ii.painting_template_far.nitrogen_internals.ability.tooltip.3": "4x4", "item.aether_ii.phyg_spawn_egg": "Phyg Spawn Egg", "item.aether_ii.prismallard_egg": "Prismallard Egg", "item.aether_ii.prismallard_feather": "Prismallard Feather", @@ -1509,6 +1520,8 @@ "mural.offset": "Section: (%s, %s)", "mural.random": "Random variant", "pack.aether_ii.mod.description": "Aether II Resources", + "painting.aether_ii.far.author": "The Aether Team", + "painting.aether_ii.far.title": "Far", "structure.aether_ii.ancient_henge": "Ancient Henge", "structure.aether_ii.animal_den": "Animal Den", "structure.aether_ii.brexallen_ruins": "Brexallen Ruins", diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale.json new file mode 100644 index 0000000000..538f05ea06 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_slab.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_slab.json new file mode 100644 index 0000000000..efe7a383c6 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "aether_ii:block/mossy_undershale", + "side": "aether_ii:block/mossy_undershale", + "top": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_slab_top.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_slab_top.json new file mode 100644 index 0000000000..259b23d85a --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "aether_ii:block/mossy_undershale", + "side": "aether_ii:block/mossy_undershale", + "top": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_stairs.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_stairs.json new file mode 100644 index 0000000000..0507825715 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "aether_ii:block/mossy_undershale", + "side": "aether_ii:block/mossy_undershale", + "top": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_stairs_inner.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_stairs_inner.json new file mode 100644 index 0000000000..40f1250d25 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "aether_ii:block/mossy_undershale", + "side": "aether_ii:block/mossy_undershale", + "top": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_stairs_outer.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_stairs_outer.json new file mode 100644 index 0000000000..27b062b5eb --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "aether_ii:block/mossy_undershale", + "side": "aether_ii:block/mossy_undershale", + "top": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_inventory.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_inventory.json new file mode 100644 index 0000000000..ebebde9552 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_post.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_post.json new file mode 100644 index 0000000000..22929f0813 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_side.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_side.json new file mode 100644 index 0000000000..9cf05b26e6 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_side_tall.json b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_side_tall.json new file mode 100644 index 0000000000..3772f45227 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/mossy_undershale_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "aether_ii:block/mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/block/theran_globe.json b/src/generated/resources/assets/aether_ii/models/block/theran_globe.json new file mode 100644 index 0000000000..640a248c2a --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/block/theran_globe.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "aether_ii:block/greatroot_planks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/item/painting_template_far.json b/src/generated/resources/assets/aether_ii/models/item/painting_template_far.json new file mode 100644 index 0000000000..853d4b363a --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/item/painting_template_far.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "aether_ii:item/painting_template_far" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/models/item/theran_globe.json b/src/generated/resources/assets/aether_ii/models/item/theran_globe.json new file mode 100644 index 0000000000..dd11b8a8c5 --- /dev/null +++ b/src/generated/resources/assets/aether_ii/models/item/theran_globe.json @@ -0,0 +1,6 @@ +{ + "parent": "aether_ii:item/template_theran_globe", + "textures": { + "particle": "aether_ii:block/greatroot_planks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/aether_ii/sounds.json b/src/generated/resources/assets/aether_ii/sounds.json index dc22f90ff7..47b0e14178 100644 --- a/src/generated/resources/assets/aether_ii/sounds.json +++ b/src/generated/resources/assets/aether_ii/sounds.json @@ -1976,6 +1976,15 @@ } ] }, + "music.aether_mineshaft": { + "sounds": [ + { + "name": "aether_ii:music/mineshaft_ambience", + "stream": true, + "volume": 0.4 + } + ] + }, "music.aether_night": { "sounds": [ { diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_slab.json b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_slab.json new file mode 100644 index 0000000000..999bae785e --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_slab.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mossy_undershale": { + "conditions": { + "items": [ + { + "items": "aether_ii:mossy_undershale" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:mossy_undershale_slab" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_mossy_undershale" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:mossy_undershale_slab" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_stairs.json b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_stairs.json new file mode 100644 index 0000000000..08cc86324f --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_stairs.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mossy_undershale": { + "conditions": { + "items": [ + { + "items": "aether_ii:mossy_undershale" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:mossy_undershale_stairs" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_mossy_undershale" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:mossy_undershale_stairs" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_with_moss.json b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_with_moss.json new file mode 100644 index 0000000000..cd8591ca3e --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_with_moss.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bryalinn_moss_block": { + "conditions": { + "items": [ + { + "items": "aether_ii:bryalinn_moss_block" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:mossy_undershale_with_moss" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bryalinn_moss_block" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:mossy_undershale_with_moss" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_with_vine.json b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_with_vine.json new file mode 100644 index 0000000000..76a061b58c --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/mossy_undershale_with_vine.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_bryalinn_moss_vines": { + "conditions": { + "items": [ + { + "items": "aether_ii:bryalinn_moss_vines" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:mossy_undershale_with_vine" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_bryalinn_moss_vines" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:mossy_undershale_with_vine" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/undershale_from_mossy.json b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/undershale_from_mossy.json new file mode 100644 index 0000000000..43c22ddbf2 --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/building_blocks/undershale_from_mossy.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mossy_undershale": { + "conditions": { + "items": [ + { + "items": "aether_ii:mossy_undershale" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:undershale_from_mossy" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_mossy_undershale" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:undershale_from_mossy" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_slab_from_mossy_undershale_stonecutting.json b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_slab_from_mossy_undershale_stonecutting.json new file mode 100644 index 0000000000..ec1e931137 --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_slab_from_mossy_undershale_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mossy_undershale": { + "conditions": { + "items": [ + { + "items": "aether_ii:mossy_undershale" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:mossy_undershale_slab_from_mossy_undershale_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_mossy_undershale" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:mossy_undershale_slab_from_mossy_undershale_stonecutting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_stairs_from_mossy_undershale_stonecutting.json b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_stairs_from_mossy_undershale_stonecutting.json new file mode 100644 index 0000000000..b13ada488e --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_stairs_from_mossy_undershale_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mossy_undershale": { + "conditions": { + "items": [ + { + "items": "aether_ii:mossy_undershale" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:mossy_undershale_stairs_from_mossy_undershale_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_mossy_undershale" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:mossy_undershale_stairs_from_mossy_undershale_stonecutting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_wall.json b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_wall.json new file mode 100644 index 0000000000..8f91f75bc0 --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_wall.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mossy_undershale": { + "conditions": { + "items": [ + { + "items": "aether_ii:mossy_undershale" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:mossy_undershale_wall" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_mossy_undershale" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:mossy_undershale_wall" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_wall_from_mossy_undershale_stonecutting.json b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_wall_from_mossy_undershale_stonecutting.json new file mode 100644 index 0000000000..207e5fe967 --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/mossy_undershale_wall_from_mossy_undershale_stonecutting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mossy_undershale": { + "conditions": { + "items": [ + { + "items": "aether_ii:mossy_undershale" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:mossy_undershale_wall_from_mossy_undershale_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_mossy_undershale" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:mossy_undershale_wall_from_mossy_undershale_stonecutting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/decorations/painting_far_from_painting_template.json b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/painting_far_from_painting_template.json new file mode 100644 index 0000000000..893686de2b --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/decorations/painting_far_from_painting_template.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_painting_template_far": { + "conditions": { + "items": [ + { + "items": "aether_ii:painting_template_far" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:painting_far_from_painting_template" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_painting_template_far" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:painting_far_from_painting_template" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/advancement/recipes/misc/painting_template_far.json b/src/generated/resources/data/aether_ii/advancement/recipes/misc/painting_template_far.json new file mode 100644 index 0000000000..a99f8a67ab --- /dev/null +++ b/src/generated/resources/data/aether_ii/advancement/recipes/misc/painting_template_far.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_painting_template_far": { + "conditions": { + "items": [ + { + "items": "aether_ii:painting_template_far" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "aether_ii:painting_template_far" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_painting_template_far" + ] + ], + "rewards": { + "recipes": [ + "aether_ii:painting_template_far" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale.json b/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale.json new file mode 100644 index 0000000000..1731f69901 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:mossy_undershale" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:blocks/mossy_undershale" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale_slab.json b/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale_slab.json new file mode 100644 index 0000000000..9bb10703f7 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale_slab.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "aether_ii:mossy_undershale_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "aether_ii:mossy_undershale_slab" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:blocks/mossy_undershale_slab" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale_stairs.json b/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale_stairs.json new file mode 100644 index 0000000000..2980aaabea --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale_stairs.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:mossy_undershale_stairs" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:blocks/mossy_undershale_stairs" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale_wall.json b/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale_wall.json new file mode 100644 index 0000000000..17a51a6b64 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/blocks/mossy_undershale_wall.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:mossy_undershale_wall" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:blocks/mossy_undershale_wall" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/blocks/theran_globe.json b/src/generated/resources/data/aether_ii/loot_table/blocks/theran_globe.json new file mode 100644 index 0000000000..5065376b56 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/blocks/theran_globe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:theran_globe" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:blocks/theran_globe" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/brexallen_ruins/common.json b/src/generated/resources/data/aether_ii/loot_table/chests/brexallen_ruins/common.json index 3a797301b5..747c166fa6 100644 --- a/src/generated/resources/data/aether_ii/loot_table/chests/brexallen_ruins/common.json +++ b/src/generated/resources/data/aether_ii/loot_table/chests/brexallen_ruins/common.json @@ -191,11 +191,6 @@ "name": "aether_ii:zanite_pickaxe", "weight": 3 }, - { - "type": "minecraft:item", - "name": "aether_ii:resonant_stone", - "weight": 3 - }, { "type": "minecraft:item", "name": "aether_ii:zanite_pendant", @@ -224,6 +219,10 @@ { "type": "minecraft:loot_table", "value": "aether_ii:chests/dungeons/music_discs" + }, + { + "type": "minecraft:item", + "name": "aether_ii:resonant_stone" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/abandoned_bags.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/abandoned_bags.json new file mode 100644 index 0000000000..0f6e9d2ca2 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/abandoned_bags.json @@ -0,0 +1,252 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_torch", + "weight": 6 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_shard", + "weight": 4 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:scatterglass_bolt", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "aether_ii:beast_pelt_bundle" + }, + { + "type": "minecraft:item", + "name": "aether_ii:burrukai_plate_helmet" + }, + { + "type": "minecraft:item", + "name": "aether_ii:burrukai_plate_chestplate" + }, + { + "type": "minecraft:item", + "name": "aether_ii:burrukai_plate_leggings" + }, + { + "type": "minecraft:item", + "name": "aether_ii:burrukai_plate_boots" + }, + { + "type": "minecraft:item", + "name": "aether_ii:burrukai_plate_gloves" + }, + { + "type": "minecraft:item", + "name": "aether_ii:burrukai_plate_shield" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:satival_bulb", + "weight": 5 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:blueberry", + "weight": 5 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:orange", + "weight": 4 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:wyndberry", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "components": { + "aether_ii:healing_stone_charges": 1 + }, + "function": "minecraft:set_components" + } + ], + "name": "aether_ii:healing_stone" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:scatterglass_vial", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:water_vial", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:valkyrie_tea" + }, + { + "type": "minecraft:item", + "name": "aether_ii:antivenom_vial" + }, + { + "type": "minecraft:item", + "name": "aether_ii:skyroot_bucket" + }, + { + "type": "minecraft:item", + "name": "aether_ii:skyroot_water_bucket" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "conditions": [ + { + "chance": 0.05, + "condition": "minecraft:random_chance" + } + ], + "value": "aether_ii:chests/undercloud_mineshaft/rare" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/undercloud_mineshaft/abandoned_bags" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/bridges.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/bridges.json new file mode 100644 index 0000000000..07d155bcea --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/bridges.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "value": "aether_ii:chests/undercloud_mineshaft/bridges_base" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "conditions": [ + { + "chance": 0.2, + "condition": "minecraft:random_chance" + } + ], + "value": "aether_ii:chests/undercloud_mineshaft/rare" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/undercloud_mineshaft/bridges" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/bridges_base.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/bridges_base.json new file mode 100644 index 0000000000..72dee0894d --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/bridges_base.json @@ -0,0 +1,308 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:golden_amber", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "components": { + "minecraft:item_name": { + "translate": "item.aether_ii.aether_quartz" + } + }, + "function": "minecraft:set_components" + }, + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:quartz", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:scatterglass_shard" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_shard", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:icestone", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:fossilized_zanite", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:fossilized_glint" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:burrukai_plate", + "weight": 12 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_shortsword", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_pike", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_hammer", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_gemstone", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_pickaxe", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_pendant" + }, + { + "type": "minecraft:item", + "name": "aether_ii:icestone_pendant" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:swet_jelly", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:blueberry", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:orange" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:wyndberry" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "components": { + "aether_ii:healing_stone_charges": 1 + }, + "function": "minecraft:set_components" + } + ], + "name": "aether_ii:healing_stone", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "aether_ii:beast_pelt_bundle", + "weight": 6 + }, + { + "type": "minecraft:item", + "name": "aether_ii:cold_aercloud_glider", + "weight": 4 + }, + { + "type": "minecraft:item", + "name": "aether_ii:purple_aercloud_glider", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:blue_aercloud_glider", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_gloves", + "weight": 2 + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/undercloud_mineshaft/bridges_base" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/bridges_treasure.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/bridges_treasure.json new file mode 100644 index 0000000000..cc198a3a0d --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/bridges_treasure.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "value": "aether_ii:chests/undercloud_mineshaft/bridges_base" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "value": "aether_ii:chests/undercloud_mineshaft/rare" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/undercloud_mineshaft/bridges_treasure" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/cockatrice_nests.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/cockatrice_nests.json new file mode 100644 index 0000000000..f0f3730e53 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/cockatrice_nests.json @@ -0,0 +1,238 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:cockatrice_feather", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:cloudtwine", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:skyroot_stick" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:skyroot_twig" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:holystone_rock" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 3.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:holystone_shortsword", + "weight": 7 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_pike", + "weight": 7 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_hammer", + "weight": 7 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_pickaxe", + "weight": 7 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_crossbow", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_shortsword", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_pike", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_hammer", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_pickaxe", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_crossbow" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:raw_taegore_meat" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:burrukai_rib_cut" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:kirrid_loin" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:prismallard_leg" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "conditions": [ + { + "chance": 0.05, + "condition": "minecraft:random_chance" + } + ], + "value": "aether_ii:chests/undercloud_mineshaft/rare" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/undercloud_mineshaft/cockatrice_nests" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/common.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/common.json index a8f11b63d1..c04a156406 100644 --- a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/common.json +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/common.json @@ -5,333 +5,19 @@ "bonus_rolls": 0.0, "entries": [ { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 4.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:ambrosium_torch", - "weight": 24 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:ambrosium_shard", - "weight": 18 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 2.0, - "min": 1.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:icestone", - "weight": 8 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 2.0, - "min": 1.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:fossilized_zanite", - "weight": 6 - } - ], - "rolls": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - } - }, - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 4.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:undershale", - "weight": 2 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 4.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:agiosite", - "weight": 2 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:holystone" - }, - { - "type": "minecraft:item", - "functions": [ - { - "components": { - "minecraft:item_name": { - "translate": "item.aether_ii.aether_quartz" - } - }, - "function": "minecraft:set_components" - }, - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "minecraft:quartz" - } - ], - "rolls": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - } - }, - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 4.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:cloudtwine", - "weight": 2 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:cockatrice_feather", - "weight": 2 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:beast_pelt" - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:swet_gel" - } - ], - "rolls": { - "type": "minecraft:uniform", - "max": 2.0, - "min": 1.0 - } - }, - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 0.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:glint_coin", - "weight": 12 - }, - { - "type": "minecraft:item", - "name": "aether_ii:holystone_pickaxe", - "weight": 3 - }, - { - "type": "minecraft:item", - "name": "aether_ii:zanite_pickaxe", - "weight": 3 - }, - { - "type": "minecraft:item", - "name": "aether_ii:resonant_stone", - "weight": 2 - }, - { - "type": "minecraft:item", - "name": "aether_ii:zanite_pendant", - "weight": 2 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "damage": { - "type": "minecraft:uniform", - "max": 0.05, - "min": 0.01 - }, - "function": "minecraft:set_damage" - } - ], - "name": "aether_ii:shifting_glass", - "weight": 2 + "type": "minecraft:loot_table", + "value": "aether_ii:chests/undercloud_mineshaft/storage" }, { - "type": "minecraft:item", - "name": "aether_ii:skyroot_water_bucket" + "type": "minecraft:loot_table", + "value": "aether_ii:chests/undercloud_mineshaft/supplies" }, { "type": "minecraft:loot_table", - "value": "aether_ii:chests/dungeons/music_discs" + "value": "aether_ii:chests/undercloud_mineshaft/equipment" } ], "rolls": 1.0 - }, - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:blueberry" - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:swet_jelly" - } - ], - "rolls": { - "type": "minecraft:uniform", - "max": 2.0, - "min": 0.0 - } } ], "random_sequence": "aether_ii:chests/undercloud_mineshaft/common" diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/equipment.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/equipment.json new file mode 100644 index 0000000000..4c5dfefe18 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/equipment.json @@ -0,0 +1,221 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:burrukai_plate", + "weight": 12 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_shortsword", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_pike", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_hammer", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_gemstone", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_pickaxe", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_pendant" + }, + { + "type": "minecraft:item", + "name": "aether_ii:icestone_pendant" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "components": { + "aether_ii:healing_stone_charges": 1 + }, + "function": "minecraft:set_components" + } + ], + "name": "aether_ii:healing_stone", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "aether_ii:skyroot_bucket", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "aether_ii:cloud_skiff", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "aether_ii:beast_pelt_bundle", + "weight": 6 + }, + { + "type": "minecraft:item", + "name": "aether_ii:cold_aercloud_glider", + "weight": 4 + }, + { + "type": "minecraft:item", + "name": "aether_ii:purple_aercloud_glider", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:blue_aercloud_glider", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_gloves" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_shard", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:golden_amber", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:swet_gel" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_torch", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "aether_ii:rustic_arkenium_lantern" + }, + { + "type": "minecraft:item", + "name": "aether_ii:cloudwool_bedroll" + } + ], + "rolls": 2.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "conditions": [ + { + "chance": 0.15, + "condition": "minecraft:random_chance" + } + ], + "value": "aether_ii:chests/undercloud_mineshaft/rare" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/undercloud_mineshaft/equipment" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/rare.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/rare.json new file mode 100644 index 0000000000..eff8d751cd --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/rare.json @@ -0,0 +1,59 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "damage": { + "type": "minecraft:uniform", + "max": 0.05, + "min": 0.01 + }, + "function": "minecraft:set_damage" + } + ], + "name": "aether_ii:shifting_glass", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:irradiated_dust_block" + }, + { + "type": "minecraft:item", + "name": "aether_ii:resonant_stone" + }, + { + "type": "minecraft:loot_table", + "value": "aether_ii:chests/dungeons/music_discs" + }, + { + "type": "minecraft:item", + "functions": [ + { + "decoration": "aether_ii:veradexian_library", + "destination": "aether_ii:on_veradexian_library_explorer_maps", + "function": "minecraft:exploration_map", + "skip_existing_chunks": false + }, + { + "function": "minecraft:set_name", + "name": { + "translate": "aether_ii.filled_map.veradexian_library" + }, + "target": "item_name" + } + ], + "name": "minecraft:map" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/undercloud_mineshaft/rare" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/storage.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/storage.json new file mode 100644 index 0000000000..4a25b54c6a --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/storage.json @@ -0,0 +1,238 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:scatterglass_shard", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_shard", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:holystone_rock", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "components": { + "minecraft:item_name": { + "translate": "item.aether_ii.aether_quartz" + } + }, + "function": "minecraft:set_components" + }, + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:quartz" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_shard", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:icestone", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:fossilized_zanite", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:fossilized_glint" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:undershale", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:agiosite", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ichorite", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:holystone" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "conditions": [ + { + "chance": 0.15, + "condition": "minecraft:random_chance" + } + ], + "value": "aether_ii:chests/undercloud_mineshaft/rare" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/undercloud_mineshaft/storage" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/supplies.json b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/supplies.json new file mode 100644 index 0000000000..11da09a4bc --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/undercloud_mineshaft/supplies.json @@ -0,0 +1,203 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:satival_bulb", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:blueberry", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:orange" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:wyndberry" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:brettl_rope", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:cloudtwine", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:beast_pelt" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:bandage" + }, + { + "type": "minecraft:item", + "name": "aether_ii:splint" + }, + { + "type": "minecraft:item", + "name": "aether_ii:antivenom_vial" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 8.0, + "min": 4.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_torch", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "aether_ii:rustic_arkenium_lantern" + }, + { + "type": "minecraft:item", + "name": "aether_ii:cloudwool_bedroll" + } + ], + "rolls": 2.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "conditions": [ + { + "chance": 0.15, + "condition": "minecraft:random_chance" + } + ], + "value": "aether_ii:chests/undercloud_mineshaft/rare" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/undercloud_mineshaft/supplies" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/abandoned_bags.json b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/abandoned_bags.json new file mode 100644 index 0000000000..129c6e7824 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/abandoned_bags.json @@ -0,0 +1,212 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_torch", + "weight": 6 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_shard", + "weight": 4 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:scatterglass_bolt", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "aether_ii:beast_pelt_bundle" + }, + { + "type": "minecraft:item", + "name": "aether_ii:beast_pelt_helmet" + }, + { + "type": "minecraft:item", + "name": "aether_ii:beast_pelt_chestplate" + }, + { + "type": "minecraft:item", + "name": "aether_ii:beast_pelt_leggings" + }, + { + "type": "minecraft:item", + "name": "aether_ii:beast_pelt_boots" + }, + { + "type": "minecraft:item", + "name": "aether_ii:beast_pelt_gloves" + }, + { + "type": "minecraft:item", + "name": "aether_ii:skyroot_shield" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:blueberry", + "weight": 5 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:orange", + "weight": 4 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:wyndberry", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "components": { + "aether_ii:healing_stone_charges": 1 + }, + "function": "minecraft:set_components" + } + ], + "name": "aether_ii:healing_stone" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:scatterglass_vial", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:water_vial", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:skyroot_bucket" + }, + { + "type": "minecraft:item", + "name": "aether_ii:skyroot_water_bucket" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + } + ], + "random_sequence": "aether_ii:chests/veradexian_library/abandoned_bags" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/cockatrice_nests.json b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/cockatrice_nests.json new file mode 100644 index 0000000000..d9ac3ef19b --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/cockatrice_nests.json @@ -0,0 +1,197 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:cockatrice_feather", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:cloudtwine", + "weight": 2 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:skyroot_stick" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:skyroot_twig" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 6.0, + "min": 3.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:holystone_shortsword", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_pike", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_hammer", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_crossbow", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_shortsword", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_pike", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_hammer", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_crossbow" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:raw_taegore_meat" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:burrukai_rib_cut" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:kirrid_loin" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:prismallard_leg" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + } + ], + "random_sequence": "aether_ii:chests/veradexian_library/cockatrice_nests" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults.json b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults.json index b417c04108..175b316a16 100644 --- a/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults.json +++ b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults.json @@ -5,189 +5,24 @@ "bonus_rolls": 0.0, "entries": [ { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 2.0, - "min": 1.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "minecraft:book", - "weight": 10 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 4.0, - "min": 3.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "minecraft:paper", - "weight": 10 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 1.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:beast_pelt", - "weight": 6 - }, - { - "type": "minecraft:item", - "name": "aether_ii:guidebook_page" - } - ], - "rolls": { - "type": "minecraft:uniform", - "max": 4.0, - "min": 3.0 - } - }, - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 5.0, - "min": 3.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:ambrosium_shard", - "weight": 3 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 2.0, - "min": 1.0 - }, - "function": "minecraft:set_count" - } - ], - "name": "aether_ii:golden_amber", - "weight": 2 - }, - { - "type": "minecraft:item", - "name": "aether_ii:fossilized_zanite" - }, - { - "type": "minecraft:item", - "name": "aether_ii:glint_coin" - } - ], - "rolls": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - } - }, - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "name": "aether_ii:wyndberry", - "weight": 3 - }, - { - "type": "minecraft:item", - "name": "aether_ii:enchanted_swet_jelly", - "weight": 2 + "type": "minecraft:loot_table", + "value": "aether_ii:chests/veradexian_library/vaults_base" } ], - "rolls": { - "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 - } + "rolls": 1.0 }, { "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", - "name": "aether_ii:holystone_bookshelf", - "weight": 4 - }, - { - "type": "minecraft:item", - "name": "aether_ii:rustic_arkenium_lantern", - "weight": 3 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "damage": { - "type": "minecraft:uniform", - "max": 0.05, - "min": 0.01 - }, - "function": "minecraft:set_damage" - } - ], - "name": "aether_ii:shifting_glass", - "weight": 2 - }, - { - "type": "minecraft:item", - "name": "aether_ii:golden_aercloud_glider" - }, - { - "type": "minecraft:item", - "name": "aether_ii:zanite_pendant" - }, - { - "type": "minecraft:item", - "name": "aether_ii:icestone_pendant" - }, - { - "type": "minecraft:item", - "functions": [ + "conditions": [ { - "add": false, - "damage": { - "type": "minecraft:uniform", - "max": 0.1, - "min": 0.02 - }, - "function": "minecraft:set_damage" + "chance": 0.15, + "condition": "minecraft:random_chance" } ], - "name": "aether_ii:shifting_glass" + "name": "aether_ii:painting_template_far" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults_base.json b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults_base.json new file mode 100644 index 0000000000..a8c7457fc2 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults_base.json @@ -0,0 +1,197 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:book", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "minecraft:paper", + "weight": 10 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:beast_pelt", + "weight": 6 + }, + { + "type": "minecraft:item", + "name": "aether_ii:guidebook_page" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 4.0, + "min": 3.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 5.0, + "min": 3.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:ambrosium_shard", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:golden_amber", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:fossilized_zanite" + }, + { + "type": "minecraft:item", + "name": "aether_ii:glint_coin" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:wyndberry", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "aether_ii:enchanted_swet_jelly", + "weight": 2 + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 2.0 + } + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:holystone_bookshelf", + "weight": 4 + }, + { + "type": "minecraft:item", + "name": "aether_ii:rustic_arkenium_lantern", + "weight": 3 + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "damage": { + "type": "minecraft:uniform", + "max": 0.05, + "min": 0.01 + }, + "function": "minecraft:set_damage" + } + ], + "name": "aether_ii:shifting_glass", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "aether_ii:golden_aercloud_glider" + }, + { + "type": "minecraft:item", + "name": "aether_ii:zanite_pendant" + }, + { + "type": "minecraft:item", + "name": "aether_ii:icestone_pendant" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "damage": { + "type": "minecraft:uniform", + "max": 0.1, + "min": 0.02 + }, + "function": "minecraft:set_damage" + } + ], + "name": "aether_ii:shifting_glass" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "aether_ii:chests/veradexian_library/vaults_base" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults_treasure.json b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults_treasure.json new file mode 100644 index 0000000000..c94abc2991 --- /dev/null +++ b/src/generated/resources/data/aether_ii/loot_table/chests/veradexian_library/vaults_treasure.json @@ -0,0 +1,40 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:loot_table", + "value": "aether_ii:chests/veradexian_library/vaults_base" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:theran_globe" + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "aether_ii:painting_template_far" + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + } + } + ], + "random_sequence": "aether_ii:chests/veradexian_library/vaults_treasure" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/loot_table/vases/undercloud_mineshaft/common.json b/src/generated/resources/data/aether_ii/loot_table/vases/undercloud_mineshaft/common.json index 690a84936d..0e06ee68a9 100644 --- a/src/generated/resources/data/aether_ii/loot_table/vases/undercloud_mineshaft/common.json +++ b/src/generated/resources/data/aether_ii/loot_table/vases/undercloud_mineshaft/common.json @@ -18,7 +18,7 @@ } ], "name": "aether_ii:ambrosium_torch", - "weight": 15 + "weight": 18 }, { "type": "minecraft:item", @@ -34,7 +34,7 @@ } ], "name": "aether_ii:ambrosium_shard", - "weight": 12 + "weight": 15 }, { "type": "minecraft:item", @@ -43,14 +43,14 @@ "add": false, "count": { "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 + "max": 2.0, + "min": 1.0 }, "function": "minecraft:set_count" } ], - "name": "aether_ii:icestone", - "weight": 8 + "name": "aether_ii:satival_bulb", + "weight": 12 }, { "type": "minecraft:item", @@ -65,8 +65,8 @@ "function": "minecraft:set_count" } ], - "name": "aether_ii:fossilized_zanite", - "weight": 8 + "name": "aether_ii:blueberry", + "weight": 12 }, { "type": "minecraft:item", @@ -75,14 +75,14 @@ "add": false, "count": { "type": "minecraft:uniform", - "max": 3.0, - "min": 2.0 + "max": 2.0, + "min": 1.0 }, "function": "minecraft:set_count" } ], - "name": "aether_ii:cloudtwine", - "weight": 6 + "name": "aether_ii:orange", + "weight": 11 }, { "type": "minecraft:item", @@ -97,24 +97,8 @@ "function": "minecraft:set_count" } ], - "name": "aether_ii:cockatrice_feather", - "weight": 6 - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "damage": { - "type": "minecraft:uniform", - "max": 0.05, - "min": 0.01 - }, - "function": "minecraft:set_damage" - } - ], - "name": "aether_ii:shifting_glass", - "weight": 5 + "name": "aether_ii:icestone", + "weight": 9 }, { "type": "minecraft:item", @@ -123,14 +107,14 @@ "add": false, "count": { "type": "minecraft:uniform", - "max": 2.0, - "min": 1.0 + "max": 3.0, + "min": 2.0 }, "function": "minecraft:set_count" } ], - "name": "aether_ii:beast_pelt", - "weight": 5 + "name": "aether_ii:cloudtwine", + "weight": 9 }, { "type": "minecraft:item", @@ -145,8 +129,8 @@ "function": "minecraft:set_count" } ], - "name": "aether_ii:swet_gel", - "weight": 5 + "name": "aether_ii:brettl_rope", + "weight": 9 }, { "type": "minecraft:item", @@ -161,8 +145,13 @@ "function": "minecraft:set_count" } ], - "name": "aether_ii:swet_jelly", - "weight": 4 + "name": "aether_ii:beast_pelt", + "weight": 8 + }, + { + "type": "minecraft:item", + "name": "aether_ii:fossilized_glint", + "weight": 6 }, { "type": "minecraft:item", @@ -177,23 +166,13 @@ "function": "minecraft:set_count" } ], - "name": "aether_ii:blueberry", - "weight": 4 - }, - { - "type": "minecraft:item", - "name": "aether_ii:fossilized_glint", - "weight": 4 - }, - { - "type": "minecraft:item", - "name": "aether_ii:resonant_stone", - "weight": 3 + "name": "aether_ii:fossilized_zanite", + "weight": 6 }, { "type": "minecraft:item", "name": "aether_ii:cold_aercloud_glider", - "weight": 2 + "weight": 3 }, { "type": "minecraft:item", @@ -207,7 +186,7 @@ }, { "type": "minecraft:loot_table", - "value": "aether_ii:chests/dungeons/music_discs" + "value": "aether_ii:chests/undercloud_mineshaft/rare" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/aether_ii/loot_table/vases/veradexian_ruins/common.json b/src/generated/resources/data/aether_ii/loot_table/vases/veradexian_ruins/common.json index 3175724fb1..6968af9068 100644 --- a/src/generated/resources/data/aether_ii/loot_table/vases/veradexian_ruins/common.json +++ b/src/generated/resources/data/aether_ii/loot_table/vases/veradexian_ruins/common.json @@ -18,7 +18,7 @@ } ], "name": "aether_ii:ambrosium_shard", - "weight": 20 + "weight": 24 }, { "type": "minecraft:item", @@ -85,13 +85,39 @@ }, { "type": "minecraft:item", - "name": "aether_ii:cloudtwine", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "aether_ii:scatterglass_bolt", "weight": 12 }, + { + "type": "minecraft:item", + "name": "aether_ii:cloudtwine", + "weight": 10 + }, { "type": "minecraft:item", "name": "aether_ii:beast_pelt", - "weight": 12 + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "aether_ii:burrukai_plate", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "aether_ii:golden_aercloud", + "weight": 8 }, { "type": "minecraft:item", @@ -107,21 +133,6 @@ } ], "name": "aether_ii:shifting_glass", - "weight": 11 - }, - { - "type": "minecraft:item", - "name": "aether_ii:burrukai_plate", - "weight": 10 - }, - { - "type": "minecraft:item", - "name": "aether_ii:guidebook_page", - "weight": 9 - }, - { - "type": "minecraft:item", - "name": "aether_ii:golden_aercloud", "weight": 8 }, { @@ -136,18 +147,23 @@ }, { "type": "minecraft:item", - "name": "aether_ii:holystone_crossbow", + "name": "aether_ii:skyroot_bucket", "weight": 6 }, { "type": "minecraft:item", - "name": "aether_ii:burrukai_plate_shield", + "name": "aether_ii:guidebook_page", "weight": 6 }, { "type": "minecraft:item", - "name": "aether_ii:skyroot_bucket", - "weight": 6 + "name": "aether_ii:burrukai_plate_shield", + "weight": 3 + }, + { + "type": "minecraft:item", + "name": "aether_ii:holystone_crossbow", + "weight": 3 }, { "type": "minecraft:loot_table", diff --git a/src/generated/resources/data/aether_ii/painting_variant/far.json b/src/generated/resources/data/aether_ii/painting_variant/far.json new file mode 100644 index 0000000000..02b900b7c3 --- /dev/null +++ b/src/generated/resources/data/aether_ii/painting_variant/far.json @@ -0,0 +1,13 @@ +{ + "asset_id": "aether_ii:far", + "author": { + "color": "gray", + "translate": "painting.aether_ii.far.author" + }, + "height": 4, + "title": { + "color": "yellow", + "translate": "painting.aether_ii.far.title" + }, + "width": 4 +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/mossy_undershale_slab.json b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_slab.json new file mode 100644 index 0000000000..f1846b1724 --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_slab.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": "aether_ii:mossy_undershale" + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "aether_ii:mossy_undershale_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/mossy_undershale_slab_from_mossy_undershale_stonecutting.json b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_slab_from_mossy_undershale_stonecutting.json new file mode 100644 index 0000000000..ef1280dd02 --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_slab_from_mossy_undershale_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "aether_ii:mossy_undershale", + "result": { + "count": 2, + "id": "aether_ii:mossy_undershale_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/mossy_undershale_stairs.json b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_stairs.json new file mode 100644 index 0000000000..f835e5640b --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_stairs.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "building", + "key": { + "#": "aether_ii:mossy_undershale" + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "aether_ii:mossy_undershale_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/mossy_undershale_stairs_from_mossy_undershale_stonecutting.json b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_stairs_from_mossy_undershale_stonecutting.json new file mode 100644 index 0000000000..6e92350cbd --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_stairs_from_mossy_undershale_stonecutting.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "aether_ii:mossy_undershale", + "result": { + "id": "aether_ii:mossy_undershale_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/mossy_undershale_wall.json b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_wall.json new file mode 100644 index 0000000000..180dce32af --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_wall.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "#": "aether_ii:mossy_undershale" + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "aether_ii:mossy_undershale_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/mossy_undershale_wall_from_mossy_undershale_stonecutting.json b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_wall_from_mossy_undershale_stonecutting.json new file mode 100644 index 0000000000..dd0633da4c --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_wall_from_mossy_undershale_stonecutting.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "aether_ii:mossy_undershale", + "result": { + "id": "aether_ii:mossy_undershale_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/mossy_undershale_with_moss.json b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_with_moss.json new file mode 100644 index 0000000000..914f7bf711 --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_with_moss.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "group": "mossy_undershale", + "ingredients": [ + "aether_ii:undershale", + "aether_ii:bryalinn_moss_block" + ], + "result": { + "id": "aether_ii:mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/mossy_undershale_with_vine.json b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_with_vine.json new file mode 100644 index 0000000000..e69f60caab --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/mossy_undershale_with_vine.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "group": "mossy_undershale", + "ingredients": [ + "aether_ii:undershale", + "aether_ii:bryalinn_moss_vines" + ], + "result": { + "id": "aether_ii:mossy_undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/painting_far_from_painting_template.json b/src/generated/resources/data/aether_ii/recipe/painting_far_from_painting_template.json new file mode 100644 index 0000000000..97c2020173 --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/painting_far_from_painting_template.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "minecraft:painting", + "aether_ii:painting_template_far" + ], + "result": { + "components": { + "minecraft:painting/variant": "aether_ii:far" + }, + "id": "minecraft:painting" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/painting_template_far.json b/src/generated/resources/data/aether_ii/recipe/painting_template_far.json new file mode 100644 index 0000000000..726be1eb55 --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/painting_template_far.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "#": "minecraft:paper", + "/": "aether_ii:painting_template_far" + }, + "pattern": [ + "###", + "#/#", + "###" + ], + "result": { + "count": 2, + "id": "aether_ii:painting_template_far" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/recipe/undershale_from_mossy.json b/src/generated/resources/data/aether_ii/recipe/undershale_from_mossy.json new file mode 100644 index 0000000000..306a34e81f --- /dev/null +++ b/src/generated/resources/data/aether_ii/recipe/undershale_from_mossy.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "group": "undershale", + "ingredients": [ + "aether_ii:mossy_undershale" + ], + "result": { + "id": "aether_ii:undershale" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/tags/block/aether_carver_replaceables.json b/src/generated/resources/data/aether_ii/tags/block/aether_carver_replaceables.json index b5905272a2..15936840c2 100644 --- a/src/generated/resources/data/aether_ii/tags/block/aether_carver_replaceables.json +++ b/src/generated/resources/data/aether_ii/tags/block/aether_carver_replaceables.json @@ -3,6 +3,7 @@ "aether_ii:arctic_snow_block", "aether_ii:mossy_holystone", "aether_ii:irradiated_holystone", + "aether_ii:mossy_undershale", "aether_ii:quicksoil", "aether_ii:ferrosite", "aether_ii:rusted_ferrosite", diff --git a/src/generated/resources/data/aether_ii/tags/block/bryalinn_moss_replaceable.json b/src/generated/resources/data/aether_ii/tags/block/bryalinn_moss_replaceable.json index e516785f78..ad3b8a7d2d 100644 --- a/src/generated/resources/data/aether_ii/tags/block/bryalinn_moss_replaceable.json +++ b/src/generated/resources/data/aether_ii/tags/block/bryalinn_moss_replaceable.json @@ -4,6 +4,7 @@ "aether_ii:coarse_aether_dirt", "aether_ii:shimmering_silt", "aether_ii:mossy_holystone", + "aether_ii:mossy_undershale", "aether_ii:ferrosite_sand", "aether_ii:ferrosite_mud" ] diff --git a/src/generated/resources/data/aether_ii/tags/block/mimic_containers.json b/src/generated/resources/data/aether_ii/tags/block/mimic_containers.json index 707e65bf4d..d27054da50 100644 --- a/src/generated/resources/data/aether_ii/tags/block/mimic_containers.json +++ b/src/generated/resources/data/aether_ii/tags/block/mimic_containers.json @@ -1,5 +1,6 @@ { "values": [ + "aether_ii:skyroot_chest", "aether_ii:sentry_crate" ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/tags/block/structure_moss_replaceables.json b/src/generated/resources/data/aether_ii/tags/block/structure_moss_replaceables.json index dcbd59afd5..a2c46225b0 100644 --- a/src/generated/resources/data/aether_ii/tags/block/structure_moss_replaceables.json +++ b/src/generated/resources/data/aether_ii/tags/block/structure_moss_replaceables.json @@ -1,6 +1,9 @@ { "values": [ "aether_ii:faded_holystone_bricks", + "aether_ii:faded_holystone_brick_stairs", + "aether_ii:faded_holystone_brick_slab", + "aether_ii:faded_holystone_brick_wall", "aether_ii:undershale_bricks", "aether_ii:undershale_brick_stairs", "aether_ii:undershale_brick_slab", diff --git a/src/generated/resources/data/aether_ii/tags/block/undershale.json b/src/generated/resources/data/aether_ii/tags/block/undershale.json index 46681f5c21..31cf5965f4 100644 --- a/src/generated/resources/data/aether_ii/tags/block/undershale.json +++ b/src/generated/resources/data/aether_ii/tags/block/undershale.json @@ -1,5 +1,6 @@ { "values": [ - "aether_ii:undershale" + "aether_ii:undershale", + "aether_ii:mossy_undershale" ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/tags/item/double_drops.json b/src/generated/resources/data/aether_ii/tags/item/double_drops.json index ba4cdb0deb..021d4764e5 100644 --- a/src/generated/resources/data/aether_ii/tags/item/double_drops.json +++ b/src/generated/resources/data/aether_ii/tags/item/double_drops.json @@ -35,13 +35,13 @@ "aether_ii:crude_scatterglass", "aether_ii:quicksoil", "aether_ii:mossy_holystone", + "aether_ii:mossy_undershale", "aether_ii:ferrosite_sand", "aether_ii:ferrosite", "aether_ii:rusted_ferrosite", "aether_ii:arctic_snow_block", "aether_ii:arctic_ice", "aether_ii:arctic_packed_ice", - "aether_ii:holystone", "aether_ii:cold_aercloud", "aether_ii:blue_aercloud", "aether_ii:golden_aercloud", diff --git a/src/generated/resources/data/aether_ii/tags/item/undershale.json b/src/generated/resources/data/aether_ii/tags/item/undershale.json index 46681f5c21..31cf5965f4 100644 --- a/src/generated/resources/data/aether_ii/tags/item/undershale.json +++ b/src/generated/resources/data/aether_ii/tags/item/undershale.json @@ -1,5 +1,6 @@ { "values": [ - "aether_ii:undershale" + "aether_ii:undershale", + "aether_ii:mossy_undershale" ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/tags/sound_event/music.json b/src/generated/resources/data/aether_ii/tags/sound_event/music.json index 80c940dda7..e6e80935d3 100644 --- a/src/generated/resources/data/aether_ii/tags/sound_event/music.json +++ b/src/generated/resources/data/aether_ii/tags/sound_event/music.json @@ -5,6 +5,7 @@ "aether_ii:music.aether_night", "aether_ii:music.aether_sunrise", "aether_ii:music.aether_sunset", + "aether_ii:music.aether_mineshaft", "#aether_ii:boss_music" ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/tags/worldgen/biome/has_structure/veradexian_library_arctic.json b/src/generated/resources/data/aether_ii/tags/worldgen/biome/has_structure/veradexian_library_arctic.json index e1196a3dbb..c26c994186 100644 --- a/src/generated/resources/data/aether_ii/tags/worldgen/biome/has_structure/veradexian_library_arctic.json +++ b/src/generated/resources/data/aether_ii/tags/worldgen/biome/has_structure/veradexian_library_arctic.json @@ -1,5 +1,7 @@ { "values": [ - "aether_ii:enduring_woodland" + "aether_ii:frigid_sierra", + "aether_ii:enduring_woodland", + "aether_ii:sheer_tundra" ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/tags/worldgen/biome/has_structure/veradexian_library_temperate.json b/src/generated/resources/data/aether_ii/tags/worldgen/biome/has_structure/veradexian_library_temperate.json index 359f9bce0a..55c98af506 100644 --- a/src/generated/resources/data/aether_ii/tags/worldgen/biome/has_structure/veradexian_library_temperate.json +++ b/src/generated/resources/data/aether_ii/tags/worldgen/biome/has_structure/veradexian_library_temperate.json @@ -1,7 +1,10 @@ { "values": [ + "aether_ii:flourishing_field", "aether_ii:verdant_woods", "aether_ii:shrouded_forest", + "aether_ii:magnetic_scar", + "aether_ii:turquoise_forest", "aether_ii:glistening_swamp", "aether_ii:violet_highwoods" ] diff --git a/src/generated/resources/data/aether_ii/tags/worldgen/structure/on_veradexian_library_explorer_maps.json b/src/generated/resources/data/aether_ii/tags/worldgen/structure/on_veradexian_library_explorer_maps.json new file mode 100644 index 0000000000..f22066c8fb --- /dev/null +++ b/src/generated/resources/data/aether_ii/tags/worldgen/structure/on_veradexian_library_explorer_maps.json @@ -0,0 +1,6 @@ +{ + "values": [ + "aether_ii:veradexian_library_temperate", + "aether_ii:veradexian_library_arctic" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/tags/worldgen/structure/surface_ruins.json b/src/generated/resources/data/aether_ii/tags/worldgen/structure/surface_ruins.json index f08c2f5e2d..a94c5ecbc6 100644 --- a/src/generated/resources/data/aether_ii/tags/worldgen/structure/surface_ruins.json +++ b/src/generated/resources/data/aether_ii/tags/worldgen/structure/surface_ruins.json @@ -2,6 +2,7 @@ "values": [ "aether_ii:veradexian_ruins_temperate", "aether_ii:veradexian_ruins_arctic", - "aether_ii:veradexian_library_temperate" + "aether_ii:veradexian_library_temperate", + "aether_ii:veradexian_library_arctic" ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/ambrelinn_moss_dungeon.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/ambrelinn_moss_structure.json similarity index 100% rename from src/generated/resources/data/aether_ii/worldgen/configured_feature/ambrelinn_moss_dungeon.json rename to src/generated/resources/data/aether_ii/worldgen/configured_feature/ambrelinn_moss_structure.json diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/arctic_ice_spike_variants_structure.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/arctic_ice_spike_variants_structure.json new file mode 100644 index 0000000000..4a2d69d7ab --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/configured_feature/arctic_ice_spike_variants_structure.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:random_selector", + "config": { + "default": { + "feature": "aether_ii:arctic_ice_spike", + "placement": [] + }, + "features": [ + { + "chance": 0.375, + "feature": { + "feature": "aether_ii:mega_arctic_ice_spike", + "placement": [] + } + } + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/bryalinn_moss_dungeon.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/bryalinn_moss_structure.json similarity index 100% rename from src/generated/resources/data/aether_ii/worldgen/configured_feature/bryalinn_moss_dungeon.json rename to src/generated/resources/data/aether_ii/worldgen/configured_feature/bryalinn_moss_structure.json diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/cold_aercloud_structure.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/cold_aercloud_structure.json new file mode 100644 index 0000000000..3a8b07d60b --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/configured_feature/cold_aercloud_structure.json @@ -0,0 +1,12 @@ +{ + "type": "aether_ii:aercloud", + "config": { + "blocks": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "aether_ii:cold_aercloud" + } + }, + "bounds": 6 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_boss_room_cover.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_boss_room_cover.json index 94e00bc51e..94dcfe0bd8 100644 --- a/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_boss_room_cover.json +++ b/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_boss_room_cover.json @@ -11,7 +11,7 @@ "calculation_type": "bottom_to_top", "height": 28, "incline_factor": 0.0075, - "noise": "aether_ii:holy_isles/dungeons/structure_cover", + "noise": "aether_ii:holy_isles/structures/structure_cover", "radius": 24.0, "scatter_factor": 0.05, "secondary_block": { diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_entrance_cover.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_entrance_cover.json index d3e467a93d..c886f907e1 100644 --- a/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_entrance_cover.json +++ b/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_entrance_cover.json @@ -11,7 +11,7 @@ "calculation_type": "bottom_to_top", "height": 12, "incline_factor": 0.0125, - "noise": "aether_ii:holy_isles/dungeons/structure_cover", + "noise": "aether_ii:holy_isles/structures/structure_cover", "radius": 16.0, "scatter_factor": 0.05, "secondary_block": { diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_lobby_cover.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_lobby_cover.json index 84a5374949..7c5ef8f1f2 100644 --- a/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_lobby_cover.json +++ b/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_lobby_cover.json @@ -11,7 +11,7 @@ "calculation_type": "bottom_to_top", "height": 14, "incline_factor": 0.0075, - "noise": "aether_ii:holy_isles/dungeons/structure_cover", + "noise": "aether_ii:holy_isles/structures/structure_cover", "radius": 22.0, "scatter_factor": 0.05, "secondary_block": { diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_staircase_cover.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_staircase_cover.json index 11cdc12e65..29ce734959 100644 --- a/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_staircase_cover.json +++ b/src/generated/resources/data/aether_ii/worldgen/configured_feature/infected_guardian_tree_staircase_cover.json @@ -11,7 +11,7 @@ "calculation_type": "bottom_to_top", "height": 20, "incline_factor": 0.0125, - "noise": "aether_ii:holy_isles/dungeons/structure_cover", + "noise": "aether_ii:holy_isles/structures/structure_cover", "radius": 16.0, "scatter_factor": 0.05, "secondary_block": { diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/pile_rubble.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/pile_rubble.json new file mode 100644 index 0000000000..0c1833c9e2 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/configured_feature/pile_rubble.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block_pile", + "config": { + "state_provider": { + "type": "minecraft:weighted_state_provider", + "entries": [ + { + "data": { + "Name": "aether_ii:holystone" + }, + "weight": 3 + }, + { + "data": { + "Name": "aether_ii:faded_holystone_bricks" + }, + "weight": 1 + } + ] + } + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/configured_feature/shayelinn_moss_dungeon.json b/src/generated/resources/data/aether_ii/worldgen/configured_feature/shayelinn_moss_structure.json similarity index 100% rename from src/generated/resources/data/aether_ii/worldgen/configured_feature/shayelinn_moss_dungeon.json rename to src/generated/resources/data/aether_ii/worldgen/configured_feature/shayelinn_moss_structure.json diff --git a/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/decay.json b/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/decay.json new file mode 100644 index 0000000000..ecb17adeba --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/decay.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:add", + "argument1": -0.1, + "argument2": { + "type": "aether_ii:perlin_noise", + "noise": { + "amplitudes": [ + 0.75, + 1.0, + 0.75, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "firstOctave": -3 + }, + "seed": 500, + "xz_scale": 1.5, + "y_scale": 0.75 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/decay_reduced.json b/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/decay_reduced.json new file mode 100644 index 0000000000..a8b62817b0 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/decay_reduced.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:add", + "argument1": -0.15, + "argument2": { + "type": "aether_ii:perlin_noise", + "noise": { + "amplitudes": [ + 0.75, + 1.0, + 0.75, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "firstOctave": -3 + }, + "seed": 500, + "xz_scale": 1.5, + "y_scale": 0.75 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/dungeons/infected_blocks.json b/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/infected_blocks.json similarity index 100% rename from src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/dungeons/infected_blocks.json rename to src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/infected_blocks.json diff --git a/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/dungeons/structure_cover.json b/src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/structure_cover.json similarity index 100% rename from src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/dungeons/structure_cover.json rename to src/generated/resources/data/aether_ii/worldgen/density_function/holy_isles/structures/structure_cover.json diff --git a/src/generated/resources/data/aether_ii/worldgen/placed_feature/arctic_ice_spike_structure.json b/src/generated/resources/data/aether_ii/worldgen/placed_feature/arctic_ice_spike_structure.json new file mode 100644 index 0000000000..e04b21e2af --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/placed_feature/arctic_ice_spike_structure.json @@ -0,0 +1,4 @@ +{ + "feature": "aether_ii:arctic_ice_spike_variants_structure", + "placement": [] +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/placed_feature/bryalinn_moss_cover_structure.json b/src/generated/resources/data/aether_ii/worldgen/placed_feature/bryalinn_moss_cover_structure.json index eea08f8b33..0dd49102df 100644 --- a/src/generated/resources/data/aether_ii/worldgen/placed_feature/bryalinn_moss_cover_structure.json +++ b/src/generated/resources/data/aether_ii/worldgen/placed_feature/bryalinn_moss_cover_structure.json @@ -1,4 +1,4 @@ { - "feature": "aether_ii:bryalinn_moss_dungeon", + "feature": "aether_ii:bryalinn_moss_structure", "placement": [] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/placed_feature/cold_aercloud_structure.json b/src/generated/resources/data/aether_ii/worldgen/placed_feature/cold_aercloud_structure.json new file mode 100644 index 0000000000..b1dd0e9cf5 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/placed_feature/cold_aercloud_structure.json @@ -0,0 +1,10 @@ +{ + "feature": "aether_ii:cold_aercloud_structure", + "placement": [ + { + "type": "minecraft:random_offset", + "xz_spread": -3, + "y_spread": 0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/placed_feature/pile_material.json b/src/generated/resources/data/aether_ii/worldgen/placed_feature/pile_material.json new file mode 100644 index 0000000000..dd28fba223 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/placed_feature/pile_material.json @@ -0,0 +1,4 @@ +{ + "feature": "aether_ii:piles_material_deposit", + "placement": [] +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/placed_feature/pile_rubble.json b/src/generated/resources/data/aether_ii/worldgen/placed_feature/pile_rubble.json new file mode 100644 index 0000000000..e90dbf2579 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/placed_feature/pile_rubble.json @@ -0,0 +1,4 @@ +{ + "feature": "aether_ii:pile_rubble", + "placement": [] +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/ancient_henge.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/ancient_henge.json index 3832c56f6d..dbe238cf24 100644 --- a/src/generated/resources/data/aether_ii/worldgen/processor_list/ancient_henge.json +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/ancient_henge.json @@ -88,7 +88,7 @@ "predicate_type": "minecraft:always_true" }, "output_state": { - "Name": "aether_ii:ferrosite" + "Name": "minecraft:air" } }, { diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/infected_guardian_tree.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/infected_guardian_tree.json index 5dfb095264..a0ddca2b45 100644 --- a/src/generated/resources/data/aether_ii/worldgen/processor_list/infected_guardian_tree.json +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/infected_guardian_tree.json @@ -1,7 +1,7 @@ { "processors": [ { - "density_function": "aether_ii:holy_isles/dungeons/infected_blocks", + "density_function": "aether_ii:holy_isles/structures/infected_blocks", "input_state": { "Name": "aether_ii:guardian_wood", "Properties": { diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/sentry_ruins_room.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/sentry_ruins_room.json index 1c499b3425..19b4a33b93 100644 --- a/src/generated/resources/data/aether_ii/worldgen/processor_list/sentry_ruins_room.json +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/sentry_ruins_room.json @@ -391,6 +391,7 @@ ] }, { + "probability": 0.3, "processor_type": "aether_ii:mimic_container" } ] diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/sentry_ruins_staircase.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/sentry_ruins_staircase.json index 91ebe14508..b10da63493 100644 --- a/src/generated/resources/data/aether_ii/worldgen/processor_list/sentry_ruins_staircase.json +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/sentry_ruins_staircase.json @@ -404,6 +404,7 @@ ] }, { + "probability": 0.3, "processor_type": "aether_ii:mimic_container" } ] diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft.json deleted file mode 100644 index 6dba77a43c..0000000000 --- a/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "processors": [ - { - "processor_type": "minecraft:rule", - "rules": [ - { - "input_predicate": { - "block": "aether_ii:holystone_vase", - "predicate_type": "minecraft:random_block_match", - "probability": 0.25 - }, - "location_predicate": { - "predicate_type": "minecraft:always_true" - }, - "output_state": { - "Name": "minecraft:air" - } - }, - { - "input_predicate": { - "block": "aether_ii:skyroot_chest", - "predicate_type": "minecraft:random_block_match", - "probability": 0.75 - }, - "location_predicate": { - "predicate_type": "minecraft:always_true" - }, - "output_state": { - "Name": "minecraft:air" - } - }, - { - "input_predicate": { - "block": "aether_ii:ambrosium_wall_torch", - "predicate_type": "minecraft:random_block_match", - "probability": 0.95 - }, - "location_predicate": { - "predicate_type": "minecraft:always_true" - }, - "output_state": { - "Name": "minecraft:air" - } - }, - { - "input_predicate": { - "block": "aether_ii:skyroot_planks", - "predicate_type": "minecraft:block_match" - }, - "location_predicate": { - "block": "aether_ii:holystone", - "predicate_type": "minecraft:block_match" - }, - "output_state": { - "Name": "aether_ii:holystone" - } - }, - { - "input_predicate": { - "block": "aether_ii:skyroot_planks", - "predicate_type": "minecraft:block_match" - }, - "location_predicate": { - "block": "aether_ii:undershale", - "predicate_type": "minecraft:block_match" - }, - "output_state": { - "Name": "aether_ii:undershale" - } - }, - { - "input_predicate": { - "block": "aether_ii:skyroot_log", - "predicate_type": "minecraft:block_match" - }, - "location_predicate": { - "block": "aether_ii:holystone", - "predicate_type": "minecraft:block_match" - }, - "output_state": { - "Name": "aether_ii:holystone" - } - }, - { - "input_predicate": { - "block": "aether_ii:skyroot_log", - "predicate_type": "minecraft:block_match" - }, - "location_predicate": { - "block": "aether_ii:undershale", - "predicate_type": "minecraft:block_match" - }, - "output_state": { - "Name": "aether_ii:undershale" - } - }, - { - "input_predicate": { - "block": "aether_ii:skyroot_trunk", - "predicate_type": "minecraft:block_match" - }, - "location_predicate": { - "block": "aether_ii:holystone", - "predicate_type": "minecraft:block_match" - }, - "output_state": { - "Name": "aether_ii:holystone" - } - }, - { - "input_predicate": { - "block": "aether_ii:skyroot_trunk", - "predicate_type": "minecraft:block_match" - }, - "location_predicate": { - "block": "aether_ii:undershale", - "predicate_type": "minecraft:block_match" - }, - "output_state": { - "Name": "aether_ii:undershale" - } - } - ] - }, - { - "processor_type": "aether_ii:remove_in_air" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft_bridge.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft_bridge.json new file mode 100644 index 0000000000..d5c5fbc0e6 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft_bridge.json @@ -0,0 +1,90 @@ +{ + "processors": [ + { + "processor_type": "minecraft:rule", + "rules": [ + { + "input_predicate": { + "block": "aether_ii:holystone_vase", + "predicate_type": "minecraft:random_block_match", + "probability": 0.5 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "minecraft:air" + } + }, + { + "input_predicate": { + "block": "aether_ii:yellow_cloudwool", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "minecraft:air", + "predicate_type": "aether_ii:block_ignore_test" + }, + "output_state": { + "Name": "aether_ii:faded_holystone_base_pillar", + "Properties": { + "facing": "up" + } + } + }, + { + "input_predicate": { + "block": "aether_ii:orange_cloudwool", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "minecraft:air", + "predicate_type": "aether_ii:block_ignore_test" + }, + "output_state": { + "Name": "aether_ii:faded_holystone_pillar", + "Properties": { + "facing": "up" + } + } + }, + { + "input_predicate": { + "block": "aether_ii:red_cloudwool", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "minecraft:air", + "predicate_type": "aether_ii:block_ignore_test" + }, + "output_state": { + "Name": "aether_ii:faded_holystone_capstone_pillar", + "Properties": { + "facing": "up" + } + } + }, + { + "input_predicate": { + "predicate_type": "minecraft:tag_match", + "tag": "aether_ii:cloudwool" + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "minecraft:air" + } + } + ] + }, + { + "probability": 0.3, + "processor_type": "aether_ii:mimic_container" + }, + { + "density_function": "aether_ii:holy_isles/structures/decay_reduced", + "processor_type": "aether_ii:density_function_degradation" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft_corridor.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft_corridor.json new file mode 100644 index 0000000000..70d610e83c --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft_corridor.json @@ -0,0 +1,225 @@ +{ + "processors": [ + { + "processor_type": "minecraft:rule", + "rules": [ + { + "input_predicate": { + "predicate_type": "minecraft:always_true" + }, + "location_predicate": { + "block": "minecraft:air", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "minecraft:air" + } + }, + { + "input_predicate": { + "predicate_type": "minecraft:always_true" + }, + "location_predicate": { + "block": "aether_ii:hestveil", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:hestveil", + "Properties": { + "hestveil_horizontal_distance": "0", + "hestveil_vertical_distance": "0", + "ignited": "false" + } + } + }, + { + "input_predicate": { + "predicate_type": "minecraft:always_true" + }, + "location_predicate": { + "block": "aether_ii:cold_aercloud", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:cold_aercloud" + } + }, + { + "input_predicate": { + "block": "aether_ii:holystone_vase", + "predicate_type": "minecraft:random_block_match", + "probability": 0.65 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "minecraft:air" + } + }, + { + "input_predicate": { + "block": "aether_ii:skyroot_chest", + "predicate_type": "minecraft:random_block_match", + "probability": 0.9375 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "minecraft:air" + } + }, + { + "input_predicate": { + "block": "aether_ii:skyroot_barrel", + "predicate_type": "minecraft:random_block_match", + "probability": 0.375 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "aether_ii:skyroot_crafting_table" + } + }, + { + "input_predicate": { + "block": "aether_ii:abandoned_bag", + "predicate_type": "minecraft:random_block_match", + "probability": 0.5 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "minecraft:air" + } + }, + { + "input_predicate": { + "block": "aether_ii:mossy_holystone", + "predicate_type": "minecraft:random_block_match", + "probability": 0.65 + }, + "location_predicate": { + "block": "aether_ii:holystone", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:holystone" + } + }, + { + "input_predicate": { + "block": "aether_ii:mossy_holystone", + "predicate_type": "minecraft:random_block_match", + "probability": 0.35 + }, + "location_predicate": { + "block": "aether_ii:undershale", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:mossy_undershale" + } + }, + { + "input_predicate": { + "block": "aether_ii:mossy_holystone", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "aether_ii:undershale", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:undershale" + } + }, + { + "input_predicate": { + "block": "aether_ii:unstable_holystone", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "aether_ii:undershale", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:unstable_undershale" + } + }, + { + "input_predicate": { + "block": "aether_ii:mossy_holystone", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "aether_ii:agiosite", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:agiosite" + } + }, + { + "input_predicate": { + "block": "aether_ii:mossy_holystone", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "aether_ii:ichorite", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:ichorite" + } + }, + { + "input_predicate": { + "block": "aether_ii:mossy_holystone", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "aether_ii:ferrosite", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:ferrosite" + } + }, + { + "input_predicate": { + "block": "aether_ii:mossy_holystone", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "aether_ii:rusted_ferrosite", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:rusted_ferrosite" + } + }, + { + "input_predicate": { + "block": "aether_ii:mossy_holystone", + "predicate_type": "minecraft:block_match" + }, + "location_predicate": { + "block": "aether_ii:arctic_packed_ice", + "predicate_type": "minecraft:block_match" + }, + "output_state": { + "Name": "aether_ii:arctic_packed_ice" + } + } + ] + }, + { + "probability": 0.35, + "processor_type": "aether_ii:mimic_container" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft_hub.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft_hub.json new file mode 100644 index 0000000000..2e053867f0 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/undercloud_mineshaft_hub.json @@ -0,0 +1,22 @@ +{ + "processors": [ + { + "processor_type": "minecraft:rule", + "rules": [ + { + "input_predicate": { + "block": "aether_ii:holystone_vase", + "predicate_type": "minecraft:random_block_match", + "probability": 0.5 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "minecraft:air" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_aqueduct.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_aqueduct.json index f9b1e33910..3e18f7c91e 100644 --- a/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_aqueduct.json +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_aqueduct.json @@ -5,33 +5,7 @@ "rules": [ { "input_predicate": { - "block": "aether_ii:veradexian_vase", - "predicate_type": "minecraft:random_block_match", - "probability": 0.2 - }, - "location_predicate": { - "predicate_type": "minecraft:always_true" - }, - "output_state": { - "Name": "minecraft:air" - } - }, - { - "input_predicate": { - "block": "aether_ii:cold_aercloud", - "predicate_type": "minecraft:block_match" - }, - "location_predicate": { - "predicate_type": "minecraft:tag_match", - "tag": "aether_ii:aether_carver_replaceables" - }, - "output_state": { - "Name": "aether_ii:holystone" - } - }, - { - "input_predicate": { - "block": "aether_ii:cold_aercloud", + "block": "aether_ii:blue_cloudwool", "predicate_type": "minecraft:block_match" }, "location_predicate": { @@ -39,32 +13,14 @@ "predicate_type": "minecraft:block_match" }, "output_state": { - "Name": "minecraft:water", - "Properties": { - "level": "0" - } + "Name": "aether_ii:faded_holystone_bricks" } }, { "input_predicate": { - "block": "aether_ii:cold_aercloud", - "predicate_type": "minecraft:random_block_match", - "probability": 0.5 - }, - "location_predicate": { - "block": "minecraft:air", + "block": "aether_ii:blue_cloudwool", "predicate_type": "minecraft:block_match" }, - "output_state": { - "Name": "minecraft:air" - } - }, - { - "input_predicate": { - "block": "aether_ii:mossy_holystone", - "predicate_type": "minecraft:random_block_match", - "probability": 0.5 - }, "location_predicate": { "block": "minecraft:air", "predicate_type": "minecraft:block_match" @@ -75,26 +31,21 @@ }, { "input_predicate": { - "block": "aether_ii:mossy_holystone", - "predicate_type": "minecraft:random_block_match", - "probability": 0.5 + "block": "aether_ii:blue_cloudwool", + "predicate_type": "minecraft:block_match" }, "location_predicate": { - "block": "minecraft:water", + "block": "aether_ii:cold_aercloud", "predicate_type": "minecraft:block_match" }, "output_state": { - "Name": "minecraft:water", - "Properties": { - "level": "0" - } + "Name": "aether_ii:cold_aercloud" } }, { "input_predicate": { - "block": "aether_ii:mossy_holystone", - "predicate_type": "minecraft:random_block_match", - "probability": 0.3 + "block": "aether_ii:blue_cloudwool", + "predicate_type": "minecraft:block_match" }, "location_predicate": { "predicate_type": "minecraft:always_true" @@ -106,7 +57,8 @@ ] }, { - "processor_type": "aether_ii:shayelinn_moss" + "density_function": "aether_ii:holy_isles/structures/decay", + "processor_type": "aether_ii:density_function_degradation" } ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_temperate.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library.json similarity index 57% rename from src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_temperate.json rename to src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library.json index 28b3310c62..40195c5602 100644 --- a/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_temperate.json +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library.json @@ -5,7 +5,7 @@ "rules": [ { "input_predicate": { - "block": "aether_ii:veradexian_vase", + "block": "aether_ii:holystone_vase", "predicate_type": "minecraft:random_block_match", "probability": 0.65 }, @@ -18,9 +18,9 @@ }, { "input_predicate": { - "block": "aether_ii:rustic_arkenium_lantern", + "block": "aether_ii:abandoned_bag", "predicate_type": "minecraft:random_block_match", - "probability": 0.5 + "probability": 0.3 }, "location_predicate": { "predicate_type": "minecraft:always_true" @@ -33,7 +33,20 @@ "input_predicate": { "block": "aether_ii:aether_bush", "predicate_type": "minecraft:random_block_match", - "probability": 0.4 + "probability": 0.2 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "aether_ii:bryalinn_moss_block" + } + }, + { + "input_predicate": { + "block": "aether_ii:aether_bush", + "predicate_type": "minecraft:random_block_match", + "probability": 0.5 }, "location_predicate": { "predicate_type": "minecraft:always_true" @@ -44,7 +57,20 @@ }, { "input_predicate": { - "block": "aether_ii:skyroot_chest", + "block": "aether_ii:arctic_packed_ice", + "predicate_type": "minecraft:random_block_match", + "probability": 0.2 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "aether_ii:arctic_ice" + } + }, + { + "input_predicate": { + "block": "aether_ii:arctic_packed_ice", "predicate_type": "minecraft:random_block_match", "probability": 0.25 }, @@ -56,6 +82,10 @@ } } ] + }, + { + "probability": 0.375, + "processor_type": "aether_ii:mimic_container" } ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_arctic.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_entrance.json similarity index 65% rename from src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_arctic.json rename to src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_entrance.json index 103806727e..6e0ba5653f 100644 --- a/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_arctic.json +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_entrance.json @@ -5,9 +5,9 @@ "rules": [ { "input_predicate": { - "block": "aether_ii:veradexian_vase", + "block": "aether_ii:holystone_vase", "predicate_type": "minecraft:random_block_match", - "probability": 0.65 + "probability": 0.5 }, "location_predicate": { "predicate_type": "minecraft:always_true" @@ -18,15 +18,15 @@ }, { "input_predicate": { - "block": "aether_ii:rustic_arkenium_lantern", + "block": "aether_ii:aether_bush", "predicate_type": "minecraft:random_block_match", - "probability": 0.5 + "probability": 0.2 }, "location_predicate": { "predicate_type": "minecraft:always_true" }, "output_state": { - "Name": "minecraft:air" + "Name": "aether_ii:bryalinn_moss_block" } }, { @@ -44,7 +44,20 @@ }, { "input_predicate": { - "block": "aether_ii:skyroot_chest", + "block": "aether_ii:arctic_packed_ice", + "predicate_type": "minecraft:random_block_match", + "probability": 0.2 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "aether_ii:arctic_ice" + } + }, + { + "input_predicate": { + "block": "aether_ii:arctic_packed_ice", "predicate_type": "minecraft:random_block_match", "probability": 0.25 }, @@ -58,7 +71,8 @@ ] }, { - "processor_type": "aether_ii:shayelinn_moss" + "density_function": "aether_ii:holy_isles/structures/decay", + "processor_type": "aether_ii:density_function_degradation" } ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_vaults.json b/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_vaults.json new file mode 100644 index 0000000000..9ab0db75cf --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/processor_list/veradexian_library_vaults.json @@ -0,0 +1,35 @@ +{ + "processors": [ + { + "processor_type": "minecraft:rule", + "rules": [ + { + "input_predicate": { + "block": "aether_ii:holystone_vase", + "predicate_type": "minecraft:random_block_match", + "probability": 0.35 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "minecraft:air" + } + }, + { + "input_predicate": { + "block": "aether_ii:abandoned_bag", + "predicate_type": "minecraft:random_block_match", + "probability": 0.3 + }, + "location_predicate": { + "predicate_type": "minecraft:always_true" + }, + "output_state": { + "Name": "minecraft:air" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/structure/outpost.json b/src/generated/resources/data/aether_ii/worldgen/structure/outpost.json index 13c04d4d8b..b72bf1552c 100644 --- a/src/generated/resources/data/aether_ii/worldgen/structure/outpost.json +++ b/src/generated/resources/data/aether_ii/worldgen/structure/outpost.json @@ -12,7 +12,6 @@ "start_height": { "absolute": -1 }, - "start_pool": "aether_ii:outpost/outposts", - "step": "surface_structures", - "terrain_adaptation": "beard_thin" + "start_pool": "aether_ii:outpost/entrance_pedestal", + "step": "surface_structures" } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/structure/undercloud_mineshaft.json b/src/generated/resources/data/aether_ii/worldgen/structure/undercloud_mineshaft.json index 68426701aa..d4248e9d73 100644 --- a/src/generated/resources/data/aether_ii/worldgen/structure/undercloud_mineshaft.json +++ b/src/generated/resources/data/aether_ii/worldgen/structure/undercloud_mineshaft.json @@ -6,10 +6,10 @@ "discard_below_y": 24, "liquid_settings": "ignore_waterlogging", "max_distance_from_center": { - "horizontal": 64, - "vertical": 32 + "horizontal": 96, + "vertical": 48 }, - "size": 8, + "size": 14, "spawn_overrides": {}, "start_height": { "type": "minecraft:uniform", @@ -20,6 +20,6 @@ "absolute": 32 } }, - "start_pool": "aether_ii:undercloud_mineshaft/hubs", + "start_pool": "aether_ii:undercloud_mineshaft/hub", "step": "underground_structures" } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_aqueduct.json b/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_aqueduct.json index 250cf9d456..2d11efe50f 100644 --- a/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_aqueduct.json +++ b/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_aqueduct.json @@ -4,12 +4,12 @@ "buried": false, "discard_above_y": 256, "discard_below_y": 96, - "max_distance_from_center": 48, + "max_distance_from_center": 80, "size": 5, "spawn_overrides": {}, "start_height": { - "absolute": 120 + "absolute": 111 }, - "start_pool": "aether_ii:veradexian_aqueduct/aqueducts", + "start_pool": "aether_ii:veradexian_aqueduct/aqueducts_start", "step": "surface_structures" } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_library_arctic.json b/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_library_arctic.json index fddaa120f5..f4ccd863f6 100644 --- a/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_library_arctic.json +++ b/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_library_arctic.json @@ -2,17 +2,16 @@ "type": "aether_ii:aether_jigsaw", "biomes": "#aether_ii:has_structure/veradexian_library_arctic", "buried": false, - "discard_above_y": 256, + "discard_above_y": 320, "discard_below_y": 128, "liquid_settings": "ignore_waterlogging", - "max_distance_from_center": 32, + "max_distance_from_center": 64, "project_start_to_heightmap": "WORLD_SURFACE_WG", - "size": 5, + "size": 10, "spawn_overrides": {}, "start_height": { "absolute": 0 }, - "start_pool": "aether_ii:veradexian_library/arctic/entrances", - "step": "surface_structures", - "terrain_adaptation": "beard_thin" + "start_pool": "aether_ii:veradexian_library/arctic/entrance_pedestal", + "step": "surface_structures" } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_library_temperate.json b/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_library_temperate.json index 94ce4959e5..72124dfbcf 100644 --- a/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_library_temperate.json +++ b/src/generated/resources/data/aether_ii/worldgen/structure/veradexian_library_temperate.json @@ -5,14 +5,13 @@ "discard_above_y": 256, "discard_below_y": 128, "liquid_settings": "ignore_waterlogging", - "max_distance_from_center": 32, + "max_distance_from_center": 64, "project_start_to_heightmap": "WORLD_SURFACE_WG", - "size": 5, + "size": 10, "spawn_overrides": {}, "start_height": { "absolute": 0 }, - "start_pool": "aether_ii:veradexian_library/temperate/entrances", - "step": "surface_structures", - "terrain_adaptation": "beard_thin" + "start_pool": "aether_ii:veradexian_library/temperate/entrance_pedestal", + "step": "surface_structures" } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_surface_structures.json b/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_surface_structures.json index 6d24d15a5b..e3a4c00fd9 100644 --- a/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_surface_structures.json +++ b/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_surface_structures.json @@ -7,8 +7,8 @@ }, "frequency_reduction_method": "legacy_type_1", "salt": 1147092, - "separation": 8, - "spacing": 18 + "separation": 7, + "spacing": 14 }, "structures": [ { @@ -26,6 +26,18 @@ { "structure": "aether_ii:watchtower", "weight": 2 + }, + { + "structure": "aether_ii:veradexian_ruins_temperate", + "weight": 3 + }, + { + "structure": "aether_ii:veradexian_ruins_arctic", + "weight": 3 + }, + { + "structure": "aether_ii:ancient_henge", + "weight": 4 } ] } \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_underground_complexes.json b/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_underground_complexes.json index d5f5a91452..af09c8119c 100644 --- a/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_underground_complexes.json +++ b/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_underground_complexes.json @@ -9,7 +9,7 @@ "structures": [ { "structure": "aether_ii:sentry_ruins", - "weight": 2 + "weight": 1 }, { "structure": "aether_ii:undercloud_mineshaft", diff --git a/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_underground_ruins.json b/src/generated/resources/data/aether_ii/worldgen/structure_set/brexallen_ruins.json similarity index 100% rename from src/generated/resources/data/aether_ii/worldgen/structure_set/aether_underground_ruins.json rename to src/generated/resources/data/aether_ii/worldgen/structure_set/brexallen_ruins.json diff --git a/src/generated/resources/data/aether_ii/worldgen/structure_set/outposts.json b/src/generated/resources/data/aether_ii/worldgen/structure_set/outposts.json index e96822958a..8c9f9acd60 100644 --- a/src/generated/resources/data/aether_ii/worldgen/structure_set/outposts.json +++ b/src/generated/resources/data/aether_ii/worldgen/structure_set/outposts.json @@ -2,8 +2,8 @@ "placement": { "type": "minecraft:random_spread", "salt": 2738116, - "separation": 18, - "spacing": 28 + "separation": 16, + "spacing": 24 }, "structures": [ { diff --git a/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_surface_ruins.json b/src/generated/resources/data/aether_ii/worldgen/structure_set/veradexian_libraries.json similarity index 57% rename from src/generated/resources/data/aether_ii/worldgen/structure_set/aether_surface_ruins.json rename to src/generated/resources/data/aether_ii/worldgen/structure_set/veradexian_libraries.json index 2c5a685937..c42fa6c698 100644 --- a/src/generated/resources/data/aether_ii/worldgen/structure_set/aether_surface_ruins.json +++ b/src/generated/resources/data/aether_ii/worldgen/structure_set/veradexian_libraries.json @@ -5,25 +5,12 @@ "chunk_count": 6, "other_set": "aether_ii:outposts" }, - "frequency": 0.75, "frequency_reduction_method": "legacy_type_2", "salt": 2038911, - "separation": 8, - "spacing": 14 + "separation": 14, + "spacing": 28 }, "structures": [ - { - "structure": "aether_ii:veradexian_ruins_temperate", - "weight": 3 - }, - { - "structure": "aether_ii:veradexian_ruins_arctic", - "weight": 3 - }, - { - "structure": "aether_ii:ancient_henge", - "weight": 4 - }, { "structure": "aether_ii:veradexian_library_temperate", "weight": 2 diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/libraries.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/entrance_pedestal.json similarity index 72% rename from src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/libraries.json rename to src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/entrance_pedestal.json index 9a4a907f78..5f4cf1fc5c 100644 --- a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/libraries.json +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/entrance_pedestal.json @@ -5,9 +5,11 @@ "discard_above_y": 384, "discard_below_y": 96, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/common/library_01", + "location": "aether_ii:outpost/entrance_pedestal", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:veradexian_library_arctic", + "processors": { + "processors": [] + }, "projection": "rigid", "replace_air": false }, diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/libraries.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/foundation.json similarity index 72% rename from src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/libraries.json rename to src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/foundation.json index b080e626f6..8f24d0c619 100644 --- a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/libraries.json +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/foundation.json @@ -5,9 +5,11 @@ "discard_above_y": 384, "discard_below_y": 96, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/common/library_01", + "location": "aether_ii:outpost/foundation", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:veradexian_library_temperate", + "processors": { + "processors": [] + }, "projection": "rigid", "replace_air": false }, diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/outposts.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/outposts.json index de04f348b3..0211ef3c5e 100644 --- a/src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/outposts.json +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/outpost/outposts.json @@ -11,7 +11,7 @@ "processors": [] }, "projection": "rigid", - "replace_air": true + "replace_air": false }, "weight": 1 }, @@ -26,7 +26,7 @@ "processors": [] }, "projection": "rigid", - "replace_air": true + "replace_air": false }, "weight": 1 } diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/bridges.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/bridges.json new file mode 100644 index 0000000000..499a98f3e7 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/bridges.json @@ -0,0 +1,102 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/bridges/straight_01", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_bridge", + "projection": "rigid", + "replace_air": false + }, + "weight": 9 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/bridges/straight_02", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_bridge", + "projection": "rigid", + "replace_air": false + }, + "weight": 9 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/bridges/corner", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_bridge", + "projection": "rigid", + "replace_air": false + }, + "weight": 6 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/bridges/t_cross", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_bridge", + "projection": "rigid", + "replace_air": false + }, + "weight": 3 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/bridges/refinery", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_bridge", + "projection": "rigid", + "replace_air": false + }, + "weight": 2 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/bridges/storage_platform", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_bridge", + "projection": "rigid", + "replace_air": false + }, + "weight": 2 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/bridges/bridge_temple", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_bridge", + "projection": "rigid", + "replace_air": false + }, + "weight": 2 + }, + { + "element": { + "element_type": "minecraft:empty_pool_element" + }, + "weight": 2 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/corridors.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/corridors.json index a0d26adeb1..f2ec555ccc 100644 --- a/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/corridors.json +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/corridors.json @@ -5,9 +5,61 @@ "discard_above_y": 384, "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:undercloud_mineshaft/corridors/corridor", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_basic", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:undercloud_mineshaft", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 12 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_cockatrice_nest_01", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 2 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_cockatrice_nest_02", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 2 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_cockatrice_nest_03", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 2 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_elevation", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", "projection": "rigid", "replace_air": false }, @@ -18,14 +70,118 @@ "discard_above_y": 384, "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:undercloud_mineshaft/corridors/corridor_slanted", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_storage_01", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_storage_02", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:undercloud_mineshaft", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_storage_03", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_storage_04", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_storage_03", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_alkahest", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_sleeping_barracks", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 2 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_pit", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", "projection": "rigid", "replace_air": false }, "weight": 3 }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/straight_platform", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 2 + }, { "element": { "discard_above_y": 384, @@ -33,33 +189,46 @@ "element_type": "aether_ii:aether_pool_element", "location": "aether_ii:undercloud_mineshaft/corridors/t_cross", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:undercloud_mineshaft", + "processors": "aether_ii:undercloud_mineshaft_corridor", "projection": "rigid", "replace_air": false }, - "weight": 3 + "weight": 12 }, { "element": { "discard_above_y": 384, "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:undercloud_mineshaft/corridors/junction", + "location": "aether_ii:undercloud_mineshaft/corridors/staircase_01", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:undercloud_mineshaft", + "processors": "aether_ii:undercloud_mineshaft_corridor", "projection": "rigid", "replace_air": false }, - "weight": 3 + "weight": 4 }, { "element": { "discard_above_y": 384, "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:undercloud_mineshaft/corridors/ladder_junction", + "location": "aether_ii:undercloud_mineshaft/corridors/staircase_02", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:undercloud_mineshaft", + "processors": "aether_ii:undercloud_mineshaft_corridor", + "projection": "rigid", + "replace_air": false + }, + "weight": 4 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:undercloud_mineshaft/corridors/junction_01", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:undercloud_mineshaft_corridor", "projection": "rigid", "replace_air": false }, @@ -70,22 +239,22 @@ "discard_above_y": 384, "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:undercloud_mineshaft/corridors/storage_room", + "location": "aether_ii:undercloud_mineshaft/corridors/junction_02", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:undercloud_mineshaft", + "processors": "aether_ii:undercloud_mineshaft_corridor", "projection": "rigid", "replace_air": false }, - "weight": 1 + "weight": 2 }, { "element": { "discard_above_y": 384, "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:undercloud_mineshaft/corridors/material_deposit", + "location": "aether_ii:undercloud_mineshaft/corridors/junction_03", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:undercloud_mineshaft", + "processors": "aether_ii:undercloud_mineshaft_corridor", "projection": "rigid", "replace_air": false }, diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/decoration/aercloud.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/decoration/aercloud.json new file mode 100644 index 0000000000..784a9d88d7 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/decoration/aercloud.json @@ -0,0 +1,19 @@ +{ + "elements": [ + { + "element": { + "element_type": "minecraft:feature_pool_element", + "feature": "aether_ii:cold_aercloud_structure", + "projection": "rigid" + }, + "weight": 2 + }, + { + "element": { + "element_type": "minecraft:empty_pool_element" + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/decoration/material_pile.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/decoration/material_pile.json new file mode 100644 index 0000000000..426e69b726 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/decoration/material_pile.json @@ -0,0 +1,13 @@ +{ + "elements": [ + { + "element": { + "element_type": "minecraft:feature_pool_element", + "feature": "aether_ii:pile_material", + "projection": "rigid" + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/hubs.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/hub.json similarity index 87% rename from src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/hubs.json rename to src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/hub.json index e3f1da60e8..b138c4990d 100644 --- a/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/hubs.json +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/undercloud_mineshaft/hub.json @@ -7,7 +7,7 @@ "element_type": "aether_ii:aether_pool_element", "location": "aether_ii:undercloud_mineshaft/hub", "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:undercloud_mineshaft", + "processors": "aether_ii:undercloud_mineshaft_hub", "projection": "rigid", "replace_air": false }, diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/aqueducts.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/aqueducts.json index ebc82a5390..4b62551155 100644 --- a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/aqueducts.json +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/aqueducts.json @@ -5,52 +5,19 @@ "discard_above_y": 384, "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexain_aqueduct/small_aqueduct_01", + "location": "aether_ii:veradexian_aqueduct/aqueduct", "override_liquid_settings": "apply_waterlogging", "processors": "aether_ii:veradexian_aqueduct", "projection": "rigid", "replace_air": true }, - "weight": 2 + "weight": 7 }, { "element": { - "discard_above_y": 384, - "discard_below_y": -32, - "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_aqueduct/large_aqueduct_01", - "override_liquid_settings": "apply_waterlogging", - "processors": "aether_ii:veradexian_aqueduct", - "projection": "rigid", - "replace_air": true + "element_type": "minecraft:empty_pool_element" }, - "weight": 1 - }, - { - "element": { - "discard_above_y": 384, - "discard_below_y": -32, - "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_aqueduct/large_aqueduct_02", - "override_liquid_settings": "apply_waterlogging", - "processors": "aether_ii:veradexian_aqueduct", - "projection": "rigid", - "replace_air": true - }, - "weight": 1 - }, - { - "element": { - "discard_above_y": 384, - "discard_below_y": -32, - "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_aqueduct/large_aqueduct_03", - "override_liquid_settings": "apply_waterlogging", - "processors": "aether_ii:veradexian_aqueduct", - "projection": "rigid", - "replace_air": true - }, - "weight": 1 + "weight": 2 } ], "fallback": "minecraft:empty" diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/aqueducts_start.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/aqueducts_start.json new file mode 100644 index 0000000000..df69c30a85 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/aqueducts_start.json @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_aqueduct/aqueduct", + "override_liquid_settings": "apply_waterlogging", + "processors": "aether_ii:veradexian_aqueduct", + "projection": "rigid", + "replace_air": true + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/decoration/aercloud.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/decoration/aercloud.json new file mode 100644 index 0000000000..ebd3da243d --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/decoration/aercloud.json @@ -0,0 +1,19 @@ +{ + "elements": [ + { + "element": { + "element_type": "minecraft:feature_pool_element", + "feature": "aether_ii:cold_aercloud_structure", + "projection": "rigid" + }, + "weight": 1 + }, + { + "element": { + "element_type": "minecraft:empty_pool_element" + }, + "weight": 2 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/moss.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/decoration/bryalinn_moss_cover.json similarity index 100% rename from src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/moss.json rename to src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_aqueduct/decoration/bryalinn_moss_cover.json diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/base.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/base.json new file mode 100644 index 0000000000..664a76f46f --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/base.json @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/arctic/base", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/entrance_pedestal.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/entrance_pedestal.json new file mode 100644 index 0000000000..35c7b3e01d --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/entrance_pedestal.json @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": 96, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/arctic/entrance_pedestal", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": true + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/entrances.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/entrances.json deleted file mode 100644 index 71920ea49d..0000000000 --- a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/entrances.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "elements": [ - { - "element": { - "discard_above_y": 384, - "discard_below_y": 96, - "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/arctic/entrance_01", - "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:veradexian_ruins_arctic", - "projection": "rigid", - "replace_air": true - }, - "weight": 1 - }, - { - "element": { - "discard_above_y": 384, - "discard_below_y": 96, - "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/arctic/entrance_02", - "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:veradexian_ruins_arctic", - "projection": "rigid", - "replace_air": true - }, - "weight": 1 - } - ], - "fallback": "minecraft:empty" -} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/temple.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/temple.json new file mode 100644 index 0000000000..2243b9561f --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/arctic/temple.json @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/arctic/temple", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library_entrance", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/aercloud.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/aercloud.json new file mode 100644 index 0000000000..ebd3da243d --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/aercloud.json @@ -0,0 +1,19 @@ +{ + "elements": [ + { + "element": { + "element_type": "minecraft:feature_pool_element", + "feature": "aether_ii:cold_aercloud_structure", + "projection": "rigid" + }, + "weight": 1 + }, + { + "element": { + "element_type": "minecraft:empty_pool_element" + }, + "weight": 2 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/arctic_ice_spike.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/arctic_ice_spike.json new file mode 100644 index 0000000000..fff1f13193 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/arctic_ice_spike.json @@ -0,0 +1,19 @@ +{ + "elements": [ + { + "element": { + "element_type": "minecraft:feature_pool_element", + "feature": "aether_ii:arctic_ice_spike_structure", + "projection": "rigid" + }, + "weight": 1 + }, + { + "element": { + "element_type": "minecraft:empty_pool_element" + }, + "weight": 12 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/bryalinn_moss_cover.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/bryalinn_moss_cover.json new file mode 100644 index 0000000000..8f0c8b119b --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/bryalinn_moss_cover.json @@ -0,0 +1,19 @@ +{ + "elements": [ + { + "element": { + "element_type": "minecraft:feature_pool_element", + "feature": "aether_ii:bryalinn_moss_cover_structure", + "projection": "rigid" + }, + "weight": 1 + }, + { + "element": { + "element_type": "minecraft:empty_pool_element" + }, + "weight": 6 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/rubble_pile.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/rubble_pile.json new file mode 100644 index 0000000000..b98d756d8b --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/decoration/rubble_pile.json @@ -0,0 +1,19 @@ +{ + "elements": [ + { + "element": { + "element_type": "minecraft:feature_pool_element", + "feature": "aether_ii:pile_rubble", + "projection": "rigid" + }, + "weight": 2 + }, + { + "element": { + "element_type": "minecraft:empty_pool_element" + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/common/secret_rooms.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/floor_1_library.json similarity index 62% rename from src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/common/secret_rooms.json rename to src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/floor_1_library.json index 4b79b3cc6a..2ea4fc216e 100644 --- a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/common/secret_rooms.json +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/floor_1_library.json @@ -3,13 +3,11 @@ { "element": { "discard_above_y": 384, - "discard_below_y": 96, + "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/common/secret_room_01", + "location": "aether_ii:veradexian_library/floor_1/library_01", "override_liquid_settings": "ignore_waterlogging", - "processors": { - "processors": [] - }, + "processors": "aether_ii:veradexian_library", "projection": "rigid", "replace_air": false }, @@ -18,13 +16,11 @@ { "element": { "discard_above_y": 384, - "discard_below_y": 96, + "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/common/secret_room_02", + "location": "aether_ii:veradexian_library/floor_1/library_02", "override_liquid_settings": "ignore_waterlogging", - "processors": { - "processors": [] - }, + "processors": "aether_ii:veradexian_library", "projection": "rigid", "replace_air": false }, @@ -33,13 +29,11 @@ { "element": { "discard_above_y": 384, - "discard_below_y": 96, + "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/common/secret_room_03", + "location": "aether_ii:veradexian_library/floor_1/library_03", "override_liquid_settings": "ignore_waterlogging", - "processors": { - "processors": [] - }, + "processors": "aether_ii:veradexian_library", "projection": "rigid", "replace_air": false }, @@ -48,13 +42,11 @@ { "element": { "discard_above_y": 384, - "discard_below_y": 96, + "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/common/secret_room_04", + "location": "aether_ii:veradexian_library/floor_1/library_04", "override_liquid_settings": "ignore_waterlogging", - "processors": { - "processors": [] - }, + "processors": "aether_ii:veradexian_library", "projection": "rigid", "replace_air": false }, @@ -63,13 +55,11 @@ { "element": { "discard_above_y": 384, - "discard_below_y": 96, + "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/common/secret_room_05", + "location": "aether_ii:veradexian_library/floor_1/library_05", "override_liquid_settings": "ignore_waterlogging", - "processors": { - "processors": [] - }, + "processors": "aether_ii:veradexian_library", "projection": "rigid", "replace_air": false }, @@ -78,13 +68,11 @@ { "element": { "discard_above_y": 384, - "discard_below_y": 96, + "discard_below_y": -32, "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/common/secret_room_06", + "location": "aether_ii:veradexian_library/floor_1/library_06", "override_liquid_settings": "ignore_waterlogging", - "processors": { - "processors": [] - }, + "processors": "aether_ii:veradexian_library", "projection": "rigid", "replace_air": false }, diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/floor_2_library.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/floor_2_library.json new file mode 100644 index 0000000000..704ae6f575 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/floor_2_library.json @@ -0,0 +1,83 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/floor_2/library_01", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/floor_2/library_02", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/floor_2/library_03", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/floor_2/library_04", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/floor_2/library_05", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/floor_2/library_06", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/base.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/base.json new file mode 100644 index 0000000000..5b055f80cf --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/base.json @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/temperate/base", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/entrance_pedestal.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/entrance_pedestal.json new file mode 100644 index 0000000000..295d3db742 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/entrance_pedestal.json @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": 96, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/temperate/entrance_pedestal", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library", + "projection": "rigid", + "replace_air": true + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/entrances.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/entrances.json deleted file mode 100644 index 03f941e704..0000000000 --- a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/entrances.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "elements": [ - { - "element": { - "discard_above_y": 384, - "discard_below_y": 96, - "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/temperate/entrance_01", - "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:veradexian_ruins_temperate", - "projection": "rigid", - "replace_air": true - }, - "weight": 1 - }, - { - "element": { - "discard_above_y": 384, - "discard_below_y": 96, - "element_type": "aether_ii:aether_pool_element", - "location": "aether_ii:veradexian_library/temperate/entrance_02", - "override_liquid_settings": "ignore_waterlogging", - "processors": "aether_ii:veradexian_ruins_temperate", - "projection": "rigid", - "replace_air": true - }, - "weight": 1 - } - ], - "fallback": "minecraft:empty" -} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/temple.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/temple.json new file mode 100644 index 0000000000..6bbb8a01c8 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/temperate/temple.json @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/temperate/temple", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library_entrance", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/vaults_back_right.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/vaults_back_right.json new file mode 100644 index 0000000000..568a2b7775 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/vaults_back_right.json @@ -0,0 +1,57 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/vaults/vault_back_right_01", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library_vaults", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/vaults/vault_back_right_02", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library_vaults", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/vaults/vault_back_right_03", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library_vaults", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + }, + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/vaults/vault_back_right_04", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library_vaults", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/vaults_front_right.json b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/vaults_front_right.json new file mode 100644 index 0000000000..16941b5944 --- /dev/null +++ b/src/generated/resources/data/aether_ii/worldgen/template_pool/veradexian_library/vaults_front_right.json @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "element": { + "discard_above_y": 384, + "discard_below_y": -32, + "element_type": "aether_ii:aether_pool_element", + "location": "aether_ii:veradexian_library/vaults/vault_front_right_01", + "override_liquid_settings": "ignore_waterlogging", + "processors": "aether_ii:veradexian_library_vaults", + "projection": "rigid", + "replace_air": false + }, + "weight": 1 + } + ], + "fallback": "minecraft:empty" +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/axe.json b/src/generated/resources/data/minecraft/tags/block/mineable/axe.json index c4d74a8154..2759c82e9b 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/axe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/axe.json @@ -161,6 +161,7 @@ "aether_ii:sage_chest", "aether_ii:magnetic_shroom_block", "aether_ii:spotted_magnetic_shroom_block", - "aether_ii:magnetic_shroom_stem" + "aether_ii:magnetic_shroom_stem", + "aether_ii:theran_globe" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json b/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json index 6bdb52f6d2..340f895aac 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json @@ -61,6 +61,7 @@ "aether_ii:shayelinn_moss_carpet", "aether_ii:ambrelinn_moss_block", "aether_ii:ambrelinn_moss_carpet", - "aether_ii:cloudwool_roofing" + "aether_ii:cloudwool_roofing", + "aether_ii:animal_stash" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index 7c4060f970..cf24fd95f3 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -6,6 +6,7 @@ "aether_ii:irradiated_holystone", "aether_ii:irradiated_dust_block", "aether_ii:undershale", + "aether_ii:mossy_undershale", "aether_ii:unstable_undershale", "aether_ii:agiosite", "aether_ii:ichorite", @@ -70,6 +71,9 @@ "aether_ii:undershale_stairs", "aether_ii:undershale_slab", "aether_ii:undershale_wall", + "aether_ii:mossy_undershale_stairs", + "aether_ii:mossy_undershale_slab", + "aether_ii:mossy_undershale_wall", "aether_ii:undershale_bricks", "aether_ii:undershale_brick_stairs", "aether_ii:undershale_brick_slab", diff --git a/src/main/java/com/aetherteam/aetherii/AetherII.java b/src/main/java/com/aetherteam/aetherii/AetherII.java index bd0c034a0c..6c44181dfe 100644 --- a/src/main/java/com/aetherteam/aetherii/AetherII.java +++ b/src/main/java/com/aetherteam/aetherii/AetherII.java @@ -37,6 +37,7 @@ import com.aetherteam.aetherii.inventory.menu.AetherIIMenuTypes; import com.aetherteam.aetherii.item.AetherIICreativeTabs; import com.aetherteam.aetherii.item.AetherIIItems; +import com.aetherteam.aetherii.item.AetherIIMapDecorationTypes; import com.aetherteam.aetherii.item.components.AetherIIDataComponents; import com.aetherteam.aetherii.item.consumeeffect.AetherIIConsumeEffectTypes; import com.aetherteam.aetherii.loot.conditions.AetherIILootConditions; @@ -59,6 +60,7 @@ import com.aetherteam.aetherii.world.structure.piece.AetherIIStructurePieceTypes; import com.aetherteam.aetherii.world.structure.pool.AetherIIPoolElementTypes; import com.aetherteam.aetherii.world.structure.processor.AetherIIStructureProcessorTypes; +import com.aetherteam.aetherii.world.structure.processor.ruletest.AetherIIRuleTests; import com.aetherteam.aetherii.world.structure.type.AetherIIStructureTypes; import com.aetherteam.aetherii.world.surfacerule.AetherIIRuleSources; import com.aetherteam.aetherii.world.tree.decorator.AetherIITreeDecoratorTypes; @@ -134,6 +136,7 @@ public AetherII(ModContainer mod, IEventBus bus, Dist dist) { AetherIIStructureTypes.STRUCTURE_TYPES, AetherIIStructurePieceTypes.STRUCTURE_PIECE_TYPES, AetherIIStructureProcessorTypes.STRUCTURE_PROCESSOR_TYPES, + AetherIIRuleTests.RULE_TESTS, AetherIIPoolElementTypes.POOL_ELEMENTS, AetherIIDensityFunctionTypes.DENSITY_FUNCTION_TYPES, AetherIILootFunctions.LOOT_FUNCTION_TYPES, @@ -145,6 +148,7 @@ public AetherII(ModContainer mod, IEventBus bus, Dist dist) { AetherIIAdvancementTriggers.TRIGGERS, AetherIIEntitySubPredicates.ENTITY_SUB_PREDICATES, AetherIISpawnConditions.SPAWN_CONDITION_TYPES, + AetherIIMapDecorationTypes.MAP_DECORATION_TYPES, AetherIIEnvironmentAttributes.ENVIRONMENT_ATTRIBUTES }; @@ -256,6 +260,7 @@ public void registerPackets(RegisterPayloadHandlersEvent event) { registrar.playToServer(CurrencyAmountPacket.TYPE, CurrencyAmountPacket.STREAM_CODEC, CurrencyAmountPacket::execute); registrar.playToServer(DiscardCompanionDeathPacket.TYPE, DiscardCompanionDeathPacket.STREAM_CODEC, DiscardCompanionDeathPacket::execute); registrar.playToServer(DiscardCompanionPacket.TYPE, DiscardCompanionPacket.STREAM_CODEC, DiscardCompanionPacket::execute); + registrar.playToServer(EnteredStructurePacket.TYPE, EnteredStructurePacket.STREAM_CODEC, EnteredStructurePacket::execute); registrar.playToServer(ForgeRenamePacket.TYPE, ForgeRenamePacket.STREAM_CODEC, ForgeRenamePacket::execute); registrar.playToServer(ForgeSlotCharmsPacket.TYPE, ForgeSlotCharmsPacket.STREAM_CODEC, ForgeSlotCharmsPacket::execute); registrar.playToServer(ForgeTriggerSoundPacket.TYPE, ForgeTriggerSoundPacket.STREAM_CODEC, ForgeTriggerSoundPacket::execute); diff --git a/src/main/java/com/aetherteam/aetherii/AetherIITags.java b/src/main/java/com/aetherteam/aetherii/AetherIITags.java index ca0b2acc1c..5701ba0810 100644 --- a/src/main/java/com/aetherteam/aetherii/AetherIITags.java +++ b/src/main/java/com/aetherteam/aetherii/AetherIITags.java @@ -387,6 +387,8 @@ public static class Structures { public static final TagKey ARCTIC_ICE_SPIKE_BLACKLIST_FILTER = tag("arctic_ice_spike_blacklist_filter"); public static final TagKey AERCLOUD_BLACKLIST_FILTER = tag("aercloud_blacklist_filter"); + public static final TagKey ON_VERADEXIAN_LIBRARY_EXPLORER_MAPS = tag("on_veradexian_library_explorer_maps"); + private static TagKey tag(String name) { return TagKey.create(Registries.STRUCTURE, Identifier.fromNamespaceAndPath(AetherII.MODID, name)); } diff --git a/src/main/java/com/aetherteam/aetherii/block/AetherIIBlocks.java b/src/main/java/com/aetherteam/aetherii/block/AetherIIBlocks.java index 1666156a8b..a8fb9080b0 100644 --- a/src/main/java/com/aetherteam/aetherii/block/AetherIIBlocks.java +++ b/src/main/java/com/aetherteam/aetherii/block/AetherIIBlocks.java @@ -5,6 +5,7 @@ import com.aetherteam.aetherii.block.construction.*; import com.aetherteam.aetherii.block.dungeon.*; import com.aetherteam.aetherii.block.furniture.OutpostCampfireBlock; +import com.aetherteam.aetherii.block.furniture.TheranGlobeBlock; import com.aetherteam.aetherii.block.furniture.VaseBlock; import com.aetherteam.aetherii.block.miscellaneous.*; import com.aetherteam.aetherii.block.natural.*; @@ -70,7 +71,7 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { public static final DeferredBlock AETHER_PORTAL = registerWithoutItem("aether_portal", AetherPortalBlock::new, () -> Block.Properties.of().noCollision().randomTicks().strength(-1.0F).sound(SoundType.GLASS).lightLevel(AetherIIBlocks::lightLevel11).pushReaction(PushReaction.BLOCK).forceSolidOn().noLootTable()); // Surface - public static final DeferredBlock AETHER_GRASS_BLOCK = register("aether_grass_block", AetherGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.WARPED_WART_BLOCK).randomTicks().strength(0.6F).sound(SoundType.GRASS)); + public static final DeferredBlock AETHER_GRASS_BLOCK = register("aether_grass_block", AetherGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.GLOW_LICHEN).randomTicks().strength(0.6F).sound(SoundType.GRASS)); public static final DeferredBlock ENCHANTED_AETHER_GRASS_BLOCK = register("enchanted_aether_grass_block", EnchantedAetherGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.GOLD).randomTicks().strength(0.6F).sound(SoundType.GRASS)); public static final DeferredBlock AETHER_DIRT_PATH = register("aether_dirt_path", AetherDirtPathBlock::new, () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_CYAN).strength(0.65F).sound(SoundType.GRASS).isViewBlocking(AetherIIBlocks::always).isSuffocating(AetherIIBlocks::always)); public static final DeferredBlock AETHER_DIRT = register("aether_dirt", () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_CYAN).strength(0.5F).sound(SoundType.GRAVEL)); @@ -84,18 +85,19 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { public static final DeferredBlock UNSTABLE_HOLYSTONE = register("unstable_holystone", UnstableBlock::new, () -> Block.Properties.ofFullCopy(HOLYSTONE.get())); public static final DeferredBlock UNDERSHALE = register("undershale", () -> Block.Properties.of().mapColor(MapColor.COLOR_LIGHT_GRAY).instrument(NoteBlockInstrument.BASEDRUM).strength(3.0F, 6.0F).sound(SoundType.DEEPSLATE).requiresCorrectToolForDrops()); public static final DeferredBlock UNSTABLE_UNDERSHALE = register("unstable_undershale", UnstableBlock::new, () -> Block.Properties.ofFullCopy(UNDERSHALE.get())); - public static final DeferredBlock AGIOSITE = register("agiosite", () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_PURPLE).instrument(NoteBlockInstrument.BASEDRUM).strength(1.5F, 6.0F).requiresCorrectToolForDrops()); - public static final DeferredBlock ICHORITE = register("ichorite", () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_BROWN).instrument(NoteBlockInstrument.BASEDRUM).strength(4.0F, 6.0F).sound(SoundType.DEEPSLATE).requiresCorrectToolForDrops()); + public static final DeferredBlock AGIOSITE = register("agiosite", () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_BLUE).instrument(NoteBlockInstrument.BASEDRUM).strength(1.5F, 6.0F).requiresCorrectToolForDrops()); + public static final DeferredBlock ICHORITE = register("ichorite", () -> Block.Properties.of().mapColor(MapColor.RAW_IRON).instrument(NoteBlockInstrument.BASEDRUM).strength(4.0F, 6.0F).sound(SoundType.DEEPSLATE).requiresCorrectToolForDrops()); public static final DeferredBlock CRUDE_SCATTERGLASS = register("crude_scatterglass", CrudeScatterglassBlock::new, () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_CYAN).instrument(NoteBlockInstrument.BASEDRUM).strength(1.5F, 6.0F).sound(SoundType.GLASS).requiresCorrectToolForDrops().noOcclusion().isViewBlocking(AetherIIBlocks::never)); public static final DeferredBlock SKY_ROOTS = register("sky_roots", AetherHangingRootsBlock::new, () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_CYAN).replaceable().noCollision().instabreak().sound(SoundType.HANGING_ROOTS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY)); - public static final DeferredBlock ALKAHEST = registerWithoutItem("alkahest", (properties) -> new AlkahestLiquidBlock(AetherIIFluids.ALKAHEST.get(), properties), () -> Block.Properties.of().mapColor(MapColor.FIRE).replaceable().noCollision().randomTicks().strength(100.0F).lightLevel(AetherIIBlocks::lightLevel8).pushReaction(PushReaction.DESTROY).noLootTable().liquid().sound(SoundType.EMPTY)); - public static final DeferredBlock HESTVEIL = registerWithoutItem("hestveil", HestveilBlock::new, () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(-1.0F, 0.0F).replaceable().noCollision().noOcclusion().noTerrainParticles().isValidSpawn(AetherIIBlockBuilders::never).isRedstoneConductor(AetherIIBlockBuilders::never).isSuffocating(AetherIIBlockBuilders::never).isViewBlocking(AetherIIBlockBuilders::never).noLootTable()); + public static final DeferredBlock ALKAHEST = registerWithoutItem("alkahest", (properties) -> new AlkahestLiquidBlock(AetherIIFluids.ALKAHEST.get(), properties), () -> Block.Properties.of().mapColor(MapColor.COLOR_LIGHT_GREEN).replaceable().noCollision().randomTicks().strength(100.0F).lightLevel(AetherIIBlocks::lightLevel8).pushReaction(PushReaction.DESTROY).noLootTable().liquid().sound(SoundType.EMPTY)); + public static final DeferredBlock HESTVEIL = registerWithoutItem("hestveil", HestveilBlock::new, () -> Block.Properties.of().mapColor(MapColor.NONE).strength(-1.0F, 0.0F).replaceable().noCollision().noOcclusion().noTerrainParticles().isValidSpawn(AetherIIBlockBuilders::never).isRedstoneConductor(AetherIIBlockBuilders::never).isSuffocating(AetherIIBlockBuilders::never).isViewBlocking(AetherIIBlockBuilders::never).noLootTable()); public static final DeferredBlock POINTED_HOLYSTONE = register("pointed_holystone", PointedHolystoneBlock::new, () -> Block.Properties.of().mapColor(MapColor.WOOL).forceSolidOn().instrument(NoteBlockInstrument.BASEDRUM).noOcclusion().sound(SoundType.POINTED_DRIPSTONE).randomTicks().strength(1.5F, 3.0F).dynamicShape().offsetType(Block.OffsetType.XZ).pushReaction(PushReaction.DESTROY).isRedstoneConductor(AetherIIBlocks::never)); public static final DeferredBlock POINTED_ICHORITE = register("pointed_ichorite", PointedIchoriteBlock::new, () -> Block.Properties.of().mapColor(MapColor.WOOL).forceSolidOn().instrument(NoteBlockInstrument.BASEDRUM).noOcclusion().sound(SoundType.POINTED_DRIPSTONE).randomTicks().strength(4.0F, 3.0F).dynamicShape().offsetType(Block.OffsetType.XZ).pushReaction(PushReaction.DESTROY).isRedstoneConductor(AetherIIBlocks::never)); // Highfields - public static final DeferredBlock QUICKSOIL = register("quicksoil", QuicksoilBlock::new, () -> Block.Properties.of().mapColor(MapColor.COLOR_YELLOW).instrument(NoteBlockInstrument.SNARE).strength(0.5F).friction(1.1F).sound(SoundType.SAND)); + public static final DeferredBlock QUICKSOIL = register("quicksoil", QuicksoilBlock::new, () -> Block.Properties.of().mapColor(MapColor.GOLD).instrument(NoteBlockInstrument.SNARE).strength(0.5F).friction(1.1F).sound(SoundType.SAND)); public static final DeferredBlock MOSSY_HOLYSTONE = register("mossy_holystone", () -> Block.Properties.ofFullCopy(HOLYSTONE.get())); + public static final DeferredBlock MOSSY_UNDERSHALE = register("mossy_undershale", () -> Block.Properties.ofFullCopy(UNDERSHALE.get())); public static final DeferredBlock BRYALINN_MOSS_BLOCK = register("bryalinn_moss_block", (properties) -> new AetherMossBlock(HolyIslesConfiguredFeatures.BRYALINN_MOSS_FLOOR, properties), () -> Block.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS).pushReaction(PushReaction.DESTROY)); public static final DeferredBlock BRYALINN_MOSS_CARPET = register("bryalinn_moss_carpet", CarpetBlock::new, () -> Block.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS_CARPET).pushReaction(PushReaction.DESTROY)); public static final DeferredBlock BRYALINN_MOSS_VINES = register("bryalinn_moss_vines", BottomedVineBlock::new, () -> Block.Properties.of().mapColor(MapColor.COLOR_GREEN).replaceable().noCollision().randomTicks().strength(0.1F).sound(SoundType.VINE).ignitedByLava().pushReaction(PushReaction.DESTROY)); @@ -103,13 +105,13 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { public static final DeferredBlock TANGLED_BRANCHES = register("tangled_branches", TangledBranchBlock::new, () -> Block.Properties.of().noOcclusion().mapColor(MapColor.COLOR_BROWN).instrument(NoteBlockInstrument.SNARE).strength(0.5F).sound(SoundType.WOOD)); // Magnetic - public static final DeferredBlock FERROSITE_SAND = register("ferrosite_sand", () -> Block.Properties.of().mapColor(MapColor.COLOR_PURPLE).instrument(NoteBlockInstrument.SNARE).strength(0.5F).sound(SoundType.SAND)); - public static final DeferredBlock FERROSITE_MUD = register("ferrosite_mud", MudBlock::new, () -> Block.Properties.ofFullCopy(Blocks.MUD).mapColor(MapColor.COLOR_PURPLE)); + public static final DeferredBlock FERROSITE_SAND = register("ferrosite_sand", () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_BLUE).instrument(NoteBlockInstrument.SNARE).strength(0.5F).sound(SoundType.SAND)); + public static final DeferredBlock FERROSITE_MUD = register("ferrosite_mud", MudBlock::new, () -> Block.Properties.ofFullCopy(Blocks.MUD).mapColor(MapColor.TERRACOTTA_BLUE)); public static final DeferredBlock FERROSITE = register("ferrosite", () -> Block.Properties.of().mapColor(MapColor.COLOR_LIGHT_GRAY).instrument(NoteBlockInstrument.BASEDRUM).strength(1.5F, 6.0F).sound(AetherIISoundTypes.FERROSITE).requiresCorrectToolForDrops()); - public static final DeferredBlock RUSTED_FERROSITE = register("rusted_ferrosite", () -> Block.Properties.of().mapColor(MapColor.COLOR_LIGHT_GRAY).instrument(NoteBlockInstrument.BASEDRUM).strength(1.5F, 6.0F).sound(AetherIISoundTypes.FERROSITE).requiresCorrectToolForDrops()); - public static final DeferredBlock MAGNETIC_SHROOM = register("magnetic_shroom", (properties) -> new MushroomBlock(HolyIslesConfiguredFeatures.HUGE_MAGNETIC_SHROOM_GROWN, properties), () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_CYAN).noCollision().randomTicks().instabreak().sound(SoundType.GRASS).lightLevel(light -> 5).postProcess(AetherIIBlocks::postProcessSelf).pushReaction(PushReaction.DESTROY)); + public static final DeferredBlock RUSTED_FERROSITE = register("rusted_ferrosite", () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_BLUE).instrument(NoteBlockInstrument.BASEDRUM).strength(1.5F, 6.0F).sound(AetherIISoundTypes.FERROSITE).requiresCorrectToolForDrops()); + public static final DeferredBlock MAGNETIC_SHROOM = register("magnetic_shroom", (properties) -> new MushroomBlock(HolyIslesConfiguredFeatures.HUGE_MAGNETIC_SHROOM_GROWN, properties), () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_BLUE).noCollision().randomTicks().instabreak().sound(SoundType.GRASS).lightLevel(light -> 5).postProcess(AetherIIBlocks::postProcessSelf).pushReaction(PushReaction.DESTROY)); public static final DeferredBlock MAGNETIC_SHROOM_BLOCK = register("magnetic_shroom_block", HugeMushroomBlock::new, () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_CYAN).instrument(NoteBlockInstrument.BASS).strength(0.2F).sound(SoundType.WOOD).ignitedByLava()); - public static final DeferredBlock SPOTTED_MAGNETIC_SHROOM_BLOCK = register("spotted_magnetic_shroom_block", HugeMushroomBlock::new, () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_CYAN).instrument(NoteBlockInstrument.BASS).strength(0.2F).sound(SoundType.WOOD).ignitedByLava().lightLevel((state) -> 6)); + public static final DeferredBlock SPOTTED_MAGNETIC_SHROOM_BLOCK = register("spotted_magnetic_shroom_block", HugeMushroomBlock::new, () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_BLUE).instrument(NoteBlockInstrument.BASS).strength(0.2F).sound(SoundType.WOOD).ignitedByLava().lightLevel((state) -> 6)); public static final DeferredBlock MAGNETIC_SHROOM_STEM = register("magnetic_shroom_stem", HugeMushroomBlock::new, () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_CYAN).instrument(NoteBlockInstrument.BASS).strength(0.2F).sound(SoundType.WOOD).ignitedByLava()); // Arctic @@ -154,11 +156,11 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { // Aerclouds public static final DeferredBlock COLD_AERCLOUD = register("cold_aercloud", AercloudBlock::new, coldAercloudProperties(MapColor.SNOW)); - public static final DeferredBlock GOLDEN_AERCLOUD = register("golden_aercloud", AercloudBlock::new, specialAercloudProperties(MapColor.COLOR_YELLOW)); - public static final DeferredBlock BLUE_AERCLOUD = register("blue_aercloud", BlueAercloudBlock::new, specialAercloudProperties(MapColor.COLOR_LIGHT_BLUE)); + public static final DeferredBlock GOLDEN_AERCLOUD = register("golden_aercloud", AercloudBlock::new, specialAercloudProperties(MapColor.GOLD)); + public static final DeferredBlock BLUE_AERCLOUD = register("blue_aercloud", BlueAercloudBlock::new, specialAercloudProperties(MapColor.DIAMOND)); public static final DeferredBlock GREEN_AERCLOUD = register("green_aercloud", GreenAercloudBlock::new, specialAercloudProperties(MapColor.COLOR_LIGHT_GREEN)); public static final DeferredBlock PURPLE_AERCLOUD = register("purple_aercloud", PurpleAercloudBlock::new, specialAercloudProperties(MapColor.COLOR_MAGENTA)); - public static final DeferredBlock STORM_AERCLOUD = register("storm_aercloud", AercloudBlock::new, specialAercloudProperties(MapColor.DEEPSLATE)); + public static final DeferredBlock STORM_AERCLOUD = register("storm_aercloud", AercloudBlock::new, specialAercloudProperties(MapColor.TERRACOTTA_BLUE)); // Nest Blocks public static final DeferredBlock WOVEN_SKYROOT_STICKS = register("woven_skyroot_sticks", WovenSticksBlock::new, () -> Block.Properties.of().mapColor(MapColor.COLOR_BROWN).strength(0.75F).sound(SoundType.GRASS)); @@ -201,9 +203,9 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { // Leaf Pile public static final DeferredBlock SKYROOT_LEAF_PILE = register("skyroot_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.GRASS)); public static final DeferredBlock SKYPLANE_LEAF_PILE = register("skyplane_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.COLOR_BLUE)); - public static final DeferredBlock SKYBIRCH_LEAF_PILE = register("skybirch_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.COLOR_LIGHT_BLUE)); + public static final DeferredBlock SKYBIRCH_LEAF_PILE = register("skybirch_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.DIAMOND)); public static final DeferredBlock SKYPINE_LEAF_PILE = register("skypine_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.COLOR_MAGENTA)); - public static final DeferredBlock WISPROOT_LEAF_PILE = register("wisproot_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.DIAMOND)); + public static final DeferredBlock WISPROOT_LEAF_PILE = register("wisproot_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.COLOR_LIGHT_BLUE)); public static final DeferredBlock WISPTOP_LEAF_PILE = register("wisptop_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.COLOR_MAGENTA)); public static final DeferredBlock GREATROOT_LEAF_PILE = register("greatroot_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.TERRACOTTA_LIGHT_GREEN)); public static final DeferredBlock GREATOAK_LEAF_PILE = register("greatoak_leaf_pile", AetherLeafPileBlock::new, leafPileProperties(MapColor.COLOR_MAGENTA)); @@ -222,9 +224,9 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { // Leaves public static final DeferredBlock SKYROOT_LEAVES = register("skyroot_leaves", (properties) -> new AetherLeavesBlock(properties, AetherIIParticleTypes.SKYROOT_LEAVES.get(), AetherIIBlocks.SKYROOT_LEAF_PILE), leavesProperties(MapColor.GRASS)); public static final DeferredBlock SKYPLANE_LEAVES = register("skyplane_leaves", (properties) -> new BlocksLightLeavesBlock(properties, AetherIIParticleTypes.SKYPLANE_LEAVES.get(), AetherIIBlocks.SKYPLANE_LEAF_PILE), leavesProperties(MapColor.COLOR_BLUE)); - public static final DeferredBlock SKYBIRCH_LEAVES = register("skybirch_leaves", (properties) -> new AetherLeavesBlock(properties, AetherIIParticleTypes.SKYBIRCH_LEAVES.get(), AetherIIBlocks.SKYBIRCH_LEAF_PILE), leavesProperties(MapColor.COLOR_LIGHT_BLUE)); + public static final DeferredBlock SKYBIRCH_LEAVES = register("skybirch_leaves", (properties) -> new AetherLeavesBlock(properties, AetherIIParticleTypes.SKYBIRCH_LEAVES.get(), AetherIIBlocks.SKYBIRCH_LEAF_PILE), leavesProperties(MapColor.DIAMOND)); public static final DeferredBlock SKYPINE_LEAVES = register("skypine_leaves", (properties) -> new AetherLeavesBlock(properties, AetherIIParticleTypes.SKYPINE_LEAVES.get(), AetherIIBlocks.SKYPINE_LEAF_PILE), leavesProperties(MapColor.COLOR_MAGENTA)); - public static final DeferredBlock WISPROOT_LEAVES = register("wisproot_leaves", (properties) -> new AetherLeavesBlock(properties, AetherIIParticleTypes.WISPROOT_LEAVES.get(), AetherIIBlocks.WISPROOT_LEAF_PILE), leavesProperties(MapColor.DIAMOND)); + public static final DeferredBlock WISPROOT_LEAVES = register("wisproot_leaves", (properties) -> new AetherLeavesBlock(properties, AetherIIParticleTypes.WISPROOT_LEAVES.get(), AetherIIBlocks.WISPROOT_LEAF_PILE), leavesProperties(MapColor.COLOR_LIGHT_BLUE)); public static final DeferredBlock WISPTOP_LEAVES = register("wisptop_leaves", (properties) -> new AetherLeavesBlock(properties, AetherIIParticleTypes.WISPTOP_LEAVES.get(), AetherIIBlocks.WISPTOP_LEAF_PILE), leavesProperties(MapColor.COLOR_MAGENTA)); public static final DeferredBlock GREATROOT_LEAVES = register("greatroot_leaves", (properties) -> new AetherLeavesBlock(properties, AetherIIParticleTypes.GREATROOT_LEAVES.get(), AetherIIBlocks.GREATROOT_LEAF_PILE), leavesProperties(MapColor.TERRACOTTA_LIGHT_GREEN)); public static final DeferredBlock GREATOAK_LEAVES = register("greatoak_leaves", (properties) -> new AllowsLightLeavesBlock(properties, AetherIIParticleTypes.GREATOAK_LEAVES.get(), AetherIIBlocks.GREATOAK_LEAF_PILE), leavesProperties(MapColor.COLOR_MAGENTA)); @@ -265,23 +267,23 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { public static final DeferredBlock POTTED_AMBEROOT_SAPLING = registerWithoutItem("potted_amberoot_sapling", (properties) -> new FlowerPotBlock(() -> (FlowerPotBlock) Blocks.FLOWER_POT, AMBEROOT_SAPLING, properties), () -> Block.Properties.ofFullCopy(Blocks.FLOWER_POT)); // Grasses - public static final DeferredBlock SHORT_AETHER_GRASS = register("short_aether_grass", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.PLANT).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); - public static final DeferredBlock MEDIUM_AETHER_GRASS = register("medium_aether_grass", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.PLANT).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); - public static final DeferredBlock TALL_AETHER_GRASS = register("tall_aether_grass", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.PLANT).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); - public static final DeferredBlock AETHER_FERN = register("aether_fern", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.PLANT).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); - public static final DeferredBlock SHIELD_FERN = register("shield_fern", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.PLANT).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); + public static final DeferredBlock SHORT_AETHER_GRASS = register("short_aether_grass", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.GLOW_LICHEN).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); + public static final DeferredBlock MEDIUM_AETHER_GRASS = register("medium_aether_grass", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.GLOW_LICHEN).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); + public static final DeferredBlock TALL_AETHER_GRASS = register("tall_aether_grass", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.GLOW_LICHEN).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); + public static final DeferredBlock AETHER_FERN = register("aether_fern", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.GLOW_LICHEN).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); + public static final DeferredBlock SHIELD_FERN = register("shield_fern", AetherTallGrassBlock::new, () -> Block.Properties.of().mapColor(MapColor.GLOW_LICHEN).replaceable().noCollision().instabreak().sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY).postProcess(AetherIIBlocks::postProcessSelf)); // Flowers - public static final DeferredBlock HESPEROSE = register("hesperose", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION)); - public static final DeferredBlock TARABLOOM = register("tarabloom", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION)); - public static final DeferredBlock POASPROUT = register("poasprout", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION)); - public static final DeferredBlock LILICHIME = register("lilichime", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION)); - public static final DeferredBlock PLURACIAN = register("pluracian", (properties) -> new FacingFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION)); - public static final DeferredBlock SATIVAL_SHOOT = register("satival_shoot", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION)); - public static final DeferredBlock HOLPUPEA = register("holpupea", MossFlowersBlock::new, () -> Block.Properties.of().mapColor(MapColor.PLANT).noCollision().instabreak().sound(SoundType.GRASS).pushReaction(PushReaction.DESTROY)); - public static final DeferredBlock BLADE_POA = register("blade_poa", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION)); - public static final DeferredBlock AECHOR_CUTTING = register("aechor_cutting", (properties) -> new PlantMobCuttingBlock(AetherIIEntityTypes.AECHOR_PLANT::get, properties), () -> Block.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollision().strength(0.65F).sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).pushReaction(PushReaction.DESTROY).requiresCorrectToolForDrops()); - public static final DeferredBlock CARRION_CUTTING = register("carrion_cutting", (properties) -> new PlantMobCuttingBlock(AetherIIEntityTypes.CARRION_SPROUT::get, properties), () -> Block.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollision().strength(0.65F).sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).pushReaction(PushReaction.DESTROY).requiresCorrectToolForDrops()); + public static final DeferredBlock HESPEROSE = register("hesperose", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION).mapColor(MapColor.GLOW_LICHEN)); + public static final DeferredBlock TARABLOOM = register("tarabloom", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION).mapColor(MapColor.GLOW_LICHEN)); + public static final DeferredBlock POASPROUT = register("poasprout", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION).mapColor(MapColor.GLOW_LICHEN)); + public static final DeferredBlock LILICHIME = register("lilichime", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION).mapColor(MapColor.GLOW_LICHEN)); + public static final DeferredBlock PLURACIAN = register("pluracian", (properties) -> new FacingFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION).mapColor(MapColor.GLOW_LICHEN)); + public static final DeferredBlock SATIVAL_SHOOT = register("satival_shoot", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION).mapColor(MapColor.GLOW_LICHEN)); + public static final DeferredBlock HOLPUPEA = register("holpupea", MossFlowersBlock::new, () -> Block.Properties.of().mapColor(MapColor.GLOW_LICHEN).noCollision().instabreak().sound(SoundType.GRASS).pushReaction(PushReaction.DESTROY)); + public static final DeferredBlock BLADE_POA = register("blade_poa", (properties) -> new AetherFlowerBlock(properties), () -> Block.Properties.ofFullCopy(Blocks.DANDELION).mapColor(MapColor.GLOW_LICHEN)); + public static final DeferredBlock AECHOR_CUTTING = register("aechor_cutting", (properties) -> new PlantMobCuttingBlock(AetherIIEntityTypes.AECHOR_PLANT::get, properties), () -> Block.Properties.of().mapColor(MapColor.GLOW_LICHEN).randomTicks().noCollision().strength(0.65F).sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).pushReaction(PushReaction.DESTROY).requiresCorrectToolForDrops()); + public static final DeferredBlock CARRION_CUTTING = register("carrion_cutting", (properties) -> new PlantMobCuttingBlock(AetherIIEntityTypes.CARRION_SPROUT::get, properties), () -> Block.Properties.of().mapColor(MapColor.GLOW_LICHEN).randomTicks().noCollision().strength(0.65F).sound(SoundType.GRASS).offsetType(Block.OffsetType.XZ).pushReaction(PushReaction.DESTROY).requiresCorrectToolForDrops()); // Potted Flowers public static final DeferredBlock POTTED_MAGNETIC_SHROOM = registerWithoutItem("potted_magnetic_shroom", (properties) -> new FlowerPotBlock(() -> (FlowerPotBlock) Blocks.FLOWER_POT, MAGNETIC_SHROOM, properties), () -> Block.Properties.ofFullCopy(Blocks.FLOWER_POT)); @@ -319,7 +321,7 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { // Brettl public static final DeferredBlock BRETTL_PLANT = registerWithoutItem("brettl_plant", BrettlPlantBlock::new, () -> Block.Properties.of().noCollision().strength(0.65F).randomTicks().sound(SoundType.GRASS).pushReaction(PushReaction.DESTROY).requiresCorrectToolForDrops()); public static final DeferredBlock BRETTL_PLANT_TIP = registerWithoutItem("brettl_plant_tip", BrettlPlantTipBlock::new, () -> Block.Properties.of().noCollision().strength(0.65F).randomTicks().sound(SoundType.GRASS).pushReaction(PushReaction.DESTROY).requiresCorrectToolForDrops()); - public static final DeferredBlock BRETTL_FLOWER = register("brettl_flower", CactusFlowerBlock::new, () -> Block.Properties.ofFullCopy(Blocks.CACTUS_FLOWER).mapColor(MapColor.DIAMOND)); + public static final DeferredBlock BRETTL_FLOWER = register("brettl_flower", CactusFlowerBlock::new, () -> Block.Properties.ofFullCopy(Blocks.CACTUS_FLOWER).mapColor(MapColor.COLOR_LIGHT_BLUE)); // Lake public static final DeferredBlock ARILUM_SHOOT = registerWithoutItem("arilum_shoot", ArilumShootBlock::new, () -> Block.Properties.of().mapColor(MapColor.WATER).noCollision().randomTicks().instabreak().sound(SoundType.WET_GRASS).pushReaction(PushReaction.DESTROY)); @@ -486,6 +488,11 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { public static final DeferredBlock UNDERSHALE_SLAB = register("undershale_slab", SlabBlock::new, () -> Block.Properties.ofFullCopy(AetherIIBlocks.UNDERSHALE.get())); public static final DeferredBlock UNDERSHALE_WALL = register("undershale_wall", WallBlock::new, () -> Block.Properties.ofFullCopy(AetherIIBlocks.UNDERSHALE.get()).forceSolidOn()); + // Mossy Undershale + public static final DeferredBlock MOSSY_UNDERSHALE_STAIRS = register("mossy_undershale_stairs", (properties) -> new StairBlock(MOSSY_UNDERSHALE.get().defaultBlockState(), properties), () -> Block.Properties.ofFullCopy(AetherIIBlocks.MOSSY_UNDERSHALE.get())); + public static final DeferredBlock MOSSY_UNDERSHALE_SLAB = register("mossy_undershale_slab", SlabBlock::new, () -> Block.Properties.ofFullCopy(AetherIIBlocks.MOSSY_UNDERSHALE.get()).strength(2.0F, 6.0F)); + public static final DeferredBlock MOSSY_UNDERSHALE_WALL = register("mossy_undershale_wall", WallBlock::new, () -> Block.Properties.ofFullCopy(AetherIIBlocks.MOSSY_UNDERSHALE.get()).forceSolidOn()); + // Undershale Bricks public static final DeferredBlock UNDERSHALE_BRICKS = register("undershale_bricks", () -> Block.Properties.of().mapColor(MapColor.COLOR_LIGHT_GRAY).instrument(NoteBlockInstrument.BASEDRUM).strength(4.0F, 6.0F).sound(SoundType.DEEPSLATE).requiresCorrectToolForDrops()); public static final DeferredBlock UNDERSHALE_BRICK_STAIRS = register("undershale_brick_stairs", (properties) -> new StairBlock(UNDERSHALE_BRICKS.get().defaultBlockState(), properties), () -> Block.Properties.ofFullCopy(AetherIIBlocks.UNDERSHALE_BRICKS.get())); @@ -694,7 +701,7 @@ public class AetherIIBlocks extends AetherIIBlockBuilders { public static final DeferredBlock ARKENIUM_BLOCK = register("arkenium_block", () -> Block.Properties.of().mapColor(MapColor.METAL).instrument(NoteBlockInstrument.PLING).strength(5.0F, 6.0F).requiresCorrectToolForDrops().sound(SoundType.METAL)); public static final DeferredBlock GRAVITITE_BLOCK = register("gravitite_block", () -> Block.Properties.of().mapColor(MapColor.COLOR_PINK).instrument(NoteBlockInstrument.PLING).strength(5.0F, 6.0F).requiresCorrectToolForDrops().sound(SoundType.METAL)); public static final DeferredBlock GLINT_BLOCK = register("glint_block", () -> Block.Properties.of().mapColor(MapColor.COLOR_MAGENTA).instrument(NoteBlockInstrument.PLING).strength(5.0F, 6.0F).requiresCorrectToolForDrops().sound(SoundType.METAL)); - public static final DeferredBlock CORROBONITE_BLOCK = register("corrobonite_block", () -> Block.Properties.of().mapColor(MapColor.TERRACOTTA_LIGHT_GREEN).instrument(NoteBlockInstrument.BIT).strength(5.0F, 6.0F).requiresCorrectToolForDrops().sound(SoundType.METAL)); + public static final DeferredBlock CORROBONITE_BLOCK = register("corrobonite_block", () -> Block.Properties.of().mapColor(MapColor.EMERALD).instrument(NoteBlockInstrument.BIT).strength(5.0F, 6.0F).requiresCorrectToolForDrops().sound(SoundType.METAL)); public static final DeferredBlock GOLDEN_AMBER_BLOCK = register("golden_amber_block", () -> Block.Properties.of().mapColor(MapColor.COLOR_ORANGE).instrument(NoteBlockInstrument.BIT).strength(5.0F, 6.0F).requiresCorrectToolForDrops().sound(SoundType.METAL)); // Storage Blocks @@ -820,6 +827,7 @@ private static Block.Properties skyrootHangingSignProperties() { // Furniture public static final DeferredBlock OUTPOST_CAMPFIRE = register("outpost_campfire", OutpostCampfireBlock::new, () -> Block.Properties.of().mapColor(MapColor.WOOL).instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.STONE).strength(15.0F, 1200.0F).noOcclusion().pushReaction(PushReaction.BLOCK)); public static final DeferredBlock MURAL = register("mural", MuralBlock::new, () -> Block.Properties.ofFullCopy(Blocks.STONE), (block, properties) -> new BlockItem(block, properties.component(AetherIIDataComponents.MURAL_SECTION, MuralSection.DEFAULT))); + public static final DeferredBlock THERAN_GLOBE = register("theran_globe", TheranGlobeBlock::new, () -> Block.Properties.ofFullCopy(AetherIIBlocks.GREATROOT_PLANKS.get())); // Melting Blocks public static final DeferredBlock FROSTED_ICE = registerWithoutItem("frosted_ice", AetherFrostedIceBlock::new, () -> BlockBehaviour.Properties.of().mapColor(MapColor.ICE).friction(0.98F).randomTicks().strength(0.5F).sound(SoundType.GLASS).noOcclusion().isValidSpawn((state, level, pos, entityType) -> entityType.builtInRegistryHolder().is(AetherIITags.EntityTypes.SPAWNING_ICE)).isRedstoneConductor(AetherIIBlockBuilders::never).noLootTable()); diff --git a/src/main/java/com/aetherteam/aetherii/block/dungeon/AbandonedBagBlock.java b/src/main/java/com/aetherteam/aetherii/block/dungeon/AbandonedBagBlock.java index 28decf2b3b..d4415e2a70 100644 --- a/src/main/java/com/aetherteam/aetherii/block/dungeon/AbandonedBagBlock.java +++ b/src/main/java/com/aetherteam/aetherii/block/dungeon/AbandonedBagBlock.java @@ -43,8 +43,8 @@ public class AbandonedBagBlock extends AbstractChestBlock FACING = HorizontalDirectionalBlock.FACING; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; public static final Map SHAPES = Shapes.rotateHorizontal(Shapes.or( - Block.box(4.0F, 0.0F, 8.0F, 12.0F, 8.0F, 14.0F), - Block.box(1.0F, 0.0F, 10.0F, 4.0F, 4.0F, 13.0F) + Block.box(1.0F, 0.0F, 5.0F, 15.0F, 8.0F, 16.0F), + Block.box(2.0F, 8.0F, 7.0F, 14.0F, 15.0F, 16.0F) )); @Override diff --git a/src/main/java/com/aetherteam/aetherii/block/furniture/TheranGlobeBlock.java b/src/main/java/com/aetherteam/aetherii/block/furniture/TheranGlobeBlock.java new file mode 100644 index 0000000000..1abaf34719 --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/block/furniture/TheranGlobeBlock.java @@ -0,0 +1,110 @@ +package com.aetherteam.aetherii.block.furniture; + +import com.aetherteam.aetherii.blockentity.TheranGlobeBlockEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class TheranGlobeBlock extends BaseEntityBlock implements SimpleWaterloggedBlock { + public static final MapCodec CODEC = simpleCodec(TheranGlobeBlock::new); + public static final EnumProperty FACING = HorizontalDirectionalBlock.FACING; + public static final BooleanProperty LIT = BlockStateProperties.LIT; + public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; + private static final VoxelShape SHAPE = Block.column(8.0, 0.0, 10.0); + + @Override + public MapCodec codec() { + return CODEC; + } + + public TheranGlobeBlock(Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(LIT, false).setValue(WATERLOGGED, false)); + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + FluidState replacedFluidState = context.getLevel().getFluidState(context.getClickedPos()); + return this.defaultBlockState() + .setValue(FACING, context.getHorizontalDirection().getOpposite()) + .setValue(WATERLOGGED, replacedFluidState.is(Fluids.WATER)); + } + + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { + level.setBlock(pos, state.cycle(LIT), 2); + return InteractionResult.SUCCESS; + } + + @Override + public BlockEntity newBlockEntity(BlockPos worldPosition, BlockState blockState) { + return new TheranGlobeBlockEntity(worldPosition, blockState); + } + + /* + @Override + public @Nullable BlockEntityTicker getTicker(Level level, BlockState blockState, BlockEntityType type) { + return level.isClientSide() ? createTickerHelper(type, AetherIIBlockEntityTypes.THERAN_GLOBE.get(), TheranGlobeBlockEntity::globeRotationTick) : null; + } + + */ + + @Override + protected BlockState rotate(BlockState state, Rotation rotation) { + return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); + } + + @Override + protected BlockState mirror(BlockState state, Mirror mirror) { + return state.rotate(mirror.getRotation(state.getValue(FACING))); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING, LIT, WATERLOGGED); + } + + @Override + protected FluidState getFluidState(BlockState state) { + return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); + } + + @Override + protected BlockState updateShape(BlockState state, LevelReader level, ScheduledTickAccess ticks, BlockPos pos, Direction directionToNeighbour, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { + if (state.getValue(WATERLOGGED)) { + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + } + + return super.updateShape(state, level, ticks, pos, directionToNeighbour, neighbourPos, neighbourState, random); + } + + @Override + protected boolean isPathfindable(BlockState state, PathComputationType type) { + return false; + } +} diff --git a/src/main/java/com/aetherteam/aetherii/blockentity/AetherIIBlockEntityTypes.java b/src/main/java/com/aetherteam/aetherii/blockentity/AetherIIBlockEntityTypes.java index 652152578a..198934b2a5 100644 --- a/src/main/java/com/aetherteam/aetherii/blockentity/AetherIIBlockEntityTypes.java +++ b/src/main/java/com/aetherteam/aetherii/blockentity/AetherIIBlockEntityTypes.java @@ -74,6 +74,9 @@ public class AetherIIBlockEntityTypes { public static final DeferredHolder, BlockEntityType> MURAL = BLOCK_ENTITY_TYPES.register("mural", () -> new BlockEntityType<>(MuralBlockEntity::new, AetherIIBlocks.MURAL.get())); + public static final DeferredHolder, BlockEntityType> THERAN_GLOBE = BLOCK_ENTITY_TYPES.register("theran_globe", () -> + new BlockEntityType<>(TheranGlobeBlockEntity::new, AetherIIBlocks.THERAN_GLOBE.get())); + public static final DeferredHolder, BlockEntityType> VASE = BLOCK_ENTITY_TYPES.register("vase", () -> new BlockEntityType<>(VaseBlockEntity::new, AetherIIBlocks.HOLYSTONE_VASE.get(), AetherIIBlocks.VERADEXIAN_VASE.get(), AetherIIBlocks.BREXALLEN_VASE.get())); diff --git a/src/main/java/com/aetherteam/aetherii/blockentity/TheranGlobeBlockEntity.java b/src/main/java/com/aetherteam/aetherii/blockentity/TheranGlobeBlockEntity.java new file mode 100644 index 0000000000..7a733586e0 --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/blockentity/TheranGlobeBlockEntity.java @@ -0,0 +1,22 @@ +package com.aetherteam.aetherii.blockentity; + +import com.aetherteam.aetherii.block.AetherIIBlocks; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public class TheranGlobeBlockEntity extends BlockEntity { + + public TheranGlobeBlockEntity() { + this(AetherIIBlockEntityTypes.THERAN_GLOBE.get(), BlockPos.ZERO, AetherIIBlocks.THERAN_GLOBE.get().defaultBlockState()); + } + + public TheranGlobeBlockEntity(BlockPos pos, BlockState state) { + this(AetherIIBlockEntityTypes.THERAN_GLOBE.get(), pos, state); + } + + protected TheranGlobeBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + } +} \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/client/event/hooks/AudioHooks.java b/src/main/java/com/aetherteam/aetherii/client/event/hooks/AudioHooks.java index 9286d0427b..087fee165d 100644 --- a/src/main/java/com/aetherteam/aetherii/client/event/hooks/AudioHooks.java +++ b/src/main/java/com/aetherteam/aetherii/client/event/hooks/AudioHooks.java @@ -8,6 +8,8 @@ import com.aetherteam.aetherii.mixin.mixins.client.accessor.BossHealthOverlayAccessor; import com.aetherteam.aetherii.mixin.mixins.client.accessor.SoundEngineAccessor; import com.aetherteam.aetherii.mixin.mixins.client.accessor.SoundManagerAccessor; +import com.aetherteam.aetherii.network.packet.serverbound.DiscardCompanionPacket; +import com.aetherteam.aetherii.network.packet.serverbound.EnteredStructurePacket; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.LerpingBossEvent; @@ -15,8 +17,11 @@ import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.client.sounds.SoundEngine; import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.Music; import net.minecraft.sounds.Musics; import net.minecraft.sounds.SoundEvent; @@ -24,7 +29,10 @@ import net.minecraft.world.attribute.EnvironmentAttributes; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; +import net.neoforged.neoforge.client.network.ClientPacketDistributor; import java.util.Map; import java.util.Optional; @@ -36,12 +44,12 @@ public class AudioHooks { public static final Music AETHER_SUNRISE = createAetherMusic(AetherIISoundEvents.MUSIC_AETHER_SUNRISE); public static final Music AETHER_SUNSET = createAetherMusic(AetherIISoundEvents.MUSIC_AETHER_SUNSET); public static final Music AETHER_CAVES = createAetherMusic(AetherIISoundEvents.MUSIC_AETHER_CAVES); + public static final Music AETHER_MINESHAFT = createAetherMusic(AetherIISoundEvents.MUSIC_AETHER_MINESHAFT); public static > Music getSituationalMusic() { Music musicInfo = null; if (Minecraft.getInstance().level != null && Minecraft.getInstance().player != null) { Holder biome = Minecraft.getInstance().player.level().getBiome(Minecraft.getInstance().player.blockPosition()); - float volume = Minecraft.getInstance().getMusicVolume(); if (biome.is(AetherIITags.Biomes.AETHER_MUSIC)) { if (!(Minecraft.getInstance().screen instanceof WinScreen)) { if (isAetherBossMusicActive()) { @@ -53,12 +61,15 @@ public static > Music getSituationalMu } } } else { + ClientPacketDistributor.sendToServer(new EnteredStructurePacket()); + long time = Minecraft.getInstance().player.level().getDefaultClockTime() % 24000L; boolean day = time >= 0 && time < 12000; boolean sunset = time >= 12000 && time < 14000; boolean night = time >= 14000 && time < 22000; boolean sunrise = time >= 22000; + if (Minecraft.getInstance().player.position().y <= 80) { musicInfo = AETHER_CAVES; } else { diff --git a/src/main/java/com/aetherteam/aetherii/client/renderer/AetherIIModelLayers.java b/src/main/java/com/aetherteam/aetherii/client/renderer/AetherIIModelLayers.java index 612df683f7..00c637b6e1 100644 --- a/src/main/java/com/aetherteam/aetherii/client/renderer/AetherIIModelLayers.java +++ b/src/main/java/com/aetherteam/aetherii/client/renderer/AetherIIModelLayers.java @@ -11,6 +11,7 @@ public class AetherIIModelLayers { public static final ModelLayerLocation MOA_EGG = register("moa_egg"); public static final ModelLayerLocation ALKAHEST_PURIFIER = register("alkahest_purifier"); public static final ModelLayerLocation VASE = register("vase"); + public static final ModelLayerLocation THERAN_GLOBE = register("theran_globe"); public static final ModelLayerLocation SENTRY_SPAWNER = register("sentry_spawner"); public static final ModelLayerLocation SENTRY_SPAWNER_PISTON = register("sentry_spawner_piston"); public static final ModelLayerLocation SENTRY_CRATE = register("sentry_crate"); diff --git a/src/main/java/com/aetherteam/aetherii/client/renderer/AetherIIRenderers.java b/src/main/java/com/aetherteam/aetherii/client/renderer/AetherIIRenderers.java index 8faca8b37a..77dcc95aa5 100644 --- a/src/main/java/com/aetherteam/aetherii/client/renderer/AetherIIRenderers.java +++ b/src/main/java/com/aetherteam/aetherii/client/renderer/AetherIIRenderers.java @@ -134,6 +134,7 @@ public static void registerEntityRenderers(EntityRenderersEvent.RegisterRenderer event.registerBlockEntityRenderer(AetherIIBlockEntityTypes.ARKENIUM_FORGE.get(), ArkeniumForgeRenderer::new); event.registerBlockEntityRenderer(AetherIIBlockEntityTypes.ALKAHEST_PURIFIER.get(), AlkahestPurifierRenderer::new); event.registerBlockEntityRenderer(AetherIIBlockEntityTypes.AMBROSIUM_CAMPFIRE.get(), AmbrosiumCampfireRenderer::new); + event.registerBlockEntityRenderer(AetherIIBlockEntityTypes.THERAN_GLOBE.get(), TheranGlobeRenderer::new); event.registerBlockEntityRenderer(AetherIIBlockEntityTypes.VASE.get(), VaseRenderer::new); event.registerBlockEntityRenderer(AetherIIBlockEntityTypes.SENTRY_CRATE.get(), SentryCrateRenderer::new); event.registerBlockEntityRenderer(AetherIIBlockEntityTypes.SENTRY_SPAWNER.get(), SentrySpawnerRenderer::new); @@ -219,6 +220,7 @@ public static void registerLayerDefinition(EntityRenderersEvent.RegisterLayerDef event.registerLayerDefinition(AetherIIModelLayers.MOA_EGG, MoaEggModel::createBodyLayer); event.registerLayerDefinition(AetherIIModelLayers.ALKAHEST_PURIFIER, AlkahestPurifierModel::createBodyLayer); event.registerLayerDefinition(AetherIIModelLayers.VASE, VaseModel::createBodyLayer); + event.registerLayerDefinition(AetherIIModelLayers.THERAN_GLOBE, TheranGlobeModel::createBodyLayer); event.registerLayerDefinition(AetherIIModelLayers.SENTRY_SPAWNER, SentrySpawnerModel::createBodyLayer); event.registerLayerDefinition(AetherIIModelLayers.SENTRY_SPAWNER_PISTON, SentrySpawnerPistonModel::createBodyLayer); event.registerLayerDefinition(AetherIIModelLayers.SENTRY_CRATE, SentryCrateModel::createSingleBodyLayer); @@ -393,6 +395,7 @@ public static void registerSpecialModelRenderers(RegisterSpecialModelRendererEve event.register(Identifier.fromNamespaceAndPath(AetherII.MODID, "skyroot_bed"), SkyrootBedSpecialRenderer.Unbaked.MAP_CODEC); event.register(Identifier.fromNamespaceAndPath(AetherII.MODID, "alkahest_purifier"), AlkahestPurifierSpecialRenderer.Unbaked.MAP_CODEC); event.register(Identifier.fromNamespaceAndPath(AetherII.MODID, "vase"), VaseSpecialRenderer.Unbaked.MAP_CODEC); + event.register(Identifier.fromNamespaceAndPath(AetherII.MODID, "theran_globe"), TheranGlobeSpecialRenderer.Unbaked.MAP_CODEC); event.register(Identifier.fromNamespaceAndPath(AetherII.MODID, "sentry_crate"), SentryCrateSpecialRenderer.Unbaked.MAP_CODEC); event.register(Identifier.fromNamespaceAndPath(AetherII.MODID, "sentry_spawner"), SentrySpawnerSpecialRenderer.Unbaked.MAP_CODEC); event.register(Identifier.fromNamespaceAndPath(AetherII.MODID, "abandoned_bag"), AbandonedBagSpecialRenderer.Unbaked.MAP_CODEC); diff --git a/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/SageChestRenderer.java b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/SageChestRenderer.java index 3909706c28..147d36febb 100644 --- a/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/SageChestRenderer.java +++ b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/SageChestRenderer.java @@ -8,7 +8,6 @@ import com.aetherteam.aetherii.client.renderer.blockentity.state.SageChestRenderState; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; -import it.unimi.dsi.fastutil.floats.Float2FloatFunction; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.renderer.MultiblockChestResources; @@ -33,7 +32,7 @@ import net.minecraft.world.phys.Vec3; public class SageChestRenderer implements BlockEntityRenderer { - public static final MultiblockChestResources LAYERS = new MultiblockChestResources(AetherIIModelLayers.SAGE_CHEST, AetherIIModelLayers.DOUBLE_SAGE_CHEST_LEFT, AetherIIModelLayers.DOUBLE_SAGE_CHEST_RIGHT); + public static final MultiblockChestResources LAYERS = new MultiblockChestResources<>(AetherIIModelLayers.SAGE_CHEST, AetherIIModelLayers.DOUBLE_SAGE_CHEST_LEFT, AetherIIModelLayers.DOUBLE_SAGE_CHEST_RIGHT); private final SpriteGetter sprites; private final MultiblockChestResources models; @@ -52,15 +51,15 @@ public void extractRenderState(SageChestBlockEntity blockEntity, SageChestRender DoubleBlockCombiner.NeighborCombineResult combineResult = DoubleBlockCombiner.Combiner::acceptNone; BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress); boolean hasLevel = blockEntity.getLevel() != null; - BlockState blockState = hasLevel ? blockEntity.getBlockState() : (BlockState) Blocks.CHEST.defaultBlockState().setValue(ChestBlock.FACING, Direction.SOUTH); - state.type = blockState.hasProperty(ChestBlock.TYPE) ? (ChestType)blockState.getValue(ChestBlock.TYPE) : ChestType.SINGLE; - state.facing = (Direction) blockState.getValue(ChestBlock.FACING); + BlockState blockState = hasLevel ? blockEntity.getBlockState() : Blocks.CHEST.defaultBlockState().setValue(ChestBlock.FACING, Direction.SOUTH); + state.type = blockState.hasProperty(ChestBlock.TYPE) ? blockState.getValue(ChestBlock.TYPE) : ChestType.SINGLE; + state.facing = blockState.getValue(ChestBlock.FACING); if (hasLevel) { if (blockState.getBlock() instanceof SageChestBlock sageChestBlock) { combineResult = sageChestBlock.combine(blockState, blockEntity.getLevel(), blockEntity.getBlockPos(), true); } } - state.open = ((Float2FloatFunction) combineResult.apply(SageChestBlock.opennessCombiner(blockEntity))).get(partialTicks); + state.open = combineResult.apply(SageChestBlock.opennessCombiner(blockEntity)).get(partialTicks); if (state.type != ChestType.SINGLE) { state.lightCoords = ((Int2IntFunction) combineResult.apply(new BrightnessCombiner())).applyAsInt(state.lightCoords); } diff --git a/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/TheranGlobeRenderer.java b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/TheranGlobeRenderer.java new file mode 100644 index 0000000000..691787d851 --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/TheranGlobeRenderer.java @@ -0,0 +1,74 @@ +package com.aetherteam.aetherii.client.renderer.blockentity; + +import com.aetherteam.aetherii.AetherII; +import com.aetherteam.aetherii.block.AetherIIBlocks; +import com.aetherteam.aetherii.block.furniture.TheranGlobeBlock; +import com.aetherteam.aetherii.blockentity.TheranGlobeBlockEntity; +import com.aetherteam.aetherii.client.renderer.AetherIIModelLayers; +import com.aetherteam.aetherii.client.renderer.blockentity.model.TheranGlobeModel; +import com.aetherteam.aetherii.client.renderer.blockentity.state.TheranGlobeRenderState; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.state.level.CameraRenderState; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.Direction; +import net.minecraft.resources.Identifier; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import org.jspecify.annotations.Nullable; + +public class TheranGlobeRenderer implements BlockEntityRenderer { + private static final Identifier THERAN_GLOBE_LOCATION = Identifier.fromNamespaceAndPath(AetherII.MODID, "textures/entity/theran_globe/theran_globe.png"); + private final TheranGlobeModel model; + + public TheranGlobeRenderer(BlockEntityRendererProvider.Context context) { + this(context.entityModelSet()); + } + + public TheranGlobeRenderer(EntityModelSet modelSet) { + this.model = new TheranGlobeModel(modelSet.bakeLayer(AetherIIModelLayers.THERAN_GLOBE)); + } + + @Override + public void submit(TheranGlobeRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState cameraRenderState) { + float yRot = state.angle; + float rotation = state.globeRotation; + this.render(poseStack, submitNodeCollector, state, state.lightCoords, yRot, rotation); + } + + + public void render(PoseStack poseStack, SubmitNodeCollector collector, TheranGlobeRenderState state, int packedLight, float yRot, float globeRotation) { + poseStack.pushPose(); + poseStack.translate(0.5F, 1.5F, 0.5F); + poseStack.mulPose(Axis.XP.rotationDegrees(180)); + poseStack.mulPose(Axis.YP.rotationDegrees(yRot)); + + this.model.setupAnim(globeRotation); + collector.submitModel( + this.model, globeRotation, poseStack, RenderTypes.entityCutout(THERAN_GLOBE_LOCATION), packedLight, OverlayTexture.NO_OVERLAY, -1, null, 0, state.breakProgress + ); + + poseStack.popPose(); + } + + @Override + public TheranGlobeRenderState createRenderState() { + return new TheranGlobeRenderState(); + } + + @Override + public void extractRenderState(TheranGlobeBlockEntity blockEntity, TheranGlobeRenderState state, float p_446851_, Vec3 p_445788_, ModelFeatureRenderer.@Nullable CrumblingOverlay p_446944_) { + BlockEntityRenderer.super.extractRenderState(blockEntity, state, p_446851_, p_445788_, p_446944_); + boolean flag = blockEntity.getLevel() != null; + BlockState blockstate = flag ? blockEntity.getBlockState() : AetherIIBlocks.THERAN_GLOBE.get().defaultBlockState().setValue(TheranGlobeBlock.FACING, Direction.SOUTH); + state.angle = blockstate.getValue(TheranGlobeBlock.FACING).toYRot(); + //state.globeRotation = blockEntity.getGlobeRotation(p_446851_); + + } +} \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/model/AbandonedBagModel.java b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/model/AbandonedBagModel.java index 8c5737321d..a26535d60e 100644 --- a/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/model/AbandonedBagModel.java +++ b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/model/AbandonedBagModel.java @@ -19,21 +19,20 @@ public static LayerDefinition createBodyLayer() { MeshDefinition meshdefinition = new MeshDefinition(); PartDefinition partdefinition = meshdefinition.getRoot(); - PartDefinition lid = partdefinition.addOrReplaceChild("lid", CubeListBuilder.create().texOffs(0, 11).addBox(-4.0F, -3.0F, -6.0F, 8.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(24, 20).addBox(-1.0F, -1.0F, -7.0F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 19.0F, 6.0F)); + PartDefinition lid = partdefinition.addOrReplaceChild("lid", CubeListBuilder.create().texOffs(42, 19).addBox(-1.0F, -2.0F, -10.0F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 19).addBox(-6.0F, -4.0F, -9.0F, 12.0F, 4.0F, 9.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 13.0F, 8.0F)); - PartDefinition main = partdefinition.addOrReplaceChild("main", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -5.0F, 0.0F, 8.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(12, 20).addBox(4.0F, -4.0F, 2.0F, 3.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition main = partdefinition.addOrReplaceChild("main", CubeListBuilder.create().texOffs(0, 0).addBox(-7.0F, -8.0F, -3.0F, 14.0F, 8.0F, 11.0F, new CubeDeformation(0.0F)) + .texOffs(0, 32).addBox(-6.0F, -11.0F, -1.0F, 12.0F, 3.0F, 9.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - PartDefinition axe = main.addOrReplaceChild("axe", CubeListBuilder.create().texOffs(0, 20).addBox(0.0F, -6.0F, -3.0F, 0.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-6.0F, 0.0F, 1.0F, 0.0F, 0.0F, 0.3491F)); - return LayerDefinition.create(meshdefinition, 32, 32); + return LayerDefinition.create(meshdefinition, 64, 64); } + @Override public void setupAnim(Float openness) { super.setupAnim(openness); this.lid.xRot = -(openness * ((float)Math.PI / 2F)); - //this.lock.xRot = this.lid.xRot; } } \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/model/TheranGlobeModel.java b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/model/TheranGlobeModel.java new file mode 100644 index 0000000000..b628afebca --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/model/TheranGlobeModel.java @@ -0,0 +1,38 @@ +package com.aetherteam.aetherii.client.renderer.blockentity.model; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.client.renderer.rendertype.RenderTypes; + +public class TheranGlobeModel extends Model { + //private final ModelPart globe; + private final ModelPart main; + + public TheranGlobeModel(ModelPart root) { + super(root, RenderTypes::entityCutout); + // this.globe = root.getChild("globe"); + this.main = root.getChild("main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition globe = partdefinition.addOrReplaceChild("globe", CubeListBuilder.create().texOffs(0, 16).addBox(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(0, 32).addBox(-2.0F, -5.0F, -5.0F, 4.0F, 10.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 14.0F, 0.0F, 0.0F, 0.0F, -0.7854F)); + + PartDefinition main = partdefinition.addOrReplaceChild("main", CubeListBuilder.create().texOffs(32, 0).addBox(-4.0F, -1.0F, -4.0F, 8.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(32, 9).addBox(-3.0F, -2.0F, -3.0F, 6.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-8.0F, -16.0F, 0.0F, 16.0F, 16.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + + return LayerDefinition.create(meshdefinition, 64, 64); + } + + + @Override + public void setupAnim(Float globeRotation) { + super.setupAnim(globeRotation); + //this.globe.yRot = globeRotation; + } +} \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/state/TheranGlobeRenderState.java b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/state/TheranGlobeRenderState.java new file mode 100644 index 0000000000..97d8bfc4e9 --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/client/renderer/blockentity/state/TheranGlobeRenderState.java @@ -0,0 +1,8 @@ +package com.aetherteam.aetherii.client.renderer.blockentity.state; + +import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState; + +public class TheranGlobeRenderState extends BlockEntityRenderState { + public float angle; + public float globeRotation; +} diff --git a/src/main/java/com/aetherteam/aetherii/client/renderer/item/model/TheranGlobeSpecialRenderer.java b/src/main/java/com/aetherteam/aetherii/client/renderer/item/model/TheranGlobeSpecialRenderer.java new file mode 100644 index 0000000000..398dcb4f9a --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/client/renderer/item/model/TheranGlobeSpecialRenderer.java @@ -0,0 +1,74 @@ +package com.aetherteam.aetherii.client.renderer.item.model; + +import com.aetherteam.aetherii.AetherII; +import com.aetherteam.aetherii.client.renderer.AetherIIModelLayers; +import com.aetherteam.aetherii.client.renderer.blockentity.model.TheranGlobeModel; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.special.NoDataSpecialModelRenderer; +import net.minecraft.resources.Identifier; +import org.joml.Vector3fc; + +import java.util.function.Consumer; + +public class TheranGlobeSpecialRenderer implements NoDataSpecialModelRenderer { + private final TheranGlobeModel model; + private final float globeRotation; + + public TheranGlobeSpecialRenderer(TheranGlobeModel model, float globeRotation) { + this.model = model; + this.globeRotation = globeRotation; + } + + @Override + public void submit(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, int i1, boolean b, int i2) { + Identifier location = Identifier.fromNamespaceAndPath(AetherII.MODID, "textures/entity/theran_globe/theran_globe.png"); + RenderType renderType = RenderTypes.entityCutout(location); + poseStack.pushPose(); + poseStack.translate(0.5F, 1.5F, 0.5F); + poseStack.mulPose(Axis.XP.rotationDegrees(180)); + this.model.setupAnim(this.globeRotation); + submitNodeCollector.submitModel(this.model, this.globeRotation, poseStack, renderType, i, i1, -1, null, i2, null); + poseStack.popPose(); + } + + @Override + public void getExtents(Consumer consumer) { + PoseStack poseStack = new PoseStack(); + poseStack.translate(0.5F, 1.5F, 0.5F); + poseStack.mulPose(Axis.XP.rotationDegrees(180)); + this.model.setupAnim(this.globeRotation); + this.model.root().getExtentsForGui(poseStack, consumer); + } + + public record Unbaked(float globeRotation) implements NoDataSpecialModelRenderer.Unbaked { + public static final MapCodec MAP_CODEC = RecordCodecBuilder.mapCodec((instance) -> instance.group( + Codec.FLOAT.optionalFieldOf("globe_rotation", 0.0F).forGetter(TheranGlobeSpecialRenderer.Unbaked::globeRotation) + ).apply(instance, TheranGlobeSpecialRenderer.Unbaked::new)); + + public Unbaked() { + this(0.0F); + } + + public Unbaked(float globeRotation) { + this.globeRotation = globeRotation; + } + + @Override + public MapCodec type() { + return MAP_CODEC; + } + + @Override + public NoDataSpecialModelRenderer bake(BakingContext context) { + TheranGlobeModel model = new TheranGlobeModel(context.entityModelSet().bakeLayer(AetherIIModelLayers.THERAN_GLOBE)); + return new TheranGlobeSpecialRenderer(model, this.globeRotation); + } + } +} diff --git a/src/main/java/com/aetherteam/aetherii/client/sound/AetherIISoundEvents.java b/src/main/java/com/aetherteam/aetherii/client/sound/AetherIISoundEvents.java index feb60a90b1..7775c5a151 100644 --- a/src/main/java/com/aetherteam/aetherii/client/sound/AetherIISoundEvents.java +++ b/src/main/java/com/aetherteam/aetherii/client/sound/AetherIISoundEvents.java @@ -268,6 +268,7 @@ public class AetherIISoundEvents { public static final DeferredHolder MUSIC_AETHER_SUNRISE = register("music.aether_sunrise"); public static final DeferredHolder MUSIC_AETHER_SUNSET = register("music.aether_sunset"); public static final DeferredHolder MUSIC_AETHER_CAVES = register("music.aether_caves"); + public static final DeferredHolder MUSIC_AETHER_MINESHAFT = register("music.aether_mineshaft"); public static final DeferredHolder MUSIC_MENU = register("music.menu"); diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/AetherIILanguageData.java b/src/main/java/com/aetherteam/aetherii/data/generators/AetherIILanguageData.java index 04f211e270..1fdd1c9fab 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/AetherIILanguageData.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/AetherIILanguageData.java @@ -120,6 +120,7 @@ private void addBlocks() { // Highfields this.addBlock(AetherIIBlocks.QUICKSOIL, "Quicksoil"); this.addBlock(AetherIIBlocks.MOSSY_HOLYSTONE, "Mossy Holystone"); + this.addBlock(AetherIIBlocks.MOSSY_UNDERSHALE, "Mossy Undershale"); this.addBlock(AetherIIBlocks.BRYALINN_MOSS_BLOCK, "Bryalinn Moss Block"); this.addBlock(AetherIIBlocks.BRYALINN_MOSS_CARPET, "Bryalinn Moss Carpet"); this.addBlock(AetherIIBlocks.BRYALINN_MOSS_VINES, "Bryalinn Moss Vines"); @@ -499,6 +500,11 @@ private void addBlocks() { this.addBlock(AetherIIBlocks.UNDERSHALE_SLAB, "Undershale Slab"); this.addBlock(AetherIIBlocks.UNDERSHALE_WALL, "Undershale Wall"); + // Mossy Undershale + this.addBlock(AetherIIBlocks.MOSSY_UNDERSHALE_STAIRS, "Mossy Undershale Stairs"); + this.addBlock(AetherIIBlocks.MOSSY_UNDERSHALE_SLAB, "Mossy Undershale Slab"); + this.addBlock(AetherIIBlocks.MOSSY_UNDERSHALE_WALL, "Mossy Undershale Wall"); + // Undershale Bricks this.addBlock(AetherIIBlocks.UNDERSHALE_BRICKS, "Undershale Bricks"); this.addBlock(AetherIIBlocks.UNDERSHALE_BRICK_STAIRS, "Undershale Brick Stairs"); @@ -806,6 +812,7 @@ private void addBlocks() { // Furniture this.addBlock(AetherIIBlocks.OUTPOST_CAMPFIRE, "Outpost Campfire"); this.addBlock(AetherIIBlocks.MURAL, "Mural"); + this.addBlock(AetherIIBlocks.THERAN_GLOBE, "Theran Globe"); // Melting Blocks this.addBlock(AetherIIBlocks.FROSTED_ICE, "Frosted Ice"); @@ -1190,11 +1197,17 @@ private void addItems() { this.addItem(AetherIIItems.CLOUD_SKIFF, "Cloud Skiff"); this.addItem(AetherIIItems.GLINT_COIN, "Glint Coin"); this.addItem(AetherIIItems.GUIDEBOOK_PAGE, "Guidebook Page"); + this.addItem(AetherIIItems.PAINTING_TEMPLATE_FAR, "Painting Template"); + this.addGeneric("filled_map.veradexian_library", "Veradexian Library Explorer Map"); this.addItem(AetherIIItems.AETHER_PORTAL_FRAME, "Aether Portal Frame"); this.addItem(AetherIIItems.MURAL_ITEM, "Mural"); this.addItem(AetherIIItems.BROKEN_ITEM, "Broken Item"); this.add("item.aether_ii.broken_item_template", "Broken %s"); + + // Paintings + this.add("painting.aether_ii.far.title", "Far"); + this.add("painting.aether_ii.far.author", "The Aether Team"); } private void addPerItemAbilityTooltips() { @@ -1343,6 +1356,10 @@ private void addPerItemAbilityTooltips() { this.addPerItemAbilityTooltip(AetherIIItems.SHIFTING_GLASS.get(), 1, "§9Ability:§r Directional Dash"); this.addPerItemAbilityTooltip(AetherIIItems.SHIFTING_GLASS.get(), 2, "§3Use:§r Click-Use"); + + this.addPerItemAbilityTooltip(AetherIIItems.PAINTING_TEMPLATE_FAR.get(), 1, "§eFar"); + this.addPerItemAbilityTooltip(AetherIIItems.PAINTING_TEMPLATE_FAR.get(), 2, "§7The Aether Team"); + this.addPerItemAbilityTooltip(AetherIIItems.PAINTING_TEMPLATE_FAR.get(), 3, "4x4"); } private void addItemTooltips() { @@ -2071,6 +2088,7 @@ private void addMusic() { this.addMusic("aether_sunrise", "Emile van Krieken - Sunrise"); this.addMusic("aether_sunset", "Emile van Krieken - Sunset"); this.addMusic("aether_ambience1", "Emile van Krieken - Sentience"); + this.addMusic("mineshaft_ambience", "sunsette - Mineshaft Ambience"); this.addMusic("boss.slider_fight", "Emile van Krieken - Labyrinth's Vengeance"); this.addMusic("title.resonance_of_the_gods_redux", "anankalisto - Resonance of the Gods - sunsette remix"); diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/AetherIIRecipeData.java b/src/main/java/com/aetherteam/aetherii/data/generators/AetherIIRecipeData.java index 9b900c17ed..ec66a85e64 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/AetherIIRecipeData.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/AetherIIRecipeData.java @@ -4,6 +4,7 @@ import com.aetherteam.aetherii.AetherIITags; import com.aetherteam.aetherii.block.AetherIIBlocks; import com.aetherteam.aetherii.data.providers.AetherIIRecipeProvider; +import com.aetherteam.aetherii.data.resources.registries.AetherIIPaintingVariants; import com.aetherteam.aetherii.effect.buildup.EffectBuildupPresets; import com.aetherteam.aetherii.entity.passive.Moa; import com.aetherteam.aetherii.item.AetherIIItems; @@ -12,22 +13,28 @@ import com.aetherteam.aetherii.recipe.book.AltarBookCategory; import com.aetherteam.aetherii.recipe.recipes.OutputEntry; import com.aetherteam.aetherii.recipe.recipes.item.special.LootRepairRecipe; +import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponentExactPredicate; import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.component.DataComponents; +import net.minecraft.core.component.TypedDataComponent; import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; import net.minecraft.tags.ItemTags; import net.minecraft.util.random.WeightedList; -import net.minecraft.world.item.DyeColor; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStackTemplate; -import net.minecraft.world.item.Items; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.decoration.painting.PaintingVariant; +import net.minecraft.world.item.*; import net.minecraft.world.item.component.BundleContents; +import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.item.component.TooltipDisplay; +import net.minecraft.world.item.component.TypedEntityData; import net.minecraft.world.item.crafting.CookingBookCategory; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.Blocks; @@ -202,6 +209,18 @@ protected void buildRecipes() { .requires(AetherIIBlocks.BRYALINN_MOSS_BLOCK) .unlockedBy(getHasName(AetherIIBlocks.BRYALINN_MOSS_BLOCK), has(AetherIIBlocks.BRYALINN_MOSS_BLOCK)) .save(this.output, this.name("mossy_holystone_with_moss")); + ShapelessRecipeBuilder.shapeless(getter, RecipeCategory.BUILDING_BLOCKS, AetherIIBlocks.MOSSY_UNDERSHALE.get()) + .group("mossy_undershale") + .requires(AetherIIBlocks.UNDERSHALE.get()) + .requires(AetherIIBlocks.BRYALINN_MOSS_VINES) + .unlockedBy(getHasName(AetherIIBlocks.BRYALINN_MOSS_VINES), has(AetherIIBlocks.BRYALINN_MOSS_VINES)) + .save(this.output, this.name("mossy_undershale_with_vine")); + ShapelessRecipeBuilder.shapeless(getter, RecipeCategory.BUILDING_BLOCKS, AetherIIBlocks.MOSSY_UNDERSHALE.get()) + .group("mossy_undershale") + .requires(AetherIIBlocks.UNDERSHALE.get()) + .requires(AetherIIBlocks.BRYALINN_MOSS_BLOCK) + .unlockedBy(getHasName(AetherIIBlocks.BRYALINN_MOSS_BLOCK), has(AetherIIBlocks.BRYALINN_MOSS_BLOCK)) + .save(this.output, this.name("mossy_undershale_with_moss")); this.carpet(AetherIIBlocks.BRYALINN_MOSS_CARPET, AetherIIBlocks.BRYALINN_MOSS_BLOCK.get()); // Arctic @@ -633,6 +652,11 @@ protected void buildRecipes() { this.stonecuttingRecipe(this.output, RecipeCategory.DECORATIONS, AetherIIBlocks.FADED_HOLYSTONE_BRICKS.get(), AetherIIBlocks.FADED_HOLYSTONE_PILLAR.get()); // Undershale + ShapelessRecipeBuilder.shapeless(getter, RecipeCategory.BUILDING_BLOCKS, AetherIIBlocks.UNDERSHALE.get()) + .group("undershale") + .requires(AetherIIBlocks.MOSSY_UNDERSHALE.get()) + .unlockedBy(getHasName(AetherIIBlocks.MOSSY_UNDERSHALE), has(AetherIIBlocks.MOSSY_UNDERSHALE)) + .save(this.output, this.name("undershale_from_mossy")); this.stairs(AetherIIBlocks.UNDERSHALE_STAIRS, AetherIIBlocks.UNDERSHALE).save(this.output); this.slab(RecipeCategory.BUILDING_BLOCKS, AetherIIBlocks.UNDERSHALE_SLAB.get(), AetherIIBlocks.UNDERSHALE.get()); this.wall(RecipeCategory.DECORATIONS, AetherIIBlocks.UNDERSHALE_WALL.get(), AetherIIBlocks.UNDERSHALE.get()); @@ -640,6 +664,14 @@ protected void buildRecipes() { this.stonecuttingRecipe(this.output, RecipeCategory.DECORATIONS, AetherIIBlocks.UNDERSHALE_SLAB.get(), AetherIIBlocks.UNDERSHALE.get(), 2); this.stonecuttingRecipe(this.output, RecipeCategory.DECORATIONS, AetherIIBlocks.UNDERSHALE_WALL.get(), AetherIIBlocks.UNDERSHALE.get()); + // Mossy Undershale + this.stairs(AetherIIBlocks.MOSSY_UNDERSHALE_STAIRS, AetherIIBlocks.MOSSY_UNDERSHALE).save(this.output); + this.slab(RecipeCategory.BUILDING_BLOCKS, AetherIIBlocks.MOSSY_UNDERSHALE_SLAB.get(), AetherIIBlocks.MOSSY_UNDERSHALE.get()); + this.wall(RecipeCategory.DECORATIONS, AetherIIBlocks.MOSSY_UNDERSHALE_WALL.get(), AetherIIBlocks.MOSSY_UNDERSHALE.get()); + this.stonecuttingRecipe(this.output, RecipeCategory.DECORATIONS, AetherIIBlocks.MOSSY_UNDERSHALE_STAIRS.get(), AetherIIBlocks.MOSSY_UNDERSHALE.get()); + this.stonecuttingRecipe(this.output, RecipeCategory.DECORATIONS, AetherIIBlocks.MOSSY_UNDERSHALE_SLAB.get(), AetherIIBlocks.MOSSY_UNDERSHALE.get(), 2); + this.stonecuttingRecipe(this.output, RecipeCategory.DECORATIONS, AetherIIBlocks.MOSSY_UNDERSHALE_WALL.get(), AetherIIBlocks.MOSSY_UNDERSHALE.get()); + // Undershale Bricks this.polished(RecipeCategory.BUILDING_BLOCKS, AetherIIBlocks.UNDERSHALE_BRICKS.get(), AetherIIBlocks.UNDERSHALE.get()); ShapelessRecipeBuilder.shapeless(getter, RecipeCategory.BUILDING_BLOCKS, AetherIIBlocks.UNDERSHALE_BRICKS.get()) @@ -1442,6 +1474,23 @@ protected void buildRecipes() { .unlockedBy("has_quartz", this.has(Items.QUARTZ)) .save(this.output, this.name("daylight_detector_from_scatterglass")); + ShapelessRecipeBuilder.shapeless(getter, RecipeCategory.DECORATIONS, new ItemStackTemplate(Items.PAINTING.asItem(), 1, + DataComponentPatch.builder().set(new TypedDataComponent<>( + DataComponents.PAINTING_VARIANT, + this.registries.lookupOrThrow(Registries.PAINTING_VARIANT).getOrThrow(AetherIIPaintingVariants.FAR))).build())) + .requires(Items.PAINTING) + .requires(AetherIIItems.PAINTING_TEMPLATE_FAR.get()) + .unlockedBy("has_painting_template_far", has(AetherIIItems.PAINTING_TEMPLATE_FAR.get())) + .save(this.output, this.name("painting_far_from_painting_template")); + ShapedRecipeBuilder.shaped(getter, RecipeCategory.MISC, AetherIIItems.PAINTING_TEMPLATE_FAR.get(), 2) + .define('#', Items.PAPER) + .define('/', AetherIIItems.PAINTING_TEMPLATE_FAR.get()) + .pattern("###") + .pattern("#/#") + .pattern("###") + .unlockedBy("has_painting_template_far", has(AetherIIItems.PAINTING_TEMPLATE_FAR.get())) + .save(this.output); + // Bookshelves this.bookshelf(getter, AetherIIBlocks.SKYROOT_BOOKSHELF, AetherIIBlocks.SKYROOT_PLANKS); this.bookshelf(getter, AetherIIBlocks.GREATROOT_BOOKSHELF, AetherIIBlocks.GREATROOT_PLANKS); diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/AetherIIRegistrySets.java b/src/main/java/com/aetherteam/aetherii/data/generators/AetherIIRegistrySets.java index 9a16e4e1de..7fc1f10dba 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/AetherIIRegistrySets.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/AetherIIRegistrySets.java @@ -30,6 +30,7 @@ public class AetherIIRegistrySets extends DatapackBuiltinEntriesProvider { .add(Registries.PROCESSOR_LIST, AetherIIProcessorLists::bootstrap) .add(Registries.DAMAGE_TYPE, AetherIIDamageTypes::bootstrap) .add(Registries.JUKEBOX_SONG, AetherIIJukeboxSongs::bootstrap) + .add(Registries.PAINTING_VARIANT, AetherIIPaintingVariants::bootstrap) .add(Registries.TIMELINE, AetherIITimelines::bootstrap) .add(AetherIIRegistries.BESTIARY_ENTRY, AetherIIBestiaryEntries::bootstrap) .add(AetherIIRegistries.EFFECTS_ENTRY, AetherIIEffectsEntries::bootstrap) diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/AetherIISoundData.java b/src/main/java/com/aetherteam/aetherii/data/generators/AetherIISoundData.java index d89c7e81d4..01c0e48744 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/AetherIISoundData.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/AetherIISoundData.java @@ -1375,6 +1375,11 @@ private void registerMusic() { sound("aether_ii:music/aether_ambience1").volume(0.4F).stream() ) ); + this.add(AetherIISoundEvents.MUSIC_AETHER_MINESHAFT, + definition().with( + sound("aether_ii:music/mineshaft_ambience").volume(0.4F).stream() + ) + ); this.add(AetherIISoundEvents.MUSIC_MENU, definition().with( diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/loot/AetherIIBlockLoot.java b/src/main/java/com/aetherteam/aetherii/data/generators/loot/AetherIIBlockLoot.java index b92698ca53..beaf14ae76 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/loot/AetherIIBlockLoot.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/loot/AetherIIBlockLoot.java @@ -64,6 +64,7 @@ public void generate() { // Highfields this.dropSelf(AetherIIBlocks.QUICKSOIL.get()); this.dropSelf(AetherIIBlocks.MOSSY_HOLYSTONE.get()); + this.dropSelf(AetherIIBlocks.MOSSY_UNDERSHALE.get()); this.dropSelf(AetherIIBlocks.BRYALINN_MOSS_BLOCK.get()); this.dropSelf(AetherIIBlocks.BRYALINN_MOSS_CARPET.get()); this.add(AetherIIBlocks.BRYALINN_MOSS_VINES.get(), this::createShearsOnlyDrop); @@ -451,6 +452,11 @@ public void generate() { this.add(AetherIIBlocks.UNDERSHALE_SLAB.get(), this::createSlabItemTable); this.dropSelf(AetherIIBlocks.UNDERSHALE_WALL.get()); + // Mossy Holystone + this.dropSelf(AetherIIBlocks.MOSSY_UNDERSHALE_STAIRS.get()); + this.add(AetherIIBlocks.MOSSY_UNDERSHALE_SLAB.get(), this::createSlabItemTable); + this.dropSelf(AetherIIBlocks.MOSSY_UNDERSHALE_WALL.get()); + // Undershale Bricks this.dropSelf(AetherIIBlocks.UNDERSHALE_BRICKS.get()); this.dropSelf(AetherIIBlocks.UNDERSHALE_BRICK_STAIRS.get()); @@ -773,6 +779,7 @@ public void generate() { .apply(CopyComponentsFunction.copyComponentsFromBlockEntity(LootContextParams.BLOCK_ENTITY) .include(AetherIIDataComponents.MURAL_SECTION.get()))) ); + this.dropSelf(AetherIIBlocks.THERAN_GLOBE.get()); // Infected Guardian Tree // Guardian Wood diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/loot/AetherIIChestLoot.java b/src/main/java/com/aetherteam/aetherii/data/generators/loot/AetherIIChestLoot.java index 4fce3abdb0..68f43e3ead 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/loot/AetherIIChestLoot.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/loot/AetherIIChestLoot.java @@ -1,6 +1,8 @@ package com.aetherteam.aetherii.data.generators.loot; +import com.aetherteam.aetherii.AetherIITags; import com.aetherteam.aetherii.block.AetherIIBlocks; +import com.aetherteam.aetherii.item.AetherIIMapDecorationTypes; import com.aetherteam.aetherii.effect.buildup.EffectBuildupPresets; import com.aetherteam.aetherii.entity.passive.Moa; import com.aetherteam.aetherii.item.AetherIIItems; @@ -17,9 +19,8 @@ import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.entries.LootItem; import net.minecraft.world.level.storage.loot.entries.NestedLootTable; -import net.minecraft.world.level.storage.loot.functions.SetComponentsFunction; -import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; -import net.minecraft.world.level.storage.loot.functions.SetItemDamageFunction; +import net.minecraft.world.level.storage.loot.functions.*; +import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; @@ -213,22 +214,23 @@ public void generate(BiConsumer, LootTable.Builder> build builder.accept(AetherIILoot.VASES_VERADEXIAN_RUINS, LootTable.lootTable() .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1.0F)) - .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(20).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(24).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) .add(LootItem.lootTableItem(AetherIIItems.SCATTERGLASS_SHARD).setWeight(16).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) .add(LootItem.lootTableItem(AetherIIBlocks.ICESTONE).setWeight(15).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) .add(LootItem.lootTableItem(Items.QUARTZ).setWeight(15).apply(SetComponentsFunction.setComponent(DataComponents.ITEM_NAME, Component.translatable("item.aether_ii.aether_quartz")))) .add(LootItem.lootTableItem(AetherIIItems.GOLDEN_AMBER).setWeight(12).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.CLOUDTWINE).setWeight(12)) - .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT).setWeight(12)) - .add(LootItem.lootTableItem(AetherIIItems.SHIFTING_GLASS).setWeight(11).apply(SetItemDamageFunction.setDamage(UniformGenerator.between(0.01F, 0.05F)))) + .add(LootItem.lootTableItem(AetherIIItems.SCATTERGLASS_BOLT).setWeight(12).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.CLOUDTWINE).setWeight(10)) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT).setWeight(10)) .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE).setWeight(10)) - .add(LootItem.lootTableItem(AetherIIItems.GUIDEBOOK_PAGE).setWeight(9)) .add(LootItem.lootTableItem(AetherIIBlocks.GOLDEN_AERCLOUD).setWeight(8)) + .add(LootItem.lootTableItem(AetherIIItems.SHIFTING_GLASS).setWeight(8).apply(SetItemDamageFunction.setDamage(UniformGenerator.between(0.01F, 0.05F)))) .add(LootItem.lootTableItem(AetherIIItems.GLINT_COIN).setWeight(8)) .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_ZANITE).setWeight(8)) - .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_CROSSBOW).setWeight(6)) - .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE_SHIELD).setWeight(6)) .add(LootItem.lootTableItem(AetherIIItems.SKYROOT_BUCKET).setWeight(6)) + .add(LootItem.lootTableItem(AetherIIItems.GUIDEBOOK_PAGE).setWeight(6)) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE_SHIELD).setWeight(3)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_CROSSBOW).setWeight(3)) .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_DUNGEONS_MUSIC_DISCS).setWeight(2)) .add(LootItem.lootTableItem(AetherIIItems.SHIFTING_GLASS).apply(SetItemDamageFunction.setDamage(UniformGenerator.between(0.02F, 0.1F)))) ) @@ -254,7 +256,61 @@ public void generate(BiConsumer, LootTable.Builder> build ) ); - builder.accept(AetherIILoot.CHESTS_VERADEXIAN_LIBRARY_VAULTS, LootTable.lootTable() + builder.accept(AetherIILoot.CHESTS_VERADEXIAN_LIBRARY_ABANDONED_BAGS, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(3.0F, 4.0F)) + .add(LootItem.lootTableItem(AetherIIBlocks.AMBROSIUM_TORCH).setWeight(6).apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(4).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.SCATTERGLASS_BOLT).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT_BUNDLE)) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT_HELMET)) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT_CHESTPLATE)) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT_LEGGINGS)) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT_BOOTS)) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT_GLOVES)) + .add(LootItem.lootTableItem(AetherIIItems.SKYROOT_SHIELD)) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 3.0F)) + .add(LootItem.lootTableItem(AetherIIItems.BLUEBERRY).setWeight(5).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.ORANGE).setWeight(4).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.WYNDBERRY).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.HEALING_STONE).apply(SetComponentsFunction.setComponent(AetherIIDataComponents.HEALING_STONE_CHARGES.get(), 1))) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 2.0F)) + .add(LootItem.lootTableItem(AetherIIItems.SCATTERGLASS_VIAL).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.WATER_VIAL).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.SKYROOT_BUCKET)) + .add(LootItem.lootTableItem(AetherIIItems.SKYROOT_WATER_BUCKET)) + ) + ); + builder.accept(AetherIILoot.CHESTS_VERADEXIAN_LIBRARY_COCKATRICE_NESTS, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(3.0F, 6.0F)) + .add(LootItem.lootTableItem(AetherIIItems.COCKATRICE_FEATHER).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.CLOUDTWINE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.SKYROOT_STICK).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.SKYROOT_TWIG).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 2.0F)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_SHORTSWORD).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_PIKE).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_HAMMER).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_CROSSBOW).setWeight(3)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_SHORTSWORD).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PIKE).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_HAMMER).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_CROSSBOW)) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 3.0F)) + .add(LootItem.lootTableItem(AetherIIItems.RAW_TAEGORE_MEAT).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_RIB_CUT).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.KIRRID_LOIN).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.PRISMALLARD_LEG).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + ) + ); + builder.accept(AetherIILoot.CHESTS_VERADEXIAN_LIBRARY_VAULTS_BASE, LootTable.lootTable() .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(3.0F, 4.0F)) .add(LootItem.lootTableItem(Items.BOOK).setWeight(10).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) .add(LootItem.lootTableItem(Items.PAPER).setWeight(10).apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 4.0F)))) @@ -285,6 +341,32 @@ public void generate(BiConsumer, LootTable.Builder> build ) ); + builder.accept(AetherIILoot.CHESTS_VERADEXIAN_LIBRARY_VAULTS, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_VERADEXIAN_LIBRARY_VAULTS_BASE)) + ) + + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(AetherIIItems.PAINTING_TEMPLATE_FAR) + .when(LootItemRandomChanceCondition.randomChance(0.15F)) + ) + ) + ); + + builder.accept(AetherIILoot.CHESTS_VERADEXIAN_LIBRARY_VAULTS_TREASURE, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_VERADEXIAN_LIBRARY_VAULTS_BASE)) + ) + + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(AetherIIBlocks.THERAN_GLOBE)) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(0.0F, 1.0F)) + .add(LootItem.lootTableItem(AetherIIItems.PAINTING_TEMPLATE_FAR)) + ) + ); + builder.accept(AetherIILoot.VASES_BREXALLEN_RUINS, LootTable.lootTable() .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1.0F)) .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(15).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) @@ -326,71 +408,289 @@ public void generate(BiConsumer, LootTable.Builder> build .add(LootItem.lootTableItem(AetherIIItems.GLINT_COIN).setWeight(10).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) .add(LootItem.lootTableItem(AetherIIItems.SHIFTING_GLASS).setWeight(5).apply(SetItemDamageFunction.setDamage(UniformGenerator.between(0.01F, 0.05F)))) .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PICKAXE).setWeight(3)) - .add(LootItem.lootTableItem(AetherIIItems.RESONANT_STONE).setWeight(3)) .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PENDANT).setWeight(2)) .add(LootItem.lootTableItem(AetherIIItems.GUIDEBOOK_PAGE).setWeight(2)) .add(LootItem.lootTableItem(AetherIIItems.SHIFTING_GLASS).apply(SetItemDamageFunction.setDamage(UniformGenerator.between(0.02F, 0.1F)))) .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_DUNGEONS_MUSIC_DISCS)) + .add(LootItem.lootTableItem(AetherIIItems.RESONANT_STONE)) ) ); builder.accept(AetherIILoot.VASES_UNDERCLOUD_MINESHAFT, LootTable.lootTable() .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1.0F)) - .add(LootItem.lootTableItem(AetherIIBlocks.AMBROSIUM_TORCH).setWeight(15).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(12).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) - .add(LootItem.lootTableItem(AetherIIBlocks.ICESTONE).setWeight(8).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_ZANITE).setWeight(8).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.CLOUDTWINE).setWeight(6).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.COCKATRICE_FEATHER).setWeight(6).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.SHIFTING_GLASS).setWeight(5).apply(SetItemDamageFunction.setDamage(UniformGenerator.between(0.01F, 0.05F)))) - .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT).setWeight(5).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.SWET_GEL).setWeight(5).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.SWET_JELLY).setWeight(4).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.BLUEBERRY).setWeight(4).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_GLINT).setWeight(4)) - .add(LootItem.lootTableItem(AetherIIItems.RESONANT_STONE).setWeight(3)) - .add(LootItem.lootTableItem(AetherIIItems.COLD_AERCLOUD_GLIDER).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIBlocks.AMBROSIUM_TORCH).setWeight(18).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(15).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.SATIVAL_BULB).setWeight(12).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BLUEBERRY).setWeight(12).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.ORANGE).setWeight(11).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.ICESTONE).setWeight(9).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.CLOUDTWINE).setWeight(9).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BRETTL_ROPE).setWeight(9).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT).setWeight(8).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_GLINT).setWeight(6)) + .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_ZANITE).setWeight(6).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.COLD_AERCLOUD_GLIDER).setWeight(3)) .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PICKAXE).setWeight(2)) .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PENDANT).setWeight(2)) - .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_DUNGEONS_MUSIC_DISCS)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_RARE)) ) ); builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_STORAGE)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_SUPPLIES)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_EQUIPMENT)) + ) + ); + builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_STORAGE, LootTable.lootTable() .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 3.0F)) - .add(LootItem.lootTableItem(AetherIIBlocks.AMBROSIUM_TORCH).setWeight(24).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(18).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) - .add(LootItem.lootTableItem(AetherIIBlocks.ICESTONE).setWeight(8).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_ZANITE).setWeight(6).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.SCATTERGLASS_SHARD).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.HOLYSTONE_ROCK).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(Items.QUARTZ).apply(SetComponentsFunction.setComponent(DataComponents.ITEM_NAME, Component.translatable("item.aether_ii.aether_quartz"))).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 2.0F)) + .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 6.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.ICESTONE).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_ZANITE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_GLINT)) ) .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 3.0F)) .add(LootItem.lootTableItem(AetherIIBlocks.UNDERSHALE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) .add(LootItem.lootTableItem(AetherIIBlocks.AGIOSITE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.ICHORITE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) .add(LootItem.lootTableItem(AetherIIBlocks.HOLYSTONE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) - .add(LootItem.lootTableItem(Items.QUARTZ).apply(SetComponentsFunction.setComponent(DataComponents.ITEM_NAME, Component.translatable("item.aether_ii.aether_quartz"))).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) ) + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_RARE) + .when(LootItemRandomChanceCondition.randomChance(0.15F)) + ) + ) + ); + builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_SUPPLIES, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 3.0F)) + .add(LootItem.lootTableItem(AetherIIItems.SATIVAL_BULB).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BLUEBERRY).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.ORANGE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.WYNDBERRY).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 3.0F)) + .add(LootItem.lootTableItem(AetherIIItems.BRETTL_ROPE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.CLOUDTWINE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(0.0F, 1.0F)) + .add(LootItem.lootTableItem(AetherIIItems.BANDAGE)) + .add(LootItem.lootTableItem(AetherIIItems.SPLINT)) + .add(LootItem.lootTableItem(AetherIIItems.ANTIVENOM_VIAL)) + ) + + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(2)) + .add(LootItem.lootTableItem(AetherIIBlocks.AMBROSIUM_TORCH).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 8.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.RUSTIC_ARKENIUM_LANTERN)) + .add(LootItem.lootTableItem(AetherIIBlocks.CLOUDWOOL_BEDROLL)) + ) + + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_RARE) + .when(LootItemRandomChanceCondition.randomChance(0.15F)) + ) + ) + ); + builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_EQUIPMENT, LootTable.lootTable() .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 2.0F)) - .add(LootItem.lootTableItem(AetherIIItems.CLOUDTWINE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.COCKATRICE_FEATHER).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.SWET_GEL).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE).setWeight(12).apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 6.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_SHORTSWORD).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_PIKE).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_HAMMER).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_GEMSTONE).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PICKAXE).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PENDANT)) + .add(LootItem.lootTableItem(AetherIIItems.ICESTONE_PENDANT)) ) .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) - .add(LootItem.lootTableItem(AetherIIItems.GLINT_COIN).setWeight(12).apply(SetItemCountFunction.setCount(UniformGenerator.between(0.0F, 3.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_PICKAXE).setWeight(3)) - .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PICKAXE).setWeight(3)) - .add(LootItem.lootTableItem(AetherIIItems.RESONANT_STONE).setWeight(2)) - .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PENDANT).setWeight(2)) - .add(LootItem.lootTableItem(AetherIIItems.SHIFTING_GLASS).setWeight(2).apply(SetItemDamageFunction.setDamage(UniformGenerator.between(0.01F, 0.05F)))) + .add(LootItem.lootTableItem(AetherIIItems.HEALING_STONE).setWeight(8).apply(SetComponentsFunction.setComponent(AetherIIDataComponents.HEALING_STONE_CHARGES.get(), 1))) + .add(LootItem.lootTableItem(AetherIIItems.SKYROOT_BUCKET).setWeight(8)) + .add(LootItem.lootTableItem(AetherIIItems.CLOUD_SKIFF).setWeight(8)) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT_BUNDLE).setWeight(6)) + .add(LootItem.lootTableItem(AetherIIItems.COLD_AERCLOUD_GLIDER).setWeight(4)) + .add(LootItem.lootTableItem(AetherIIItems.PURPLE_AERCLOUD_GLIDER).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.BLUE_AERCLOUD_GLIDER).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_GLOVES)) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 3.0F)) + .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.GOLDEN_AMBER).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.SWET_GEL).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + ) + + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(2)) + .add(LootItem.lootTableItem(AetherIIBlocks.AMBROSIUM_TORCH).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 8.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.RUSTIC_ARKENIUM_LANTERN)) + .add(LootItem.lootTableItem(AetherIIBlocks.CLOUDWOOL_BEDROLL)) + ) + + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_RARE) + .when(LootItemRandomChanceCondition.randomChance(0.15F)) + ) + ) + ); + builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_BRIDGES_BASE, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 4.0F)) + .add(LootItem.lootTableItem(AetherIIItems.GOLDEN_AMBER).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(Items.QUARTZ).setWeight(2).apply(SetComponentsFunction.setComponent(DataComponents.ITEM_NAME, Component.translatable("item.aether_ii.aether_quartz"))).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.SCATTERGLASS_SHARD).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 2.0F)) + .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 6.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.ICESTONE).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_ZANITE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.FOSSILIZED_GLINT)) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 2.0F)) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE).setWeight(12).apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 6.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_SHORTSWORD).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_PIKE).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_HAMMER).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_GEMSTONE).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PICKAXE).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PENDANT)) + .add(LootItem.lootTableItem(AetherIIItems.ICESTONE_PENDANT)) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 2.0F)) + .add(LootItem.lootTableItem(AetherIIItems.SWET_JELLY).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BLUEBERRY).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.ORANGE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.WYNDBERRY).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + ) + + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(AetherIIItems.HEALING_STONE).setWeight(8).apply(SetComponentsFunction.setComponent(AetherIIDataComponents.HEALING_STONE_CHARGES.get(), 1))) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT_BUNDLE).setWeight(6)) + .add(LootItem.lootTableItem(AetherIIItems.COLD_AERCLOUD_GLIDER).setWeight(4)) + .add(LootItem.lootTableItem(AetherIIItems.PURPLE_AERCLOUD_GLIDER).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.BLUE_AERCLOUD_GLIDER).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_GLOVES).setWeight(2)) + ) + ); + builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_BRIDGES, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_BRIDGES_BASE)) + ) + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_RARE) + .when(LootItemRandomChanceCondition.randomChance(0.2F)) + ) + ) + ); + builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_BRIDGES_TREASURE, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_BRIDGES_BASE)) + ) + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_RARE) + ) + ) + ); + builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_RARE, LootTable.lootTable() + .withPool( + LootPool.lootPool() + .setRolls(ConstantValue.exactly(1.0F)) + .add(LootItem.lootTableItem(AetherIIItems.SHIFTING_GLASS).setWeight(2).apply(SetItemDamageFunction.setDamage(UniformGenerator.between(0.01F, 0.05F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.IRRADIATED_DUST_BLOCK)) + .add(LootItem.lootTableItem(AetherIIItems.RESONANT_STONE)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_DUNGEONS_MUSIC_DISCS)) + .add(LootItem.lootTableItem(Items.MAP).apply( + ExplorationMapFunction.makeExplorationMap() + .setDestination(AetherIITags.Structures.ON_VERADEXIAN_LIBRARY_EXPLORER_MAPS) + .setMapDecoration(AetherIIMapDecorationTypes.VERADEXIAN_LIBRARY) + .setZoom((byte)2) + .setSkipKnownStructures(false) + ).apply(SetNameFunction.setName(Component.translatable("aether_ii.filled_map.veradexian_library"), SetNameFunction.Target.ITEM_NAME)) + ) + ) + ); + builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_ABANDONED_BAGS, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(3.0F, 4.0F)) + .add(LootItem.lootTableItem(AetherIIBlocks.AMBROSIUM_TORCH).setWeight(6).apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.AMBROSIUM_SHARD).setWeight(4).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.SCATTERGLASS_BOLT).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(3.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BEAST_PELT_BUNDLE)) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE_HELMET)) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE_CHESTPLATE)) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE_LEGGINGS)) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE_BOOTS)) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE_GLOVES)) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_PLATE_SHIELD)) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 3.0F)) + .add(LootItem.lootTableItem(AetherIIItems.SATIVAL_BULB).setWeight(5).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BLUEBERRY).setWeight(5).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.ORANGE).setWeight(4).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.WYNDBERRY).setWeight(3).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.HEALING_STONE).apply(SetComponentsFunction.setComponent(AetherIIDataComponents.HEALING_STONE_CHARGES.get(), 1))) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 2.0F)) + .add(LootItem.lootTableItem(AetherIIItems.SCATTERGLASS_VIAL).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.WATER_VIAL).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.VALKYRIE_TEA)) + .add(LootItem.lootTableItem(AetherIIItems.ANTIVENOM_VIAL)) + .add(LootItem.lootTableItem(AetherIIItems.SKYROOT_BUCKET)) .add(LootItem.lootTableItem(AetherIIItems.SKYROOT_WATER_BUCKET)) - .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_DUNGEONS_MUSIC_DISCS)) ) - .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(0.0F, 2.0F)) - .add(LootItem.lootTableItem(AetherIIItems.BLUEBERRY).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) - .add(LootItem.lootTableItem(AetherIIItems.SWET_JELLY).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 3.0F)))) + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_RARE) + .when(LootItemRandomChanceCondition.randomChance(0.05F)) + ) + ) + ); + builder.accept(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_COCKATRICE_NESTS, LootTable.lootTable() + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(3.0F, 6.0F)) + .add(LootItem.lootTableItem(AetherIIItems.COCKATRICE_FEATHER).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.CLOUDTWINE).setWeight(2).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.SKYROOT_STICK).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.SKYROOT_TWIG).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) + .add(LootItem.lootTableItem(AetherIIBlocks.HOLYSTONE_ROCK).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 2.0F)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_SHORTSWORD).setWeight(7)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_PIKE).setWeight(7)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_HAMMER).setWeight(7)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_PICKAXE).setWeight(7)) + .add(LootItem.lootTableItem(AetherIIItems.HOLYSTONE_CROSSBOW).setWeight(5)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_SHORTSWORD).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PIKE).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_HAMMER).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_PICKAXE).setWeight(2)) + .add(LootItem.lootTableItem(AetherIIItems.ZANITE_CROSSBOW)) + ) + + .withPool(LootPool.lootPool().setRolls(UniformGenerator.between(2.0F, 3.0F)) + .add(LootItem.lootTableItem(AetherIIItems.RAW_TAEGORE_MEAT).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.BURRUKAI_RIB_CUT).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.KIRRID_LOIN).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + .add(LootItem.lootTableItem(AetherIIItems.PRISMALLARD_LEG).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F)))) + ) + + .withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1)) + .add(NestedLootTable.lootTableReference(AetherIILoot.CHESTS_UNDERCLOUD_MINESHAFT_RARE) + .when(LootItemRandomChanceCondition.randomChance(0.05F)) + ) ) ); diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/models/AetherIIBlockModels.java b/src/main/java/com/aetherteam/aetherii/data/generators/models/AetherIIBlockModels.java index 1dc228df76..253935050d 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/models/AetherIIBlockModels.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/models/AetherIIBlockModels.java @@ -517,6 +517,7 @@ public void run() { this.createOutpostCampfire(); this.createMural(); this.createTrivialCube(AetherIIBlocks.MURAL.get()); + this.createTheranGlobe(AetherIIBlocks.THERAN_GLOBE.get(), AetherIIBlocks.GREATROOT_PLANKS.get()); this.createMeltingBlock(AetherIIBlocks.FROSTED_ICE.get(), Blocks.FROSTED_ICE, ModelTemplates.CUBE_ALL); this.createMeltingBlock(AetherIIBlocks.FROSTED_ARCTIC_ICE.get(), AetherIIBlocks.FROSTED_ARCTIC_ICE.get(), ModelTemplates.CUBE_ALL); diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/models/AetherIIItemModels.java b/src/main/java/com/aetherteam/aetherii/data/generators/models/AetherIIItemModels.java index 9b02637b1f..aa79aee379 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/models/AetherIIItemModels.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/models/AetherIIItemModels.java @@ -324,6 +324,7 @@ public void run() { this.generateFlatItem(AetherIIItems.CLOUD_SKIFF.get(), ModelTemplates.FLAT_ITEM); this.generateFlatItem(AetherIIItems.GLINT_COIN.get(), ModelTemplates.FLAT_ITEM); this.generateFlatItem(AetherIIItems.GUIDEBOOK_PAGE.get(), ModelTemplates.FLAT_ITEM); + this.generateFlatItem(AetherIIItems.PAINTING_TEMPLATE_FAR.get(), ModelTemplates.FLAT_ITEM); this.generatePortalFrameItem(AetherIIItems.AETHER_PORTAL_FRAME.get()); this.generateFlatItem(AetherIIItems.MURAL_ITEM.get(), ModelTemplates.FLAT_ITEM); this.generateFlatItem(AetherIIItems.BROKEN_ITEM.get(), ModelTemplates.FLAT_ITEM); diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIBiomeTagData.java b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIBiomeTagData.java index 9e7c0bc2fd..3f1e70d9e9 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIBiomeTagData.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIBiomeTagData.java @@ -182,13 +182,18 @@ public void addTags(HolderLookup.Provider provider) { HolyIslesBiomes.SHEER_TUNDRA ); this.tag(AetherIITags.Biomes.HAS_STRUCTURE_VERADEXIAN_LIBRARY_TEMPERATE).add( + HolyIslesBiomes.FLOURISHING_FIELD, HolyIslesBiomes.VERDANT_WOODS, HolyIslesBiomes.SHROUDED_FOREST, + HolyIslesBiomes.MAGNETIC_SCAR, + HolyIslesBiomes.TURQUOISE_FOREST, HolyIslesBiomes.GLISTENING_SWAMP, HolyIslesBiomes.VIOLET_HIGHWOODS ); this.tag(AetherIITags.Biomes.HAS_STRUCTURE_VERADEXIAN_LIBRARY_ARCTIC).add( - HolyIslesBiomes.ENDURING_WOODLAND + HolyIslesBiomes.FRIGID_SIERRA, + HolyIslesBiomes.ENDURING_WOODLAND, + HolyIslesBiomes.SHEER_TUNDRA ); this.tag(AetherIITags.Biomes.HAS_STRUCTURE_VERADEXIAN_AQUEDUCT).add( HolyIslesBiomes.SHIMMERING_BASIN diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIBlockTagData.java b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIBlockTagData.java index 3484821c96..304265f6d1 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIBlockTagData.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIBlockTagData.java @@ -145,6 +145,7 @@ protected TagAppender tag(TagKey blockKey, TagKey ite AetherIITags.Blocks.GUARDIAN_LOGS ); this.tag(AetherIITags.Blocks.MIMIC_CONTAINERS).add( + AetherIIBlocks.SKYROOT_CHEST.get(), AetherIIBlocks.SENTRY_CRATE.get() ); this.tag(AetherIITags.Blocks.ALLOWED_SKYROOT_BUCKET_PICKUP).add( @@ -253,6 +254,7 @@ protected TagAppender tag(TagKey blockKey, TagKey ite AetherIIBlocks.ARCTIC_SNOW_BLOCK.get(), AetherIIBlocks.MOSSY_HOLYSTONE.get(), AetherIIBlocks.IRRADIATED_HOLYSTONE.get(), + AetherIIBlocks.MOSSY_UNDERSHALE.get(), AetherIIBlocks.QUICKSOIL.get(), AetherIIBlocks.FERROSITE.get(), AetherIIBlocks.RUSTED_FERROSITE.get(), AetherIIBlocks.ARCTIC_PACKED_ICE.get() @@ -355,6 +357,7 @@ protected TagAppender tag(TagKey blockKey, TagKey ite AetherIIBlocks.COARSE_AETHER_DIRT.get(), AetherIIBlocks.SHIMMERING_SILT.get(), AetherIIBlocks.MOSSY_HOLYSTONE.get(), + AetherIIBlocks.MOSSY_UNDERSHALE.get(), AetherIIBlocks.FERROSITE_SAND.get(), AetherIIBlocks.FERROSITE_MUD.get() ); @@ -444,6 +447,9 @@ protected TagAppender tag(TagKey blockKey, TagKey ite ); this.tag(AetherIITags.Blocks.STRUCTURE_MOSS_REPLACEABLES).add( AetherIIBlocks.FADED_HOLYSTONE_BRICKS.get(), + AetherIIBlocks.FADED_HOLYSTONE_BRICK_STAIRS.get(), + AetherIIBlocks.FADED_HOLYSTONE_BRICK_SLAB.get(), + AetherIIBlocks.FADED_HOLYSTONE_BRICK_WALL.get(), AetherIIBlocks.UNDERSHALE_BRICKS.get(), AetherIIBlocks.UNDERSHALE_BRICK_STAIRS.get(), AetherIIBlocks.UNDERSHALE_BRICK_SLAB.get(), @@ -826,7 +832,8 @@ protected TagAppender tag(TagKey blockKey, TagKey ite AetherIIBlocks.SAGE_CHEST.get(), AetherIIBlocks.MAGNETIC_SHROOM_BLOCK.get(), AetherIIBlocks.SPOTTED_MAGNETIC_SHROOM_BLOCK.get(), - AetherIIBlocks.MAGNETIC_SHROOM_STEM.get() + AetherIIBlocks.MAGNETIC_SHROOM_STEM.get(), + AetherIIBlocks.THERAN_GLOBE.get() ); this.tag(BlockTags.MINEABLE_WITH_HOE).add( AetherIIBlocks.COLD_AERCLOUD.get(), @@ -890,7 +897,8 @@ protected TagAppender tag(TagKey blockKey, TagKey ite AetherIIBlocks.SHAYELINN_MOSS_CARPET.get(), AetherIIBlocks.AMBRELINN_MOSS_BLOCK.get(), AetherIIBlocks.AMBRELINN_MOSS_CARPET.get(), - AetherIIBlocks.CLOUDWOOL_ROOFING.get() + AetherIIBlocks.CLOUDWOOL_ROOFING.get(), + AetherIIBlocks.ANIMAL_STASH.get() ); this.tag(BlockTags.MINEABLE_WITH_PICKAXE).add( AetherIIBlocks.HOLYSTONE.get(), @@ -899,6 +907,7 @@ protected TagAppender tag(TagKey blockKey, TagKey ite AetherIIBlocks.IRRADIATED_HOLYSTONE.get(), AetherIIBlocks.IRRADIATED_DUST_BLOCK.get(), AetherIIBlocks.UNDERSHALE.get(), + AetherIIBlocks.MOSSY_UNDERSHALE.get(), AetherIIBlocks.UNSTABLE_UNDERSHALE.get(), AetherIIBlocks.AGIOSITE.get(), AetherIIBlocks.ICHORITE.get(), @@ -963,6 +972,9 @@ protected TagAppender tag(TagKey blockKey, TagKey ite AetherIIBlocks.UNDERSHALE_STAIRS.get(), AetherIIBlocks.UNDERSHALE_SLAB.get(), AetherIIBlocks.UNDERSHALE_WALL.get(), + AetherIIBlocks.MOSSY_UNDERSHALE_STAIRS.get(), + AetherIIBlocks.MOSSY_UNDERSHALE_SLAB.get(), + AetherIIBlocks.MOSSY_UNDERSHALE_WALL.get(), AetherIIBlocks.UNDERSHALE_BRICKS.get(), AetherIIBlocks.UNDERSHALE_BRICK_STAIRS.get(), AetherIIBlocks.UNDERSHALE_BRICK_SLAB.get(), diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIItemTagData.java b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIItemTagData.java index cd83213ce1..4e3e0696b9 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIItemTagData.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIItemTagData.java @@ -411,13 +411,13 @@ protected TagAppender tag(TagKey blockKey, TagKey ite AetherIIBlocks.CRUDE_SCATTERGLASS.asItem(), AetherIIBlocks.QUICKSOIL.asItem(), AetherIIBlocks.MOSSY_HOLYSTONE.asItem(), + AetherIIBlocks.MOSSY_UNDERSHALE.asItem(), AetherIIBlocks.FERROSITE_SAND.asItem(), AetherIIBlocks.FERROSITE.asItem(), AetherIIBlocks.RUSTED_FERROSITE.asItem(), AetherIIBlocks.ARCTIC_SNOW_BLOCK.asItem(), AetherIIBlocks.ARCTIC_ICE.asItem(), AetherIIBlocks.ARCTIC_PACKED_ICE.asItem(), - AetherIIBlocks.HOLYSTONE.asItem(), AetherIIBlocks.COLD_AERCLOUD.asItem(), AetherIIBlocks.BLUE_AERCLOUD.asItem(), AetherIIBlocks.GOLDEN_AERCLOUD.asItem(), diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIISoundEventTagData.java b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIISoundEventTagData.java index 0ff1d2bc69..81d2f22dd6 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIISoundEventTagData.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIISoundEventTagData.java @@ -36,7 +36,8 @@ protected void addTags(HolderLookup.Provider provider) { AetherIISoundEvents.MUSIC_AETHER_CAVES.getKey(), AetherIISoundEvents.MUSIC_AETHER_NIGHT.getKey(), AetherIISoundEvents.MUSIC_AETHER_SUNRISE.getKey(), - AetherIISoundEvents.MUSIC_AETHER_SUNSET.getKey() + AetherIISoundEvents.MUSIC_AETHER_SUNSET.getKey(), + AetherIISoundEvents.MUSIC_AETHER_MINESHAFT.getKey() ).addTags( AetherIITags.SoundEvents.BOSS_MUSIC ); diff --git a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIStructureTagData.java b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIStructureTagData.java index 0d12a9af92..9f56e756c3 100644 --- a/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIStructureTagData.java +++ b/src/main/java/com/aetherteam/aetherii/data/generators/tags/AetherIIStructureTagData.java @@ -35,7 +35,8 @@ public void addTags(HolderLookup.Provider provider) { this.tag(AetherIITags.Structures.SURFACE_RUINS).add( AetherIIStructures.VERADEXIAN_RUINS_TEMPERATE, AetherIIStructures.VERADEXIAN_RUINS_ARCTIC, - AetherIIStructures.VERADEXIAN_LIBRARY_TEMPERATE + AetherIIStructures.VERADEXIAN_LIBRARY_TEMPERATE, + AetherIIStructures.VERADEXIAN_LIBRARY_ARCTIC ); this.tag(AetherIITags.Structures.TREE_BLACKLIST_FILTER).addTags( @@ -60,5 +61,10 @@ public void addTags(HolderLookup.Provider provider) { this.tag(AetherIITags.Structures.AERCLOUD_BLACKLIST_FILTER).addTags( AetherIITags.Structures.DUNGEONS ); + + this.tag(AetherIITags.Structures.ON_VERADEXIAN_LIBRARY_EXPLORER_MAPS).add( + AetherIIStructures.VERADEXIAN_LIBRARY_TEMPERATE, + AetherIIStructures.VERADEXIAN_LIBRARY_ARCTIC + ); } } \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIBlockItemTagProvider.java b/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIBlockItemTagProvider.java index 31db871a62..b933fbf567 100644 --- a/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIBlockItemTagProvider.java +++ b/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIBlockItemTagProvider.java @@ -46,7 +46,8 @@ public void run() { AetherIIBlocks.IRRADIATED_HOLYSTONE.get() ); this.tag(AetherIITags.Blocks.UNDERSHALE, AetherIITags.Items.UNDERSHALE).add( - AetherIIBlocks.UNDERSHALE.get() + AetherIIBlocks.UNDERSHALE.get(), + AetherIIBlocks.MOSSY_UNDERSHALE.get() ); this.tag(AetherIITags.Blocks.ARCTIC_ICE, AetherIITags.Items.ARCTIC_ICE).add( AetherIIBlocks.ARCTIC_ICE.get(), diff --git a/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIBlockModelSubProvider.java b/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIBlockModelSubProvider.java index 2c3b486d7c..6540cb33b8 100644 --- a/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIBlockModelSubProvider.java +++ b/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIBlockModelSubProvider.java @@ -1368,6 +1368,14 @@ public void createMural() { // this.itemModelOutput.accept(AetherIIBlocks.MURAL.get().asItem(), new MuralItemModel.Unbaked(modelLocation)); } + public void createTheranGlobe(Block block, Block particle) { + this.createParticleOnlyBlock(block, particle); + Item item = block.asItem(); + Identifier resourceLocation = AetherIIModelTemplates.THERAN_GLOBE_INVENTORY.create(item, TextureMapping.particle(particle), this.modelOutput); + ItemModel.Unbaked unbaked = ItemModelUtils.specialModel(resourceLocation, new TheranGlobeSpecialRenderer.Unbaked()); + this.itemModelOutput.accept(item, unbaked); + } + public void createMeltingBlock(Block block, Block textureBlock, ModelTemplate modelTemplate) { this.blockStateOutput.accept(MultiVariantGenerator.dispatch(block) .with(PropertyDispatch.initial(BlockStateProperties.AGE_3) diff --git a/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIRecipeProvider.java b/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIRecipeProvider.java index d54539c768..c3a8048af7 100644 --- a/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIRecipeProvider.java +++ b/src/main/java/com/aetherteam/aetherii/data/providers/AetherIIRecipeProvider.java @@ -32,9 +32,7 @@ import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.util.random.WeightedList; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStackTemplate; -import net.minecraft.world.item.Items; +import net.minecraft.world.item.*; import net.minecraft.world.item.component.ChargedProjectiles; import net.minecraft.world.item.crafting.CookingBookCategory; import net.minecraft.world.item.crafting.DyeRecipe; diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/builders/models/AetherIIBlockFamilies.java b/src/main/java/com/aetherteam/aetherii/data/resources/builders/models/AetherIIBlockFamilies.java index 21fdbd5c27..fc6fcdd107 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/builders/models/AetherIIBlockFamilies.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/builders/models/AetherIIBlockFamilies.java @@ -88,6 +88,11 @@ public class AetherIIBlockFamilies { .slab(AetherIIBlocks.UNDERSHALE_SLAB.get()) .stairs(AetherIIBlocks.UNDERSHALE_STAIRS.get()) .getFamily(); + public static final BlockFamily MOSSY_UNDERSHALE = familyBuilder(AetherIIBlocks.MOSSY_UNDERSHALE.get()) + .wall(AetherIIBlocks.MOSSY_UNDERSHALE_WALL.get()) + .slab(AetherIIBlocks.MOSSY_UNDERSHALE_SLAB.get()) + .stairs(AetherIIBlocks.MOSSY_UNDERSHALE_STAIRS.get()) + .getFamily(); public static final BlockFamily UNDERSHALE_BRICKS = familyBuilder(AetherIIBlocks.UNDERSHALE_BRICKS.get()) .wall(AetherIIBlocks.UNDERSHALE_BRICK_WALL.get()) .slab(AetherIIBlocks.UNDERSHALE_BRICK_SLAB.get()) diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/builders/models/AetherIIModelTemplates.java b/src/main/java/com/aetherteam/aetherii/data/resources/builders/models/AetherIIModelTemplates.java index f47b5f7635..86fe1da16c 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/builders/models/AetherIIModelTemplates.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/builders/models/AetherIIModelTemplates.java @@ -324,6 +324,7 @@ public class AetherIIModelTemplates { public static final ModelTemplate HAMMER_OF_DEMOLITION_HEAD_READY = createItem("template_hammer_of_demolition_head_ready", "_head_ready", TextureSlot.TEXTURE, AetherIITextureSlots.EMISSIVE); public static final ModelTemplate HAMMER_OF_DEMOLITION_HEAD_DEPLOYED = createItem("template_hammer_of_demolition_head_deployed", "_head_deployed", TextureSlot.TEXTURE, AetherIITextureSlots.EMISSIVE); public static final ModelTemplate ALKAHEST_PURIFIER_INVENTORY = createItem("template_alkahest_purifier", TextureSlot.PARTICLE); + public static final ModelTemplate THERAN_GLOBE_INVENTORY = createItem("template_theran_globe", TextureSlot.PARTICLE); public static final ModelTemplate SENTRY_SPAWNER_INVENTORY = createItem("template_sentry_spawner", TextureSlot.PARTICLE); public static final ModelTemplate ABANDONED_BAG_INVENTORY = createItem("template_abandoned_bag", TextureSlot.PARTICLE); public static final ModelTemplate FUNGAL_CACHE_INVENTORY = createItem("template_fungal_cache", TextureSlot.PARTICLE); diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/builders/worldgen/AetherIIDensityFunctionBuilders.java b/src/main/java/com/aetherteam/aetherii/data/resources/builders/worldgen/AetherIIDensityFunctionBuilders.java index d35d1155f9..7428a729ab 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/builders/worldgen/AetherIIDensityFunctionBuilders.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/builders/worldgen/AetherIIDensityFunctionBuilders.java @@ -85,9 +85,11 @@ public class AetherIIDensityFunctionBuilders { public static final ResourceKey CLOUDBED_NOISE = createKey("holy_isles/cloudbed/noise"); public static final ResourceKey CLOUDBED_Y_OFFSET = createKey("holy_isles/cloudbed/y_offset"); - public static final ResourceKey DUNGEONS_INFECTED_BLOCKS = createKey("holy_isles/dungeons/infected_blocks"); + public static final ResourceKey STRUCTURES_DECAY = createKey("holy_isles/structures/decay"); + public static final ResourceKey STRUCTURES_DECAY_REDUCED = createKey("holy_isles/structures/decay_reduced"); + public static final ResourceKey STRUCTURES_INFECTED_BLOCKS = createKey("holy_isles/structures/infected_blocks"); - public static final ResourceKey DUNGEONS_STRUCTURE_COVER = createKey("holy_isles/dungeons/structure_cover"); + public static final ResourceKey STRUCTURES_STRUCTURE_COVER = createKey("holy_isles/structures/structure_cover"); private static ResourceKey createKey(String name) { return ResourceKey.create(Registries.DENSITY_FUNCTION, Identifier.fromNamespaceAndPath(AetherII.MODID, name)); diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIDensityFunctions.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIDensityFunctions.java index 16665cbea8..7ad40fcee4 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIDensityFunctions.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIDensityFunctions.java @@ -113,7 +113,9 @@ public static void bootstrap(BootstrapContext context) { context.register(CLOUDBED_NOISE, DensityFunctions.add(DensityFunctions.mul(new PerlinNoiseFunction(new NormalNoise.NoiseParameters(0, 1, 1, 1, 1, 1, 1), 0.005D, 0.0D, 42), DensityFunctions.constant(1.5D)), DensityFunctions.constant(0.1D))); context.register(CLOUDBED_Y_OFFSET, DensityFunctions.mul(new PerlinNoiseFunction(new NormalNoise.NoiseParameters(0, 1, 1), 0.001D, 0.0D, 95), DensityFunctions.constant(1.5D))); - context.register(DUNGEONS_INFECTED_BLOCKS, DensityFunctions.add(new PerlinNoiseFunction(new NormalNoise.NoiseParameters(-4, 0.75F, 1.0, 0.75, 0.0, 0.0), 1.0D, 1.0D, 1000), DensityFunctions.constant(-0.15D))); - context.register(DUNGEONS_STRUCTURE_COVER, DensityFunctions.add(new PerlinNoiseFunction(new NormalNoise.NoiseParameters(-3, 0.75F, 1.0, 0.75, 0.0, 0.0), 1.0D, 1.0D, 2000), DensityFunctions.constant(0.15D))); + context.register(STRUCTURES_DECAY, DensityFunctions.add(new PerlinNoiseFunction(new NormalNoise.NoiseParameters(-3, 0.75F, 1.0, 0.75, 0.0, 0.0, 0.0, 0.0), 1.5D, 0.75D, 500), DensityFunctions.constant(-0.1D))); + context.register(STRUCTURES_DECAY_REDUCED, DensityFunctions.add(new PerlinNoiseFunction(new NormalNoise.NoiseParameters(-3, 0.75F, 1.0, 0.75, 0.0, 0.0, 0.0, 0.0), 1.5D, 0.75D, 500), DensityFunctions.constant(-0.15D))); + context.register(STRUCTURES_INFECTED_BLOCKS, DensityFunctions.add(new PerlinNoiseFunction(new NormalNoise.NoiseParameters(-4, 0.75F, 1.0, 0.75, 0.0, 0.0), 1.0D, 1.0D, 1000), DensityFunctions.constant(-0.15D))); + context.register(STRUCTURES_STRUCTURE_COVER, DensityFunctions.add(new PerlinNoiseFunction(new NormalNoise.NoiseParameters(-3, 0.75F, 1.0, 0.75, 0.0, 0.0), 1.0D, 1.0D, 2000), DensityFunctions.constant(0.15D))); } } \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIPaintingVariants.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIPaintingVariants.java new file mode 100644 index 0000000000..78220b457a --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIPaintingVariants.java @@ -0,0 +1,43 @@ +package com.aetherteam.aetherii.data.resources.registries; + +import com.aetherteam.aetherii.AetherII; +import net.minecraft.ChatFormatting; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstrapContext; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.decoration.painting.PaintingVariant; + +import java.util.Optional; + +public class AetherIIPaintingVariants { + public static final ResourceKey FAR = create("far"); + + public static void bootstrap(BootstrapContext context) { + register(context, FAR, 4, 4); + } + + private static void register(BootstrapContext context, ResourceKey id, int width, int height) { + register(context, id, width, height, true); + } + + private static void register(BootstrapContext context, ResourceKey id, int width, int height, boolean hasAuthor) { + context.register( + id, + new PaintingVariant( + width, + height, + id.identifier(), + Optional.of(Component.translatable(id.identifier().toLanguageKey("painting", "title")).withStyle(ChatFormatting.YELLOW)), + hasAuthor + ? Optional.of(Component.translatable(id.identifier().toLanguageKey("painting", "author")).withStyle(ChatFormatting.GRAY)) + : Optional.empty() + ) + ); + } + + private static ResourceKey create(String name) { + return ResourceKey.create(Registries.PAINTING_VARIANT, Identifier.fromNamespaceAndPath(AetherII.MODID, name)); + } +} diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIProcessorLists.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIProcessorLists.java index ad2b824563..38c4417542 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIProcessorLists.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIProcessorLists.java @@ -6,6 +6,7 @@ import com.aetherteam.aetherii.block.natural.ValkyrieSproutBlock; import com.aetherteam.aetherii.world.structure.piece.sentry.SentryRuinsPiece; import com.aetherteam.aetherii.world.structure.processor.*; +import com.aetherteam.aetherii.world.structure.processor.ruletest.BlockIgnoreTest; import com.google.common.collect.ImmutableList; import net.minecraft.core.HolderGetter; import net.minecraft.core.registries.Registries; @@ -22,12 +23,15 @@ public class AetherIIProcessorLists { public static final ResourceKey CAMP = createKey("camp"); public static final ResourceKey VERADEXIAN_RUINS_TEMPERATE = createKey("veradexian_ruins_temperate"); public static final ResourceKey VERADEXIAN_RUINS_ARCTIC = createKey("veradexian_ruins_arctic"); - public static final ResourceKey VERADEXIAN_LIBRARY_TEMPERATE = createKey("veradexian_library_temperate"); - public static final ResourceKey VERADEXIAN_LIBRARY_ARCTIC = createKey("veradexian_library_arctic"); + public static final ResourceKey VERADEXIAN_LIBRARY_ENTRANCE = createKey("veradexian_library_entrance"); + public static final ResourceKey VERADEXIAN_LIBRARY = createKey("veradexian_library"); + public static final ResourceKey VERADEXIAN_LIBRARY_VAULTS = createKey("veradexian_library_vaults"); public static final ResourceKey VERADEXIAN_AQUEDUCT = createKey("veradexian_aqueduct"); public static final ResourceKey BREXALLEN_RUINS = createKey("brexallen_ruins"); public static final ResourceKey BREXALLEN_RUINS_CENTER = createKey("brexallen_ruins_center"); - public static final ResourceKey UNDERCLOUD_MINESHAFT = createKey("undercloud_mineshaft"); + public static final ResourceKey UNDERCLOUD_MINESHAFT_HUB = createKey("undercloud_mineshaft_hub"); + public static final ResourceKey UNDERCLOUD_MINESHAFT_BRIDGE = createKey("undercloud_mineshaft_bridge"); + public static final ResourceKey UNDERCLOUD_MINESHAFT_CORRIDOR = createKey("undercloud_mineshaft_corridor"); public static final ResourceKey ANCIENT_HENGE = createKey("ancient_henge"); public static final ResourceKey IRRADIATED_BUNKER_EXTERIOR = createKey("irradiated_bunker_exterior"); public static final ResourceKey SENTRY_RUINS_ROOM = createKey("sentry_ruins_room"); @@ -63,34 +67,41 @@ public static void bootstrap(BootstrapContext context) { )), new ShayelinnMossProcessor() )); - register(context, VERADEXIAN_LIBRARY_TEMPERATE, ImmutableList.of( + register(context, VERADEXIAN_LIBRARY_ENTRANCE, ImmutableList.of( new RuleProcessor(ImmutableList.of( - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.VERADEXIAN_VASE.get(), 0.65F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.RUSTIC_ARKENIUM_LANTERN.get(), 0.5F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.HOLYSTONE_VASE.get(), 0.5F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.AETHER_BUSH.get(), 0.2F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.BRYALINN_MOSS_BLOCK.get().defaultBlockState()), new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.AETHER_BUSH.get(), 0.4F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.SKYROOT_CHEST.get(), 0.25F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()) - )) + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.ARCTIC_PACKED_ICE.get(), 0.2F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.ARCTIC_ICE.get().defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.ARCTIC_PACKED_ICE.get(), 0.25F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()) + )), + new DensityFunctionDegradationProcessor(AetherIIDensityFunctions.getFunction(density, AetherIIDensityFunctions.STRUCTURES_DECAY)) )); - register(context, VERADEXIAN_LIBRARY_ARCTIC, ImmutableList.of( + register(context, VERADEXIAN_LIBRARY, ImmutableList.of( new RuleProcessor(ImmutableList.of( - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.VERADEXIAN_VASE.get(), 0.65F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.RUSTIC_ARKENIUM_LANTERN.get(), 0.5F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.AETHER_BUSH.get(), 0.4F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.SKYROOT_CHEST.get(), 0.25F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()) + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.HOLYSTONE_VASE.get(), 0.65F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.ABANDONED_BAG.get(), 0.3F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.AETHER_BUSH.get(), 0.2F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.BRYALINN_MOSS_BLOCK.get().defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.AETHER_BUSH.get(), 0.5F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.ARCTIC_PACKED_ICE.get(), 0.2F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.ARCTIC_ICE.get().defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.ARCTIC_PACKED_ICE.get(), 0.25F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()) )), - new ShayelinnMossProcessor() + new MimicContainerProcessor(0.375) //todo: skyroot mimics + )); + register(context, VERADEXIAN_LIBRARY_VAULTS, ImmutableList.of( + new RuleProcessor(ImmutableList.of( + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.HOLYSTONE_VASE.get(), 0.35F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.ABANDONED_BAG.get(), 0.3F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()) + )) )); register(context, VERADEXIAN_AQUEDUCT, ImmutableList.of( new RuleProcessor(ImmutableList.of( - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.VERADEXIAN_VASE.get(), 0.2F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new BlockMatchTest(AetherIIBlocks.COLD_AERCLOUD.get()), new TagMatchTest(AetherIITags.Blocks.AETHER_CARVER_REPLACEABLES), AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), - new ProcessorRule(new BlockMatchTest(AetherIIBlocks.COLD_AERCLOUD.get()), new BlockMatchTest(Blocks.WATER), Blocks.WATER.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.COLD_AERCLOUD.get(), 0.5F), new BlockMatchTest(Blocks.AIR), Blocks.AIR.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get(), 0.5F), new BlockMatchTest(Blocks.AIR), Blocks.AIR.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get(), 0.5F), new BlockMatchTest(Blocks.WATER), Blocks.WATER.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get(), 0.3F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.HOLYSTONE.get().defaultBlockState()) + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.BLUE_CLOUDWOOL.get()), new BlockMatchTest(Blocks.WATER), AetherIIBlocks.FADED_HOLYSTONE_BRICKS.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.BLUE_CLOUDWOOL.get()), new BlockMatchTest(Blocks.AIR), Blocks.AIR.defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.BLUE_CLOUDWOOL.get()), new BlockMatchTest(AetherIIBlocks.COLD_AERCLOUD.get()), AetherIIBlocks.COLD_AERCLOUD.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.BLUE_CLOUDWOOL.get()), AlwaysTrueTest.INSTANCE, AetherIIBlocks.HOLYSTONE.get().defaultBlockState()) )), - new ShayelinnMossProcessor() + new DensityFunctionDegradationProcessor(AetherIIDensityFunctions.getFunction(density, AetherIIDensityFunctions.STRUCTURES_DECAY)) )); register(context, BREXALLEN_RUINS, ImmutableList.of( @@ -108,19 +119,42 @@ public static void bootstrap(BootstrapContext context) { )) )); - register(context, UNDERCLOUD_MINESHAFT, ImmutableList.of( + register(context, UNDERCLOUD_MINESHAFT_HUB, ImmutableList.of( + new RuleProcessor(ImmutableList.of( + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.HOLYSTONE_VASE.get(), 0.5F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()) + )) + )); + register(context, UNDERCLOUD_MINESHAFT_BRIDGE, ImmutableList.of( + new RuleProcessor(ImmutableList.of( + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.HOLYSTONE_VASE.get(), 0.5F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.YELLOW_CLOUDWOOL.get()), new BlockIgnoreTest(Blocks.AIR), AetherIIBlocks.FADED_HOLYSTONE_BASE_PILLAR.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.ORANGE_CLOUDWOOL.get()), new BlockIgnoreTest(Blocks.AIR), AetherIIBlocks.FADED_HOLYSTONE_PILLAR.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.RED_CLOUDWOOL.get()), new BlockIgnoreTest(Blocks.AIR), AetherIIBlocks.FADED_HOLYSTONE_CAPSTONE_PILLAR.get().defaultBlockState()), + new ProcessorRule(new TagMatchTest(AetherIITags.Blocks.CLOUDWOOL), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()) + )), + new MimicContainerProcessor(0.3), //todo: skyroot mimics + new DensityFunctionDegradationProcessor(AetherIIDensityFunctions.getFunction(density, AetherIIDensityFunctions.STRUCTURES_DECAY_REDUCED)) + )); + register(context, UNDERCLOUD_MINESHAFT_CORRIDOR, ImmutableList.of( new RuleProcessor(ImmutableList.of( - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.HOLYSTONE_VASE.get(), 0.25F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.SKYROOT_CHEST.get(), 0.75F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.AMBROSIUM_WALL_TORCH.get(), 0.95F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new BlockMatchTest(AetherIIBlocks.SKYROOT_PLANKS.get()), new BlockMatchTest(AetherIIBlocks.HOLYSTONE.get()), AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), - new ProcessorRule(new BlockMatchTest(AetherIIBlocks.SKYROOT_PLANKS.get()), new BlockMatchTest(AetherIIBlocks.UNDERSHALE.get()), AetherIIBlocks.UNDERSHALE.get().defaultBlockState()), - new ProcessorRule(new BlockMatchTest(AetherIIBlocks.SKYROOT_LOG.get()), new BlockMatchTest(AetherIIBlocks.HOLYSTONE.get()), AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), - new ProcessorRule(new BlockMatchTest(AetherIIBlocks.SKYROOT_LOG.get()), new BlockMatchTest(AetherIIBlocks.UNDERSHALE.get()), AetherIIBlocks.UNDERSHALE.get().defaultBlockState()), - new ProcessorRule(new BlockMatchTest(AetherIIBlocks.SKYROOT_TRUNK.get()), new BlockMatchTest(AetherIIBlocks.HOLYSTONE.get()), AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), - new ProcessorRule(new BlockMatchTest(AetherIIBlocks.SKYROOT_TRUNK.get()), new BlockMatchTest(AetherIIBlocks.UNDERSHALE.get()), AetherIIBlocks.UNDERSHALE.get().defaultBlockState()) + new ProcessorRule(AlwaysTrueTest.INSTANCE, new BlockMatchTest(Blocks.AIR), Blocks.AIR.defaultBlockState()), + new ProcessorRule(AlwaysTrueTest.INSTANCE, new BlockMatchTest(AetherIIBlocks.HESTVEIL.get()), AetherIIBlocks.HESTVEIL.get().defaultBlockState()), + new ProcessorRule(AlwaysTrueTest.INSTANCE, new BlockMatchTest(AetherIIBlocks.COLD_AERCLOUD.get()), AetherIIBlocks.COLD_AERCLOUD.get().defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.HOLYSTONE_VASE.get(), 0.65F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.SKYROOT_CHEST.get(), 0.9375F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.SKYROOT_BARREL.get(), 0.375F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.SKYROOT_CRAFTING_TABLE.get().defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.ABANDONED_BAG.get(), 0.5F), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get(), 0.65F), new BlockMatchTest(AetherIIBlocks.HOLYSTONE.get()), AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get(), 0.35F), new BlockMatchTest(AetherIIBlocks.UNDERSHALE.get()), AetherIIBlocks.MOSSY_UNDERSHALE.get().defaultBlockState()),//, + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get()), new BlockMatchTest(AetherIIBlocks.UNDERSHALE.get()), AetherIIBlocks.UNDERSHALE.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.UNSTABLE_HOLYSTONE.get()), new BlockMatchTest(AetherIIBlocks.UNDERSHALE.get()), AetherIIBlocks.UNSTABLE_UNDERSHALE.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get()), new BlockMatchTest(AetherIIBlocks.AGIOSITE.get()), AetherIIBlocks.AGIOSITE.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get()), new BlockMatchTest(AetherIIBlocks.ICHORITE.get()), AetherIIBlocks.ICHORITE.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get()), new BlockMatchTest(AetherIIBlocks.FERROSITE.get()), AetherIIBlocks.FERROSITE.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get()), new BlockMatchTest(AetherIIBlocks.RUSTED_FERROSITE.get()), AetherIIBlocks.RUSTED_FERROSITE.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.MOSSY_HOLYSTONE.get()), new BlockMatchTest(AetherIIBlocks.ARCTIC_PACKED_ICE.get()), AetherIIBlocks.ARCTIC_PACKED_ICE.get().defaultBlockState()) )), - new RemoveInAirProcessor() + new MimicContainerProcessor(0.35) //todo: skyroot mimics )); register(context, ANCIENT_HENGE, ImmutableList.of( @@ -131,7 +165,7 @@ public static void bootstrap(BootstrapContext context) { new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.YELLOW_CLOUDWOOL.get(), 0.5F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), new ProcessorRule(new BlockMatchTest(AetherIIBlocks.RED_CLOUDWOOL.get()), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), new ProcessorRule(new BlockMatchTest(AetherIIBlocks.BLUE_CLOUDWOOL.get()), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), - new ProcessorRule(new BlockMatchTest(AetherIIBlocks.YELLOW_CLOUDWOOL.get()), AlwaysTrueTest.INSTANCE, AetherIIBlocks.FERROSITE.get().defaultBlockState()), + new ProcessorRule(new BlockMatchTest(AetherIIBlocks.YELLOW_CLOUDWOOL.get()), AlwaysTrueTest.INSTANCE, Blocks.AIR.defaultBlockState()), new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.AETHER_GRASS_BLOCK.get(), 0.2F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.AETHER_GRASS_BLOCK.get(), 0.15F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.MOSSY_HOLYSTONE.get().defaultBlockState()) )) @@ -148,13 +182,13 @@ public static void bootstrap(BootstrapContext context) { SentryRuinsPiece.CAVE_REPLACEABLE, SentryRuinsPiece.SENTRY_STONE, SentryRuinsPiece.ROOM_DECORATION_RANDOMIZATION, - MimicContainerProcessor.INSTANCE + new MimicContainerProcessor(0.3) )); register(context, SENTRY_RUINS_STAIRCASE, List.of( SentryRuinsPiece.CAVE_REPLACEABLE, SentryRuinsPiece.STAIRCASE_EXPOSED, SentryRuinsPiece.SENTRY_STONE_REDUCED, - MimicContainerProcessor.INSTANCE + new MimicContainerProcessor(0.3) )); register(context, SENTRY_RUINS_BOSS_ROOM, List.of( SentryRuinsPiece.SENTRY_STONE_REDUCED, @@ -164,7 +198,7 @@ public static void bootstrap(BootstrapContext context) { register(context, INFECTED_GUARDIAN_TREE, ImmutableList.of( - new DensityFunctionProcessor(AetherIIBlocks.GUARDIAN_WOOD.get().defaultBlockState(), AetherIIBlocks.INFECTED_WOOD.get().defaultBlockState(), AetherIIDensityFunctions.getFunction(density, AetherIIDensityFunctions.DUNGEONS_INFECTED_BLOCKS), true), + new DensityFunctionProcessor(AetherIIBlocks.GUARDIAN_WOOD.get().defaultBlockState(), AetherIIBlocks.INFECTED_WOOD.get().defaultBlockState(), AetherIIDensityFunctions.getFunction(density, AetherIIDensityFunctions.STRUCTURES_INFECTED_BLOCKS), true), new RuleProcessor(ImmutableList.of( new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.GUARDIAN_ROOTS.get(), 0.025F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.LUCENT_GUARDIAN_ROOTS.get().defaultBlockState()), new ProcessorRule(new RandomBlockMatchTest(AetherIIBlocks.GUARDIAN_ROOTS.get(), 0.01F), AlwaysTrueTest.INSTANCE, AetherIIBlocks.GUARDIAN_LAMP.get().defaultBlockState()) diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIStructureSets.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIStructureSets.java index 74eb5ee7b2..91e5bc95ff 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIStructureSets.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIStructureSets.java @@ -21,8 +21,8 @@ public class AetherIIStructureSets { public static final ResourceKey OUTPOSTS = createKey("outposts"); public static final ResourceKey ANIMAL_DENS = createKey("animal_dens"); public static final ResourceKey AETHER_SURFACE_STRUCTURES = createKey("aether_surface_structures"); - public static final ResourceKey AETHER_SURFACE_RUINS = createKey("aether_surface_ruins"); - public static final ResourceKey AETHER_UNDERGROUND_RUINS = createKey("aether_underground_ruins"); + public static final ResourceKey VERADEXIAN_LIBRARIES = createKey("veradexian_libraries"); + public static final ResourceKey BREXALLEN_RUINS = createKey("brexallen_ruins"); public static final ResourceKey AETHER_UNDERGROUND_COMPLEXES = createKey("aether_underground_complexes"); public static final ResourceKey AQUEDUCTS = createKey("aqueducts"); public static final ResourceKey IRRADIATED_REMNANTS = createKey("irradiated_remnants"); @@ -39,7 +39,7 @@ public static void bootstrap(BootstrapContext context) { HolderGetter structures = context.lookup(Registries.STRUCTURE); Holder.Reference outposts = context.register(OUTPOSTS, new StructureSet(structures.getOrThrow(AetherIIStructures.OUTPOST), - new RandomSpreadStructurePlacement(28, 18, RandomSpreadType.LINEAR, 2738116))); + new RandomSpreadStructurePlacement(24, 16, RandomSpreadType.LINEAR, 2738116))); context.register(ANIMAL_DENS, new StructureSet(List.of( StructureSet.entry(structures.getOrThrow(AetherIIStructures.ANIMAL_DEN))), @@ -50,20 +50,20 @@ public static void bootstrap(BootstrapContext context) { StructureSet.entry(structures.getOrThrow(AetherIIStructures.CAMP_HIGHFIELDS), 3), StructureSet.entry(structures.getOrThrow(AetherIIStructures.CAMP_MAGNETIC), 3), StructureSet.entry(structures.getOrThrow(AetherIIStructures.CAMP_ARCTIC), 3), - StructureSet.entry(structures.getOrThrow(AetherIIStructures.WATCHTOWER), 2)), - new RandomSpreadStructurePlacement(Vec3i.ZERO, StructurePlacement.FrequencyReductionMethod.LEGACY_TYPE_1, 1.0F, 1147092, Optional.of(new StructurePlacement.ExclusionZone(outposts, 8)), 18, 8, RandomSpreadType.LINEAR)) - ); - - context.register(AETHER_SURFACE_RUINS, new StructureSet(List.of( + StructureSet.entry(structures.getOrThrow(AetherIIStructures.WATCHTOWER), 2), StructureSet.entry(structures.getOrThrow(AetherIIStructures.VERADEXIAN_RUINS_TEMPERATE), 3), StructureSet.entry(structures.getOrThrow(AetherIIStructures.VERADEXIAN_RUINS_ARCTIC), 3), - StructureSet.entry(structures.getOrThrow(AetherIIStructures.ANCIENT_HENGE), 4), + StructureSet.entry(structures.getOrThrow(AetherIIStructures.ANCIENT_HENGE), 4)), + new RandomSpreadStructurePlacement(Vec3i.ZERO, StructurePlacement.FrequencyReductionMethod.LEGACY_TYPE_1, 1.0F, 1147092, Optional.of(new StructurePlacement.ExclusionZone(outposts, 8)), 14, 7, RandomSpreadType.LINEAR)) + ); + + context.register(VERADEXIAN_LIBRARIES, new StructureSet(List.of( StructureSet.entry(structures.getOrThrow(AetherIIStructures.VERADEXIAN_LIBRARY_TEMPERATE), 2), StructureSet.entry(structures.getOrThrow(AetherIIStructures.VERADEXIAN_LIBRARY_ARCTIC), 2)), - new RandomSpreadStructurePlacement(Vec3i.ZERO, StructurePlacement.FrequencyReductionMethod.LEGACY_TYPE_2, 0.75F, 2038911, Optional.of(new StructurePlacement.ExclusionZone(outposts, 6)), 14, 8, RandomSpreadType.LINEAR)) + new RandomSpreadStructurePlacement(Vec3i.ZERO, StructurePlacement.FrequencyReductionMethod.LEGACY_TYPE_2, 1.0F, 2038911, Optional.of(new StructurePlacement.ExclusionZone(outposts, 6)), 28, 14, RandomSpreadType.LINEAR)) ); - context.register(AETHER_UNDERGROUND_RUINS, new StructureSet(List.of( + context.register(BREXALLEN_RUINS, new StructureSet(List.of( StructureSet.entry(structures.getOrThrow(AetherIIStructures.BREXALLEN_RUINS))), new RandomSpreadStructurePlacement(Vec3i.ZERO, StructurePlacement.FrequencyReductionMethod.DEFAULT, 1.0F, 7881032, Optional.empty(), 4, 2, RandomSpreadType.LINEAR)) ); @@ -74,7 +74,7 @@ public static void bootstrap(BootstrapContext context) { ); Holder.Reference sentryRuins = context.register(AETHER_UNDERGROUND_COMPLEXES, new StructureSet(List.of( - StructureSet.entry(structures.getOrThrow(AetherIIStructures.SENTRY_RUINS), 2), + StructureSet.entry(structures.getOrThrow(AetherIIStructures.SENTRY_RUINS), 1), StructureSet.entry(structures.getOrThrow(AetherIIStructures.UNDERCLOUD_MINESHAFT), 3)), new RandomSpreadStructurePlacement(Vec3i.ZERO, StructurePlacement.FrequencyReductionMethod.DEFAULT, 1.0F, 32146754, Optional.empty(), 12, 6, RandomSpreadType.TRIANGULAR)) ); diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIStructures.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIStructures.java index a3ccf5745f..1d3c6fee31 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIStructures.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/AetherIIStructures.java @@ -59,8 +59,8 @@ public static void bootstrap(BootstrapContext context) { HolderGetter processors = context.lookup(Registries.PROCESSOR_LIST); context.register(OUTPOST, new AetherJigsawStructure( - AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_OUTPOST), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.BEARD_THIN), - templatePools.getOrThrow(OutpostPools.OUTPOST), Optional.empty(), 3, ConstantHeight.of(VerticalAnchor.absolute(-1)), Optional.of(Heightmap.Types.WORLD_SURFACE_WG), new JigsawStructure.MaxDistance(32), 128, 256, false, List.of(), DimensionPadding.ZERO, LiquidSettings.IGNORE_WATERLOGGING)); + AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_OUTPOST), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.NONE), + templatePools.getOrThrow(OutpostPools.ENTRANCE_PEDESTAL), Optional.empty(), 3, ConstantHeight.of(VerticalAnchor.absolute(-1)), Optional.of(Heightmap.Types.WORLD_SURFACE_WG), new JigsawStructure.MaxDistance(32), 128, 256, false, List.of(), DimensionPadding.ZERO, LiquidSettings.IGNORE_WATERLOGGING)); context.register(CAMP_HIGHFIELDS, new AetherJigsawStructure( AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_CAMP_HIGHFIELDS), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.BEARD_THIN), @@ -87,14 +87,14 @@ public static void bootstrap(BootstrapContext context) { AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_VERADEXIAN_RUINS_ARCTIC), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.BEARD_THIN), templatePools.getOrThrow(VeradexianRuinPools.RUIN_CENTERS_ARCTIC), Optional.empty(), 3, ConstantHeight.of(VerticalAnchor.absolute(0)), Optional.of(Heightmap.Types.WORLD_SURFACE_WG), new JigsawStructure.MaxDistance(32), 128, 256, false, List.of(), DimensionPadding.ZERO, LiquidSettings.IGNORE_WATERLOGGING)); context.register(VERADEXIAN_LIBRARY_TEMPERATE, new AetherJigsawStructure( - AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_VERADEXIAN_LIBRARY_TEMPERATE), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.BEARD_THIN), - templatePools.getOrThrow(VeradexianLibraryPools.ENTRANCE_TEMPERATE), Optional.empty(), 5, ConstantHeight.of(VerticalAnchor.absolute(0)), Optional.of(Heightmap.Types.WORLD_SURFACE_WG), new JigsawStructure.MaxDistance(32), 128, 256, false, List.of(), DimensionPadding.ZERO, LiquidSettings.IGNORE_WATERLOGGING)); + AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_VERADEXIAN_LIBRARY_TEMPERATE), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.NONE), + templatePools.getOrThrow(VeradexianLibraryPools.ENTRANCE_PEDESTAL_TEMPERATE), Optional.empty(), 10, ConstantHeight.of(VerticalAnchor.absolute(0)), Optional.of(Heightmap.Types.WORLD_SURFACE_WG), new JigsawStructure.MaxDistance(64), 128, 256, false, List.of(), DimensionPadding.ZERO, LiquidSettings.IGNORE_WATERLOGGING)); context.register(VERADEXIAN_LIBRARY_ARCTIC, new AetherJigsawStructure( - AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_VERADEXIAN_LIBRARY_ARCTIC), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.BEARD_THIN), - templatePools.getOrThrow(VeradexianLibraryPools.ENTRANCE_ARCTIC), Optional.empty(), 5, ConstantHeight.of(VerticalAnchor.absolute(0)), Optional.of(Heightmap.Types.WORLD_SURFACE_WG), new JigsawStructure.MaxDistance(32), 128, 256, false, List.of(), DimensionPadding.ZERO, LiquidSettings.IGNORE_WATERLOGGING)); + AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_VERADEXIAN_LIBRARY_ARCTIC), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.NONE), + templatePools.getOrThrow(VeradexianLibraryPools.ENTRANCE_PEDESTAL_ARCTIC), Optional.empty(), 10, ConstantHeight.of(VerticalAnchor.absolute(0)), Optional.of(Heightmap.Types.WORLD_SURFACE_WG), new JigsawStructure.MaxDistance(64), 128, 320, false, List.of(), DimensionPadding.ZERO, LiquidSettings.IGNORE_WATERLOGGING)); context.register(VERADEXIAN_AQUEDUCT, new AetherJigsawStructure( AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_VERADEXIAN_AQUEDUCT), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.NONE), - templatePools.getOrThrow(VeradexianAqueductPools.AQUEDUCT), Optional.empty(), 5, ConstantHeight.of(VerticalAnchor.absolute(120)), Optional.empty(), new JigsawStructure.MaxDistance(48), 96, 256, false, List.of(), DimensionPadding.ZERO, LiquidSettings.APPLY_WATERLOGGING)); + templatePools.getOrThrow(VeradexianAqueductPools.AQUEDUCT_START), Optional.empty(), 5, ConstantHeight.of(VerticalAnchor.absolute(111)), Optional.empty(), new JigsawStructure.MaxDistance(80), 96, 256, false, List.of(), DimensionPadding.ZERO, LiquidSettings.APPLY_WATERLOGGING)); context.register(BREXALLEN_RUINS, new AetherJigsawStructure( AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_BREXALLEN_RUINS), GenerationStep.Decoration.UNDERGROUND_STRUCTURES, TerrainAdjustment.BEARD_THIN), @@ -102,7 +102,7 @@ public static void bootstrap(BootstrapContext context) { context.register(UNDERCLOUD_MINESHAFT, new AetherJigsawStructure( AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_UNDERCLOUD_MINESHAFT), GenerationStep.Decoration.UNDERGROUND_STRUCTURES, TerrainAdjustment.NONE), - templatePools.getOrThrow(UndercloudMineshaftPools.HUB), Optional.empty(), 8, UniformHeight.of(VerticalAnchor.absolute(32), VerticalAnchor.absolute(80)), Optional.empty(), new JigsawStructure.MaxDistance(64, 32), 24, 96, true, List.of(), DimensionPadding.ZERO, LiquidSettings.IGNORE_WATERLOGGING)); + templatePools.getOrThrow(UndercloudMineshaftPools.HUB), Optional.empty(), 14, UniformHeight.of(VerticalAnchor.absolute(32), VerticalAnchor.absolute(80)), Optional.empty(), new JigsawStructure.MaxDistance(96, 48), 24, 96, true, List.of(), DimensionPadding.ZERO, LiquidSettings.IGNORE_WATERLOGGING)); context.register(ANCIENT_HENGE, new AetherJigsawStructure( AetherIIStructureBuilders.structure(biomes.getOrThrow(AetherIITags.Biomes.HAS_STRUCTURE_ANCIENT_HENGE), GenerationStep.Decoration.SURFACE_STRUCTURES, TerrainAdjustment.BEARD_THIN), diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/holyisles/HolyIslesConfiguredFeatures.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/holyisles/HolyIslesConfiguredFeatures.java index 9bf4d95e9d..a7503b6fa6 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/holyisles/HolyIslesConfiguredFeatures.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/holyisles/HolyIslesConfiguredFeatures.java @@ -48,7 +48,6 @@ import net.minecraft.world.level.levelgen.feature.trunkplacers.GiantTrunkPlacer; import net.minecraft.world.level.levelgen.feature.trunkplacers.StraightTrunkPlacer; import net.minecraft.world.level.levelgen.placement.*; -import net.minecraft.world.level.levelgen.structure.templatesystem.BlockMatchTest; import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; import net.minecraft.world.level.levelgen.synth.NormalNoise; @@ -290,11 +289,26 @@ public class HolyIslesConfiguredFeatures { public static final ResourceKey> CLOUDBED = createKey("cloudbed"); - // Dungeon - public static final ResourceKey> BRYALINN_MOSS_STRUCTURE = createKey("bryalinn_moss_dungeon"); - public static final ResourceKey> SHAYELINN_MOSS_STRUCTURE = createKey("shayelinn_moss_dungeon"); - public static final ResourceKey> AMBRELINN_MOSS_STRUCTURE = createKey("ambrelinn_moss_dungeon"); + // Air + public static final ResourceKey> COLD_AERCLOUD = createKey("cold_aercloud"); + public static final ResourceKey> GOLDEN_AERCLOUD = createKey("golden_aercloud"); + public static final ResourceKey> BLUE_AERCLOUD = createKey("blue_aercloud"); + public static final ResourceKey> GREEN_AERCLOUD = createKey("green_aercloud"); + public static final ResourceKey> PURPLE_AERCLOUD = createKey("purple_aercloud"); + public static final ResourceKey> PURPLE_AERCLOUD_SMALL = createKey("purple_aercloud_small"); + public static final ResourceKey> STORM_AERCLOUD = createKey("storm_aercloud"); + + + // Structure + public static final ResourceKey> BRYALINN_MOSS_STRUCTURE = createKey("bryalinn_moss_structure"); + public static final ResourceKey> SHAYELINN_MOSS_STRUCTURE = createKey("shayelinn_moss_structure"); + public static final ResourceKey> AMBRELINN_MOSS_STRUCTURE = createKey("ambrelinn_moss_structure"); + public static final ResourceKey> ARCTIC_ICE_SPIKE_VARIANTS_STRUCTURE = createKey("arctic_ice_spike_variants_structure"); + + public static final ResourceKey> COLD_AERCLOUD_STRUCTURE = createKey("cold_aercloud_structure"); + + public static final ResourceKey> PILE_RUBBLE = createKey("pile_rubble"); public static final ResourceKey> PILE_HOLYSTONE = createKey("pile_holystone"); public static final ResourceKey> PILE_UNDERSHALE = createKey("pile_undershale"); public static final ResourceKey> PILE_AGIOSITE = createKey("pile_agiosite"); @@ -321,16 +335,6 @@ public class HolyIslesConfiguredFeatures { public static final ResourceKey> INFECTED_GUARDIAN_TREE_BOSS_ROOM_COVER = createKey("infected_guardian_tree_boss_room_cover"); - // Air - public static final ResourceKey> COLD_AERCLOUD = createKey("cold_aercloud"); - public static final ResourceKey> GOLDEN_AERCLOUD = createKey("golden_aercloud"); - public static final ResourceKey> BLUE_AERCLOUD = createKey("blue_aercloud"); - public static final ResourceKey> GREEN_AERCLOUD = createKey("green_aercloud"); - public static final ResourceKey> PURPLE_AERCLOUD = createKey("purple_aercloud"); - public static final ResourceKey> PURPLE_AERCLOUD_SMALL = createKey("purple_aercloud_small"); - public static final ResourceKey> STORM_AERCLOUD = createKey("storm_aercloud"); - - public static void bootstrap(BootstrapContext> context) { bootstrapSurface(context); bootstrapVegetation(context); @@ -338,7 +342,7 @@ public static void bootstrap(BootstrapContext> context) bootstrapUnderground(context); bootstrapWorldgen(context); bootstrapAir(context); - bootstrapDungeon(context); + bootstrapStructure(context); } private static void bootstrapSurface(BootstrapContext> context) { @@ -2151,7 +2155,7 @@ private static void bootstrapAir(BootstrapContext> conte register(context, STORM_AERCLOUD, AetherIIFeatures.AERCLOUD.get(), new AercloudConfiguration(28, BlockStateProvider.simple(AetherIIBlocks.STORM_AERCLOUD.get().defaultBlockState()))); } - private static void bootstrapDungeon(BootstrapContext> context) { + private static void bootstrapStructure(BootstrapContext> context) { HolderGetter> configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE); HolderGetter placedFeatures = context.lookup(Registries.PLACED_FEATURE); HolderGetter function = context.lookup(Registries.DENSITY_FUNCTION); @@ -2224,6 +2228,17 @@ private static void bootstrapDungeon(BootstrapContext> c ) ); + register(context, ARCTIC_ICE_SPIKE_VARIANTS_STRUCTURE, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of( + new WeightedPlacedFeature(PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(MEGA_ARCTIC_ICE_SPIKE)), 0.375F) + ), PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(ARCTIC_ICE_SPIKE)))); + + + register(context, COLD_AERCLOUD_STRUCTURE, AetherIIFeatures.AERCLOUD.get(), new AercloudConfiguration(6, BlockStateProvider.simple(AetherIIBlocks.COLD_AERCLOUD.get().defaultBlockState()))); + + register(context, PILE_RUBBLE, Feature.BLOCK_PILE, new BlockPileConfiguration(new WeightedStateProvider(WeightedList.builder() + .add(AetherIIBlocks.HOLYSTONE.get().defaultBlockState(), 3) + .add(AetherIIBlocks.FADED_HOLYSTONE_BRICKS.get().defaultBlockState(), 1) + .build()))); register(context, PILE_HOLYSTONE, Feature.BLOCK_PILE, new BlockPileConfiguration(BlockStateProvider.simple(AetherIIBlocks.HOLYSTONE.get()))); register(context, PILE_UNDERSHALE, Feature.BLOCK_PILE, new BlockPileConfiguration(BlockStateProvider.simple(AetherIIBlocks.UNDERSHALE.get()))); register(context, PILE_AGIOSITE, Feature.BLOCK_PILE, new BlockPileConfiguration(BlockStateProvider.simple(AetherIIBlocks.AGIOSITE.get()))); @@ -2300,7 +2315,7 @@ private static void bootstrapDungeon(BootstrapContext> c BlockStateProvider.simple(AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), BlockStateProvider.simple(AetherIIBlocks.UNDERSHALE.get().defaultBlockState()), 95, - AetherIIDensityFunctions.getFunction(function, AetherIIDensityFunctions.DUNGEONS_STRUCTURE_COVER), + AetherIIDensityFunctions.getFunction(function, AetherIIDensityFunctions.STRUCTURES_STRUCTURE_COVER), 16.0F, 12, 0.0125F, @@ -2312,7 +2327,7 @@ private static void bootstrapDungeon(BootstrapContext> c BlockStateProvider.simple(AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), BlockStateProvider.simple(AetherIIBlocks.UNDERSHALE.get().defaultBlockState()), 95, - AetherIIDensityFunctions.getFunction(function, AetherIIDensityFunctions.DUNGEONS_STRUCTURE_COVER), + AetherIIDensityFunctions.getFunction(function, AetherIIDensityFunctions.STRUCTURES_STRUCTURE_COVER), 16.0F, 20, 0.0125F, @@ -2324,7 +2339,7 @@ private static void bootstrapDungeon(BootstrapContext> c BlockStateProvider.simple(AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), BlockStateProvider.simple(AetherIIBlocks.UNDERSHALE.get().defaultBlockState()), 95, - AetherIIDensityFunctions.getFunction(function, AetherIIDensityFunctions.DUNGEONS_STRUCTURE_COVER), + AetherIIDensityFunctions.getFunction(function, AetherIIDensityFunctions.STRUCTURES_STRUCTURE_COVER), 22.0F, 14, 0.0075F, @@ -2336,7 +2351,7 @@ private static void bootstrapDungeon(BootstrapContext> c BlockStateProvider.simple(AetherIIBlocks.HOLYSTONE.get().defaultBlockState()), BlockStateProvider.simple(AetherIIBlocks.UNDERSHALE.get().defaultBlockState()), 95, - AetherIIDensityFunctions.getFunction(function, AetherIIDensityFunctions.DUNGEONS_STRUCTURE_COVER), + AetherIIDensityFunctions.getFunction(function, AetherIIDensityFunctions.STRUCTURES_STRUCTURE_COVER), 24.0F, 28, 0.0075F, diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/holyisles/HolyIslesPlacedFeatures.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/holyisles/HolyIslesPlacedFeatures.java index 493a54ec86..b42a4ae5a8 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/holyisles/HolyIslesPlacedFeatures.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/holyisles/HolyIslesPlacedFeatures.java @@ -200,8 +200,12 @@ public class HolyIslesPlacedFeatures { public static final ResourceKey CLOUDBED = createKey("cloudbed"); - // Dungeon + // Structure public static final ResourceKey BRYALINN_MOSS_COVER_STRUCTURE = createKey("bryalinn_moss_cover_structure"); + public static final ResourceKey ARCTIC_ICE_SPIKE_STRUCTURE = createKey("arctic_ice_spike_structure"); + public static final ResourceKey COLD_AERCLOUD_STRUCTURE = createKey("cold_aercloud_structure"); + public static final ResourceKey PILE_RUBBLE = createKey("pile_rubble"); + public static final ResourceKey PILE_MATERIAL = createKey("pile_material"); public static final ResourceKey LARGE_SHELF_ROTSHROOM = createKey("large_shelf_rotshroom"); public static final ResourceKey LARGE_SHELF_ROTSHROOM_UNDERGROUND = createKey("large_shelf_rotshroom_underground"); public static final ResourceKey ROTSHROOM_PATCH = createKey("rotshroom_patch"); @@ -240,7 +244,7 @@ public static void bootstrap(BootstrapContext context) { bootstrapUnderground(context); bootstrapWorldgen(context); bootstrapAir(context); - bootstrapDungeon(context); + bootstrapStructure(context); } public static void bootstrapSurface(BootstrapContext context) { @@ -1185,9 +1189,13 @@ public static void bootstrapAir(BootstrapContext context) { BiomeFilter.biome()); } - public static void bootstrapDungeon(BootstrapContext context) { + public static void bootstrapStructure(BootstrapContext context) { HolderGetter> configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE); register(context, BRYALINN_MOSS_COVER_STRUCTURE, configuredFeatures.getOrThrow(HolyIslesConfiguredFeatures.BRYALINN_MOSS_STRUCTURE)); + register(context, ARCTIC_ICE_SPIKE_STRUCTURE, configuredFeatures.getOrThrow(HolyIslesConfiguredFeatures.ARCTIC_ICE_SPIKE_VARIANTS_STRUCTURE)); + register(context, COLD_AERCLOUD_STRUCTURE, configuredFeatures.getOrThrow(HolyIslesConfiguredFeatures.COLD_AERCLOUD_STRUCTURE), RandomOffsetPlacement.horizontal(ConstantInt.of(-3))); + register(context, PILE_RUBBLE, configuredFeatures.getOrThrow(HolyIslesConfiguredFeatures.PILE_RUBBLE)); + register(context, PILE_MATERIAL, configuredFeatures.getOrThrow(HolyIslesConfiguredFeatures.PILES_MATERIAL_DEPOSIT)); register(context, LARGE_SHELF_ROTSHROOM, configuredFeatures.getOrThrow(HolyIslesConfiguredFeatures.LARGE_SHELF_ROTSHROOM)); register(context, LARGE_SHELF_ROTSHROOM_UNDERGROUND, configuredFeatures.getOrThrow(HolyIslesConfiguredFeatures.LARGE_SHELF_ROTSHROOM_UNDERGROUND)); diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/OutpostPools.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/OutpostPools.java index 81d2e5c455..8b6edb824d 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/OutpostPools.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/OutpostPools.java @@ -11,17 +11,35 @@ import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; public class OutpostPools { + public static final ResourceKey ENTRANCE_PEDESTAL = AetherIIPools.createKey("outpost/entrance_pedestal"); public static final ResourceKey OUTPOST = AetherIIPools.createKey("outpost/outposts"); + public static final ResourceKey FOUNDATION = AetherIIPools.createKey("outpost/foundation"); public static void bootstrap(BootstrapContext context) { HolderGetter templatePools = context.lookup(Registries.TEMPLATE_POOL); Holder fallback = templatePools.getOrThrow(Pools.EMPTY); + context.register(ENTRANCE_PEDESTAL, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolBuried("outpost/entrance_pedestal"), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(OUTPOST, new StructureTemplatePool( fallback, ImmutableList.of( - Pair.of(AetherIIPools.aetherPool("outpost/outpost"), 1), - Pair.of(AetherIIPools.aetherPool("outpost/tall_outpost"), 1) + Pair.of(AetherIIPools.aetherPoolBuried("outpost/outpost"), 1), + Pair.of(AetherIIPools.aetherPoolBuried("outpost/tall_outpost"), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + + context.register(FOUNDATION, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolBuried("outpost/foundation"), 1) ), StructureTemplatePool.Projection.RIGID) ); diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/UndercloudMineshaftPools.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/UndercloudMineshaftPools.java index 4b12cb02e8..043f23e58a 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/UndercloudMineshaftPools.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/UndercloudMineshaftPools.java @@ -1,6 +1,7 @@ package com.aetherteam.aetherii.data.resources.registries.pools; import com.aetherteam.aetherii.data.resources.registries.AetherIIProcessorLists; +import com.aetherteam.aetherii.data.resources.registries.holyisles.HolyIslesPlacedFeatures; import com.google.common.collect.ImmutableList; import com.mojang.datafixers.util.Pair; import net.minecraft.core.Holder; @@ -9,37 +10,89 @@ import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.Pools; import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraft.world.level.levelgen.structure.pools.StructurePoolElement; import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorList; public class UndercloudMineshaftPools { - public static final ResourceKey HUB = AetherIIPools.createKey("undercloud_mineshaft/hubs"); + public static final ResourceKey HUB = AetherIIPools.createKey("undercloud_mineshaft/hub"); + public static final ResourceKey BRIDGE = AetherIIPools.createKey("undercloud_mineshaft/bridges"); public static final ResourceKey CORRIDOR = AetherIIPools.createKey("undercloud_mineshaft/corridors"); + public static final ResourceKey AERCLOUD = AetherIIPools.createKey("undercloud_mineshaft/decoration/aercloud"); + public static final ResourceKey MATERIAL_PILE = AetherIIPools.createKey("undercloud_mineshaft/decoration/material_pile"); public static void bootstrap(BootstrapContext context) { HolderGetter templatePools = context.lookup(Registries.TEMPLATE_POOL); Holder fallback = templatePools.getOrThrow(Pools.EMPTY); HolderGetter processors = context.lookup(Registries.PROCESSOR_LIST); - Holder processor = processors.getOrThrow(AetherIIProcessorLists.UNDERCLOUD_MINESHAFT); + Holder processorHub = processors.getOrThrow(AetherIIProcessorLists.UNDERCLOUD_MINESHAFT_HUB); + Holder processorBridge = processors.getOrThrow(AetherIIProcessorLists.UNDERCLOUD_MINESHAFT_BRIDGE); + Holder processorCorridor = processors.getOrThrow(AetherIIProcessorLists.UNDERCLOUD_MINESHAFT_CORRIDOR); + + HolderGetter placedFeatures = context.lookup(Registries.PLACED_FEATURE); context.register(HUB, new StructureTemplatePool( fallback, ImmutableList.of( - Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/hub", processor), 1) + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/hub", processorHub), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(BRIDGE, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/bridges/straight_01", processorBridge), 9), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/bridges/straight_02", processorBridge), 9), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/bridges/corner", processorBridge), 6), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/bridges/t_cross", processorBridge), 3), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/bridges/refinery", processorBridge), 2), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/bridges/storage_platform", processorBridge), 2), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/bridges/bridge_temple", processorBridge), 2), + Pair.of(StructurePoolElement.empty(), 2) ), StructureTemplatePool.Projection.RIGID) ); context.register(CORRIDOR, new StructureTemplatePool( fallback, ImmutableList.of( - Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/corridor", processor), 4), - Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/corridor_slanted", processor), 3), - Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/t_cross", processor), 3), - Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/junction", processor), 3), - Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/ladder_junction", processor), 3), - Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/storage_room", processor), 1), - Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/material_deposit", processor), 1) + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_basic", processorCorridor), 12), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_cockatrice_nest_01", processorCorridor), 2), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_cockatrice_nest_02", processorCorridor), 2), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_cockatrice_nest_03", processorCorridor), 2), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_elevation", processorCorridor), 4), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_storage_01", processorCorridor), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_storage_02", processorCorridor), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_storage_03", processorCorridor), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_storage_04", processorCorridor), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_storage_03", processorCorridor), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_alkahest", processorCorridor), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_sleeping_barracks", processorCorridor), 2), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_pit", processorCorridor), 3), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/straight_platform", processorCorridor), 2), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/t_cross", processorCorridor), 12), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/staircase_01", processorCorridor), 4), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/staircase_02", processorCorridor), 4), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/junction_01", processorCorridor), 3), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/junction_02", processorCorridor), 2), + Pair.of(AetherIIPools.aetherPoolUnderground("undercloud_mineshaft/corridors/junction_03", processorCorridor), 1) + + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(AERCLOUD, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(StructurePoolElement.feature(placedFeatures.getOrThrow(HolyIslesPlacedFeatures.COLD_AERCLOUD_STRUCTURE)), 2), + Pair.of(StructurePoolElement.empty(), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(MATERIAL_PILE, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(StructurePoolElement.feature(placedFeatures.getOrThrow(HolyIslesPlacedFeatures.PILE_MATERIAL)), 1) ), StructureTemplatePool.Projection.RIGID) ); diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/VeradexianAqueductPools.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/VeradexianAqueductPools.java index 0674aa38bc..617aad9b04 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/VeradexianAqueductPools.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/VeradexianAqueductPools.java @@ -16,8 +16,10 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorList; public class VeradexianAqueductPools { - public static final ResourceKey AQUEDUCT = AetherIIPools.createKey("veradexian_aqueduct/aqueducts"); - public static final ResourceKey AQUEDUCT_MOSS = AetherIIPools.createKey("veradexian_aqueduct/moss"); + public static final ResourceKey AQUEDUCT_START = AetherIIPools.createKey("veradexian_aqueduct/aqueducts_start"); + public static final ResourceKey AQUEDUCTS = AetherIIPools.createKey("veradexian_aqueduct/aqueducts"); + public static final ResourceKey BRYALINN_MOSS_COVER = AetherIIPools.createKey("veradexian_aqueduct/decoration/bryalinn_moss_cover"); + public static final ResourceKey AERCLOUD = AetherIIPools.createKey("veradexian_aqueduct/decoration/aercloud"); public static void bootstrap(BootstrapContext context) { HolderGetter templatePools = context.lookup(Registries.TEMPLATE_POOL); @@ -28,17 +30,22 @@ public static void bootstrap(BootstrapContext context) { HolderGetter placedFeatures = context.lookup(Registries.PLACED_FEATURE); - context.register(AQUEDUCT, new StructureTemplatePool( + context.register(AQUEDUCT_START, new StructureTemplatePool( fallback, ImmutableList.of( - Pair.of(AetherIIPools.aetherPoolAquatic("veradexain_aqueduct/small_aqueduct_01", processor), 2), - Pair.of(AetherIIPools.aetherPoolAquatic("veradexian_aqueduct/large_aqueduct_01", processor), 1), - Pair.of(AetherIIPools.aetherPoolAquatic("veradexian_aqueduct/large_aqueduct_02", processor), 1), - Pair.of(AetherIIPools.aetherPoolAquatic("veradexian_aqueduct/large_aqueduct_03", processor), 1) + Pair.of(AetherIIPools.aetherPoolAquatic("veradexian_aqueduct/aqueduct", processor), 1) ), StructureTemplatePool.Projection.RIGID) ); - context.register(AQUEDUCT_MOSS, new StructureTemplatePool( + context.register(AQUEDUCTS, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolAquatic("veradexian_aqueduct/aqueduct", processor), 7), + Pair.of(StructurePoolElement.empty(), 2) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(BRYALINN_MOSS_COVER, new StructureTemplatePool( fallback, ImmutableList.of( Pair.of(StructurePoolElement.feature(placedFeatures.getOrThrow(HolyIslesPlacedFeatures.BRYALINN_MOSS_COVER_STRUCTURE)), 1), @@ -46,5 +53,13 @@ public static void bootstrap(BootstrapContext context) { ), StructureTemplatePool.Projection.RIGID) ); + context.register(AERCLOUD, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(StructurePoolElement.feature(placedFeatures.getOrThrow(HolyIslesPlacedFeatures.COLD_AERCLOUD_STRUCTURE)), 1), + Pair.of(StructurePoolElement.empty(), 2) + ), + StructureTemplatePool.Projection.RIGID) + ); } } \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/VeradexianLibraryPools.java b/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/VeradexianLibraryPools.java index 466c9f337f..d27bca62ea 100644 --- a/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/VeradexianLibraryPools.java +++ b/src/main/java/com/aetherteam/aetherii/data/resources/registries/pools/VeradexianLibraryPools.java @@ -1,6 +1,7 @@ package com.aetherteam.aetherii.data.resources.registries.pools; import com.aetherteam.aetherii.data.resources.registries.AetherIIProcessorLists; +import com.aetherteam.aetherii.data.resources.registries.holyisles.HolyIslesPlacedFeatures; import com.google.common.collect.ImmutableList; import com.mojang.datafixers.util.Pair; import net.minecraft.core.Holder; @@ -9,65 +10,152 @@ import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.Pools; import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraft.world.level.levelgen.structure.pools.StructurePoolElement; import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorList; public class VeradexianLibraryPools { - public static final ResourceKey ENTRANCE_TEMPERATE = AetherIIPools.createKey("veradexian_library/temperate/entrances"); - public static final ResourceKey ENTRANCE_ARCTIC = AetherIIPools.createKey("veradexian_library/arctic/entrances"); - public static final ResourceKey LIBRARY_TEMPERATE = AetherIIPools.createKey("veradexian_library/temperate/libraries"); - public static final ResourceKey LIBRARY_ARCTIC = AetherIIPools.createKey("veradexian_library/arctic/libraries"); - public static final ResourceKey SECRET_ROOM = AetherIIPools.createKey("veradexian_library/common/secret_rooms"); + public static final ResourceKey ENTRANCE_PEDESTAL_TEMPERATE = AetherIIPools.createKey("veradexian_library/temperate/entrance_pedestal"); + public static final ResourceKey ENTRANCE_PEDESTAL_ARCTIC = AetherIIPools.createKey("veradexian_library/arctic/entrance_pedestal"); + public static final ResourceKey BASE_TEMPERATE = AetherIIPools.createKey("veradexian_library/temperate/base"); + public static final ResourceKey BASE_ARCTIC = AetherIIPools.createKey("veradexian_library/arctic/base"); + public static final ResourceKey TEMPLE_TEMPERATE = AetherIIPools.createKey("veradexian_library/temperate/temple"); + public static final ResourceKey TEMPLE_ARCTIC = AetherIIPools.createKey("veradexian_library/arctic/temple"); + public static final ResourceKey FLOOR_1_LIBRARY = AetherIIPools.createKey("veradexian_library/floor_1_library"); + public static final ResourceKey FLOOR_2_LIBRARY = AetherIIPools.createKey("veradexian_library/floor_2_library"); + public static final ResourceKey VAULTS_FRONT_RIGHT = AetherIIPools.createKey("veradexian_library/vaults_front_right"); + public static final ResourceKey VAULTS_BACK_RIGHT = AetherIIPools.createKey("veradexian_library/vaults_back_right"); + + public static final ResourceKey BRYALINN_MOSS_COVER = AetherIIPools.createKey("veradexian_library/decoration/bryalinn_moss_cover"); + public static final ResourceKey ARCTIC_ICE_SPIKE = AetherIIPools.createKey("veradexian_library/decoration/arctic_ice_spike"); + public static final ResourceKey AERCLOUD = AetherIIPools.createKey("veradexian_library/decoration/aercloud"); + public static final ResourceKey RUBBLE_PILE = AetherIIPools.createKey("veradexian_library/decoration/rubble_pile"); public static void bootstrap(BootstrapContext context) { HolderGetter templatePools = context.lookup(Registries.TEMPLATE_POOL); Holder fallback = templatePools.getOrThrow(Pools.EMPTY); HolderGetter processors = context.lookup(Registries.PROCESSOR_LIST); - Holder processorRuinsTemperate = processors.getOrThrow(AetherIIProcessorLists.VERADEXIAN_RUINS_TEMPERATE); - Holder processorRuinsArctic = processors.getOrThrow(AetherIIProcessorLists.VERADEXIAN_RUINS_ARCTIC); - Holder processorLibraryTemperate = processors.getOrThrow(AetherIIProcessorLists.VERADEXIAN_LIBRARY_TEMPERATE); - Holder processorLibraryArctic = processors.getOrThrow(AetherIIProcessorLists.VERADEXIAN_LIBRARY_ARCTIC); + Holder processorEntrance = processors.getOrThrow(AetherIIProcessorLists.VERADEXIAN_LIBRARY_ENTRANCE); + Holder processorLibrary = processors.getOrThrow(AetherIIProcessorLists.VERADEXIAN_LIBRARY); + Holder processorVaults = processors.getOrThrow(AetherIIProcessorLists.VERADEXIAN_LIBRARY_VAULTS); + + HolderGetter placedFeatures = context.lookup(Registries.PLACED_FEATURE); - context.register(ENTRANCE_TEMPERATE, new StructureTemplatePool( + context.register(ENTRANCE_PEDESTAL_TEMPERATE, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPool("veradexian_library/temperate/entrance_pedestal", processorLibrary), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(ENTRANCE_PEDESTAL_ARCTIC, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPool("veradexian_library/arctic/entrance_pedestal", processorLibrary), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(BASE_TEMPERATE, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/temperate/base", processorLibrary), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(BASE_ARCTIC, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/arctic/base", processorLibrary), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(TEMPLE_TEMPERATE, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/temperate/temple", processorEntrance), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(TEMPLE_ARCTIC, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/arctic/temple", processorEntrance), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(FLOOR_1_LIBRARY, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_1/library_01", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_1/library_02", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_1/library_03", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_1/library_04", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_1/library_05", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_1/library_06", processorLibrary), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(FLOOR_2_LIBRARY, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_2/library_01", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_2/library_02", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_2/library_03", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_2/library_04", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_2/library_05", processorLibrary), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/floor_2/library_06", processorLibrary), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + context.register(VAULTS_FRONT_RIGHT, new StructureTemplatePool( fallback, ImmutableList.of( - Pair.of(AetherIIPools.aetherPool("veradexian_library/temperate/entrance_01", processorRuinsTemperate), 1), - Pair.of(AetherIIPools.aetherPool("veradexian_library/temperate/entrance_02", processorRuinsTemperate), 1) + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/vaults/vault_front_right_01", processorVaults), 1) ), StructureTemplatePool.Projection.RIGID) ); - context.register(ENTRANCE_ARCTIC, new StructureTemplatePool( + context.register(VAULTS_BACK_RIGHT, new StructureTemplatePool( + fallback, + ImmutableList.of( + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/vaults/vault_back_right_01", processorVaults), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/vaults/vault_back_right_02", processorVaults), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/vaults/vault_back_right_03", processorVaults), 1), + Pair.of(AetherIIPools.aetherPoolUnderground("veradexian_library/vaults/vault_back_right_04", processorVaults), 1) + ), + StructureTemplatePool.Projection.RIGID) + ); + + context.register(BRYALINN_MOSS_COVER, new StructureTemplatePool( fallback, ImmutableList.of( - Pair.of(AetherIIPools.aetherPool("veradexian_library/arctic/entrance_01", processorRuinsArctic), 1), - Pair.of(AetherIIPools.aetherPool("veradexian_library/arctic/entrance_02", processorRuinsArctic), 1) + Pair.of(StructurePoolElement.feature(placedFeatures.getOrThrow(HolyIslesPlacedFeatures.BRYALINN_MOSS_COVER_STRUCTURE)), 1), + Pair.of(StructurePoolElement.empty(), 6) ), StructureTemplatePool.Projection.RIGID) ); - context.register(LIBRARY_TEMPERATE, new StructureTemplatePool( + context.register(ARCTIC_ICE_SPIKE, new StructureTemplatePool( fallback, ImmutableList.of( - Pair.of(AetherIIPools.aetherPoolBuried("veradexian_library/common/library_01", processorLibraryTemperate), 1) + Pair.of(StructurePoolElement.feature(placedFeatures.getOrThrow(HolyIslesPlacedFeatures.ARCTIC_ICE_SPIKE_STRUCTURE)), 1), + Pair.of(StructurePoolElement.empty(), 12) ), StructureTemplatePool.Projection.RIGID) ); - context.register(LIBRARY_ARCTIC, new StructureTemplatePool( + context.register(AERCLOUD, new StructureTemplatePool( fallback, ImmutableList.of( - Pair.of(AetherIIPools.aetherPoolBuried("veradexian_library/common/library_01", processorLibraryArctic), 1) + Pair.of(StructurePoolElement.feature(placedFeatures.getOrThrow(HolyIslesPlacedFeatures.COLD_AERCLOUD_STRUCTURE)), 1), + Pair.of(StructurePoolElement.empty(), 2) ), StructureTemplatePool.Projection.RIGID) ); - context.register(SECRET_ROOM, new StructureTemplatePool( + context.register(RUBBLE_PILE, new StructureTemplatePool( fallback, ImmutableList.of( - Pair.of(AetherIIPools.aetherPoolBuried("veradexian_library/common/secret_room_01"), 1), - Pair.of(AetherIIPools.aetherPoolBuried("veradexian_library/common/secret_room_02"), 1), - Pair.of(AetherIIPools.aetherPoolBuried("veradexian_library/common/secret_room_03"), 1), - Pair.of(AetherIIPools.aetherPoolBuried("veradexian_library/common/secret_room_04"), 1), - Pair.of(AetherIIPools.aetherPoolBuried("veradexian_library/common/secret_room_05"), 1), - Pair.of(AetherIIPools.aetherPoolBuried("veradexian_library/common/secret_room_06"), 1) + Pair.of(StructurePoolElement.feature(placedFeatures.getOrThrow(HolyIslesPlacedFeatures.PILE_RUBBLE)), 2), + Pair.of(StructurePoolElement.empty(), 1) ), StructureTemplatePool.Projection.RIGID) ); diff --git a/src/main/java/com/aetherteam/aetherii/entity/AetherIIEntityTypes.java b/src/main/java/com/aetherteam/aetherii/entity/AetherIIEntityTypes.java index 4d4b21f1f0..66990ef99e 100644 --- a/src/main/java/com/aetherteam/aetherii/entity/AetherIIEntityTypes.java +++ b/src/main/java/com/aetherteam/aetherii/entity/AetherIIEntityTypes.java @@ -99,7 +99,7 @@ public class AetherIIEntityTypes { public static final DeferredHolder, EntityType> TEMPEST = ENTITY_TYPES.register("tempest", () -> EntityType.Builder.of(Tempest::new, AetherIIMobCategory.AETHER_BLIGHT_MONSTER).sized(1.5F, 1.4F).notInPeaceful().eyeHeight(0.85F).clientTrackingRange(10).build(AetherIIEntityIds.TEMPEST)); public static final DeferredHolder, EntityType> COCKATRICE = ENTITY_TYPES.register("cockatrice", - () -> EntityType.Builder.of(Cockatrice::new, AetherIIMobCategory.AETHER_BLIGHT_MONSTER).sized(0.9F, 2.15F).notInPeaceful().clientTrackingRange(10).build(AetherIIEntityIds.COCKATRICE)); + () -> EntityType.Builder.of(Cockatrice::new, AetherIIMobCategory.AETHER_BLIGHT_MONSTER).sized(0.9F, 1.95F).notInPeaceful().clientTrackingRange(10).build(AetherIIEntityIds.COCKATRICE)); public static final DeferredHolder, EntityType> ARKENIUM_TALUTON = ENTITY_TYPES.register("arkenium_taluton", () -> EntityType.Builder.of(ArkeniumTaluton::new, AetherIIMobCategory.AETHER_DARKNESS_MONSTER).sized(1.0F, 1.65F).notInPeaceful().eyeHeight(1.25F).clientTrackingRange(10).build(AetherIIEntityIds.ARKENIUM_TALUTON)); diff --git a/src/main/java/com/aetherteam/aetherii/item/AetherIICreativeTabs.java b/src/main/java/com/aetherteam/aetherii/item/AetherIICreativeTabs.java index a69c13211a..f9e24322b0 100644 --- a/src/main/java/com/aetherteam/aetherii/item/AetherIICreativeTabs.java +++ b/src/main/java/com/aetherteam/aetherii/item/AetherIICreativeTabs.java @@ -4,6 +4,7 @@ import com.aetherteam.aetherii.AetherIIConfig; import com.aetherteam.aetherii.block.AetherIIBlocks; import com.aetherteam.aetherii.data.resources.registries.AetherIIEntityIds; +import com.aetherteam.aetherii.data.resources.registries.AetherIIPaintingVariants; import com.aetherteam.aetherii.effect.buildup.EffectBuildupPresets; import com.aetherteam.aetherii.entity.passive.Moa; import com.aetherteam.aetherii.item.components.AetherIIDataComponents; @@ -12,14 +13,12 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.component.DataComponents; +import net.minecraft.core.component.TypedDataComponent; import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.resources.Identifier; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.*; import net.minecraft.world.item.component.ItemLore; import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; import net.neoforged.neoforge.registries.DeferredHolder; @@ -189,6 +188,10 @@ public class AetherIICreativeTabs { output.accept(AetherIIBlocks.UNDERSHALE_STAIRS.get()); output.accept(AetherIIBlocks.UNDERSHALE_SLAB.get()); output.accept(AetherIIBlocks.UNDERSHALE_WALL.get()); + output.accept(AetherIIBlocks.MOSSY_UNDERSHALE.get()); + output.accept(AetherIIBlocks.MOSSY_UNDERSHALE_STAIRS.get()); + output.accept(AetherIIBlocks.MOSSY_UNDERSHALE_SLAB.get()); + output.accept(AetherIIBlocks.MOSSY_UNDERSHALE_WALL.get()); output.accept(AetherIIBlocks.UNDERSHALE_BRICKS.get()); output.accept(AetherIIBlocks.UNDERSHALE_BRICK_STAIRS.get()); output.accept(AetherIIBlocks.UNDERSHALE_BRICK_SLAB.get()); @@ -420,6 +423,7 @@ public class AetherIICreativeTabs { output.accept(AetherIIBlocks.MOSSY_HOLYSTONE.get()); output.accept(AetherIIBlocks.IRRADIATED_HOLYSTONE.get()); output.accept(AetherIIBlocks.UNDERSHALE.get()); + output.accept(AetherIIBlocks.MOSSY_UNDERSHALE.get()); output.accept(AetherIIBlocks.UNSTABLE_UNDERSHALE.get()); output.accept(AetherIIBlocks.ICHORITE.get()); output.accept(AetherIIBlocks.AGIOSITE.get()); @@ -601,6 +605,7 @@ public class AetherIICreativeTabs { output.accept(AetherIIBlocks.HOLYSTONE_VASE.get()); output.accept(AetherIIBlocks.VERADEXIAN_VASE.get()); output.accept(AetherIIBlocks.BREXALLEN_VASE.get()); + output.accept(AetherIIBlocks.ABANDONED_BAG.get()); output.accept(AetherIIBlocks.SKYROOT_SIGN.get()); output.accept(AetherIIBlocks.SKYROOT_HANGING_SIGN.get()); output.accept(AetherIIBlocks.GREATROOT_SIGN.get()); @@ -611,6 +616,11 @@ public class AetherIICreativeTabs { output.accept(AetherIIBlocks.AMBEROOT_HANGING_SIGN.get()); output.accept(AetherIIBlocks.CLOUDWOOL_BEDROLL.get()); output.accept(AetherIIBlocks.SKYROOT_BED.get()); + output.accept(AetherIIBlocks.THERAN_GLOBE.get()); + output.accept(new ItemStack(new ItemStackTemplate(Items.PAINTING).item(), 1, DataComponentPatch.builder().set(new TypedDataComponent<>( + DataComponents.PAINTING_VARIANT, + features.holders().lookupOrThrow(Registries.PAINTING_VARIANT).getOrThrow(AetherIIPaintingVariants.FAR))).build() + )); output.accept(AetherIIBlocks.OUTPOST_CAMPFIRE.get()); output.accept(AetherIIBlocks.UNSTABLE_HOLYSTONE.get()); output.accept(AetherIIBlocks.UNSTABLE_UNDERSHALE.get()); @@ -664,7 +674,6 @@ public class AetherIICreativeTabs { output.accept(AetherIIBlocks.PRAYER_CANDLE.get()); output.accept(AetherIIBlocks.GUARDIAN_PEW.get()); output.accept(AetherIIBlocks.GUARDIAN_DONATION_BOX.get()); - output.accept(AetherIIBlocks.ABANDONED_BAG.get()); output.accept(AetherIIBlocks.FUNGAL_CACHE.get()); output.accept(AetherIIBlocks.SAGE_CHEST.get()); } @@ -898,6 +907,7 @@ public class AetherIICreativeTabs { output.accept(AetherIIItems.IRRADIATED_TOOL.get()); output.accept(AetherIIItems.IRRADIATED_CHUNK.get()); output.accept(AetherIIItems.IRRADIATED_DUST.get()); + output.accept(AetherIIItems.PAINTING_TEMPLATE_FAR.get()); // output.accept(AetherIIItems.ZEPHYR_HUSK.get()); // TODO WIP ALPHA THINGS // output.accept(AetherIIItems.CHARGE_CATALYST.get()); // output.accept(AetherIIItems.ARKENIUM_CORE.get()); diff --git a/src/main/java/com/aetherteam/aetherii/item/AetherIIItems.java b/src/main/java/com/aetherteam/aetherii/item/AetherIIItems.java index 636bfaa85b..c792f13617 100644 --- a/src/main/java/com/aetherteam/aetherii/item/AetherIIItems.java +++ b/src/main/java/com/aetherteam/aetherii/item/AetherIIItems.java @@ -422,6 +422,7 @@ public class AetherIIItems { public static final DeferredItem CLOUD_SKIFF = register("cloud_skiff", (properties) -> new CloudSkiffItem(AetherIIEntityTypes.CLOUD_SKIFF.get(), properties.stacksTo(1))); public static final DeferredItem GLINT_COIN = register("glint_coin", (properties) -> new CurrencyItem(1, properties)); public static final DeferredItem GUIDEBOOK_PAGE = register("guidebook_page", GuidebookPageItem::new, () -> new Item.Properties().stacksTo(1)); + public static final DeferredItem PAINTING_TEMPLATE_FAR = register("painting_template_far"); public static final DeferredItem AETHER_PORTAL_FRAME = register("aether_portal_frame", AetherPortalItem::new, () -> new Item.Properties().stacksTo(1)); public static final DeferredItem MURAL_ITEM = register("mural_item", (properties) -> new MuralItem(AetherIIBlocks.MURAL.get(), properties), () -> new Item.Properties().stacksTo(1)); diff --git a/src/main/java/com/aetherteam/aetherii/item/AetherIIMapDecorationTypes.java b/src/main/java/com/aetherteam/aetherii/item/AetherIIMapDecorationTypes.java new file mode 100644 index 0000000000..6bfc07c1ce --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/item/AetherIIMapDecorationTypes.java @@ -0,0 +1,17 @@ +package com.aetherteam.aetherii.item; + +import com.aetherteam.aetherii.AetherII; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.world.level.saveddata.maps.MapDecorationType; +import net.neoforged.neoforge.registries.DeferredRegister; + +public class AetherIIMapDecorationTypes { + public static final DeferredRegister MAP_DECORATION_TYPES = DeferredRegister.create(BuiltInRegistries.MAP_DECORATION_TYPE, AetherII.MODID); + + public static final Holder VERADEXIAN_LIBRARY = MAP_DECORATION_TYPES.register("veradexian_library", () -> new MapDecorationType(Identifier.fromNamespaceAndPath(AetherII.MODID, "veradexian_library"), true, 0xB59C73, false, true)); + + public AetherIIMapDecorationTypes() { + } +} \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/loot/AetherIILoot.java b/src/main/java/com/aetherteam/aetherii/loot/AetherIILoot.java index feafbb653e..49bc13ffb8 100644 --- a/src/main/java/com/aetherteam/aetherii/loot/AetherIILoot.java +++ b/src/main/java/com/aetherteam/aetherii/loot/AetherIILoot.java @@ -56,13 +56,26 @@ public class AetherIILoot { public static final ResourceKey VASES_VERADEXIAN_RUINS = register("vases/veradexian_ruins/common"); public static final ResourceKey CHESTS_VERADEXIAN_LIBRARY = register("chests/veradexian_library/common"); + public static final ResourceKey CHESTS_VERADEXIAN_LIBRARY_ABANDONED_BAGS = register("chests/veradexian_library/abandoned_bags"); + public static final ResourceKey CHESTS_VERADEXIAN_LIBRARY_COCKATRICE_NESTS = register("chests/veradexian_library/cockatrice_nests"); + public static final ResourceKey CHESTS_VERADEXIAN_LIBRARY_VAULTS_BASE = register("chests/veradexian_library/vaults_base"); public static final ResourceKey CHESTS_VERADEXIAN_LIBRARY_VAULTS = register("chests/veradexian_library/vaults"); + public static final ResourceKey CHESTS_VERADEXIAN_LIBRARY_VAULTS_TREASURE = register("chests/veradexian_library/vaults_treasure"); public static final ResourceKey VASES_BREXALLEN_RUINS = register("vases/brexallen_ruins/common"); public static final ResourceKey CHESTS_BREXALLEN_RUINS = register("chests/brexallen_ruins/common"); public static final ResourceKey VASES_UNDERCLOUD_MINESHAFT = register("vases/undercloud_mineshaft/common"); public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT = register("chests/undercloud_mineshaft/common"); + public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT_STORAGE = register("chests/undercloud_mineshaft/storage"); + public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT_SUPPLIES = register("chests/undercloud_mineshaft/supplies"); + public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT_EQUIPMENT = register("chests/undercloud_mineshaft/equipment"); + public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT_BRIDGES_BASE = register("chests/undercloud_mineshaft/bridges_base"); + public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT_BRIDGES = register("chests/undercloud_mineshaft/bridges"); + public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT_BRIDGES_TREASURE = register("chests/undercloud_mineshaft/bridges_treasure"); + public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT_RARE = register("chests/undercloud_mineshaft/rare"); + public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT_ABANDONED_BAGS = register("chests/undercloud_mineshaft/abandoned_bags"); + public static final ResourceKey CHESTS_UNDERCLOUD_MINESHAFT_COCKATRICE_NESTS = register("chests/undercloud_mineshaft/cockatrice_nests"); public static final ResourceKey VASES_ANCIENT_HENGE = register("vases/ancient_henge/common"); diff --git a/src/main/java/com/aetherteam/aetherii/network/packet/serverbound/EnteredStructurePacket.java b/src/main/java/com/aetherteam/aetherii/network/packet/serverbound/EnteredStructurePacket.java new file mode 100644 index 0000000000..17ec7d59a6 --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/network/packet/serverbound/EnteredStructurePacket.java @@ -0,0 +1,45 @@ +package com.aetherteam.aetherii.network.packet.serverbound; + +import com.aetherteam.aetherii.AetherII; +import com.aetherteam.aetherii.attachment.AetherIIDataAttachments; +import com.aetherteam.aetherii.attachment.player.GuidebookDiscoveryAttachment; +import com.aetherteam.aetherii.client.event.hooks.AudioHooks; +import com.aetherteam.aetherii.client.sound.AetherIISoundEvents; +import com.aetherteam.aetherii.data.resources.registries.AetherIIStructures; +import net.minecraft.client.Minecraft; +import net.minecraft.client.sounds.MusicManager; +import net.minecraft.core.HolderSet; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.Identifier; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructureType; +import net.neoforged.neoforge.network.handling.IPayloadContext; + +public record EnteredStructurePacket() implements CustomPacketPayload { + public static final Type TYPE = new Type<>(Identifier.fromNamespaceAndPath(AetherII.MODID, "entered_structure")); + + public static final StreamCodec STREAM_CODEC = StreamCodec.unit(new EnteredStructurePacket()); + + @Override + public Type type() { + return TYPE; + } + + public static void execute(EnteredStructurePacket payload, IPayloadContext context) { + MusicManager music = Minecraft.getInstance().getMusicManager(); + + if (context.player() instanceof ServerPlayer serverPlayer && !music.isPlayingMusic(AudioHooks.AETHER_MINESHAFT)) { + if (serverPlayer.level().structureManager().getStructureAt(context.player().blockPosition(), serverPlayer.level().registryAccess().lookupOrThrow(Registries.STRUCTURE).getValueOrThrow(AetherIIStructures.UNDERCLOUD_MINESHAFT)).isValid()) { + music.stopPlaying(); + music.startPlaying(AudioHooks.AETHER_MINESHAFT); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/world/structure/pool/AetherPoolElement.java b/src/main/java/com/aetherteam/aetherii/world/structure/pool/AetherPoolElement.java index ee5d92d75a..9c137b0903 100644 --- a/src/main/java/com/aetherteam/aetherii/world/structure/pool/AetherPoolElement.java +++ b/src/main/java/com/aetherteam/aetherii/world/structure/pool/AetherPoolElement.java @@ -1,5 +1,9 @@ package com.aetherteam.aetherii.world.structure.pool; +import com.aetherteam.aetherii.entity.AetherIIEntityTypes; +import com.aetherteam.aetherii.entity.monster.ArkeniumTaluton; +import com.aetherteam.aetherii.entity.monster.Cockatrice; +import com.aetherteam.aetherii.entity.monster.GravititeTaluton; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Lists; import com.mojang.datafixers.util.Either; @@ -13,8 +17,11 @@ import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.Identifier; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.util.Util; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.StructureManager; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Blocks; @@ -26,6 +33,7 @@ import net.minecraft.world.level.levelgen.structure.pools.StructurePoolElementType; import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; import net.minecraft.world.level.levelgen.structure.templatesystem.*; +import net.minecraft.world.phys.Vec3; import java.util.Comparator; import java.util.List; @@ -118,6 +126,41 @@ pos, new StructurePlaceSettings().setRotation(rotation), Blocks.STRUCTURE_BLOCK, return listInfo; } + public void handleDataMarker(ServerLevelAccessor level, StructureTemplate.StructureBlockInfo dataMarker, BlockPos pos, Rotation rotation, RandomSource random, BoundingBox chunkBB) { + + assert dataMarker.nbt() != null; + if (dataMarker.nbt().getStringOr("metadata", "").equals("Cockatrice") && !level.getBlockState(pos).isAir()) { + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + Cockatrice cockatrice = new Cockatrice(AetherIIEntityTypes.COCKATRICE.get(), level.getLevel()); + cockatrice.setPos(Vec3.atBottomCenterOf(pos)); + cockatrice.setPersistenceRequired(); + level.addFreshEntity(cockatrice); + } + if (dataMarker.nbt().getStringOr("metadata", "").equals("Library Taluton") && !level.getBlockState(pos).isAir()) { + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + ArkeniumTaluton arkeniumTaluton = new ArkeniumTaluton(AetherIIEntityTypes.ARKENIUM_TALUTON.get(), level.getLevel()); + arkeniumTaluton.setPos(Vec3.atBottomCenterOf(pos)); + arkeniumTaluton.setPersistenceRequired(); + level.addFreshEntity(arkeniumTaluton); + } + if (dataMarker.nbt().getStringOr("metadata", "").equals("Mineshaft Taluton") && !level.getBlockState(pos).isAir()) { + if (random.nextFloat() < 0.5F) { + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + ArkeniumTaluton arkeniumTaluton = new ArkeniumTaluton(AetherIIEntityTypes.ARKENIUM_TALUTON.get(), level.getLevel()); + arkeniumTaluton.setPos(Vec3.atBottomCenterOf(pos)); + arkeniumTaluton.setPersistenceRequired(); + level.addFreshEntity(arkeniumTaluton); + + } else { + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + GravititeTaluton gravititeTaluton = new GravititeTaluton(AetherIIEntityTypes.GRAVITITE_TALUTON.get(), level.getLevel()); + gravititeTaluton.setPos(Vec3.atBottomCenterOf(pos)); + gravititeTaluton.setPersistenceRequired(); + level.addFreshEntity(gravititeTaluton); + } + } + } + @Override public List getShuffledJigsawBlocks(StructureTemplateManager templateManager, BlockPos pos, Rotation rotation, RandomSource random) { List list = this.getTemplate(templateManager).getJigsaws(pos, rotation); @@ -147,7 +190,8 @@ public boolean place(StructureTemplateManager templateManager, WorldGenLevel lev } else { for (StructureTemplate.StructureBlockInfo structureBlockInfo : StructureTemplate.processBlockInfos( level, offset, pos, settings, this.getDataMarkers(templateManager, offset, rotation, false))) { - this.handleDataMarker(level, structureBlockInfo, offset, rotation, random, box); + + this.handleDataMarker(level, structureBlockInfo, structureBlockInfo.pos(), rotation, random, box); } return true; @@ -162,7 +206,6 @@ protected StructurePlaceSettings getSettings(Rotation rotation, BoundingBox boun settings.setRotation(rotation); settings.setKnownShape(true); settings.setIgnoreEntities(false); - settings.addProcessor(BlockIgnoreProcessor.STRUCTURE_BLOCK); if (replaceAir) { // Vanilla uses two separate Pool Element Types to achieve this, it has been turned into a boolean for code efficiency purposes settings.addProcessor(BlockIgnoreProcessor.STRUCTURE_AND_AIR); } diff --git a/src/main/java/com/aetherteam/aetherii/world/structure/processor/AetherIIStructureProcessorTypes.java b/src/main/java/com/aetherteam/aetherii/world/structure/processor/AetherIIStructureProcessorTypes.java index 7988af9d5d..921b1f624a 100644 --- a/src/main/java/com/aetherteam/aetherii/world/structure/processor/AetherIIStructureProcessorTypes.java +++ b/src/main/java/com/aetherteam/aetherii/world/structure/processor/AetherIIStructureProcessorTypes.java @@ -10,8 +10,8 @@ public class AetherIIStructureProcessorTypes { public static final DeferredRegister> STRUCTURE_PROCESSOR_TYPES = DeferredRegister.create(Registries.STRUCTURE_PROCESSOR, AetherII.MODID); public static final DeferredHolder, StructureProcessorType> SHAYELINN_MOSS = STRUCTURE_PROCESSOR_TYPES.register("shayelinn_moss", () -> () -> ShayelinnMossProcessor.CODEC); - public static final DeferredHolder, StructureProcessorType> REMOVE_IN_AIR = STRUCTURE_PROCESSOR_TYPES.register("remove_in_air", () -> () -> RemoveInAirProcessor.CODEC); public static final DeferredHolder, StructureProcessorType> DENSITY_FUNCTION = STRUCTURE_PROCESSOR_TYPES.register("density_function", () -> () -> DensityFunctionProcessor.CODEC); + public static final DeferredHolder, StructureProcessorType> DENSITY_FUNCTION_DEGRADATION = STRUCTURE_PROCESSOR_TYPES.register("density_function_degradation", () -> () -> DensityFunctionDegradationProcessor.CODEC); public static final DeferredHolder, StructureProcessorType> COPY_RULE = STRUCTURE_PROCESSOR_TYPES.register("copy_rule", () -> () -> CopyRuleProcessor.CODEC); public static final DeferredHolder, StructureProcessorType> BOSS_ROOM = STRUCTURE_PROCESSOR_TYPES.register("boss_room", () -> () -> BossRoomProcessor.CODEC); public static final DeferredHolder, StructureProcessorType> MIMIC_CONTAINER = STRUCTURE_PROCESSOR_TYPES.register("mimic_container", () -> () -> MimicContainerProcessor.CODEC); diff --git a/src/main/java/com/aetherteam/aetherii/world/structure/processor/DensityFunctionDegradationProcessor.java b/src/main/java/com/aetherteam/aetherii/world/structure/processor/DensityFunctionDegradationProcessor.java new file mode 100644 index 0000000000..2f3f8e02d1 --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/world/structure/processor/DensityFunctionDegradationProcessor.java @@ -0,0 +1,52 @@ +package com.aetherteam.aetherii.world.structure.processor; + +import com.aetherteam.aetherii.world.density.PerlinNoiseFunction; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; +import org.jetbrains.annotations.Nullable; + +public class DensityFunctionDegradationProcessor extends StructureProcessor { + public final DensityFunction density; + + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + DensityFunction.HOLDER_HELPER_CODEC.fieldOf("density_function").forGetter(codec -> codec.density) + ).apply(instance, DensityFunctionDegradationProcessor::new) + ); + + public DensityFunctionDegradationProcessor(DensityFunction density) { + this.density = density; + } + + @Nullable + @Override + public StructureTemplate.StructureBlockInfo process(LevelReader level, BlockPos origin, BlockPos centerBottom, StructureTemplate.StructureBlockInfo blockInfo, StructureTemplate.StructureBlockInfo modifiedBlockInfo, StructurePlaceSettings settings, @Nullable StructureTemplate template) { + if (level instanceof WorldGenLevel worldGenLevel) { + + DensityFunction.Visitor visitor = PerlinNoiseFunction.createOrGetVisitor(worldGenLevel.getSeed()); + density.mapAll(visitor); + double noise = this.density.compute(new DensityFunction.SinglePointContext(modifiedBlockInfo.pos().getX(), modifiedBlockInfo.pos().getY(), modifiedBlockInfo.pos().getZ())); + BlockState state = blockInfo.state(); + if (noise > 0) { + if (state != Blocks.AIR.defaultBlockState()) { + return new StructureTemplate.StructureBlockInfo(modifiedBlockInfo.pos(), Blocks.AIR.defaultBlockState(), modifiedBlockInfo.nbt()); + } + } + } + return super.process(level, origin, centerBottom, blockInfo, modifiedBlockInfo, settings, template); + } + + @Override + protected StructureProcessorType getType() { + return AetherIIStructureProcessorTypes.DENSITY_FUNCTION_DEGRADATION.get(); + } +} \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/world/structure/processor/MimicContainerProcessor.java b/src/main/java/com/aetherteam/aetherii/world/structure/processor/MimicContainerProcessor.java index fce1592c47..5a81119acd 100644 --- a/src/main/java/com/aetherteam/aetherii/world/structure/processor/MimicContainerProcessor.java +++ b/src/main/java/com/aetherteam/aetherii/world/structure/processor/MimicContainerProcessor.java @@ -2,7 +2,9 @@ import com.aetherteam.aetherii.AetherIITags; import com.aetherteam.aetherii.item.components.AetherIIDataComponents; +import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponentMap; import net.minecraft.nbt.CompoundTag; @@ -16,9 +18,16 @@ import org.jetbrains.annotations.Nullable; public class MimicContainerProcessor extends StructureProcessor { - public static final MimicContainerProcessor INSTANCE = new MimicContainerProcessor(); + public final double probability; - public static final MapCodec CODEC = MapCodec.unit(MimicContainerProcessor.INSTANCE); + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + Codec.DOUBLE.fieldOf("probability").forGetter(codec -> codec.probability) + ).apply(instance, MimicContainerProcessor::new) + ); + + public MimicContainerProcessor(double probability) { + this.probability = probability; + } @SuppressWarnings("deprecation") @Override @@ -26,7 +35,7 @@ public class MimicContainerProcessor extends StructureProcessor { RandomSource random = RandomSource.create(Mth.getSeed(blockInfo.pos())); if (blockInfo.state().is(AetherIITags.Blocks.MIMIC_CONTAINERS)) { - if (random.nextDouble() <= 0.3) { + if (random.nextDouble() <= this.probability) { CompoundTag tag = blockInfo.nbt(); if (tag != null) { DataComponentMap oldMap = tag.read("components", DataComponentMap.CODEC).orElse(DataComponentMap.EMPTY); diff --git a/src/main/java/com/aetherteam/aetherii/world/structure/processor/RemoveInAirProcessor.java b/src/main/java/com/aetherteam/aetherii/world/structure/processor/RemoveInAirProcessor.java deleted file mode 100644 index 6704bc7f9e..0000000000 --- a/src/main/java/com/aetherteam/aetherii/world/structure/processor/RemoveInAirProcessor.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.aetherteam.aetherii.world.structure.processor; - -import com.mojang.serialization.MapCodec; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; -import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor; -import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; -import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; - -import javax.annotation.Nullable; - -public class RemoveInAirProcessor extends StructureProcessor { - public static final RemoveInAirProcessor INSTANCE = new RemoveInAirProcessor(); - - public static final MapCodec CODEC = MapCodec.unit(RemoveInAirProcessor.INSTANCE); - - @Nullable - @Override - public StructureTemplate.StructureBlockInfo process(LevelReader level, BlockPos origin, BlockPos centerBottom, StructureTemplate.StructureBlockInfo originalBlockInfo, StructureTemplate.StructureBlockInfo modifiedBlockInfo, StructurePlaceSettings settings, @Nullable StructureTemplate template) { - assert template != null; - if (level.getBlockState(origin).is(Blocks.AIR)) { - return null; - } - return super.process(level, origin, centerBottom, originalBlockInfo, modifiedBlockInfo, settings, template); - } - - @Override - protected StructureProcessorType getType() { - return AetherIIStructureProcessorTypes.REMOVE_IN_AIR.get(); - } -} \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/world/structure/processor/ShayelinnMossProcessor.java b/src/main/java/com/aetherteam/aetherii/world/structure/processor/ShayelinnMossProcessor.java index 2c9d1e127f..83612e2d3b 100644 --- a/src/main/java/com/aetherteam/aetherii/world/structure/processor/ShayelinnMossProcessor.java +++ b/src/main/java/com/aetherteam/aetherii/world/structure/processor/ShayelinnMossProcessor.java @@ -13,6 +13,7 @@ import javax.annotation.Nullable; +@Deprecated public class ShayelinnMossProcessor extends StructureProcessor { public static final ShayelinnMossProcessor INSTANCE = new ShayelinnMossProcessor(); diff --git a/src/main/java/com/aetherteam/aetherii/world/structure/processor/ruletest/AetherIIRuleTests.java b/src/main/java/com/aetherteam/aetherii/world/structure/processor/ruletest/AetherIIRuleTests.java new file mode 100644 index 0000000000..981042dc67 --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/world/structure/processor/ruletest/AetherIIRuleTests.java @@ -0,0 +1,14 @@ +package com.aetherteam.aetherii.world.structure.processor.ruletest; + +import com.aetherteam.aetherii.AetherII; +import com.aetherteam.aetherii.world.structure.processor.*; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTestType; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; + +public class AetherIIRuleTests { + public static final DeferredRegister> RULE_TESTS = DeferredRegister.create(Registries.RULE_TEST, AetherII.MODID); + + public static final DeferredHolder, RuleTestType> BLOCK_IGNORE_TEST = RULE_TESTS.register("block_ignore_test", () -> () -> BlockIgnoreTest.CODEC); +} \ No newline at end of file diff --git a/src/main/java/com/aetherteam/aetherii/world/structure/processor/ruletest/BlockIgnoreTest.java b/src/main/java/com/aetherteam/aetherii/world/structure/processor/ruletest/BlockIgnoreTest.java new file mode 100644 index 0000000000..8f41f77ded --- /dev/null +++ b/src/main/java/com/aetherteam/aetherii/world/structure/processor/ruletest/BlockIgnoreTest.java @@ -0,0 +1,26 @@ +package com.aetherteam.aetherii.world.structure.processor.ruletest; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; +import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTestType; + +public class BlockIgnoreTest extends RuleTest { + public static final MapCodec CODEC = BuiltInRegistries.BLOCK.byNameCodec().fieldOf("block").xmap(BlockIgnoreTest::new, (t) -> t.block); + private final Block block; + + public BlockIgnoreTest(Block block) { + this.block = block; + } + + public boolean test(BlockState state, RandomSource random) { + return !state.is(this.block); + } + + protected RuleTestType getType() { + return AetherIIRuleTests.BLOCK_IGNORE_TEST.get(); + } +} \ No newline at end of file diff --git a/src/main/resources/assets/aether_ii/models/item/template_theran_globe.json b/src/main/resources/assets/aether_ii/models/item/template_theran_globe.json new file mode 100644 index 0000000000..43ccaf8809 --- /dev/null +++ b/src/main/resources/assets/aether_ii/models/item/template_theran_globe.json @@ -0,0 +1,34 @@ +{ + "display": { + "gui": { + "rotation": [ 30, 45, 0 ], + "translation": [ 0, 0, 0], + "scale":[ 0.625, 0.625, 0.625 ] + }, + "ground": { + "rotation": [ 0, 0, 0 ], + "translation": [ 0, 3, 0], + "scale":[ 0.25, 0.25, 0.25 ] + }, + "head": { + "rotation": [ 0, 180, 0 ], + "translation": [ 0, 0, 0], + "scale":[ 1, 1, 1] + }, + "fixed": { + "rotation": [ 0, 180, 0 ], + "translation": [ 0, 0, 0], + "scale":[ 0.5, 0.5, 0.5 ] + }, + "thirdperson_righthand": { + "rotation": [ 75, 315, 0 ], + "translation": [ 0, 2.5, 0], + "scale": [ 0.375, 0.375, 0.375 ] + }, + "firstperson_righthand": { + "rotation": [ 0, 315, 0 ], + "translation": [ 0, 0, 0], + "scale": [ 0.4, 0.4, 0.4 ] + } + } +} diff --git a/src/main/resources/assets/aether_ii/sounds/music/mineshaft_ambience.ogg b/src/main/resources/assets/aether_ii/sounds/music/mineshaft_ambience.ogg new file mode 100644 index 0000000000..690b13a8d8 Binary files /dev/null and b/src/main/resources/assets/aether_ii/sounds/music/mineshaft_ambience.ogg differ diff --git a/src/main/resources/assets/aether_ii/textures/block/mossy_undershale.png b/src/main/resources/assets/aether_ii/textures/block/mossy_undershale.png new file mode 100644 index 0000000000..a35bd187af Binary files /dev/null and b/src/main/resources/assets/aether_ii/textures/block/mossy_undershale.png differ diff --git a/src/main/resources/assets/aether_ii/textures/entity/abandoned_bag/abandoned_bag.png b/src/main/resources/assets/aether_ii/textures/entity/abandoned_bag/abandoned_bag.png index f83f46867b..072d447988 100644 Binary files a/src/main/resources/assets/aether_ii/textures/entity/abandoned_bag/abandoned_bag.png and b/src/main/resources/assets/aether_ii/textures/entity/abandoned_bag/abandoned_bag.png differ diff --git a/src/main/resources/assets/aether_ii/textures/entity/theran_globe/theran_globe.png b/src/main/resources/assets/aether_ii/textures/entity/theran_globe/theran_globe.png new file mode 100644 index 0000000000..471c79464b Binary files /dev/null and b/src/main/resources/assets/aether_ii/textures/entity/theran_globe/theran_globe.png differ diff --git a/src/main/resources/assets/aether_ii/textures/item/painting_template_far.png b/src/main/resources/assets/aether_ii/textures/item/painting_template_far.png new file mode 100644 index 0000000000..e9c3f3e55c Binary files /dev/null and b/src/main/resources/assets/aether_ii/textures/item/painting_template_far.png differ diff --git a/src/main/resources/assets/aether_ii/textures/map/decorations/veradexian_library.png b/src/main/resources/assets/aether_ii/textures/map/decorations/veradexian_library.png new file mode 100644 index 0000000000..1d7ca354bb Binary files /dev/null and b/src/main/resources/assets/aether_ii/textures/map/decorations/veradexian_library.png differ diff --git a/src/main/resources/assets/aether_ii/textures/painting/far.png b/src/main/resources/assets/aether_ii/textures/painting/far.png new file mode 100644 index 0000000000..e66d831c50 Binary files /dev/null and b/src/main/resources/assets/aether_ii/textures/painting/far.png differ diff --git a/src/main/resources/data/aether_ii/structure/outpost/entrance_pedestal.nbt b/src/main/resources/data/aether_ii/structure/outpost/entrance_pedestal.nbt new file mode 100644 index 0000000000..e9007ae7f0 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/outpost/entrance_pedestal.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/outpost/foundation.nbt b/src/main/resources/data/aether_ii/structure/outpost/foundation.nbt new file mode 100644 index 0000000000..413613bcdf Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/outpost/foundation.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/outpost/outpost.nbt b/src/main/resources/data/aether_ii/structure/outpost/outpost.nbt index b231d7bec9..28b35db1e1 100644 Binary files a/src/main/resources/data/aether_ii/structure/outpost/outpost.nbt and b/src/main/resources/data/aether_ii/structure/outpost/outpost.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/outpost/tall_outpost.nbt b/src/main/resources/data/aether_ii/structure/outpost/tall_outpost.nbt index d4b76a1c9c..d3108184f7 100644 Binary files a/src/main/resources/data/aether_ii/structure/outpost/tall_outpost.nbt and b/src/main/resources/data/aether_ii/structure/outpost/tall_outpost.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/bridge_temple.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/bridge_temple.nbt new file mode 100644 index 0000000000..eb75343d50 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/bridge_temple.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/corner.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/corner.nbt new file mode 100644 index 0000000000..8912a3ed1d Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/corner.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/refinery.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/refinery.nbt new file mode 100644 index 0000000000..dde1b6303d Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/refinery.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/storage_platform.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/storage_platform.nbt new file mode 100644 index 0000000000..3db5de0b4d Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/storage_platform.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/straight_01.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/straight_01.nbt new file mode 100644 index 0000000000..bd17add188 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/straight_01.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/straight_02.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/straight_02.nbt new file mode 100644 index 0000000000..f64b532100 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/straight_02.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/t_cross.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/t_cross.nbt new file mode 100644 index 0000000000..caec894990 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/bridges/t_cross.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/corridor.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/corridor.nbt deleted file mode 100644 index c84cc2e583..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/corridor.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/corridor_slanted.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/corridor_slanted.nbt deleted file mode 100644 index 85de2b2470..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/corridor_slanted.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction.nbt deleted file mode 100644 index 83a4a6e426..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction_01.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction_01.nbt new file mode 100644 index 0000000000..41ea1e58e0 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction_01.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction_02.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction_02.nbt new file mode 100644 index 0000000000..49bd2f223a Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction_02.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction_03.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction_03.nbt new file mode 100644 index 0000000000..44e018b7cf Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/junction_03.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/ladder_junction.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/ladder_junction.nbt deleted file mode 100644 index 2c80ec1e17..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/ladder_junction.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/material_deposit.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/material_deposit.nbt deleted file mode 100644 index 47f4864c9a..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/material_deposit.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/staircase_01.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/staircase_01.nbt new file mode 100644 index 0000000000..c89fbc70a5 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/staircase_01.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/staircase_02.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/staircase_02.nbt new file mode 100644 index 0000000000..2014b3b9a8 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/staircase_02.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/storage_room.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/storage_room.nbt deleted file mode 100644 index d56e693cfd..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/storage_room.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_alkahest.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_alkahest.nbt new file mode 100644 index 0000000000..75aadc6c27 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_alkahest.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_basic.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_basic.nbt new file mode 100644 index 0000000000..cb9feb03da Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_basic.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_cockatrice_nest_01.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_cockatrice_nest_01.nbt new file mode 100644 index 0000000000..976e4f8a5f Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_cockatrice_nest_01.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_cockatrice_nest_02.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_cockatrice_nest_02.nbt new file mode 100644 index 0000000000..40ee72e0a1 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_cockatrice_nest_02.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_cockatrice_nest_03.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_cockatrice_nest_03.nbt new file mode 100644 index 0000000000..95efcd6b47 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_cockatrice_nest_03.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_elevation.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_elevation.nbt new file mode 100644 index 0000000000..d915642f97 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_elevation.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_pit.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_pit.nbt new file mode 100644 index 0000000000..0d0a6411b1 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_pit.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_platform.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_platform.nbt new file mode 100644 index 0000000000..ddd61e6c34 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_platform.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_sleeping_barracks.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_sleeping_barracks.nbt new file mode 100644 index 0000000000..4dc45a8f5d Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_sleeping_barracks.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_01.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_01.nbt new file mode 100644 index 0000000000..29ea32854d Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_01.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_02.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_02.nbt new file mode 100644 index 0000000000..df877eb16a Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_02.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_03.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_03.nbt new file mode 100644 index 0000000000..47bdd0f294 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_03.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_04.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_04.nbt new file mode 100644 index 0000000000..c4b2c81d4a Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/straight_storage_04.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/t_cross.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/t_cross.nbt index 1e3e90d52b..ade0257a09 100644 Binary files a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/t_cross.nbt and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/corridors/t_cross.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/hub.nbt b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/hub.nbt index 44b60a1033..423164d8a3 100644 Binary files a/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/hub.nbt and b/src/main/resources/data/aether_ii/structure/undercloud_mineshaft/hub.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/aqueduct.nbt b/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/aqueduct.nbt new file mode 100644 index 0000000000..b476d86c59 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/aqueduct.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/large_aqueduct_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/large_aqueduct_01.nbt deleted file mode 100644 index 2c863ebd93..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/large_aqueduct_01.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/large_aqueduct_02.nbt b/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/large_aqueduct_02.nbt deleted file mode 100644 index 7444e88279..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/large_aqueduct_02.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/large_aqueduct_03.nbt b/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/large_aqueduct_03.nbt deleted file mode 100644 index 409ba9242e..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/large_aqueduct_03.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/small_aqueduct_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/small_aqueduct_01.nbt deleted file mode 100644 index 3e93264112..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_aqueduct/small_aqueduct_01.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/base.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/base.nbt new file mode 100644 index 0000000000..dbd29ce14e Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/base.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/entrance_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/entrance_01.nbt deleted file mode 100644 index 6e8f0a9fd1..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/entrance_01.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/entrance_02.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/entrance_02.nbt deleted file mode 100644 index 5edfc73c70..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/entrance_02.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/entrance_pedestal.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/entrance_pedestal.nbt new file mode 100644 index 0000000000..53d97e08ed Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/entrance_pedestal.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/temple.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/temple.nbt new file mode 100644 index 0000000000..ad25820a46 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/arctic/temple.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/common/library_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/common/library_01.nbt deleted file mode 100644 index 7895aebb97..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/common/library_01.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_01.nbt deleted file mode 100644 index d1cc7d1978..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_01.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_02.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_02.nbt deleted file mode 100644 index e14ec89a29..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_02.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_03.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_03.nbt deleted file mode 100644 index faf02ef1dd..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_03.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_04.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_04.nbt deleted file mode 100644 index 51fb7af12d..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_04.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_05.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_05.nbt deleted file mode 100644 index eb0c37ade3..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_05.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_06.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_06.nbt deleted file mode 100644 index 698835fefe..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/common/secret_room_06.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_01.nbt new file mode 100644 index 0000000000..cd719f824b Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_01.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_02.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_02.nbt new file mode 100644 index 0000000000..fe79202a15 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_02.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_03.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_03.nbt new file mode 100644 index 0000000000..7603c38bc2 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_03.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_04.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_04.nbt new file mode 100644 index 0000000000..086d07e4a5 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_04.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_05.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_05.nbt new file mode 100644 index 0000000000..150b18569c Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_05.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_06.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_06.nbt new file mode 100644 index 0000000000..117babf15b Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_1/library_06.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_01.nbt new file mode 100644 index 0000000000..716b73863a Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_01.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_02.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_02.nbt new file mode 100644 index 0000000000..f8ee8c8633 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_02.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_03.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_03.nbt new file mode 100644 index 0000000000..4868bcf442 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_03.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_04.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_04.nbt new file mode 100644 index 0000000000..1204900090 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_04.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_05.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_05.nbt new file mode 100644 index 0000000000..3c4e5f2301 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_05.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_06.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_06.nbt new file mode 100644 index 0000000000..6e813b673e Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/floor_2/library_06.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/base.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/base.nbt new file mode 100644 index 0000000000..ad8d5c6112 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/base.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/entrance_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/entrance_01.nbt deleted file mode 100644 index 8edbbfa3d3..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/entrance_01.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/entrance_02.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/entrance_02.nbt deleted file mode 100644 index f8f8b195c0..0000000000 Binary files a/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/entrance_02.nbt and /dev/null differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/entrance_pedestal.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/entrance_pedestal.nbt new file mode 100644 index 0000000000..34b7540f3f Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/entrance_pedestal.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/temple.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/temple.nbt new file mode 100644 index 0000000000..5663e713a8 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/temperate/temple.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_01.nbt new file mode 100644 index 0000000000..5799280f00 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_01.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_02.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_02.nbt new file mode 100644 index 0000000000..2d7f54b0ea Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_02.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_03.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_03.nbt new file mode 100644 index 0000000000..d5a08b2eb3 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_03.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_04.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_04.nbt new file mode 100644 index 0000000000..5cf57ef9e7 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_back_right_04.nbt differ diff --git a/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_front_right_01.nbt b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_front_right_01.nbt new file mode 100644 index 0000000000..06aa994694 Binary files /dev/null and b/src/main/resources/data/aether_ii/structure/veradexian_library/vaults/vault_front_right_01.nbt differ