diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 0f1c635..1999315 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -19,6 +19,11 @@ on: required: false default: false type: boolean + separate_forge: + description: 'If false, separate Modrinth Forge mod version will not be uploaded' + required: false + default: true + type: boolean jobs: deploy: @@ -257,7 +262,7 @@ jobs: - name: Upload Forge mod version to Modrinth # Forge mod version is uploaded separately atm due to it not being compatible with Minecraft 1.21.6 or above id: upload_forge_modrinth_mod uses: Kir-Antipov/mc-publish@v3.3 - if: steps.check_mod_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == 'false' + if: steps.check_mod_folder.outputs.files_exists == 'true' && github.event.inputs.dry_run == 'false' && github.event.inputs.separate_forge == 'true' with: modrinth-id: zrzYrlm0 modrinth-token: ${{ secrets.MODRINTH_TOKEN }} diff --git a/CHANGES.md b/CHANGES.md index 687fe8e..b0a9219 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,4 @@ -- **Added support for Minecraft 1.21.11** šŸŽ - - Updated to work with the new gamerule names - - Removed broken hide feedback code for 1.21+ +- **Added support for Minecraft 26.1** 🐤 + - Migrated `#bamboo_plantable_on` references to `#supports_vegetation` + - Added router to handle [unobfuscated code](https://www.minecraft.net/en-us/article/removing-obfuscation-in-java-edition) - Bumped pack format and protocol version diff --git a/data/spawnanimations/function/internal/animation/dig_up/particles/giant_particles.mcfunction b/data/spawnanimations/function/internal/animation/dig_up/particles/giant_particles.mcfunction index 2cf4190..963dd15 100644 --- a/data/spawnanimations/function/internal/animation/dig_up/particles/giant_particles.mcfunction +++ b/data/spawnanimations/function/internal/animation/dig_up/particles/giant_particles.mcfunction @@ -3,7 +3,7 @@ # Sand execute if block ~ ~ ~ #minecraft:sand run particle block{block_state:"minecraft:sand"} ~ ~1 ~ 1.5 0 1.5 1 30 normal # Dirt -execute if block ~ ~ ~ #minecraft:bamboo_plantable_on unless block ~ ~ ~ #minecraft:sand run particle block{block_state:"minecraft:dirt"} ~ ~1 ~ 1.5 0 1.5 1 30 normal +execute if block ~ ~ ~ #spawnanimations:dirt unless block ~ ~ ~ #minecraft:sand run particle block{block_state:"minecraft:dirt"} ~ ~1 ~ 1.5 0 1.5 1 30 normal # Wood execute if block ~ ~ ~ #minecraft:planks run particle block{block_state:"minecraft:oak_planks"} ~ ~1 ~ 1.5 0 1.5 1 30 normal execute if block ~ ~ ~ #minecraft:logs run particle block{block_state:"minecraft:oak_log"} ~ ~1 ~ 1.5 0 1.5 1 30 normal diff --git a/data/spawnanimations/function/internal/animation/dig_up/particles/particles.mcfunction b/data/spawnanimations/function/internal/animation/dig_up/particles/particles.mcfunction index cd4e0ba..e780ab1 100644 --- a/data/spawnanimations/function/internal/animation/dig_up/particles/particles.mcfunction +++ b/data/spawnanimations/function/internal/animation/dig_up/particles/particles.mcfunction @@ -6,7 +6,7 @@ execute if block ~ ~ ~ #minecraft:sand unless block ~ ~ ~ minecraft:red_sand run execute if block ~ ~ ~ minecraft:red_sand run particle block{block_state:"minecraft:red_sand"} ~ ~0.2 ~ 0.1 0 0.1 1 9 normal execute if block ~ ~ ~ minecraft:sandstone run particle block{block_state:"minecraft:sandstone"} ~ ~0.2 ~ 0.1 0 0.1 1 9 normal # Dirt -execute if block ~ ~ ~ #minecraft:bamboo_plantable_on unless block ~ ~ ~ #minecraft:sand unless block ~ ~0.2 ~ minecraft:gravel run particle block{block_state:"minecraft:dirt"} ~ ~ ~ 0.1 0 0.1 1 9 normal +execute if block ~ ~ ~ #spawnanimations:dirt unless block ~ ~ ~ #minecraft:sand unless block ~ ~0.2 ~ minecraft:gravel run particle block{block_state:"minecraft:dirt"} ~ ~ ~ 0.1 0 0.1 1 9 normal # Wood execute if block ~ ~ ~ #minecraft:planks run particle block{block_state:"minecraft:oak_planks"} ~ ~0.2 ~ 0.1 0 0.1 1 9 normal execute if block ~ ~ ~ #minecraft:logs run particle block{block_state:"minecraft:oak_log"} ~ ~0.2 ~ 0.1 0 0.1 1 9 normal diff --git a/data/spawnanimations/function/internal/animation/dig_up/sound/play_sound.mcfunction b/data/spawnanimations/function/internal/animation/dig_up/sound/play_sound.mcfunction index e796a1f..49dca11 100644 --- a/data/spawnanimations/function/internal/animation/dig_up/sound/play_sound.mcfunction +++ b/data/spawnanimations/function/internal/animation/dig_up/sound/play_sound.mcfunction @@ -4,7 +4,8 @@ execute if block ~ ~ ~ #minecraft:sand run playsound minecraft:block.sand.break hostile @a ~ ~ ~ 0.85 0.6 execute if block ~ ~ ~ sandstone run playsound minecraft:block.stone.break hostile @a ~ ~ ~ 0.85 0.6 # Dirt -execute if block ~ ~ ~ #minecraft:bamboo_plantable_on unless block ~ ~ ~ #minecraft:sand unless block ~ ~0.2 ~ minecraft:snow run playsound minecraft:block.gravel.break hostile @a ~ ~ ~ 0.85 0.6 +execute if block ~ ~ ~ #spawnanimations:dirt unless block ~ ~ ~ #minecraft:sand unless block ~ ~0.2 ~ minecraft:snow run playsound minecraft:block.gravel.break hostile @a ~ ~ ~ 0.85 0.6 +execute if block ~ ~ ~ minecraft:gravel unless block ~ ~ ~ #spawnanimations:dirt unless block ~ ~0.2 ~ minecraft:snow run playsound minecraft:block.gravel.break hostile @a ~ ~ ~ 0.85 0.6 # Wood execute if block ~ ~ ~ #minecraft:planks run playsound minecraft:block.wood.break hostile @a ~ ~ ~ 0.85 0.6 execute if block ~ ~ ~ #minecraft:logs run playsound minecraft:block.wood.break hostile @a ~ ~ ~ 0.85 0.6 diff --git a/data/spawnanimations/function/internal/animation/dig_up/sound/play_sound2.mcfunction b/data/spawnanimations/function/internal/animation/dig_up/sound/play_sound2.mcfunction index da1e264..d3c47f9 100644 --- a/data/spawnanimations/function/internal/animation/dig_up/sound/play_sound2.mcfunction +++ b/data/spawnanimations/function/internal/animation/dig_up/sound/play_sound2.mcfunction @@ -4,7 +4,8 @@ execute if block ~ ~ ~ #minecraft:sand run playsound minecraft:block.sand.break hostile @a ~ ~ ~ 0.85 0.9 execute if block ~ ~ ~ sandstone run playsound minecraft:block.stone.break hostile @a ~ ~ ~ 0.85 0.9 # Dirt -execute if block ~ ~ ~ #minecraft:bamboo_plantable_on unless block ~ ~ ~ #minecraft:sand run playsound minecraft:block.gravel.break hostile @a ~ ~ ~ 0.85 0.9 +execute if block ~ ~ ~ #spawnanimations:dirt unless block ~ ~ ~ #minecraft:sand run playsound minecraft:block.gravel.break hostile @a ~ ~ ~ 0.85 0.9 +execute if block ~ ~ ~ minecraft:gravel unless block ~ ~ ~ #spawnanimations:dirt run playsound minecraft:block.gravel.break hostile @a ~ ~ ~ 0.85 0.9 # Wood execute if block ~ ~ ~ #minecraft:planks run playsound minecraft:block.wood.break hostile @a ~ ~ ~ 0.85 0.9 execute if block ~ ~ ~ #minecraft:logs run playsound minecraft:block.wood.break hostile @a ~ ~ ~ 0.85 0.9 @@ -28,8 +29,8 @@ execute if block ~ ~ ~ minecraft:end_stone run playsound minecraft:block.stone.b # Nether execute if block ~ ~ ~ #minecraft:base_stone_nether run playsound minecraft:block.netherrack.break hostile @a ~ ~ ~ 0.85 0.9 -execute if block ~ ~ ~ minecraft:nether_bricks run playsound minecraft:block.nether_bricks.break hostile @a ~ ~ ~ 0.85 0.9 execute if block ~ ~ ~ #minecraft:nylium run playsound minecraft:block.wart_block.break hostile @a ~ ~ ~ 0.85 0.9 +execute if block ~ ~ ~ minecraft:nether_bricks run playsound minecraft:block.nether_bricks.break hostile @a ~ ~ ~ 0.85 0.9 execute if block ~ ~ ~ #minecraft:soul_fire_base_blocks run playsound minecraft:block.soul_sand.break hostile @a ~ ~ ~ 0.85 0.9 execute if block ~ ~ ~ minecraft:lava run playsound minecraft:block.lava.pop hostile @a ~ ~ ~ 0.85 0.9 diff --git a/data/spawnanimations/function/internal/version_checker/start.mcfunction b/data/spawnanimations/function/internal/version_checker/start.mcfunction index e5ec035..1469e16 100644 --- a/data/spawnanimations/function/internal/version_checker/start.mcfunction +++ b/data/spawnanimations/function/internal/version_checker/start.mcfunction @@ -1,7 +1,7 @@ ##by Tschipcraft execute store result score $version ts.sa.settings run data get entity @r DataVersion -execute unless score $global tvc_ignore matches 1 if score $version ts.sa.settings matches 4700.. run tellraw @a [{"text":"[Spawn Animations] ","color":"gray"},{"text":"?","bold":true,"color":"gold"},{"text":" Future unknown Minecraft version above 1.21.11 detected! This data pack/mod may not work correctly anymore! Please make sure to check for updates in the menu! (","color":"gold"},{"text":"/trigger tschipcraft.menu","underlined":true,"color":"gold","click_event":{"action":"run_command","command":"trigger tschipcraft.menu"},"hover_event":{"action":"show_text","value":"Click here","text":"Click here"}},{"text":")","color":"gold"}] +execute unless score $global tvc_ignore matches 1 if score $version ts.sa.settings matches 4800.. run tellraw @a [{"text":"[Spawn Animations] ","color":"gray"},{"text":"?","bold":true,"color":"gold"},{"text":" Future unknown Minecraft version above 26.1 detected! This data pack/mod may not work correctly anymore! Please make sure to check for updates in the menu! (","color":"gold"},{"text":"/trigger tschipcraft.menu","underlined":true,"color":"gold","click_event":{"action":"run_command","command":"trigger tschipcraft.menu"},"hover_event":{"action":"show_text","value":"Click here","text":"Click here"}},{"text":")","color":"gold"}] # Note: 1.17x-1.20x uses the old folder names (function -> functions) # Announce escape sequence handling changes diff --git a/data/spawnanimations/tags/block/dirt.json b/data/spawnanimations/tags/block/dirt.json new file mode 100644 index 0000000..f292e0d --- /dev/null +++ b/data/spawnanimations/tags/block/dirt.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + {"id": "#minecraft:bamboo_plantable_on", "required": false}, + {"id": "#minecraft:supports_vegetation", "required": false} + ] +} diff --git a/data/spawnanimations/tags/block/supported.json b/data/spawnanimations/tags/block/supported.json index a458d49..041bd68 100644 --- a/data/spawnanimations/tags/block/supported.json +++ b/data/spawnanimations/tags/block/supported.json @@ -3,7 +3,7 @@ "values": [ "#minecraft:sand", "minecraft:sandstone", - "#minecraft:bamboo_plantable_on", + "#spawnanimations:dirt", "#minecraft:planks", "#minecraft:logs", "#minecraft:leaves", diff --git a/fabric.mod.json b/fabric.mod.json index cca9111..793e1d0 100644 --- a/fabric.mod.json +++ b/fabric.mod.json @@ -22,7 +22,6 @@ }, "depends": { "minecraft": "${mc_version_range_fabric}", - "fabric": ">=0.34.0", "java": ">=8" }, "recommends": { diff --git a/net/tschipcraft/spawnanimations/fabric/Init.class b/net/tschipcraft/spawnanimations/fabric/Init.class index 390b78c..df34b16 100644 Binary files a/net/tschipcraft/spawnanimations/fabric/Init.class and b/net/tschipcraft/spawnanimations/fabric/Init.class differ diff --git a/net/tschipcraft/spawnanimations/fabric/sendConfig.class b/net/tschipcraft/spawnanimations/fabric/sendConfig.class index 83e46f4..5854ea3 100644 Binary files a/net/tschipcraft/spawnanimations/fabric/sendConfig.class and b/net/tschipcraft/spawnanimations/fabric/sendConfig.class differ diff --git a/net/tschipcraft/spawnanimations/fabric/sendConfigObf.class b/net/tschipcraft/spawnanimations/fabric/sendConfigObf.class new file mode 100644 index 0000000..f22d1c1 Binary files /dev/null and b/net/tschipcraft/spawnanimations/fabric/sendConfigObf.class differ diff --git a/pack.mcmeta b/pack.mcmeta index 8c9c051..0678d69 100644 --- a/pack.mcmeta +++ b/pack.mcmeta @@ -2,9 +2,9 @@ "id": "spawnanimations", "pack": { "pack_format": 15, - "supported_formats": [7, 94], + "supported_formats": [7, 101], "min_format": 7, - "max_format": 94, + "max_format": 101, "description": "Tschipcraft's Spawn Animations\nā”” v${version} ā— mc${mc_human_version_range}" }, "overlays": { diff --git a/src/main/java/net/tschipcraft/spawnanimations/fabric/Init.java b/src/main/java/net/tschipcraft/spawnanimations/fabric/Init.java index 0836079..68cbea0 100644 --- a/src/main/java/net/tschipcraft/spawnanimations/fabric/Init.java +++ b/src/main/java/net/tschipcraft/spawnanimations/fabric/Init.java @@ -31,7 +31,13 @@ public void onInitialize() { if (FabricLoader.getInstance().isModLoaded("midnightlib")) { // Use MidnightLib features LOGGER.info("[Spawn Animations] Sending global config to world ..."); - sendConfig.sendConfig(server); + try { + // Check for obfuscated class name to determine if we're running a pre 26.1 version + Class.forName("net.minecraft.class_2168"); + sendConfigObf.sendConfig(server); + } catch (ClassNotFoundException e) { + sendConfig.sendConfig(server); + } } }); } diff --git a/src/main/java/net/tschipcraft/spawnanimations/fabric/sendConfig.java b/src/main/java/net/tschipcraft/spawnanimations/fabric/sendConfig.java index d88ef86..ae0cc6d 100644 --- a/src/main/java/net/tschipcraft/spawnanimations/fabric/sendConfig.java +++ b/src/main/java/net/tschipcraft/spawnanimations/fabric/sendConfig.java @@ -1,8 +1,8 @@ package net.tschipcraft.spawnanimations.fabric; import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.minecraft.commands.CommandSourceStack; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.command.ServerCommandSource; public class sendConfig { @@ -39,6 +39,7 @@ public static void sendConfig(MinecraftServer server) { } else { sendCommand("execute if score $play_sounds ts.sa.settings matches -1 run scoreboard players set $play_sounds ts.sa.settings 0", server); sendCommand("execute if score $play_sounds ts.sa.settings matches 2 run scoreboard players set $play_sounds ts.sa.settings 1", server); + } if (Config.hide_worn_armor_and_tools == Config.bool.YES) { sendCommand("scoreboard players set $hide_armor ts.sa.settings 2", server); @@ -75,9 +76,9 @@ public static void sendConfig(MinecraftServer server) { } public static void sendCommand(String command, MinecraftServer server) { - ServerCommandSource commandSource = server.getCommandSource(); + CommandSourceStack commandSource = server.createCommandSourceStack(); try { - server.getCommandManager().getDispatcher().execute(command, commandSource); + server.getCommands().getDispatcher().execute(command, commandSource); } catch (CommandSyntaxException ignored) { } } diff --git a/src/main/java/net/tschipcraft/spawnanimations/fabric/sendConfigObf.java b/src/main/java/net/tschipcraft/spawnanimations/fabric/sendConfigObf.java new file mode 100644 index 0000000..c45f2f8 --- /dev/null +++ b/src/main/java/net/tschipcraft/spawnanimations/fabric/sendConfigObf.java @@ -0,0 +1,86 @@ +package net.tschipcraft.spawnanimations.fabric; + +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.command.ServerCommandSource; + +public class sendConfigObf { + + public static void sendConfig(MinecraftServer server) { + sendCommand("scoreboard objectives add ts.sa.settings dummy", server); + + if (Config.activation_distance == 0) { + sendCommand("execute unless score $activation_dist ts.sa.settings matches 1..100 run scoreboard players set $activation_dist ts.sa.settings 20", server); + sendCommand("execute if score #lock_distance ts.sa.settings matches 1 run scoreboard players set #lock_distance ts.sa.settings 0", server); + } else { + sendCommand("scoreboard players set $activation_dist ts.sa.settings " + Config.activation_distance, server); + sendCommand("scoreboard players set #lock_distance ts.sa.settings 1", server); + } + if (Config.activation_mode == Config.mode.CLASSIC) { + sendCommand("scoreboard players set $activation_mode ts.sa.settings 2", server); + } else if (Config.activation_mode == Config.mode.VANILLA) { + sendCommand("scoreboard players set $activation_mode ts.sa.settings -1", server); + } else { + sendCommand("execute if score $activation_mode ts.sa.settings matches -1 run scoreboard players set $activation_mode ts.sa.settings 0", server); + sendCommand("execute if score $activation_mode ts.sa.settings matches 2 run scoreboard players set $activation_mode ts.sa.settings 1", server); + } + if (Config.enable_poof_animation == Config.bool.YES) { + sendCommand("scoreboard players set $enable_poof_anim ts.sa.settings 2", server); + } else if (Config.enable_poof_animation == Config.bool.NO) { + sendCommand("scoreboard players set $enable_poof_anim ts.sa.settings -1", server); + } else { + sendCommand("execute if score $enable_poof_anim ts.sa.settings matches -1 run scoreboard players set $enable_poof_anim ts.sa.settings 0", server); + sendCommand("execute if score $enable_poof_anim ts.sa.settings matches 2 run scoreboard players set $enable_poof_anim ts.sa.settings 1", server); + } + if (Config.play_animation_sounds == Config.bool.YES) { + sendCommand("scoreboard players set $play_sounds ts.sa.settings 2", server); + } else if (Config.play_animation_sounds == Config.bool.NO) { + sendCommand("scoreboard players set $play_sounds ts.sa.settings -1", server); + } else { + sendCommand("execute if score $play_sounds ts.sa.settings matches -1 run scoreboard players set $play_sounds ts.sa.settings 0", server); + sendCommand("execute if score $play_sounds ts.sa.settings matches 2 run scoreboard players set $play_sounds ts.sa.settings 1", server); + } + + if (Config.hide_worn_armor_and_tools == Config.bool.YES) { + sendCommand("scoreboard players set $hide_armor ts.sa.settings 2", server); + } else if (Config.hide_worn_armor_and_tools == Config.bool.NO) { + sendCommand("scoreboard players set $hide_armor ts.sa.settings -1", server); + } else { + sendCommand("execute if score $hide_armor ts.sa.settings matches -1 run scoreboard players set $hide_armor ts.sa.settings 0", server); + sendCommand("execute if score $hide_armor ts.sa.settings matches 2 run scoreboard players set $hide_armor ts.sa.settings 1", server); + } + if (Config.hide_emissive_mob_layers == Config.bool.YES) { + sendCommand("scoreboard players set $hide_emissive ts.sa.settings 2", server); + } else if (Config.hide_emissive_mob_layers == Config.bool.NO) { + sendCommand("scoreboard players set $hide_emissive ts.sa.settings -1", server); + } else { + sendCommand("execute if score $hide_emissive ts.sa.settings matches -1 run scoreboard players set $hide_emissive ts.sa.settings 0", server); + sendCommand("execute if score $hide_emissive ts.sa.settings matches 2 run scoreboard players set $hide_emissive ts.sa.settings 1", server); + } + if (Config.reduce_enderman_particles == Config.bool.YES) { + sendCommand("scoreboard players set $enderman_hack ts.sa.settings 2", server); + } else if (Config.reduce_enderman_particles == Config.bool.NO) { + sendCommand("scoreboard players set $enderman_hack ts.sa.settings -1", server); + } else { + sendCommand("execute if score $enderman_hack ts.sa.settings matches -1 run scoreboard players set $enderman_hack ts.sa.settings 0", server); + sendCommand("execute if score $enderman_hack ts.sa.settings matches 2 run scoreboard players set $enderman_hack ts.sa.settings 1", server); + } + if (Config.play_animation_on_unsupported_blocks == Config.bool.YES) { + sendCommand("scoreboard players set $play_unsupport ts.sa.settings 2", server); + } else if (Config.play_animation_on_unsupported_blocks == Config.bool.NO) { + sendCommand("scoreboard players set $play_unsupport ts.sa.settings -1", server); + } else { + sendCommand("execute if score $play_unsupport ts.sa.settings matches -1 run scoreboard players set $play_unsupport ts.sa.settings 0", server); + sendCommand("execute if score $play_unsupport ts.sa.settings matches 2 run scoreboard players set $play_unsupport ts.sa.settings 1", server); + } + } + + public static void sendCommand(String command, MinecraftServer server) { + ServerCommandSource commandSource = server.getCommandSource(); + try { + server.getCommandManager().getDispatcher().execute(command, commandSource); + } catch (CommandSyntaxException ignored) { + } + } + +}