def generate_vanilla(rm: ResourceManager): # Vanilla Tags rm.item('flint').with_tag('notreepunching:flint_knappable') for block in ('grass_block', 'dirt', 'coarse_dirt', 'gravel', 'sand', 'red_sand', 'terracotta', 'stone', 'andesite', 'diorite', 'granite', 'sandstone', 'red_sandstone', 'podzol'): rm.block(block).with_tag('notreepunching:loose_rock_placeable_on')
def generate(rm: ResourceManager): # First rm.lang({ 'itemGroup.notreepunching.items': 'No Tree Punching', 'notreepunching.tooltip.small_vessel_more': '%d More...' }) # Stone for stone in ('granite', 'andesite', 'diorite'): rm.blockstate('%s_cobblestone' % stone) \ .with_block_model() \ .with_item_model() \ .with_tag('cobblestone') \ .with_block_loot('notreepunching:%s_cobblestone' % stone) \ .with_lang(lang('%s cobblestone', stone)) \ .make_stairs() \ .make_slab() \ .make_wall() for piece in ('stairs', 'slab', 'wall'): rm.block('%s_cobblestone_%s' % (stone, piece)) \ .with_lang(lang('%s cobblestone %s', stone, piece)) \ .with_tag('minecraft:' + piece + ('s' if not piece.endswith('s') else '')) # plural tag for stone in ('granite', 'andesite', 'diorite', 'stone', 'sandstone', 'red_sandstone'): rm.blockstate('%s_loose_rock' % stone) \ .with_block_model(textures='minecraft:block/%s' % stone, parent='notreepunching:block/loose_rock') \ .with_block_loot('notreepunching:%s_loose_rock' % stone) \ .with_lang(lang('%s loose rock', stone)) # flat item model for the block item rm.item_model('%s_loose_rock' % stone) \ .with_tag('loose_rocks') # item tag is needed for recipes # Pottery for pottery in ('worked', 'large_vessel', 'small_vessel', 'bucket', 'flower_pot'): block = rm.blockstate('clay_%s' % pottery) \ .with_block_model(textures='minecraft:block/clay', parent='notreepunching:block/pottery_%s' % pottery) \ .with_item_model() \ .with_block_loot('notreepunching:clay_%s' % pottery) if pottery == 'worked': block.with_lang(lang('worked clay')) else: block.with_lang(lang('clay %s', pottery)) rm.blockstate('ceramic_large_vessel') \ .with_block_model(textures='notreepunching:block/ceramic', parent='notreepunching:block/pottery_large_vessel') \ .with_item_model() \ .with_block_loot({ 'entries': { 'name': 'notreepunching:ceramic_large_vessel', 'functions': [ { 'function': 'minecraft:copy_name', 'source': 'block_entity' }, { 'function': 'minecraft:copy_nbt', 'source': 'block_entity', 'ops': [{ 'source': '', 'target': 'BlockEntityTag', 'op': 'replace' }] } ], } }) \ .with_lang(lang('ceramic large vessel')) # Tools for tool in ('iron', 'gold', 'diamond'): rm.item_model('%s_mattock' % tool) \ .with_lang(lang('%s mattock', tool)) rm.item_model('%s_saw' % tool) \ .with_lang(lang('%s saw', tool)) \ .with_tag('saws') rm.item_model('%s_knife' % tool) \ .with_lang(lang('%s knife', tool)) \ .with_tag('knives') # Flint for tool in ('axe', 'pickaxe', 'shovel', 'hoe', 'knife'): rm.item_model('flint_%s' % tool) \ .with_lang(lang('flint %s', tool)) rm.item_model('macuahuitl') \ .with_lang(lang('macuahuitl')) rm.item('flint_knife').with_tag('knives') for item in ('flint_shard', 'plant_fiber', 'plant_string', 'clay_brick', 'ceramic_small_vessel', 'clay_tool', 'fire_starter'): rm.item_model(item) \ .with_lang(lang(item)) # ceramic bucket, since it uses a very custom model rm.data( ('models', 'item', 'ceramic_bucket'), { 'parent': 'forge:item/default', 'textures': { 'base': 'notreepunching:item/ceramic_bucket', 'fluid': 'forge:item/mask/bucket_fluid_drip' }, 'loader': 'forge:bucket', 'fluid': 'empty' }, root_domain='assets') rm.item('ceramic_bucket').with_lang(lang('ceramic bucket')) # Misc Tags rm.item('plant_string').with_tag('forge:string') rm.block('minecraft:gravel').with_tag('always_breakable').with_tag( 'always_drops') for wood in ('acacia', 'oak', 'dark_oak', 'jungle', 'birch', 'spruce'): rm.block('minecraft:%s_leaves' % wood).with_tag('always_breakable').with_tag('always_drops') rm.item_tag('fire_starter_logs', '#minecraft:logs', '#minecraft:planks') rm.item_tag('fire_starter_kindling', '#forge:rods/wooden', '#minecraft:saplings', '#minecraft:leaves', '#forge:string', 'notreepunching:plant_fiber') # todo: large and small vessel blacklist tags rm.item('ceramic_small_vessel').with_tag( 'large_vessel_blacklist').with_tag('small_vessel_blacklist') rm.item('ceramic_large_vessel').with_tag( 'large_vessel_blacklist').with_tag('small_vessel_blacklist') rm.item('minecraft:shulker_box').with_tag( 'large_vessel_blacklist').with_tag('small_vessel_blacklist') for color in ('white', 'orange', 'magenta', 'light_blue', 'yellow', 'lime', 'pink', 'gray', 'light_gray', 'cyan', 'purple', 'blue', 'brown', 'green', 'red', 'black'): rm.item('minecraft:%s_shulker_box' % color).with_tag( 'large_vessel_blacklist').with_tag('small_vessel_blacklist')
def generate(rm: ResourceManager): # First rm.lang({ 'itemGroup.notreepunching.items': 'No Tree Punching', 'notreepunching.tooltip.small_vessel_more': '%d More...', 'notreepunching.tile_entity.large_vessel': 'Large Vessel' }) # Stone for stone in ('granite', 'andesite', 'diorite'): block = rm.blockstate('%s_cobblestone' % stone) block.with_block_model() block.with_item_model() block.with_tag('cobblestone') rm.item_tag('cobblestone', '%s_cobblestone' % stone) # both block and item tag block.with_block_loot('notreepunching:%s_cobblestone' % stone) block.with_lang(lang('%s cobblestone', stone)) block.make_stairs() block.make_slab() block.make_wall() for piece in ('stairs', 'slab', 'wall'): block = rm.block('%s_cobblestone_%s' % (stone, piece)) block.with_lang(lang('%s cobblestone %s', stone, piece)) block.with_tag( 'minecraft:' + piece + ('s' if not piece.endswith('s') else '')) # plural tag for stone in ('granite', 'andesite', 'diorite', 'stone', 'sandstone', 'red_sandstone'): block = rm.blockstate('%s_loose_rock' % stone) block.with_block_model(textures='minecraft:block/%s' % stone, parent='notreepunching:block/loose_rock') block.with_block_loot('notreepunching:%s_loose_rock' % stone) block.with_lang(lang('%s loose rock', stone)) # flat item model for the block item item = rm.item_model('%s_loose_rock' % stone) item.with_tag('loose_rocks') # item tag is needed for recipes # Pottery for pottery in ('worked', 'large_vessel', 'small_vessel', 'bucket', 'flower_pot'): block = rm.blockstate('clay_%s' % pottery) block.with_block_model(textures='minecraft:block/clay', parent='notreepunching:block/pottery_%s' % pottery) block.with_item_model() block.with_block_loot('notreepunching:clay_%s' % pottery) if pottery == 'worked': block.with_lang(lang('worked clay')) else: block.with_lang(lang('clay %s', pottery)) block = rm.blockstate('ceramic_large_vessel') block.with_block_model(textures='notreepunching:block/ceramic', parent='notreepunching:block/pottery_large_vessel') block.with_item_model() block.with_block_loot({ 'entries': { 'name': 'notreepunching:ceramic_large_vessel', 'functions': [{ 'function': 'minecraft:copy_name', 'source': 'block_entity' }, { 'function': 'minecraft:copy_nbt', 'source': 'block_entity', 'ops': [{ 'source': '', 'target': 'BlockEntityTag', 'op': 'replace' }] }], } }) block.with_lang(lang('ceramic large vessel')) # Tools for tool in ('iron', 'gold', 'diamond', 'netherite'): item = rm.item_model('%s_mattock' % tool, parent='item/handheld') item.with_lang(lang('%s mattock', tool)) item.with_tag('mattocks') item.with_tag('forge:tools/mattocks') item = rm.item_model('%s_saw' % tool, parent='item/handheld') item.with_lang(lang('%s saw', tool)) item.with_tag('saws') item.with_tag('forge:tools/saws') item = rm.item_model('%s_knife' % tool, parent='item/handheld') item.with_lang(lang('%s knife', tool)) item.with_tag('knives') item.with_tag('forge:tools/knives') # Flint for tool in ('axe', 'pickaxe', 'shovel', 'hoe', 'knife'): item = rm.item_model('flint_%s' % tool, parent='item/handheld') item.with_lang(lang('flint %s', tool)) item = rm.item_model('macuahuitl', parent='item/handheld') item.with_lang(lang('macuahuitl')) rm.item('flint_knife').with_tag('knives') rm.item('flint_axe').with_tag('weak_saws') for item_name in ('flint_shard', 'plant_fiber', 'plant_string', 'clay_brick', 'ceramic_small_vessel', 'clay_tool', 'fire_starter'): item = rm.item_model(item_name) item.with_lang(lang(item_name)) # ceramic bucket, since it uses a very custom model rm.item('ceramic_bucket').with_lang(lang('ceramic bucket')) rm.data( ('models', 'item', 'ceramic_bucket'), { 'parent': 'forge:item/default', 'textures': { 'base': 'notreepunching:item/ceramic_bucket', 'fluid': 'forge:item/mask/bucket_fluid_drip' }, 'loader': 'forge:bucket', 'fluid': 'empty' }, root_domain='assets') # Misc Tags rm.item('plant_string').with_tag('forge:string') rm.block('minecraft:gravel').with_tag('always_breakable').with_tag( 'always_drops') rm.item_tag('weak_saws', 'minecraft:iron_axe', 'minecraft:golden_axe', 'minecraft:diamond_axe', 'minecraft:netherite_axe') rm.block_tag('always_breakable', '#minecraft:leaves', 'minecraft:gravel', '#forge:dirt', 'minecraft:grass', 'minecraft:podzol', 'minecraft:coarse_dirt', '#minecraft:sand') rm.block_tag('always_drops', '#minecraft:leaves', 'minecraft:gravel', '#forge:dirt', 'minecraft:grass', 'minecraft:podzol', 'minecraft:coarse_dirt', '#minecraft:sand') rm.item_tag('fire_starter_logs', '#minecraft:logs', '#minecraft:planks') rm.item_tag('fire_starter_kindling', '#forge:rods/wooden', '#minecraft:saplings', '#minecraft:leaves', '#forge:string', 'notreepunching:plant_fiber') rm.item_tag('fire_starter_soul_fire_catalyst', 'minecraft:soul_sand', 'minecraft:soul_soil') ceramics = [ 'notreepunching:ceramic_large_vessel', 'notreepunching:ceramic_small_vessel', 'notreepunching:ceramic_bucket', 'minecraft:flower_pot' ] pottery = [ 'minecraft:clay', 'notreepunching:clay_worked', 'notreepunching:clay_large_vessel', 'notreepunching:clay_small_vessel', 'notreepunching:clay_bucket', 'notreepunching:clay_flower_pot' ] rm.item_tag('ceramics', *ceramics) rm.item_tag('pottery', *pottery) rm.block_tag('pottery', *pottery) # Add cobblestone to existing similar tags rm.item_tag('minecraft:stone_tool_materials', '#notreepunching:cobblestone') rm.item_tag('minecraft:stone_crafting_materials', '#notreepunching:cobblestone') rm.block_tag('forge:cobblestone', '#notreepunching:cobblestone') rm.item_tag('forge:cobblestone', '#notreepunching:cobblestone') rm.item('ceramic_small_vessel').with_tag( 'large_vessel_blacklist').with_tag('small_vessel_blacklist') rm.item('ceramic_large_vessel').with_tag( 'large_vessel_blacklist').with_tag('small_vessel_blacklist') rm.item('minecraft:shulker_box').with_tag( 'large_vessel_blacklist').with_tag('small_vessel_blacklist') for color in ('white', 'orange', 'magenta', 'light_blue', 'yellow', 'lime', 'pink', 'gray', 'light_gray', 'cyan', 'purple', 'blue', 'brown', 'green', 'red', 'black'): rm.item('minecraft:%s_shulker_box' % color).with_tag( 'large_vessel_blacklist').with_tag('small_vessel_blacklist') # Advancements story = AdvancementBuilder( rm, 'story', 'minecraft:textures/gui/advancements/backgrounds/stone.png') story.advancement( 'root', 'notreepunching:flint_pickaxe', 'No Tree Punching', 'I tried to punch tree. It didn\'t work and now my fingers are covered in splinters...', None, { 'has_loose_rock': inventory_changed('tag!notreepunching:loose_rocks'), 'has_gravel': inventory_changed('minecraft:gravel'), 'has_sticks': inventory_changed('minecraft:stick'), }, requirements=[['has_loose_rock', 'has_gravel', 'has_sticks']], toast=False, chat=False) story.advancement('find_loose_rock', 'notreepunching:stone_loose_rock', 'Dull Rocks', 'Pick up a loose rock.', 'root', { 'has_loose_rock': inventory_changed('tag!notreepunching:loose_rocks') }) story.advancement('find_gravel', 'minecraft:gravel', 'Discount Cobblestone', 'Find some gravel, it may come in handy.', 'root', { 'has_gravel': inventory_changed('minecraft:gravel'), 'has_flint': inventory_changed('minecraft:flint') }, requirements=[['has_gravel', 'has_flint']]) story.advancement('find_sticks', 'minecraft:stick', 'A Big Stick', 'Obtain sticks by breaking leaves.', 'root', {'has_stick': inventory_changed('minecraft:stick')}) story.advancement('find_flint', 'minecraft:flint', 'Shiny Rocks!', 'Obtain some flint by digging through gravel.', 'find_gravel', {'has_flint': inventory_changed('minecraft:flint')}) story.advancement( 'knapping', 'notreepunching:flint_shard', 'Knapit!', 'Use a piece of flint on some exposed stone, to break it into small flint shards.', 'find_flint', {'has_flint_shard': inventory_changed('notreepunching:flint_shard')}) story.advancement( 'plant_fiber', 'notreepunching:plant_fiber', 'Plant Based Tool Bindings', 'With a primitive flint knife, obtain plant fiber by cutting down tall grasses.', 'knapping', {'has_plant_fiber': inventory_changed('notreepunching:plant_fiber')}) story.advancement( 'flint_axe', 'notreepunching:flint_axe', 'And My Axe!', 'Build your first tool capable of harvesting wood!', 'plant_fiber', {'has_flint_axe': inventory_changed('notreepunching:flint_axe')}) story.advancement( 'macuahuitl', 'notreepunching:macuahuitl', 'Macaroniwhatnow?', 'Craft a macuahuitl', 'flint_axe', {'has_macuahuitl': inventory_changed('notreepunching:macuahuitl')}) story.advancement( 'flint_pickaxe', 'notreepunching:flint_pickaxe', 'My First Pickaxe', 'Craft your first pickaxe from flint, plant fiber, and sticks!', 'flint_axe', { 'has_flint_pickaxe': inventory_changed('notreepunching:flint_pickaxe') }) story.advancement( 'use_clay_tool', 'notreepunching:clay_large_vessel', 'You\'re a Potter, Harry', 'Use a clay tool on a block of clay to create pottery of various kinds.', 'find_sticks', { 'damage_clay_tool': use_item_on_block('notreepunching:clay_tool', 'notreepunching:pottery') }) story.advancement( 'fire_pottery', 'notreepunching:ceramic_large_vessel', 'Ceramics', 'Fire some pottery into useful devices!', 'use_clay_tool', {'has_ceramics': inventory_changed('tag!notreepunching:ceramics')}) story.advancement( 'mattock', 'notreepunching:iron_mattock', 'Getting a Better Upgrade', 'Craft a mattock, a hoe-axe-shovel-all-in-one multitool!', 'flint_pickaxe', {'has_mattock': inventory_changed('tag!notreepunching:mattocks')})