Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
6e06819
Update beet and pack format
misode Oct 1, 2025
111501b
Update flash particle
misode Oct 1, 2025
c10c27e
Update chain -> icon_chain
misode Oct 1, 2025
fd7ac9d
Update noise router
misode Oct 1, 2025
0365e2c
Try to fix backwards plugin
misode Oct 1, 2025
e4669fc
Add min_format and max_format to overlays
misode Oct 1, 2025
8a8d2ef
runcows misc 1.21.9 commits (#1165)
runcows Oct 7, 2025
46c399f
Lively Lily Pads 1.21.9 Feature Update (#1181)
runcows Nov 3, 2025
b8fe6b3
Metallurgy, desire lines, crossbow cartridges (#1168)
runcows Nov 3, 2025
c082ff1
Lightning in a Bottle 1.21.9 (#1188)
runcows Nov 4, 2025
ccc5926
Fix format fields for `beet dev` resource pack
SpecialBuilder32 Nov 6, 2025
0ea05d7
[1.21.9] Fix overlay validation & beet (#1205)
runcows Nov 11, 2025
ddf93ff
Add 1.21.10 to supported (#1203)
runcows Nov 11, 2025
ea90fd7
Fix waterloggable tag order (#1202)
runcows Nov 11, 2025
dfedc11
Fix (#1201)
runcows Nov 13, 2025
6c297d2
Merge remote-tracking branch 'upstream/master' into update-1.21.9
TheThanathor Nov 14, 2025
58097ab
Merge branch 'update-1.21.9' of https://github.com/Gamemode4Dev/GM4_D…
TheThanathor Nov 14, 2025
c790085
Revert "Merge branch 'update-1.21.9' of https://github.com/Gamemode4D…
TheThanathor Nov 14, 2025
93f767d
Revert "Merge remote-tracking branch 'upstream/master' into update-1.…
TheThanathor Nov 14, 2025
7ed050c
Reapply "Merge remote-tracking branch 'upstream/master' into update-1…
TheThanathor Nov 14, 2025
8f9493d
Reapply "Merge branch 'update-1.21.9' of https://github.com/Gamemode4…
TheThanathor Nov 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,13 +93,13 @@ jobs:
fabric_server_url: https://meta.fabricmc.net/v2/versions/loader/1.21.5/0.16.13/1.0.3/server/jar
fabric_api_url: https://cdn.modrinth.com/data/P7dR8mSH/versions/FZ4q3wQK/fabric-api-0.119.9%2B1.21.5.jar
packtest_url: https://cdn.modrinth.com/data/XsKUhp45/versions/Swh7th09/packtest-2.1-mc1.21.5.jar
- version: '1.21.7'
- version: '1.21.7'
fabric_server_url: https://meta.fabricmc.net/v2/versions/loader/1.21.7/0.16.14/1.0.3/server/jar
fabric_api_url: https://cdn.modrinth.com/data/P7dR8mSH/versions/sLmbxWpX/fabric-api-0.128.1%2B1.21.7.jar
packtest_url: https://cdn.modrinth.com/data/XsKUhp45/versions/PAYctH3X/packtest-2.2-mc1.21.7.jar
- version: '1.21.8'
fabric_server_url: https://meta.fabricmc.net/v2/versions/loader/1.21.7/0.16.14/1.0.3/server/jar
fabric_api_url: https://cdn.modrinth.com/data/P7dR8mSH/versions/sLmbxWpX/fabric-api-0.128.1%2B1.21.7.jar
- version: '1.21.9'
fabric_server_url: https://meta.fabricmc.net/v2/versions/loader/1.21.9/0.17.2/1.1.0/server/jar
fabric_api_url: https://cdn.modrinth.com/data/P7dR8mSH/versions/rWWImuoz/fabric-api-0.133.14%2B1.21.9.jar
packtest_url: https://cdn.modrinth.com/data/XsKUhp45/versions/PAYctH3X/packtest-2.2-mc1.21.7.jar
name: 'test-${{ matrix.version }}'
runs-on: ubuntu-24.04
Expand Down
1 change: 1 addition & 0 deletions base/data/gm4/tags/block/no_collision.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"minecraft:cave_vines_plant",
"minecraft:cherry_sapling",
"minecraft:cobweb",
{"id": "minecraft:copper_torch", "required": false},
"minecraft:crimson_fungus",
"minecraft:crimson_roots",
"minecraft:dark_oak_sapling",
Expand Down
15 changes: 11 additions & 4 deletions base/data/gm4/tags/block/waterloggable.json
Original file line number Diff line number Diff line change
@@ -1,26 +1,33 @@
{
"values": [
"#minecraft:rails",
"#minecraft:all_signs",
{"id": "#minecraft:bars", "required": false},
"#minecraft:campfires",
"#minecraft:candles",
{"id": "#minecraft:chains", "required": false},
{"id": "#minecraft:copper_chests", "required": false},
{"id": "#minecraft:copper_golem_statues", "required": false},
"#minecraft:corals",
"#minecraft:fences",
{"id": "#minecraft:lanterns", "required": false},
"#minecraft:leaves",
"#minecraft:all_signs",
{"id": "#minecraft:lightning_rods", "required": false},
"#minecraft:rails",
"#minecraft:slabs",
"#minecraft:stairs",
"#minecraft:trapdoors",
"#minecraft:corals",
"#minecraft:wall_corals",
"#minecraft:wall_signs",
"#minecraft:walls",
{"id": "#minecraft:wooden_shelves", "required": false},
"minecraft:amethyst_cluster",
"minecraft:big_dripleaf",
"minecraft:big_dripleaf_stem",
"minecraft:black_stained_glass_pane",
"minecraft:blue_stained_glass_pane",
"minecraft:brown_stained_glass_pane",
"minecraft:calibrated_sculk_sensor",
"minecraft:chain",
{ "id": "minecraft:chain", "required": false },
"minecraft:chest",
"minecraft:conduit",
"minecraft:cyan_stained_glass_pane",
Expand Down
2 changes: 2 additions & 0 deletions base/data/gm4/tags/entity_type/passive.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
"minecraft:cat",
"minecraft:chicken",
"minecraft:cod",
{"id": "minecraft:copper_golem", "required": false},
"minecraft:cow",
"minecraft:donkey",
"minecraft:frog",
"minecraft:glow_squid",
{"id": "minecraft:happy_ghast", "required": false},
"minecraft:horse",
"minecraft:mooshroom",
"minecraft:mule",
Expand Down
65 changes: 65 additions & 0 deletions gm4/modeldata_registry.json
Original file line number Diff line number Diff line change
Expand Up @@ -240,12 +240,77 @@
"gm4_fulcio_shamir:shamir/fulcio": 115,
"gm4_animi_shamir:shamir/animi": 124
},
"copper_axe": {
"gm4_metallurgy:shamir/hypexperia": 110,
"gm4_metallurgy:shamir/arborenda": 112,
"gm4_metallurgy:shamir/moneo": 113,
"gm4_percurro_shamir:shamir/percurro": 117,
"gm4_audere_shamir:shamir/audere": 120,
"gm4_animi_shamir:shamir/animi": 124
},
"copper_block": {
"gm4_auto_crafting:guidebook_icon/auto_crafting": 1
},
"copper_boots": {
"gm4_weighted_armour:shamir/helious": 103,
"gm4_metallurgy:shamir/defuse": 106,
"gm4_desire_lines:shamir/celaro": 118,
"gm4_vecto_shamir:shamir/vecto": 121,
"gm4_metallurgy:shamir/vibro": 123,
"gm4_animi_shamir:shamir/animi": 124
},
"copper_chestplate": {
"gm4_weighted_armour:shamir/helious": 103,
"gm4_metallurgy:shamir/defuse": 106,
"gm4_iacio_shamir:shamir/iacio": 122,
"gm4_animi_shamir:shamir/animi": 124
},
"copper_helmet": {
"gm4_weighted_armour:shamir/helious": 103,
"gm4_metallurgy:shamir/defuse": 106,
"gm4_animi_shamir:shamir/animi": 124
},
"copper_hoe": {
"gm4_metallurgy:shamir/gemini": 109,
"gm4_metallurgy:shamir/tinker": 111,
"gm4_metallurgy:shamir/moneo": 113,
"gm4_audere_shamir:shamir/audere": 120,
"gm4_animi_shamir:shamir/animi": 124
},
"copper_leggings": {
"gm4_weighted_armour:shamir/helious": 103,
"gm4_metallurgy:shamir/defuse": 106,
"gm4_animi_shamir:shamir/animi": 124
},
"copper_ore": {
"gm4_smelteries:block/ore_display/copper_ore": 2
},
"copper_pickaxe": {
"gm4_metallurgy:shamir/forterra": 107,
"gm4_metallurgy:shamir/hypexperia": 110,
"gm4_metallurgy:shamir/tinker": 111,
"gm4_metallurgy:shamir/moneo": 113,
"gm4_lumos_shamir:shamir/lumos": 114,
"gm4_audere_shamir:shamir/audere": 120,
"gm4_animi_shamir:shamir/animi": 124
},
"copper_shovel": {
"gm4_metallurgy:shamir/hypexperia": 110,
"gm4_metallurgy:shamir/tinker": 111,
"gm4_metallurgy:shamir/moneo": 113,
"gm4_lumos_shamir:shamir/lumos": 114,
"gm4_audere_shamir:shamir/audere": 120,
"gm4_animi_shamir:shamir/animi": 124
},
"copper_sword": {
"gm4_metallurgy:shamir/ender_bolt": 105,
"gm4_metallurgy:shamir/musical": 108,
"gm4_metallurgy:shamir/hypexperia": 110,
"gm4_metallurgy:shamir/tinker": 111,
"gm4_orb_of_ankou:shamir/corripio": 116,
"gm4_percurro_shamir:shamir/percurro": 117,
"gm4_animi_shamir:shamir/animi": 124
},
"crafting_table": {
"gm4_custom_crafters:block/custom_crafter": 1,
"gm4_standard_crafting:guidebook_icon/standard_crafting": 2,
Expand Down
36 changes: 23 additions & 13 deletions gm4/plugins/backwards.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import logging
from typing import Any, Tuple, Callable
from beet import Context, Pack, NamespaceFile, ItemModel
from beet.core.utils import SupportedFormats

logger = logging.getLogger("gm4.backwards")

Expand Down Expand Up @@ -55,8 +54,7 @@ def backport(pack: Pack[Any], format: int, run: Callable[[str, NamespaceFile], N
resources[(file_type, path)] = proxy[path]

for overlay in pack.overlays.values():
overlay_formats = overlay.supported_formats or overlay.pack_format
if check_formats(overlay_formats, format):
if check_formats(overlay, format):
for file_type in overlay.resolve_scope_map().values():
proxy = overlay[file_type]
for path in proxy.keys():
Expand All @@ -71,16 +69,28 @@ def backport(pack: Pack[Any], format: int, run: Callable[[str, NamespaceFile], N
if new_resource:
overlay = pack.overlays[f"backport_{format}"]
overlay.supported_formats = { "min_inclusive": 0, "max_inclusive": format }
overlay.min_format = 0
overlay.max_format = format
overlay[path] = new_resource


def check_formats(supported: SupportedFormats, format: int):
match supported:
case int(value):
return value == format
case [min, max]:
return min <= format <= max
case { "min_inclusive": min, "max_inclusive": max }:
return min <= format <= max
case _:
raise ValueError(f"Unknown supported_formats structure {supported}")
def check_formats(overlay: Pack[Any], format: int):
if overlay.min_format and overlay.max_format:
return get_major(overlay.min_format) <= format <= get_major(overlay.max_format)
if overlay.supported_formats:
match overlay.supported_formats:
case int(value):
return value == format
case [min, max]:
return min <= format <= max
case { "min_inclusive": min, "max_inclusive": max }:
return min <= format <= max
case _:
raise ValueError(f"Unknown supported_formats structure {overlay.supported_formats}")
if overlay.pack_format:
return overlay.pack_format == format
return False


def get_major(format: int | tuple[int] | tuple[int, int]):
return format if isinstance(format, int) else format[0]
2 changes: 1 addition & 1 deletion gm4/plugins/manifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

parent_logger = logging.getLogger("gm4.manifest")

SUPPORTED_GAME_VERSIONS = ["1.21.5", "1.21.6", "1.21.7", "1.21.8"]
SUPPORTED_GAME_VERSIONS = ["1.21.5", "1.21.6", "1.21.7", "1.21.8", "1.21.9", "1.21.10"]

# config models for beet.yaml metas
CreditsModel = dict[str, list[str]]
Expand Down
2 changes: 1 addition & 1 deletion gm4/plugins/resource_pack.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
JsonType = dict[str,Any]

CUSTOM_MODEL_PREFIX = 3420000
MINECRAFT_REFERENECE_VERSION = "1.21.6"
MINECRAFT_REFERENECE_VERSION = "1.21.9"

parent_logger = logging.getLogger("gm4.resource_pack")

Expand Down
11 changes: 8 additions & 3 deletions gm4/plugins/write_mcmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,21 @@ def beet_default(ctx: Context):
manifest_entry = {v.id:v for v in (manifest.modules|manifest.libraries).values()}.get(ctx.project_id, NoneAttribute())

ctx.data.pack_format = 71
ctx.data.supported_formats = {"min_inclusive": 71, "max_inclusive": 81}
ctx.data.supported_formats = {"min_inclusive": 71, "max_inclusive": 88}
ctx.data.min_format = 71
ctx.data.max_format = (88, 0)

ctx.assets.pack_format = 55
ctx.assets.supported_formats = {"min_inclusive": 55, "max_inclusive": 64}
ctx.assets.supported_formats = {"min_inclusive": 55, "max_inclusive": 69}
ctx.assets.min_format = 55
ctx.assets.max_format = (69, 0)

for pack in ctx.packs:
pack.description = [
ctx.project_name,
"\n",
{
"text": f"Gamemode 4 (1.21.5 - 1.21.8)",
"text": f"Gamemode 4 (1.21.5 - 1.21.9)",
"color": "#4AA0C7"
}
]
Expand Down
33 changes: 33 additions & 0 deletions gm4/skin_cache.json
Original file line number Diff line number Diff line change
Expand Up @@ -956,6 +956,39 @@
"value": "eyd0ZXh0dXJlcyc6IHsnU0tJTic6IHsndXJsJzogJ2h0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzA1YTY0N2YzYmY2YzMzZGQwNWI5M2JkZTJiNzRlYzViOWE5YTMxODQxM2FlZWRkZGE3ZDFhYjk3NDVkZmE5OCd9fX0=",
"hash": "b1173eacf6e07f062e2301d25669acc1a3a0ac20",
"parent_module": "gm4_metallurgy"
},
"gm4_lightning_in_a_bottle:texture_connector_exposed": {
"uuid": [
1105086427,
-2014818885,
-2050456398,
1819890536
],
"value": "eyd0ZXh0dXJlcyc6IHsnU0tJTic6IHsndXJsJzogJ2h0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjU0ZTFmZmZlNzNiMjljMGU1NzVhOTg2OTI3OTJhZTIxYzQwNDUzZmMxNDRiYjYxZjE4ZDBmZjhmMjY3N2IxMSd9fX0=",
"hash": "3ba0bc3626c0acf3c8c19ecd9801db477e5f4ef4",
"parent_module": "gm4_lightning_in_a_bottle"
},
"gm4_lightning_in_a_bottle:texture_connector_weathered": {
"uuid": [
-53579126,
-1276100194,
-1254675310,
1810892024
],
"value": "eyd0ZXh0dXJlcyc6IHsnU0tJTic6IHsndXJsJzogJ2h0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTExYjlhYjJlZmY4ZDMzYzU3ZWUyMjVjYWQ5ZmNkMTFmN2JmN2I4MzI2YWJlMTVhOWQ1MzUwNjNmOTZkOGZjMCd9fX0=",
"hash": "4ae3138c18bcb10d5074aa45c403f7a2192a79b8",
"parent_module": "gm4_lightning_in_a_bottle"
},
"gm4_lightning_in_a_bottle:texture_connector_oxidized": {
"uuid": [
-1160792602,
948128354,
-1355641425,
1430620480
],
"value": "eyd0ZXh0dXJlcyc6IHsnU0tJTic6IHsndXJsJzogJ2h0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDY1ZGQ5Njg5MzIyNDZjZjgwODA3Y2E2NmY4M2Y0MThjNjc5YTIzMjI5MDdiYmNkMWYxN2I4ZTQ3NWUwYzE4J319fQ==",
"hash": "0ec19a60309722db4e5d57cba06c29bc62d5051f",
"parent_module": "gm4_lightning_in_a_bottle"
}
},
"nonnative_references": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ execute if score $tool_max_damage gm4_ml_data matches 1561 if predicate gm4_aude
# activate audere
execute if score $tool_max_damage gm4_ml_data matches 59 run function gm4_audere_shamir:tools/materials/wood
execute if score $tool_max_damage gm4_ml_data matches 131 run function gm4_audere_shamir:tools/materials/stone
execute if score $tool_max_damage gm4_ml_data matches 190 run function gm4_audere_shamir:tools/materials/copper
execute if score $tool_max_damage gm4_ml_data matches 250 run function gm4_audere_shamir:tools/materials/iron
execute if score $tool_max_damage gm4_ml_data matches 1561 run function gm4_audere_shamir:tools/materials/diamond
execute if score $tool_max_damage gm4_ml_data matches 2031 run function gm4_audere_shamir:tools/materials/netherite
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# @s = player holding an Audere tool
# at @s
# run from active_tool

scoreboard players operation $tool_max_damage gm4_ml_data -= $tool_current_damage gm4_ml_data

execute if score $tool_max_damage gm4_ml_data matches 52..139 run effect give @s minecraft:haste 2 0
execute if score $tool_max_damage gm4_ml_data matches 20..51 run effect give @s minecraft:haste 2 1
execute if score $tool_max_damage gm4_ml_data matches 8..19 run effect give @s minecraft:haste 2 2
execute if score $tool_max_damage gm4_ml_data matches ..7 run effect give @s minecraft:haste 2 3
Loading
Loading