diff --git a/CHANGELOG.md b/CHANGELOG.md index a549036da..c820029fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ - The medical condition effect that previously instantly killed you (which did not spawn a corpse) now gives you Wither III instead. @Pyritie #### Other - Added two more early game mechanical belts, and rubber+ belts are also now more expensive. @Pyritie +- Primitive illagers will no longer endlessly respawn. Instead, now they only spawn as "structures", so once you kill them they will never return. @Pyritie - Doubled the durability of all space suits @Pyritie - Added a way to convert between vinegar and acetic acid (#2386) @Epicificator - Added a renderer to the electric greenhouse, so now you can visually see your crops grow! @RubenVerg diff --git a/kubejs/data/tfg/lithostitched/worldgen_modifier/contains_illages.json b/kubejs/data/tfg/lithostitched/worldgen_modifier/avoid_water_large.json similarity index 100% rename from kubejs/data/tfg/lithostitched/worldgen_modifier/contains_illages.json rename to kubejs/data/tfg/lithostitched/worldgen_modifier/avoid_water_large.json diff --git a/kubejs/data/tfg/lithostitched/worldgen_modifier/contains_temperate_house.json b/kubejs/data/tfg/lithostitched/worldgen_modifier/avoid_water_small.json similarity index 75% rename from kubejs/data/tfg/lithostitched/worldgen_modifier/contains_temperate_house.json rename to kubejs/data/tfg/lithostitched/worldgen_modifier/avoid_water_small.json index 620e0a23a..5e692b623 100644 --- a/kubejs/data/tfg/lithostitched/worldgen_modifier/contains_temperate_house.json +++ b/kubejs/data/tfg/lithostitched/worldgen_modifier/avoid_water_small.json @@ -1,7 +1,9 @@ { "type": "lithostitched:set_structure_spawn_condition", "structures": [ - "tfg:temperate/plains_temperate_house_0" + "tfg:temperate/plains_temperate_house_0", + "tfg:illagers/camps", + "tfg:illagers/forest_roaming" ], "spawn_condition": { "type": "lithostitched:grid", diff --git a/kubejs/data/tfg/loot_tables/chests/illager_camps.json b/kubejs/data/tfg/loot_tables/chests/illager_camps.json new file mode 100644 index 000000000..70b923fb9 --- /dev/null +++ b/kubejs/data/tfg/loot_tables/chests/illager_camps.json @@ -0,0 +1,379 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "tfc:wool", + "weight": 80, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3, + "min": 1 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfc:wool_yarn", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 9, + "min": 5 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:leather", + "weight": 50, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2, + "min": 1 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfc:ceramic/gray_glazed_vessel", + "weight": 50 + }, + { + "type": "minecraft:item", + "name": "tfc:ceramic/light_gray_glazed_vessel", + "weight": 50 + }, + { + "type": "minecraft:item", + "name": "minecraft:sentry_armor_trim_smithing_template", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:vex_armor_trim_smithing_template", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:wild_armor_trim_smithing_template", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "minecraft:coast_armor_trim_smithing_template", + "weight": 10 + }, + { + "type": "minecraft:item", + "name": "tfc:powder/salt", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 8, + "min": 4 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfc:powder/saltpeter", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 6, + "min": 3 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfc:powder/sulfur", + "weight": 50, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 6, + "min": 3 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfc:candle", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4, + "min": 2 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfc:candle/gray", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4, + "min": 2 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfc:candle/light_gray", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4, + "min": 2 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:emerald", + "weight": 50, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4, + "min": 2 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:arrow", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 20, + "min": 12 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "firmalife:jar/compost", + "weight": 80 + }, + { + "type": "minecraft:item", + "name": "firmalife:jar/guano", + "weight": 80 + }, + { + "type": "minecraft:item", + "name": "firmalife:jar/honey", + "weight": 80 + }, + { + "type": "minecraft:item", + "name": "minecraft:paper", + "weight": 50, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2, + "min": 1 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfc:groundcover/pumice", + "weight": 50, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 4, + "min": 2 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfg:conifer_rosin", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3, + "min": 1 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "firmalife:beeswax", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3, + "min": 1 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:flint", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 6, + "min": 3 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "gtceu:tricalcium_phosphate_dust", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 5, + "min": 2 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:charcoal", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 5, + "min": 2 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "tfc:glue", + "weight": 100, + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 5, + "min": 2 + }, + "function": "minecraft:set_count" + } + ] + }, + { + "type": "minecraft:item", + "name": "chalk:gray_chalk", + "weight": 70 + }, + { + "type": "minecraft:item", + "name": "chalk:light_gray_chalk", + "weight": 70 + }, + { + "type": "minecraft:item", + "name": "species:music_disc_lapidarian", + "weight": 10 + } + ], + "rolls": { + "type": "minecraft:uniform", + "max": 8, + "min": 6 + } + } + ] +} \ No newline at end of file diff --git a/kubejs/data/tfg/structures/illager_generic/gatherers.nbt b/kubejs/data/tfg/structures/illager_generic/gatherers.nbt new file mode 100644 index 000000000..5f000a202 Binary files /dev/null and b/kubejs/data/tfg/structures/illager_generic/gatherers.nbt differ diff --git a/kubejs/data/tfg/structures/illager_generic/huntmaster_camp.nbt b/kubejs/data/tfg/structures/illager_generic/huntmaster_camp.nbt new file mode 100644 index 000000000..c3dcea4f5 Binary files /dev/null and b/kubejs/data/tfg/structures/illager_generic/huntmaster_camp.nbt differ diff --git a/kubejs/data/tfg/structures/illager_generic/mobs/huntmaster.nbt b/kubejs/data/tfg/structures/illager_generic/mobs/huntmaster.nbt new file mode 100644 index 000000000..66352151f Binary files /dev/null and b/kubejs/data/tfg/structures/illager_generic/mobs/huntmaster.nbt differ diff --git a/kubejs/data/tfg/structures/illager_generic/small_camp_1.nbt b/kubejs/data/tfg/structures/illager_generic/small_camp_1.nbt new file mode 100644 index 000000000..a74a15a4f Binary files /dev/null and b/kubejs/data/tfg/structures/illager_generic/small_camp_1.nbt differ diff --git a/kubejs/data/tfg/structures/illager_generic/small_camp_2.nbt b/kubejs/data/tfg/structures/illager_generic/small_camp_2.nbt new file mode 100644 index 000000000..6119022e5 Binary files /dev/null and b/kubejs/data/tfg/structures/illager_generic/small_camp_2.nbt differ diff --git a/kubejs/data/tfg/worldgen/structure/illagers/camps.json b/kubejs/data/tfg/worldgen/structure/illagers/camps.json new file mode 100644 index 000000000..1c97dd910 --- /dev/null +++ b/kubejs/data/tfg/worldgen/structure/illagers/camps.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:jigsaw", + "start_pool": "tfg:illagers/camp_start_pool", + "size": 3, + "max_distance_from_center": 50, + "biomes": "#tfg:has_structure/illager_camp", + "step": "surface_structures", + "terrain_adaptation": "beard_thin", + "start_height": { + "absolute": 0 + }, + "project_start_to_heightmap": "MOTION_BLOCKING", + "use_expansion_hack": false, + "adapt_noise": true, + "spawn_overrides": { + "creature": { + "bounding_box": "full", + "spawns": [] + }, + "monster": { + "bounding_box": "full", + "spawns": [] + } + } +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/structure/illagers/forest_roaming.json b/kubejs/data/tfg/worldgen/structure/illagers/forest_roaming.json new file mode 100644 index 000000000..d4ebf1721 --- /dev/null +++ b/kubejs/data/tfg/worldgen/structure/illagers/forest_roaming.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:jigsaw", + "start_pool": "tfg:illagers/forest_roaming_start_pool", + "size": 3, + "max_distance_from_center": 12, + "biomes": "#tfg:has_structure/illager_roaming", + "step": "surface_structures", + "terrain_adaptation": "beard_thin", + "start_height": { + "absolute": 0 + }, + "project_start_to_heightmap": "MOTION_BLOCKING", + "use_expansion_hack": false, + "adapt_noise": true, + "spawn_overrides": { + "creature": { + "bounding_box": "full", + "spawns": [] + }, + "monster": { + "bounding_box": "full", + "spawns": [] + } + } +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/structure/illagers/norse_village_living.json b/kubejs/data/tfg/worldgen/structure/illagers/norse_village_living.json index 6f79900ef..a61dd11c0 100644 --- a/kubejs/data/tfg/worldgen/structure/illagers/norse_village_living.json +++ b/kubejs/data/tfg/worldgen/structure/illagers/norse_village_living.json @@ -1,7 +1,7 @@ { "type": "minecraft:jigsaw", "start_pool": "tfg:illagers/norse_village_living_start_pool", - "size": 4, + "size": 5, "max_distance_from_center": 116, "biomes": "#tfg:has_structure/illages", "step": "surface_structures", diff --git a/kubejs/data/tfg/worldgen/structure/illagers/norse_village_ruined.json b/kubejs/data/tfg/worldgen/structure/illagers/norse_village_ruined.json index 85e8d895a..249966a32 100644 --- a/kubejs/data/tfg/worldgen/structure/illagers/norse_village_ruined.json +++ b/kubejs/data/tfg/worldgen/structure/illagers/norse_village_ruined.json @@ -1,7 +1,7 @@ { "type": "minecraft:jigsaw", "start_pool": "tfg:illagers/norse_village_ruined_start_pool", - "size": 4, + "size": 5, "max_distance_from_center": 116, "biomes": "#tfg:has_structure/illages", "step": "surface_structures", diff --git a/kubejs/data/tfg/worldgen/structure_set/illagers/illager_camps.json b/kubejs/data/tfg/worldgen/structure_set/illagers/illager_camps.json new file mode 100644 index 000000000..4096f4a32 --- /dev/null +++ b/kubejs/data/tfg/worldgen/structure_set/illagers/illager_camps.json @@ -0,0 +1,19 @@ +{ + "structures": [ + { + "structure": "tfg:illagers/camps", + "weight": 100 + } + ], + "placement": { + "type": "tfc:climate", + "salt": 96263635, + "spacing": 40, + "separation": 30, + "climate": { + "min_temperature": -12, + "max_temperature": 25, + "max_forest": "edge" + } + } +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/structure_set/illagers/illager_forest_roaming.json b/kubejs/data/tfg/worldgen/structure_set/illagers/illager_forest_roaming.json new file mode 100644 index 000000000..7f55a757a --- /dev/null +++ b/kubejs/data/tfg/worldgen/structure_set/illagers/illager_forest_roaming.json @@ -0,0 +1,19 @@ +{ + "structures": [ + { + "structure": "tfg:illagers/forest_roaming", + "weight": 100 + } + ], + "placement": { + "type": "tfc:climate", + "salt": 74256242524, + "spacing": 35, + "separation": 25, + "climate": { + "min_temperature": -12, + "max_temperature": 25, + "min_forest": "edge" + } + } +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/template_pool/illagers/camp_start_pool.json b/kubejs/data/tfg/worldgen/template_pool/illagers/camp_start_pool.json new file mode 100644 index 000000000..520cebad0 --- /dev/null +++ b/kubejs/data/tfg/worldgen/template_pool/illagers/camp_start_pool.json @@ -0,0 +1,33 @@ +{ + "name": "tfg:illagers/camp_start_pool", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 100, + "element": { + "location": "tfg:illager_generic/small_camp_1", + "processors": "minecraft:empty", + "projection": "terrain_matching", + "element_type": "minecraft:single_pool_element" + } + }, + { + "weight": 100, + "element": { + "location": "tfg:illager_generic/small_camp_2", + "processors": "minecraft:empty", + "projection": "terrain_matching", + "element_type": "minecraft:single_pool_element" + } + }, + { + "weight": 100, + "element": { + "location": "tfg:illager_generic/huntmaster_camp", + "processors": "minecraft:empty", + "projection": "terrain_matching", + "element_type": "minecraft:single_pool_element" + } + } + ] +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/template_pool/illagers/forest_roaming_start_pool.json b/kubejs/data/tfg/worldgen/template_pool/illagers/forest_roaming_start_pool.json new file mode 100644 index 000000000..003ed5a50 --- /dev/null +++ b/kubejs/data/tfg/worldgen/template_pool/illagers/forest_roaming_start_pool.json @@ -0,0 +1,15 @@ +{ + "name": "tfg:illagers/forest_roaming_start_pool", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 100, + "element": { + "location": "tfg:illager_generic/gatherers", + "processors": "minecraft:empty", + "projection": "terrain_matching", + "element_type": "minecraft:single_pool_element" + } + } + ] +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/template_pool/illagers/mob_gatherer.json b/kubejs/data/tfg/worldgen/template_pool/illagers/mob_gatherer.json new file mode 100644 index 000000000..8c6aab2f1 --- /dev/null +++ b/kubejs/data/tfg/worldgen/template_pool/illagers/mob_gatherer.json @@ -0,0 +1,24 @@ +{ + "name": "tfg:illagers/mob_gatherer", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 100, + "element": { + "location": "tfg:illager_generic/mobs/forager", + "processors": "minecraft:empty", + "projection": "rigid", + "element_type": "minecraft:single_pool_element" + } + }, + { + "weight": 70, + "element": { + "location": "tfg:illager_generic/mobs/herbalist", + "processors": "minecraft:empty", + "projection": "rigid", + "element_type": "minecraft:single_pool_element" + } + } + ] +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/template_pool/illagers/mob_huntmaster.json b/kubejs/data/tfg/worldgen/template_pool/illagers/mob_huntmaster.json new file mode 100644 index 000000000..fed392c0b --- /dev/null +++ b/kubejs/data/tfg/worldgen/template_pool/illagers/mob_huntmaster.json @@ -0,0 +1,15 @@ +{ + "name": "tfg:illagers/mob_huntmaster", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 100, + "element": { + "location": "tfg:illager_generic/mobs/huntmaster", + "processors": "minecraft:empty", + "projection": "rigid", + "element_type": "minecraft:single_pool_element" + } + } + ] +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/worldgen/tags.overworld.js b/kubejs/server_scripts/tfg/worldgen/tags.overworld.js index 7bd81d8d9..594d832ca 100644 --- a/kubejs/server_scripts/tfg/worldgen/tags.overworld.js +++ b/kubejs/server_scripts/tfg/worldgen/tags.overworld.js @@ -22,6 +22,33 @@ function registerTFGOverworldBiomeTags(event) { event.add('tfg:has_structure/illages', 'tfc:plateau') event.add('tfg:has_structure/illages', 'tfc:old_mountains') + event.add('tfg:has_structure/illager_camp', 'tfc:badlands') + event.add('tfg:has_structure/illager_camp', 'tfc:canyons') + event.add('tfg:has_structure/illager_camp', 'tfc:highlands') + event.add('tfg:has_structure/illager_camp', 'tfc:hills') + event.add('tfg:has_structure/illager_camp', 'tfc:inverted_badlands') + event.add('tfg:has_structure/illager_camp', 'tfc:low_canyons') + event.add('tfg:has_structure/illager_camp', 'tfc:lowlands') + event.add('tfg:has_structure/illager_camp', 'tfc:mountains') + event.add('tfg:has_structure/illager_camp', 'tfc:oceanic_mountains') + event.add('tfg:has_structure/illager_camp', 'tfc:old_mountains') + event.add('tfg:has_structure/illager_camp', 'tfc:plains') + event.add('tfg:has_structure/illager_camp', 'tfc:plateau') + event.add('tfg:has_structure/illager_camp', 'tfc:rolling_hills') + event.add('tfg:has_structure/illager_camp', 'tfc:salt_marsh') + event.add('tfg:has_structure/illager_camp', 'tfc:shore') + event.add('tfg:has_structure/illager_camp', 'tfc:tidal_flats') + event.add('tfg:has_structure/illager_camp', 'tfc:volcanic_mountains') + event.add('tfg:has_structure/illager_camp', 'tfc:volcanic_oceanic_mountains') + + event.add('tfg:has_structure/illager_roaming', 'tfc:highlands') + event.add('tfg:has_structure/illager_roaming', 'tfc:hills') + event.add('tfg:has_structure/illager_roaming', 'tfc:lowlands') + event.add('tfg:has_structure/illager_roaming', 'tfc:plains') + event.add('tfg:has_structure/illager_roaming', 'tfc:plateau') + event.add('tfg:has_structure/illager_roaming', 'tfc:rolling_hills') + event.add('tfg:has_structure/illager_roaming', 'tfc:salt_marsh') + event.add('tfg:never_has_structure/illages', '#tfc:is_lake') event.add('tfg:never_has_structure/illages', '#tfc:is_ocean') event.add('tfg:never_has_structure/illages', '#tfc:is_river')