diff --git a/worlds/minecraft/Items.py b/worlds/minecraft/Items.py index c142ec2e..0ac0a28d 100644 --- a/worlds/minecraft/Items.py +++ b/worlds/minecraft/Items.py @@ -40,13 +40,13 @@ item_table = { "16 Iron Ore": ItemData(45025, False), "500 XP": ItemData(45026, False), "100 XP": ItemData(45027, False), - "50 XP": ItemData(45028, False), + "50 XP": ItemData(45028, False), "3 Ender Pearls": ItemData(45029, True), - "4 Lapis Lazuli": ItemData(45030, False), - "16 Porkchops": ItemData(45031, False), - "8 Gold Ore": ItemData(45032, False), - "Rotten Flesh": ItemData(45033, False), - "Single Arrow": ItemData(45034, False), + "4 Lapis Lazuli": ItemData(45030, False), + "16 Porkchops": ItemData(45031, False), + "8 Gold Ore": ItemData(45032, False), + "Rotten Flesh": ItemData(45033, False), + "Single Arrow": ItemData(45034, False), "32 Arrows": ItemData(45035, False), "Saddle": ItemData(45036, True), "Structure Compass (Village)": ItemData(45037, True), @@ -57,6 +57,8 @@ item_table = { "Shulker Box": ItemData(45042, False), "Dragon Egg Shard": ItemData(45043, True), "Spyglass": ItemData(45044, True), + "Lead": ItemData(45045, True), + "Bee Trap": ItemData(45100, False), "Blaze Rods": ItemData(None, True), @@ -90,6 +92,7 @@ required_items = { "3 Ender Pearls": 4, "Saddle": 1, "Spyglass": 1, + "Lead": 1, } junk_weights = { diff --git a/worlds/minecraft/Locations.py b/worlds/minecraft/Locations.py index a5c0421f..46398ab1 100644 --- a/worlds/minecraft/Locations.py +++ b/worlds/minecraft/Locations.py @@ -124,6 +124,15 @@ advancement_table = { "Sound of Music": AdvData(42105, 'Overworld'), "Star Trader": AdvData(42106, 'Village'), + # 1.19 advancements + "Birthday Song": AdvData(42107, 'Pillager Outpost'), + "Bukkit Bukkit": AdvData(42108, 'Overworld'), + "It Spreads": AdvData(42109, 'Overworld'), + "Sneak 100": AdvData(42110, 'Overworld'), + "When the Squad Hops into Town": AdvData(42111, 'Overworld'), + "With Our Powers Combined!": AdvData(42112, 'The Nether'), + "You've Got a Friend in Me": AdvData(42113, 'Pillager Outpost'), + "Blaze Spawner": AdvData(None, 'Nether Fortress'), "Ender Dragon": AdvData(None, 'The End'), "Wither": AdvData(None, 'Nether Fortress'), @@ -145,6 +154,8 @@ exclusion_table = { "Surge Protector", "Sound of Music", "Star Trader", + "When the Squad Hops into Town", + "With Our Powers Combined!", }, "unreasonable": { "How Did We Get Here?", diff --git a/worlds/minecraft/Rules.py b/worlds/minecraft/Rules.py index f2872e2d..2a88087d 100644 --- a/worlds/minecraft/Rules.py +++ b/worlds/minecraft/Rules.py @@ -274,6 +274,22 @@ def set_advancement_rules(world: MultiWorld, player: int): (state.can_reach("The Nether", 'Region', player) or state.can_reach("Nether Fortress", 'Region', player) or state._mc_can_piglin_trade(player)) and # soul sand for water elevator state._mc_overworld_villager(player)) + # 1.19 advancements + + # can make a cake, and can reach a pillager outposts for allays + set_rule(world.get_location("Birthday Song", player), lambda state: state.can_reach("The Lie", "Location", player)) + # find allay and craft a noteblock + set_rule(world.get_location("You've Got a Friend in Me", player), lambda state: state.has("Progressive Tools", player, 2) and state._mc_has_iron_ingots(player)) + # craft bucket and adventure to find frog spawning biome + set_rule(world.get_location("Bukkit Bukkit", player), lambda state: state.has("Bucket", player) and state._mc_has_iron_ingots(player) and state._mc_can_adventure(player)) + # I don't like this one its way to easy to get. just a pain to find. + set_rule(world.get_location("It Spreads", player), lambda state: state._mc_can_adventure(player) and state._mc_has_iron_ingots(player) and state.has("Progressive Tools", player, 2)) + # literally just a duplicate of It spreads. + set_rule(world.get_location("Sneak 100", player), lambda state: state._mc_can_adventure(player) and state._mc_has_iron_ingots(player) and state.has("Progressive Tools", player, 2)) + set_rule(world.get_location("When the Squad Hops into Town", player), lambda state: state._mc_can_adventure(player) and state.has("Lead", player)) + # lead frogs to the nether and a basalt delta's biomes to find magma cubes. + set_rule(world.get_location("With Our Powers Combined!", player), lambda state: state._mc_can_adventure(player) and state.has("Lead", player)) + # Sets rules on completion condition and postgame advancements def set_completion_rules(world: MultiWorld, player: int): diff --git a/worlds/minecraft/__init__.py b/worlds/minecraft/__init__.py index b1090cac..345d9774 100644 --- a/worlds/minecraft/__init__.py +++ b/worlds/minecraft/__init__.py @@ -13,7 +13,7 @@ from BaseClasses import Region, Entrance, Item, Tutorial from .Options import minecraft_options from ..AutoWorld import World, WebWorld -client_version = 8 +client_version = 9 class MinecraftWebWorld(WebWorld): theme = "jungle" @@ -65,7 +65,7 @@ class MinecraftWorld(World): item_name_to_id = {name: data.code for name, data in item_table.items()} location_name_to_id = {name: data.id for name, data in advancement_table.items()} - data_version = 6 + data_version = 7 def _get_mc_data(self): exits = [connection[0] for connection in default_connections]