feat: A-frame tent + portal walk-through field + texture polish
All checks were successful
Deploy Addons / deploy (push) Successful in 14s

- camping: replace cube tent with A-frame slope panels (tent_panel_l/r) +
  cardinal_direction permutations; vote-skip sleep that mixes
  player.isSleeping bed sleepers with tent occupants and respects the
  playersSleepingPercentage gamerule; new weathered-canvas texture.
- lobby: walk-through silverlabs:portal_field block (no collision,
  translucent swirl, cross-plane geo) auto-placed above each portal frame;
  invisible silverlabs:portal_label entity floats above each portal with
  the destination world name; transfer detection now scans down through
  the field to find the destination frame.
- postal: regenerate post_office and mailbox block textures so they fill
  the full block face (brick + POST plaque, full red panel with slot/latch
  /flag/rivets) instead of small sprites floating on transparent.
- dynamite + tow-boat: ship the addons (volumes wired into all four
  worlds; enabled_packs registers them into Mya's world).
- art: build-textures.py extended; build-art-catalog.py added to project.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-25 23:17:31 +01:00
parent fce15ac801
commit 3e08a59972
58 changed files with 1815 additions and 67 deletions

View File

@@ -0,0 +1,47 @@
{
"format_version": "1.21.0",
"minecraft:entity": {
"description": {
"identifier": "silverlabs:thrown_banger",
"is_spawnable": false,
"is_summonable": true,
"is_experimental": false
},
"components": {
"minecraft:collision_box": {
"width": 0.25,
"height": 0.25
},
"minecraft:physics": {},
"minecraft:pushable": {
"is_pushable": false,
"is_pushable_by_piston": false
},
"minecraft:projectile": {
"on_hit": {
"impact_damage": {
"damage": 2,
"knockback": true,
"destroy_on_hit": true,
"semi_random_diff_damage": false
},
"spawn_aoe_cloud": {
"radius": 1.5,
"duration": 0,
"particle": "minecraft:explosion_manual",
"affect_owner": false
},
"remove_on_hit": {}
},
"power": 1.4,
"gravity": 0.05,
"inertia": 0.99,
"liquid_inertia": 0.6,
"anchor": 1,
"offset": [0, -0.1, 0],
"should_bounce": false,
"hit_sound": "random.fuse"
}
}
}
}

View File

@@ -0,0 +1,66 @@
{
"format_version": "1.21.0",
"minecraft:entity": {
"description": {
"identifier": "silverlabs:thrown_bundle",
"is_spawnable": false,
"is_summonable": true,
"is_experimental": false
},
"component_groups": {
"silverlabs:detonate": {
"minecraft:explode": {
"fuse_length": 0,
"fuse_lit": true,
"power": 3.0,
"causes_fire": false,
"breaks_blocks": true,
"max_resistance": 12,
"destroy_affected_by_griefing": true
}
}
},
"components": {
"minecraft:collision_box": {
"width": 0.3,
"height": 0.3
},
"minecraft:physics": {},
"minecraft:pushable": {
"is_pushable": false,
"is_pushable_by_piston": false
},
"minecraft:projectile": {
"on_hit": {
"impact_damage": {
"damage": 6,
"knockback": true,
"destroy_on_hit": false,
"semi_random_diff_damage": false
},
"definition_event": {
"event_trigger": {
"event": "silverlabs:detonate",
"target": "self"
}
}
},
"power": 1.3,
"gravity": 0.06,
"inertia": 0.99,
"liquid_inertia": 0.6,
"anchor": 1,
"offset": [0, -0.1, 0],
"should_bounce": false,
"hit_sound": "random.fuse"
}
},
"events": {
"silverlabs:detonate": {
"add": {
"component_groups": ["silverlabs:detonate"]
}
}
}
}
}

View File

@@ -0,0 +1,66 @@
{
"format_version": "1.21.0",
"minecraft:entity": {
"description": {
"identifier": "silverlabs:thrown_dynamite",
"is_spawnable": false,
"is_summonable": true,
"is_experimental": false
},
"component_groups": {
"silverlabs:detonate": {
"minecraft:explode": {
"fuse_length": 0,
"fuse_lit": true,
"power": 1.5,
"causes_fire": false,
"breaks_blocks": true,
"max_resistance": 4,
"destroy_affected_by_griefing": true
}
}
},
"components": {
"minecraft:collision_box": {
"width": 0.25,
"height": 0.25
},
"minecraft:physics": {},
"minecraft:pushable": {
"is_pushable": false,
"is_pushable_by_piston": false
},
"minecraft:projectile": {
"on_hit": {
"impact_damage": {
"damage": 4,
"knockback": true,
"destroy_on_hit": false,
"semi_random_diff_damage": false
},
"definition_event": {
"event_trigger": {
"event": "silverlabs:detonate",
"target": "self"
}
}
},
"power": 1.4,
"gravity": 0.05,
"inertia": 0.99,
"liquid_inertia": 0.6,
"anchor": 1,
"offset": [0, -0.1, 0],
"should_bounce": false,
"hit_sound": "random.fuse"
}
},
"events": {
"silverlabs:detonate": {
"add": {
"component_groups": ["silverlabs:detonate"]
}
}
}
}
}

View File

@@ -0,0 +1,27 @@
{
"format_version": "1.21.0",
"minecraft:item": {
"description": {
"identifier": "silverlabs:banger",
"menu_category": {
"category": "equipment"
}
},
"components": {
"minecraft:icon": "banger",
"minecraft:display_name": {
"value": "Banger"
},
"minecraft:max_stack_size": 16,
"minecraft:hand_equipped": true,
"minecraft:throwable": {
"do_swing_animation": true,
"max_draw_duration": 0,
"scale_power_by_draw_duration": false
},
"minecraft:projectile": {
"projectile_entity": "silverlabs:thrown_banger"
}
}
}
}

View File

@@ -0,0 +1,27 @@
{
"format_version": "1.21.0",
"minecraft:item": {
"description": {
"identifier": "silverlabs:dynamite_bundle",
"menu_category": {
"category": "equipment"
}
},
"components": {
"minecraft:icon": "dynamite_bundle",
"minecraft:display_name": {
"value": "Bundle of Dynamite"
},
"minecraft:max_stack_size": 16,
"minecraft:hand_equipped": true,
"minecraft:throwable": {
"do_swing_animation": true,
"max_draw_duration": 0,
"scale_power_by_draw_duration": false
},
"minecraft:projectile": {
"projectile_entity": "silverlabs:thrown_bundle"
}
}
}
}

View File

@@ -0,0 +1,27 @@
{
"format_version": "1.21.0",
"minecraft:item": {
"description": {
"identifier": "silverlabs:dynamite_stick",
"menu_category": {
"category": "equipment"
}
},
"components": {
"minecraft:icon": "dynamite_stick",
"minecraft:display_name": {
"value": "Stick of Dynamite"
},
"minecraft:max_stack_size": 16,
"minecraft:hand_equipped": true,
"minecraft:throwable": {
"do_swing_animation": true,
"max_draw_duration": 0,
"scale_power_by_draw_duration": false
},
"minecraft:projectile": {
"projectile_entity": "silverlabs:thrown_dynamite"
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"format_version": 2,
"header": {
"name": "Dynamite",
"description": "Throwable explosives: bangers, dynamite sticks, and bundles.",
"uuid": "fac83943-16bc-4790-aa05-631894f59a03",
"version": [1, 0, 0],
"min_engine_version": [1, 21, 0]
},
"modules": [
{
"type": "data",
"uuid": "1354002c-fdd5-4f7e-b89b-f5dd2c38799c",
"version": [1, 0, 0]
}
],
"dependencies": [
{
"uuid": "a18bdde1-53f8-49aa-b06d-6f0ec6c45b46",
"version": [1, 0, 0]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

View File

@@ -0,0 +1,25 @@
{
"format_version": "1.21.0",
"minecraft:recipe_shaped": {
"description": {
"identifier": "silverlabs:banger_recipe"
},
"tags": ["crafting_table"],
"unlock": [
{ "item": "minecraft:gunpowder" }
],
"pattern": [
"SP",
"G "
],
"key": {
"S": { "item": "minecraft:string" },
"P": { "item": "minecraft:paper" },
"G": { "item": "minecraft:gunpowder" }
},
"result": {
"item": "silverlabs:banger",
"count": 4
}
}
}

View File

@@ -0,0 +1,24 @@
{
"format_version": "1.21.0",
"minecraft:recipe_shaped": {
"description": {
"identifier": "silverlabs:dynamite_bundle_recipe"
},
"tags": ["crafting_table"],
"unlock": [
{ "item": "silverlabs:dynamite_stick" }
],
"pattern": [
"DDD",
" S "
],
"key": {
"D": { "item": "silverlabs:dynamite_stick" },
"S": { "item": "minecraft:string" }
},
"result": {
"item": "silverlabs:dynamite_bundle",
"count": 1
}
}
}

View File

@@ -0,0 +1,25 @@
{
"format_version": "1.21.0",
"minecraft:recipe_shaped": {
"description": {
"identifier": "silverlabs:dynamite_stick_recipe"
},
"tags": ["crafting_table"],
"unlock": [
{ "item": "silverlabs:banger" }
],
"pattern": [
"BB",
"RT"
],
"key": {
"B": { "item": "silverlabs:banger" },
"R": { "item": "minecraft:redstone" },
"T": { "item": "minecraft:stick" }
},
"result": {
"item": "silverlabs:dynamite_stick",
"count": 2
}
}
}

View File

@@ -0,0 +1,17 @@
{
"format_version": 2,
"header": {
"name": "Dynamite Resources",
"description": "Textures and language for the Dynamite addon.",
"uuid": "a18bdde1-53f8-49aa-b06d-6f0ec6c45b46",
"version": [1, 0, 0],
"min_engine_version": [1, 21, 0]
},
"modules": [
{
"type": "resources",
"uuid": "587281f2-f159-4ad9-85a6-d20ff4899717",
"version": [1, 0, 0]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

View File

@@ -0,0 +1,6 @@
item.silverlabs:banger=Banger
item.silverlabs:dynamite_stick=Stick of Dynamite
item.silverlabs:dynamite_bundle=Bundle of Dynamite
entity.silverlabs:thrown_banger.name=Banger
entity.silverlabs:thrown_dynamite.name=Dynamite
entity.silverlabs:thrown_bundle.name=Dynamite Bundle

View File

@@ -0,0 +1,3 @@
[
"en_US"
]

View File

@@ -0,0 +1,15 @@
{
"resource_pack_name": "dynamite_RP",
"texture_name": "atlas.items",
"texture_data": {
"banger": {
"textures": "textures/items/banger"
},
"dynamite_stick": {
"textures": "textures/items/dynamite_stick"
},
"dynamite_bundle": {
"textures": "textures/items/dynamite_bundle"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B