Jump to content

perromercenary00

Members
  • Posts

    834
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by perromercenary00

  1. im doing a kin of custome mineshaft tunel but whit slabs 
    notice minecarts dont works out of minecar rails soo i need to find a way to lay rails on slabs having in account inclination 

    Here in the video the minecart stucks on the slab

    it can not run over anything different from rail blocks 

     

    i was thinking into extending RailBlock but latter how i make minecrats to aknoledge mi custome rail slab or vainilla rails to connect whit the costume one 

    or it is anothe option besides making a custome mine cart and override the vainilla one ??
     

     

     

     

  2. Brooo you are in 1.12 why do you made mods on 1.12 in 2024

     

    anyway i have similar issue in 1.20.4 in mi case to fix i have to make the BlockEntity to manually call on blockEntityChanged() to inform the world the block entity has change and need to be saved 

     

    	    // ########## ########## ########## ##########
        @Override
        protected void saveAdditional( CompoundTag nbt ){
            //System.out.println("\n##saveAdditional(), " + this.getBlockPos() );
            nbt.put("inventory", itemhandler.serializeNBT() );
            nbt.putInt("progress", this.progress );
    	        super.saveAdditional( nbt );
            //System.out.println(NbtUtils.prettyPrint(nbt));
    	        this.getLevel().blockEntityChanged(this.getBlockPos()); //<----------
    	    }
    	

    but this is in 1.20.4 may theres something equivalent in 1.12 

     

     

    • Like 1
  3. i have mi own custome class to spawn structures and notice it was doing weird things 

    debuggin the thing i find this piece of code was not picking mi blocks 
     

    this piece of code is suposed to create two lists way its easier to get a block habing only the name or the oposite to extract the name from a block 

    Spoiler

    				
    			       count = 0;
    		        for (Map.Entry<ResourceKey<Block>, Block> ResourceKey : ForgeRegistries.BLOCKS.getEntries()) {
    		            actualBlock = ResourceKey.getValue();//.defaultBlockState().getBlock();
    		            nnn = ForgeRegistries.BLOCKS.getKey(actualBlock).toString();				
    			            lista_de_bloques.put(nnn, actualBlock); //.defaultBlockState().getBlock()
    		            bloques_de_lista.put(actualBlock, nnn);				
    			            count++;
    		        }				
    			

     

     

    Spoiler

    				
    			"lista_de_bloques":{
    		"minecraft:trial_spawner":"true",
    		"minecraft:andesite_wall":"true",
    		"minecraft:gray_bed":"true",
    		"minecraft:warped_slab":"true",
    		"minecraft:jungle_slab":"true",
    		"minecraft:exposed_copper_bulb":"true",
    		"minecraft:crimson_stairs":"true",
    		"mercmod:nether_bricks_pipe":"true",
    		"minecraft:fire":"true",
    		"minecraft:purple_candle_cake":"true",
    		"minecraft:lily_pad":"true",
    		"minecraft:deepslate_tiles":"true",
    		"minecraft:deepslate_tile_stairs":"true",
    		"minecraft:observer":"true",
    		"minecraft:blackstone_stairs":"true",
    		"minecraft:warped_fence":"true",
    		"minecraft:bubble_coral_fan":"true",
    		"minecraft:polished_blackstone_brick_stairs":"true",
    		"minecraft:pink_wool":"true",
    		"minecraft:light_gray_shulker_box":"true",
    		"minecraft:mangrove_pressure_plate":"true",
    		"minecraft:green_banner":"true",
    		"minecraft:sculk":"true",
    		"minecraft:orange_stained_glass_pane":"true",
    		"mercmod:mossy_stone_bricks_pipe":"true",
    		"minecraft:mangrove_fence":"true",
    		"minecraft:kelp_plant":"true",
    		"minecraft:granite_stairs":"true",
    		"minecraft:fire_coral_block":"true",
    		"minecraft:potted_dead_bush":"true",
    		"minecraft:piglin_head":"true",
    		"minecraft:blue_ice":"true",
    		"minecraft:cherry_planks":"true",
    		"minecraft:light_blue_stained_glass":"true",
    		"minecraft:dead_horn_coral_fan":"true",
    		"mercmod:polished_andesite_toilet":"true",
    		"minecraft:yellow_candle_cake":"true",
    		"minecraft:loom":"true",
    		"minecraft:lime_shulker_box":"true",
    		"minecraft:beacon":"true",
    		"minecraft:stripped_crimson_stem":"true",
    		"minecraft:dead_brain_coral":"true",
    		"minecraft:diorite_stairs":"true",
    		"mercmod:polished_blackstone_bricks_pipe":"true",
    		"minecraft:stripped_mangrove_log":"true",
    		"minecraft:dark_oak_wall_hanging_sign":"true",
    		"minecraft:yellow_candle":"true",
    		"minecraft:calibrated_sculk_sensor":"true",
    		"minecraft:green_carpet":"true",
    		"minecraft:zombie_head":"true",
    		"minecraft:oak_hanging_sign":"true",
    		"minecraft:gray_banner":"true",
    		"minecraft:stripped_acacia_log":"true",
    		"minecraft:chiseled_quartz_block":"true",
    		"minecraft:diorite_wall":"true",
    		"minecraft:exposed_cut_copper_slab":"true",
    		"minecraft:lever":"true",
    		"minecraft:mossy_stone_bricks":"true",
    		"minecraft:tnt":"true",
    		"minecraft:crimson_sign":"true",
    		"minecraft:waxed_oxidized_copper_trapdoor":"true",
    		"minecraft:black_carpet":"true",
    		"minecraft:gray_terracotta":"true",
    		"minecraft:white_carpet":"true",
    		"minecraft:end_stone_bricks":"true",
    		"minecraft:purple_wall_banner":"true",
    		"minecraft:sandstone_slab":"true",
    		"minecraft:birch_trapdoor":"true",
    		"minecraft:jungle_fence":"true",
    		"minecraft:smooth_stone_slab":"true",
    		"minecraft:air":"true",
    		"minecraft:stripped_birch_wood":"true",
    		"minecraft:end_stone_brick_slab":"true",
    		"minecraft:warped_nylium":"true",
    		"minecraft:red_sandstone":"true",
    		"minecraft:void_air":"true",
    		"minecraft:dark_oak_leaves":"true",
    		"minecraft:crimson_hanging_sign":"true",
    		"minecraft:waxed_oxidized_cut_copper_stairs":"true",
    		"minecraft:deepslate_copper_ore":"true",
    		"minecraft:bamboo_door":"true",
    		"minecraft:bubble_coral":"true",
    		"mercmod:red_nether_bricks_pipe":"true",
    		"minecraft:potted_wither_rose":"true",
    		"minecraft:wither_skeleton_skull":"true",
    		"minecraft:light_weighted_pressure_plate":"true",
    		"minecraft:orange_glazed_terracotta":"true",
    		"minecraft:suspicious_gravel":"true",
    		"minecraft:mangrove_leaves":"true",
    		"minecraft:end_portal_frame":"true",
    		"minecraft:tuff":"true",
    		"minecraft:purpur_stairs":"true",
    		"minecraft:magma_block":"true",
    		"minecraft:cobblestone_slab":"true",
    		"minecraft:creeper_wall_head":"true",
    		"minecraft:red_nether_bricks":"true",
    		"minecraft:waxed_oxidized_copper":"true",
    		"minecraft:terracotta":"true",
    		"minecraft:dead_fire_coral_block":"true",
    		"minecraft:crimson_fungus":"true",
    		"minecraft:repeating_command_block":"true",
    		"minecraft:blue_wall_banner":"true",
    		"minecraft:dirt":"true",
    		"minecraft:stripped_dark_oak_log":"true",
    		"minecraft:oxidized_copper_trapdoor":"true",
    		"minecraft:pink_concrete_powder":"true",
    		"minecraft:exposed_copper_trapdoor":"true",
    		"minecraft:suspicious_sand":"true",
    		"minecraft:oak_planks":"true",
    		"minecraft:cut_sandstone":"true",
    		"minecraft:torchflower_crop":"true",
    		"minecraft:spruce_leaves":"true",
    		"minecraft:black_terracotta":"true",
    		"minecraft:end_stone":"true",
    		"minecraft:birch_hanging_sign":"true",
    		"minecraft:jungle_log":"true",
    		"minecraft:yellow_terracotta":"true",
    		"minecraft:mud_bricks":"true",
    		"minecraft:mangrove_wall_sign":"true",
    		"minecraft:red_sandstone_stairs":"true",
    		"mercmod:end_stone_bricks_pipe":"true",
    		"minecraft:yellow_bed":"true",
    		"minecraft:pink_candle":"true",
    		"minecraft:dead_bubble_coral":"true",
    		"minecraft:oak_log":"true",
    		"minecraft:redstone_torch":"true",
    		"minecraft:carved_pumpkin":"true",
    		"minecraft:waxed_oxidized_copper_grate":"true",
    		"minecraft:mud":"true",
    		"minecraft:magenta_banner":"true",
    		"minecraft:end_stone_brick_wall":"true",
    		"minecraft:light":"true",
    		"minecraft:soul_torch":"true",
    		"minecraft:mossy_cobblestone":"true",
    		"minecraft:calcite":"true",
    		"minecraft:magenta_candle_cake":"true",
    		"minecraft:orange_banner":"true",
    		"minecraft:cherry_wall_sign":"true",
    		"minecraft:dragon_wall_head":"true",
    		"mercmod:escalera_f":"true",
    		"minecraft:cherry_trapdoor":"true",
    		"mercmod:escalera_g":"true",
    		"mercmod:escalera_h":"true",
    		"minecraft:jungle_pressure_plate":"true",
    		"mercmod:escalera_i":"true",
    		"mercmod:escalera_b":"true",
    		"mercmod:escalera_c":"true",
    		"minecraft:barrier":"true",
    		"mercmod:escalera_d":"true",
    		"mercmod:escalera_e":"true",
    		"minecraft:dark_oak_door":"true",
    		"mercmod:escalera_a":"true",
    		"minecraft:weathered_copper_grate":"true",
    		"minecraft:spruce_sapling":"true",
    		"minecraft:acacia_pressure_plate":"true",
    		"minecraft:exposed_cut_copper":"true",
    		"minecraft:magenta_carpet":"true",
    		"minecraft:crimson_roots":"true",
    		"minecraft:frogspawn":"true",
    		"minecraft:stripped_jungle_wood":"true",
    		"minecraft:acacia_log":"true",
    		"minecraft:jungle_button":"true",
    		"minecraft:ladder":"true",
    		"minecraft:basalt":"true",
    		"minecraft:slime_block":"true",
    		"mercmod:structure_water":"true",
    		"minecraft:short_grass":"true",
    		"minecraft:lapis_block":"true",
    		"minecraft:prismarine":"true",
    		"minecraft:waxed_exposed_copper_trapdoor":"true",
    		"minecraft:iron_block":"true",
    		"minecraft:reinforced_deepslate":"true",
    		"minecraft:bell":"true",
    		"minecraft:candle_cake":"true",
    		"minecraft:brick_slab":"true",
    		"minecraft:gravel":"true",
    		"minecraft:light_gray_stained_glass_pane":"true",
    		"minecraft:light_gray_concrete_powder":"true",
    		"mercmod:hardcase":"true",
    		"minecraft:birch_wood":"true",
    		"minecraft:dark_prismarine_stairs":"true",
    		"minecraft:lime_banner":"true",
    		"minecraft:orange_terracotta":"true",
    		"minecraft:pink_stained_glass":"true",
    		"minecraft:glow_lichen":"true",
    		"minecraft:copper_grate":"true",
    		"minecraft:black_concrete":"true",
    		"minecraft:dark_oak_sapling":"true",
    		"minecraft:brown_candle":"true",
    		"minecraft:conduit":"true",
    		"minecraft:piston_head":"true",
    		"minecraft:black_wool":"true",
    		"minecraft:brain_coral_fan":"true",
    		"minecraft:light_gray_carpet":"true",
    		"mercmod:potted_green_herb":"true",
    		"minecraft:flowering_azalea_leaves":"true",
    		"minecraft:tuff_brick_slab":"true",
    		"minecraft:potatoes":"true",
    		"minecraft:coarse_dirt":"true",
    		"minecraft:dark_oak_log":"true",
    		"minecraft:brown_mushroom":"true",
    		"minecraft:cyan_glazed_terracotta":"true",
    		"minecraft:stripped_warped_stem":"true",
    		"minecraft:waxed_oxidized_cut_copper_slab":"true",
    		"minecraft:potted_orange_tulip":"true",
    		"minecraft:black_candle_cake":"true",
    		"minecraft:waxed_exposed_copper_door":"true",
    		"minecraft:bamboo_block":"true",
    		"minecraft:crimson_trapdoor":"true",
    		"minecraft:dark_oak_fence_gate":"true",
    		"minecraft:light_blue_candle_cake":"true",
    		"minecraft:dark_oak_stairs":"true",
    		"minecraft:lime_stained_glass_pane":"true",
    		"minecraft:waxed_copper_block":"true",
    		"minecraft:waxed_oxidized_cut_copper":"true",
    		"minecraft:grass_block":"true",
    		"minecraft:dead_brain_coral_block":"true",
    		"minecraft:green_terracotta":"true",
    		"minecraft:magenta_concrete_powder":"true",
    		"minecraft:bamboo_planks":"true",
    		"minecraft:water":"true",
    		"minecraft:netherite_block":"true",
    		"minecraft:smooth_red_sandstone_stairs":"true",
    		"minecraft:polished_andesite":"true",
    		"minecraft:waxed_weathered_copper_trapdoor":"true",
    		"minecraft:acacia_leaves":"true",
    		"minecraft:oak_wall_sign":"true",
    		"minecraft:flower_pot":"true",
    		"minecraft:acacia_door":"true",
    		"minecraft:acacia_wall_hanging_sign":"true",
    		"minecraft:lime_carpet":"true",
    		"minecraft:quartz_slab":"true",
    		"minecraft:white_banner":"true",
    		"mercmod:stone_bricks_pipe":"true",
    		"minecraft:shroomlight":"true",
    		"minecraft:smooth_quartz_stairs":"true",
    		"minecraft:potted_dandelion":"true",
    		"minecraft:cobweb":"true",
    		"minecraft:weeping_vines":"true",
    		"minecraft:stripped_spruce_log":"true",
    		"minecraft:sandstone":"true",
    		"minecraft:oak_door":"true",
    		"minecraft:dead_horn_coral_wall_fan":"true",
    		"minecraft:warped_hyphae":"true",
    		"minecraft:pointed_dripstone":"true",
    		"minecraft:water_cauldron":"true",
    		"minecraft:scaffolding":"true",
    		"minecraft:cartography_table":"true",
    		"minecraft:large_amethyst_bud":"true",
    		"minecraft:crimson_wall_sign":"true",
    		"minecraft:white_candle_cake":"true",
    		"minecraft:lime_concrete_powder":"true",
    		"minecraft:birch_pressure_plate":"true",
    		"minecraft:spruce_sign":"true",
    		"minecraft:crimson_fence_gate":"true",
    		"minecraft:yellow_wall_banner":"true",
    		"minecraft:pink_petals":"true",
    		"minecraft:mangrove_wood":"true",
    		"minecraft:stone_brick_wall":"true",
    		"minecraft:stripped_oak_log":"true",
    		"minecraft:red_shulker_box":"true",
    		"minecraft:damaged_anvil":"true",
    		"minecraft:lily_of_the_valley":"true",
    		"minecraft:end_stone_brick_stairs":"true",
    		"minecraft:purple_glazed_terracotta":"true",
    		"minecraft:orange_wall_banner":"true",
    		"minecraft:bubble_coral_block":"true",
    		"minecraft:green_candle_cake":"true",
    		"minecraft:brown_terracotta":"true",
    		"minecraft:kelp":"true",
    		"minecraft:chiseled_copper":"true",
    		"minecraft:light_gray_bed":"true",
    		"minecraft:weathered_cut_copper_stairs":"true",
    		"mercmod:dead_body":"true",
    		"minecraft:soul_fire":"true",
    		"minecraft:sandstone_wall":"true",
    		"minecraft:polished_blackstone_wall":"true",
    		"minecraft:waxed_exposed_cut_copper_stairs":"true",
    		"minecraft:moving_piston":"true",
    		"minecraft:smooth_stone":"true",
    		"minecraft:quartz_bricks":"true",
    		"minecraft:bamboo_fence":"true",
    		"minecraft:polished_diorite_stairs":"true",
    		"minecraft:black_shulker_box":"true",
    		"minecraft:warped_wall_hanging_sign":"true",
    		"minecraft:comparator":"true",
    		"minecraft:potted_flowering_azalea_bush":"true",
    		"minecraft:waxed_weathered_copper_bulb":"true",
    		"minecraft:oak_stairs":"true",
    		"minecraft:chain_command_block":"true",
    		"minecraft:gray_candle":"true",
    		"minecraft:white_stained_glass":"true",
    		"minecraft:bamboo_mosaic_stairs":"true",
    		"minecraft:warped_wart_block":"true",
    		"minecraft:small_dripleaf":"true",
    		"minecraft:moss_block":"true",
    		"minecraft:tube_coral":"true",
    		"minecraft:polished_blackstone_bricks":"true",
    		"minecraft:light_gray_wool":"true",
    		"minecraft:birch_fence":"true",
    		"minecraft:weathered_copper_trapdoor":"true",
    		"minecraft:chiseled_tuff_bricks":"true",
    		"minecraft:green_stained_glass":"true",
    		"minecraft:cave_vines":"true",
    		"minecraft:dark_oak_hanging_sign":"true",
    		"minecraft:sand":"true",
    		"minecraft:cut_copper":"true",
    		"minecraft:light_blue_carpet":"true",
    		"minecraft:purpur_slab":"true",
    		"minecraft:mangrove_button":"true",
    		"minecraft:warped_button":"true",
    		"minecraft:orange_candle_cake":"true",
    		"minecraft:warped_planks":"true",
    		"minecraft:cyan_wool":"true",
    		"minecraft:decorated_pot":"true",
    		"mercmod:sand_slab":"true",
    		"minecraft:fletching_table":"true",
    		"minecraft:light_blue_glazed_terracotta":"true",
    		"minecraft:smooth_quartz_slab":"true",
    		"minecraft:polished_granite_stairs":"true",
    		"minecraft:lime_stained_glass":"true",
    		"minecraft:composter":"true",
    		"minecraft:cyan_terracotta":"true",
    		"minecraft:acacia_wall_sign":"true",
    		"minecraft:waxed_weathered_copper":"true",
    		"minecraft:pink_terracotta":"true",
    		"minecraft:chorus_flower":"true",
    		"minecraft:waxed_exposed_chiseled_copper":"true",
    		"minecraft:birch_sign":"true",
    		"minecraft:acacia_fence":"true",
    		"minecraft:horn_coral_wall_fan":"true",
    		"mercmod:tp_block":"true",
    		"minecraft:end_portal":"true",
    		"minecraft:magenta_concrete":"true",
    		"minecraft:lectern":"true",
    		"minecraft:dark_prismarine_slab":"true",
    		"minecraft:oxidized_cut_copper_slab":"true",
    		"minecraft:dark_oak_button":"true",
    		"minecraft:campfire":"true",
    		"minecraft:frosted_ice":"true",
    		"mercmod:grass_slab":"true",
    		"minecraft:powder_snow":"true",
    		"minecraft:azalea":"true",
    		"minecraft:andesite_slab":"true",
    		"minecraft:light_gray_stained_glass":"true",
    		"minecraft:white_bed":"true",
    		"minecraft:red_concrete_powder":"true",
    		"minecraft:warped_stem":"true",
    		"minecraft:chiseled_tuff":"true",
    		"minecraft:red_tulip":"true",
    		"minecraft:green_concrete":"true",
    		"minecraft:polished_tuff_wall":"true",
    		"minecraft:jigsaw":"true",
    		"minecraft:podzol":"true",
    		"minecraft:white_concrete_powder":"true",
    		"mercmod:cracked_polished_blackstone_bricks_pipe":"true",
    		"minecraft:light_blue_bed":"true",
    		"minecraft:lightning_rod":"true",
    		"minecraft:birch_log":"true",
    		"minecraft:orange_shulker_box":"true",
    		"minecraft:stripped_crimson_hyphae":"true",
    		"minecraft:tuff_stairs":"true",
    		"minecraft:spruce_wall_sign":"true",
    		"minecraft:light_gray_wall_banner":"true",
    		"minecraft:cyan_candle":"true",
    		"minecraft:cyan_bed":"true",
    		"minecraft:cherry_log":"true",
    		"minecraft:azure_bluet":"true",
    		"minecraft:brown_mushroom_block":"true",
    		"minecraft:polished_deepslate_wall":"true",
    		"minecraft:red_stained_glass":"true",
    		"minecraft:purple_wool":"true",
    		"minecraft:waxed_exposed_cut_copper_slab":"true",
    		"minecraft:red_nether_brick_stairs":"true",
    		"minecraft:polished_andesite_slab":"true",
    		"minecraft:melon":"true",
    		"minecraft:brain_coral_wall_fan":"true",
    		"minecraft:mossy_stone_brick_stairs":"true",
    		"minecraft:diamond_ore":"true",
    		"minecraft:dragon_head":"true",
    		"minecraft:diorite":"true",
    		"minecraft:waxed_weathered_cut_copper_slab":"true",
    		"minecraft:light_gray_banner":"true",
    		"minecraft:infested_chiseled_stone_bricks":"true",
    		"minecraft:polished_andesite_stairs":"true",
    		"minecraft:birch_wall_hanging_sign":"true",
    		"minecraft:iron_door":"true",
    		"minecraft:crafter":"true",
    		"minecraft:lime_bed":"true",
    		"minecraft:soul_wall_torch":"true",
    		"minecraft:polished_tuff":"true",
    		"minecraft:polished_basalt":"true",
    		"minecraft:mangrove_sign":"true",
    		"minecraft:ender_chest":"true",
    		"minecraft:black_glazed_terracotta":"true",
    		"mercmod:dirt_path_slab":"true",
    		"minecraft:dark_oak_trapdoor":"true",
    		"minecraft:cherry_stairs":"true",
    		"minecraft:beetroots":"true",
    		"minecraft:black_candle":"true",
    		"minecraft:weathered_copper_door":"true",
    		"minecraft:infested_deepslate":"true",
    		"mercmod:mud_slab":"true",
    		"minecraft:mud_brick_slab":"true",
    		"minecraft:brick_wall":"true",
    		"minecraft:cherry_slab":"true",
    		"minecraft:oxidized_chiseled_copper":"true",
    		"minecraft:black_stained_glass_pane":"true",
    		"minecraft:orange_bed":"true",
    		"minecraft:lilac":"true",
    		"mercmod:cracked_stone_bricks_pipe":"true",
    		"mercmod:gold_toilet":"true",
    		"minecraft:potted_cornflower":"true",
    		"minecraft:pitcher_plant":"true",
    		"minecraft:respawn_anchor":"true",
    		"minecraft:dead_brain_coral_wall_fan":"true",
    		"minecraft:nether_brick_wall":"true",
    		"minecraft:acacia_slab":"true",
    		"minecraft:jack_o_lantern":"true",
    		"minecraft:polished_diorite_slab":"true",
    		"minecraft:mangrove_roots":"true",
    		"minecraft:cactus":"true",
    		"minecraft:purple_stained_glass_pane":"true",
    		"minecraft:pink_shulker_box":"true",
    		"minecraft:crimson_door":"true",
    		"minecraft:twisting_vines":"true",
    		"minecraft:weathered_cut_copper_slab":"true",
    		"minecraft:blue_glazed_terracotta":"true",
    		"minecraft:brain_coral_block":"true",
    		"minecraft:sandstone_stairs":"true",
    		"minecraft:white_glazed_terracotta":"true",
    		"minecraft:player_head":"true",
    		"mercmod:detonator_redstone":"true",
    		"minecraft:smoker":"true",
    		"minecraft:crimson_wall_hanging_sign":"true",
    		"minecraft:magenta_stained_glass":"true",
    		"minecraft:purple_terracotta":"true",
    		"minecraft:large_fern":"true",
    		"minecraft:nether_brick_fence":"true",
    		"minecraft:note_block":"true",
    		"minecraft:light_blue_concrete":"true",
    		"minecraft:dead_bubble_coral_fan":"true",
    		"minecraft:waxed_exposed_copper_bulb":"true",
    		"minecraft:petrified_oak_slab":"true",
    		"mercmod:structure_test":"true",
    		"minecraft:bamboo_slab":"true",
    		"minecraft:birch_wall_sign":"true",
    		"minecraft:brown_carpet":"true",
    		"minecraft:soul_soil":"true",
    		"minecraft:acacia_hanging_sign":"true",
    		"minecraft:stone_stairs":"true",
    		"minecraft:sticky_piston":"true",
    		"minecraft:player_wall_head":"true",
    		"minecraft:granite_wall":"true",
    		"mercmod:potted_red_herb":"true",
    		"minecraft:red_bed":"true",
    		"minecraft:snow":"true",
    		"minecraft:cyan_stained_glass":"true",
    		"minecraft:glass_pane":"true",
    		"minecraft:sculk_sensor":"true",
    		"minecraft:waxed_chiseled_copper":"true",
    		"minecraft:wall_torch":"true",
    		"minecraft:oak_trapdoor":"true",
    		"minecraft:crimson_nylium":"true",
    		"mercmod:quartz_toilet":"true",
    		"minecraft:birch_sapling":"true",
    		"minecraft:diamond_block":"true",
    		"minecraft:dead_bush":"true",
    		"minecraft:acacia_button":"true",
    		"minecraft:farmland":"true",
    		"minecraft:stone_slab":"true",
    		"minecraft:bedrock":"true",
    		"minecraft:infested_mossy_stone_bricks":"true",
    		"minecraft:cherry_pressure_plate":"true",
    		"minecraft:potted_cactus":"true",
    		"minecraft:potted_oxeye_daisy":"true",
    		"minecraft:purple_candle":"true",
    		"minecraft:activator_rail":"true",
    		"minecraft:oak_pressure_plate":"true",
    		"minecraft:smooth_quartz":"true",
    		"minecraft:copper_door":"true",
    		"minecraft:spawner":"true",
    		"minecraft:glowstone":"true",
    		"minecraft:white_tulip":"true",
    		"minecraft:light_gray_glazed_terracotta":"true",
    		"minecraft:tube_coral_fan":"true",
    		"mercmod:bricks_pipe":"true",
    		"minecraft:light_blue_stained_glass_pane":"true",
    		"minecraft:purple_concrete":"true",
    		"minecraft:oak_fence_gate":"true",
    		"minecraft:tripwire_hook":"true",
    		"minecraft:black_concrete_powder":"true",
    		"minecraft:spruce_button":"true",
    		"minecraft:chipped_anvil":"true",
    		"minecraft:prismarine_wall":"true",
    		"minecraft:cracked_deepslate_tiles":"true",
    		"minecraft:redstone_wall_torch":"true",
    		"minecraft:stone_brick_stairs":"true",
    		"minecraft:potted_crimson_roots":"true",
    		"minecraft:lava":"true",
    		"minecraft:gold_ore":"true",
    		"minecraft:light_blue_wool":"true",
    		"minecraft:birch_stairs":"true",
    		"minecraft:blue_shulker_box":"true",
    		"minecraft:tinted_glass":"true",
    		"minecraft:polished_blackstone_brick_slab":"true",
    		"minecraft:daylight_detector":"true",
    		"minecraft:pink_concrete":"true",
    		"minecraft:waxed_oxidized_copper_bulb":"true",
    		"minecraft:dead_fire_coral_wall_fan":"true",
    		"minecraft:weeping_vines_plant":"true",
    		"minecraft:quartz_block":"true",
    		"minecraft:fire_coral":"true",
    		"minecraft:polished_deepslate":"true",
    		"minecraft:coal_ore":"true",
    		"minecraft:jungle_door":"true",
    		"minecraft:waxed_copper_grate":"true",
    		"minecraft:deepslate_iron_ore":"true",
    		"minecraft:blue_carpet":"true",
    		"minecraft:black_wall_banner":"true",
    		"minecraft:spruce_door":"true",
    		"minecraft:polished_deepslate_stairs":"true",
    		"minecraft:cobblestone":"true",
    		"minecraft:jungle_leaves":"true",
    		"minecraft:powered_rail":"true",
    		"minecraft:stripped_dark_oak_wood":"true",
    		"minecraft:exposed_cut_copper_stairs":"true",
    		"minecraft:waxed_cut_copper_stairs":"true",
    		"minecraft:brown_bed":"true",
    		"minecraft:command_block":"true",
    		"minecraft:bamboo_mosaic":"true",
    		"minecraft:honeycomb_block":"true",
    		"minecraft:light_blue_terracotta":"true",
    		"minecraft:gray_concrete":"true",
    		"minecraft:smooth_sandstone_slab":"true",
    		"minecraft:blast_furnace":"true",
    		"minecraft:horn_coral":"true",
    		"minecraft:beehive":"true",
    		"mercmod:emerald_toilet":"true",
    		"minecraft:bamboo_mosaic_slab":"true",
    		"minecraft:pink_carpet":"true",
    		"minecraft:attached_melon_stem":"true",
    		"minecraft:lapis_ore":"true",
    		"minecraft:moss_carpet":"true",
    		"minecraft:cut_red_sandstone":"true",
    		"minecraft:anvil":"true",
    		"mercmod:farmland_slab":"true",
    		"minecraft:potted_brown_mushroom":"true",
    		"minecraft:brown_stained_glass_pane":"true",
    		"minecraft:obsidian":"true",
    		"minecraft:red_sandstone_wall":"true",
    		"minecraft:purple_concrete_powder":"true",
    		"minecraft:tuff_brick_wall":"true",
    		"minecraft:cobbled_deepslate_stairs":"true",
    		"mercmod:stone_toilet":"true",
    		"minecraft:chiseled_stone_bricks":"true",
    		"minecraft:blue_candle_cake":"true",
    		"minecraft:chiseled_deepslate":"true",
    		"mercmod:diamond_toilet":"true",
    		"minecraft:clay":"true",
    		"minecraft:bamboo_button":"true",
    		"minecraft:soul_campfire":"true",
    		"minecraft:gray_concrete_powder":"true",
    		"minecraft:warped_roots":"true",
    		"minecraft:waxed_copper_door":"true",
    		"minecraft:yellow_glazed_terracotta":"true",
    		"minecraft:yellow_wool":"true",
    		"minecraft:hanging_roots":"true",
    		"minecraft:cherry_button":"true",
    		"minecraft:bamboo_pressure_plate":"true",
    		"minecraft:polished_deepslate_slab":"true",
    		"minecraft:polished_tuff_slab":"true",
    		"minecraft:dead_tube_coral":"true",
    		"minecraft:brown_concrete_powder":"true",
    		"minecraft:acacia_fence_gate":"true",
    		"minecraft:red_sand":"true",
    		"minecraft:pink_wall_banner":"true",
    		"minecraft:pearlescent_froglight":"true",
    		"minecraft:waxed_copper_bulb":"true",
    		"minecraft:oak_button":"true",
    		"minecraft:ochre_froglight":"true",
    		"mercmod:polished_diorite_toilet":"true",
    		"minecraft:cake":"true",
    		"minecraft:sunflower":"true",
    		"minecraft:stone_bricks":"true",
    		"minecraft:crimson_pressure_plate":"true",
    		"minecraft:enchanting_table":"true",
    		"minecraft:gray_wall_banner":"true",
    		"minecraft:cut_sandstone_slab":"true",
    		"minecraft:lantern":"true",
    		"minecraft:cobblestone_stairs":"true",
    		"minecraft:stone":"true",
    		"minecraft:poppy":"true",
    		"minecraft:potted_crimson_fungus":"true",
    		"minecraft:potted_azure_bluet":"true",
    		"minecraft:white_shulker_box":"true",
    		"minecraft:seagrass":"true",
    		"minecraft:redstone_ore":"true",
    		"minecraft:potted_spruce_sapling":"true",
    		"minecraft:jungle_sapling":"true",
    		"minecraft:potted_dark_oak_sapling":"true",
    		"minecraft:turtle_egg":"true",
    		"minecraft:amethyst_block":"true",
    		"mercmod:polished_granite_toilet":"true",
    		"minecraft:big_dripleaf":"true",
    		"minecraft:waxed_weathered_cut_copper":"true",
    		"mercmod:oak_ladder":"true",
    		"minecraft:cut_red_sandstone_slab":"true",
    		"minecraft:birch_door":"true",
    		"minecraft:jungle_fence_gate":"true",
    		"minecraft:oxidized_copper_bulb":"true",
    		"minecraft:oak_slab":"true",
    		"minecraft:oxidized_cut_copper_stairs":"true",
    		"minecraft:cherry_wall_hanging_sign":"true",
    		"minecraft:dark_prismarine":"true",
    		"minecraft:ancient_debris":"true",
    		"minecraft:spruce_slab":"true",
    		"minecraft:white_terracotta":"true",
    		"minecraft:stripped_cherry_log":"true",
    		"minecraft:cherry_sign":"true",
    		"minecraft:acacia_wood":"true",
    		"minecraft:peony":"true",
    		"minecraft:sea_lantern":"true",
    		"minecraft:big_dripleaf_stem":"true",
    		"minecraft:skeleton_skull":"true",
    		"minecraft:dirt_path":"true",
    		"minecraft:mossy_cobblestone_wall":"true",
    		"minecraft:white_wool":"true",
    		"mercmod:mud_bricks_pipe":"true",
    		"minecraft:purple_stained_glass":"true",
    		"minecraft:deepslate_emerald_ore":"true",
    		"minecraft:blue_stained_glass_pane":"true",
    		"minecraft:small_amethyst_bud":"true",
    		"minecraft:polished_blackstone_slab":"true",
    		"minecraft:light_blue_candle":"true",
    		"minecraft:deepslate_brick_slab":"true",
    		"minecraft:end_rod":"true",
    		"minecraft:cave_vines_plant":"true",
    		"minecraft:smooth_basalt":"true",
    		"minecraft:allium":"true",
    		"minecraft:magenta_wool":"true",
    		"minecraft:prismarine_bricks":"true",
    		"minecraft:red_wall_banner":"true",
    		"minecraft:mud_brick_stairs":"true",
    		"minecraft:brown_candle_cake":"true",
    		"minecraft:gray_candle_cake":"true",
    		"minecraft:crafting_table":"true",
    		"minecraft:warped_pressure_plate":"true",
    		"minecraft:piglin_wall_head":"true",
    		"minecraft:green_shulker_box":"true",
    		"minecraft:sculk_catalyst":"true",
    		"minecraft:potted_mangrove_propagule":"true",
    		"minecraft:lava_cauldron":"true",
    		"minecraft:cut_copper_stairs":"true",
    		"minecraft:creeper_head":"true",
    		"minecraft:dried_kelp_block":"true",
    		"minecraft:red_carpet":"true",
    		"minecraft:dark_oak_slab":"true",
    		"minecraft:bubble_coral_wall_fan":"true",
    		"minecraft:bamboo_trapdoor":"true",
    		"minecraft:prismarine_brick_slab":"true",
    		"minecraft:warped_fungus":"true",
    		"minecraft:pumpkin":"true",
    		"minecraft:red_candle_cake":"true",
    		"minecraft:oak_sapling":"true",
    		"minecraft:barrel":"true",
    		"minecraft:jungle_trapdoor":"true",
    		"minecraft:bookshelf":"true",
    		"minecraft:blue_stained_glass":"true",
    		"minecraft:light_gray_candle":"true",
    		"minecraft:spruce_hanging_sign":"true",
    		"minecraft:polished_blackstone_button":"true",
    		"minecraft:dead_fire_coral_fan":"true",
    		"minecraft:potted_red_tulip":"true",
    		"mercmod:aidspray":"true",
    		"mercmod:structure_cofre":"true",
    		"minecraft:potted_warped_roots":"true",
    		"minecraft:chiseled_red_sandstone":"true",
    		"minecraft:torchflower":"true",
    		"minecraft:sea_pickle":"true",
    		"minecraft:orange_candle":"true",
    		"minecraft:green_concrete_powder":"true",
    		"minecraft:copper_block":"true",
    		"mercmod:potted_blue_herb":"true",
    		"minecraft:weathered_copper":"true",
    		"minecraft:brown_stained_glass":"true",
    		"minecraft:exposed_chiseled_copper":"true",
    		"minecraft:attached_pumpkin_stem":"true",
    		"minecraft:mangrove_door":"true",
    		"minecraft:glass":"true",
    		"minecraft:bamboo_sapling":"true",
    		"minecraft:cyan_carpet":"true",
    		"minecraft:cherry_fence":"true",
    		"minecraft:tuff_wall":"true",
    		"minecraft:potted_red_mushroom":"true",
    		"minecraft:blackstone_wall":"true",
    		"minecraft:jungle_wall_hanging_sign":"true",
    		"minecraft:orange_wool":"true",
    		"minecraft:green_stained_glass_pane":"true",
    		"minecraft:polished_blackstone_pressure_plate":"true",
    		"minecraft:polished_blackstone_brick_wall":"true",
    		"minecraft:potted_allium":"true",
    		"minecraft:piston":"true",
    		"minecraft:purple_bed":"true",
    		"minecraft:tube_coral_block":"true",
    		"minecraft:spruce_trapdoor":"true",
    		"minecraft:magenta_shulker_box":"true",
    		"minecraft:iron_ore":"true",
    		"minecraft:smooth_sandstone_stairs":"true",
    		"minecraft:exposed_copper":"true",
    		"minecraft:gilded_blackstone":"true",
    		"minecraft:netherrack":"true",
    		"minecraft:nether_brick_slab":"true",
    		"minecraft:lime_wall_banner":"true",
    		"minecraft:yellow_shulker_box":"true",
    		"minecraft:gray_stained_glass_pane":"true",
    		"minecraft:crimson_slab":"true",
    		"minecraft:purple_carpet":"true",
    		"minecraft:blue_concrete_powder":"true",
    		"minecraft:furnace":"true",
    		"minecraft:potted_fern":"true",
    		"minecraft:bee_nest":"true",
    		"minecraft:smithing_table":"true",
    		"minecraft:iron_trapdoor":"true",
    		"minecraft:grindstone":"true",
    		"minecraft:mangrove_fence_gate":"true",
    		"minecraft:lime_wool":"true",
    		"minecraft:white_stained_glass_pane":"true",
    		"minecraft:candle":"true",
    		"minecraft:bricks":"true",
    		"minecraft:brewing_stand":"true",
    		"minecraft:stripped_spruce_wood":"true",
    		"minecraft:red_sandstone_slab":"true",
    		"minecraft:spruce_fence":"true",
    		"mercmod:podzol_slab":"true",
    		"minecraft:bamboo_wall_hanging_sign":"true",
    		"minecraft:waxed_exposed_cut_copper":"true",
    		"minecraft:smooth_red_sandstone":"true",
    		"minecraft:bamboo_fence_gate":"true",
    		"minecraft:pink_stained_glass_pane":"true",
    		"minecraft:stripped_bamboo_block":"true",
    		"minecraft:cracked_polished_blackstone_bricks":"true",
    		"minecraft:jungle_planks":"true",
    		"minecraft:chain":"true",
    		"minecraft:dead_tube_coral_wall_fan":"true",
    		"minecraft:dead_tube_coral_fan":"true",
    		"minecraft:rail":"true",
    		"minecraft:jungle_stairs":"true",
    		"minecraft:cobbled_deepslate_wall":"true",
    		"minecraft:purple_shulker_box":"true",
    		"minecraft:end_gateway":"true",
    		"minecraft:prismarine_stairs":"true",
    		"minecraft:zombie_wall_head":"true",
    		"minecraft:cherry_wood":"true",
    		"minecraft:sculk_vein":"true",
    		"minecraft:vine":"true",
    		"minecraft:red_mushroom_block":"true",
    		"mercmod:steel_ladder":"true",
    		"minecraft:pink_tulip":"true",
    		"minecraft:flowering_azalea":"true",
    		"minecraft:sweet_berry_bush":"true",
    		"minecraft:light_blue_shulker_box":"true",
    		"minecraft:powder_snow_cauldron":"true",
    		"minecraft:light_gray_candle_cake":"true",
    		"minecraft:potted_birch_sapling":"true",
    		"minecraft:weathered_cut_copper":"true",
    		"minecraft:trapped_chest":"true",
    		"minecraft:pink_bed":"true",
    		"minecraft:dropper":"true",
    		"minecraft:spruce_log":"true",
    		"minecraft:chest":"true",
    		"minecraft:red_nether_brick_slab":"true",
    		"minecraft:mud_brick_wall":"true",
    		"minecraft:cauldron":"true",
    		"minecraft:infested_stone_bricks":"true",
    		"minecraft:chiseled_sandstone":"true",
    		"minecraft:polished_granite":"true",
    		"minecraft:dispenser":"true",
    		"minecraft:potted_blue_orchid":"true",
    		"minecraft:polished_blackstone":"true",
    		"minecraft:pink_candle_cake":"true",
    		"minecraft:jungle_sign":"true",
    		"minecraft:light_gray_concrete":"true",
    		"minecraft:acacia_sapling":"true",
    		"minecraft:infested_cobblestone":"true",
    		"minecraft:red_banner":"true",
    		"minecraft:waxed_weathered_chiseled_copper":"true",
    		"minecraft:tube_coral_wall_fan":"true",
    		"minecraft:deepslate_redstone_ore":"true",
    		"minecraft:warped_fence_gate":"true",
    		"minecraft:warped_sign":"true",
    		"minecraft:brick_stairs":"true",
    		"minecraft:granite_slab":"true",
    		"minecraft:wet_sponge":"true",
    		"minecraft:cracked_stone_bricks":"true",
    		"minecraft:yellow_carpet":"true",
    		"minecraft:warped_stairs":"true",
    		"minecraft:azalea_leaves":"true",
    		"minecraft:warped_trapdoor":"true",
    		"minecraft:copper_bulb":"true",
    		"minecraft:heavy_weighted_pressure_plate":"true",
    		"minecraft:redstone_block":"true",
    		"minecraft:dead_horn_coral_block":"true",
    		"minecraft:spruce_wall_hanging_sign":"true",
    		"minecraft:waxed_weathered_copper_door":"true",
    		"minecraft:yellow_stained_glass":"true",
    		"minecraft:polished_granite_slab":"true",
    		"minecraft:lime_candle_cake":"true",
    		"minecraft:cracked_deepslate_bricks":"true",
    		"minecraft:deepslate_lapis_ore":"true",
    		"minecraft:red_stained_glass_pane":"true",
    		"mercmod:iron_toilet":"true",
    		"minecraft:rose_bush":"true",
    		"minecraft:sponge":"true",
    		"minecraft:warped_wall_sign":"true",
    		"mercmod:prismarine_bricks_pipe":"true",
    		"mercmod:chiseled_nether_bricks_pipe":"true",
    		"minecraft:crimson_button":"true",
    		"minecraft:warped_hanging_sign":"true",
    		"minecraft:prismarine_slab":"true",
    		"minecraft:blue_candle":"true",
    		"mercmod:deepslate_bricks_pipe":"true",
    		"minecraft:jungle_hanging_sign":"true",
    		"minecraft:potted_cherry_sapling":"true",
    		"minecraft:cyan_stained_glass_pane":"true",
    		"mercmod:cracked_nether_bricks_pipe":"true",
    		"minecraft:red_mushroom":"true",
    		"minecraft:spruce_planks":"true",
    		"minecraft:gray_stained_glass":"true",
    		"minecraft:repeater":"true",
    		"minecraft:andesite":"true",
    		"minecraft:magenta_terracotta":"true",
    		"minecraft:birch_planks":"true",
    		"minecraft:crimson_hyphae":"true",
    		"minecraft:potted_lily_of_the_valley":"true",
    		"minecraft:gray_glazed_terracotta":"true",
    		"minecraft:horn_coral_block":"true",
    		"minecraft:copper_trapdoor":"true",
    		"minecraft:spruce_pressure_plate":"true",
    		"minecraft:oxidized_copper_grate":"true",
    		"minecraft:raw_iron_block":"true",
    		"minecraft:potted_white_tulip":"true",
    		"minecraft:dandelion":"true",
    		"minecraft:mossy_cobblestone_slab":"true",
    		"mercmod:cracked_deepslate_bricks_pipe":"true",
    		"minecraft:oxeye_daisy":"true",
    		"minecraft:crying_obsidian":"true",
    		"minecraft:shulker_box":"true",
    		"minecraft:deepslate_brick_wall":"true",
    		"minecraft:brown_concrete":"true",
    		"minecraft:light_blue_banner":"true",
    		"minecraft:cyan_concrete":"true",
    		"minecraft:stone_pressure_plate":"true",
    		"minecraft:wither_rose":"true",
    		"minecraft:dripstone_block":"true",
    		"minecraft:dark_oak_wood":"true",
    		"minecraft:waxed_exposed_copper_grate":"true",
    		"minecraft:prismarine_brick_stairs":"true",
    		"minecraft:raw_gold_block":"true",
    		"minecraft:waxed_oxidized_copper_door":"true",
    		"minecraft:lime_concrete":"true",
    		"minecraft:cyan_concrete_powder":"true",
    		"minecraft:orange_stained_glass":"true",
    		"minecraft:structure_void":"true",
    		"minecraft:stonecutter":"true",
    		"minecraft:cyan_candle_cake":"true",
    		"minecraft:light_gray_terracotta":"true",
    		"minecraft:green_candle":"true",
    		"minecraft:dark_oak_wall_sign":"true",
    		"minecraft:smooth_red_sandstone_slab":"true",
    		"minecraft:mangrove_planks":"true",
    		"minecraft:granite":"true",
    		"minecraft:tripwire":"true",
    		"minecraft:potted_poppy":"true",
    		"minecraft:waxed_cut_copper":"true",
    		"minecraft:cobblestone_wall":"true",
    		"minecraft:white_candle":"true",
    		"minecraft:polished_diorite":"true",
    		"minecraft:carrots":"true",
    		"minecraft:orange_concrete_powder":"true",
    		"minecraft:waxed_copper_trapdoor":"true",
    		"minecraft:white_concrete":"true",
    		"minecraft:green_wall_banner":"true",
    		"minecraft:chiseled_polished_blackstone":"true",
    		"mercmod:chiseled_stone_bricks_pipe":"true",
    		"minecraft:mushroom_stem":"true",
    		"minecraft:nether_brick_stairs":"true",
    		"minecraft:light_blue_wall_banner":"true",
    		"minecraft:hay_block":"true",
    		"minecraft:purpur_pillar":"true",
    		"minecraft:cherry_door":"true",
    		"minecraft:wheat":"true",
    		"minecraft:cherry_fence_gate":"true",
    		"minecraft:dark_oak_fence":"true",
    		"minecraft:verdant_froglight":"true",
    		"minecraft:mossy_cobblestone_stairs":"true",
    		"minecraft:dead_brain_coral_fan":"true",
    		"minecraft:stripped_jungle_log":"true",
    		"minecraft:jukebox":"true",
    		"minecraft:potted_bamboo":"true",
    		"minecraft:orange_tulip":"true",
    		"minecraft:ice":"true",
    		"minecraft:snow_block":"true",
    		"minecraft:magenta_wall_banner":"true",
    		"minecraft:tuff_bricks":"true",
    		"minecraft:muddy_mangrove_roots":"true",
    		"minecraft:crimson_fence":"true",
    		"minecraft:blue_bed":"true",
    		"minecraft:infested_cracked_stone_bricks":"true",
    		"minecraft:red_wool":"true",
    		"minecraft:birch_fence_gate":"true",
    		"minecraft:crimson_planks":"true",
    		"minecraft:pumpkin_stem":"true",
    		"minecraft:potted_torchflower":"true",
    		"minecraft:fire_coral_wall_fan":"true",
    		"minecraft:blue_concrete":"true",
    		"minecraft:horn_coral_fan":"true",
    		"minecraft:structure_block":"true",
    		"minecraft:spore_blossom":"true",
    		"minecraft:budding_amethyst":"true",
    		"minecraft:oxidized_copper":"true",
    		"minecraft:nether_quartz_ore":"true",
    		"minecraft:tall_seagrass":"true",
    		"minecraft:lime_terracotta":"true",
    		"minecraft:acacia_trapdoor":"true",
    		"minecraft:magenta_stained_glass_pane":"true",
    		"minecraft:brown_glazed_terracotta":"true",
    		"minecraft:nether_gold_ore":"true",
    		"minecraft:bamboo_wall_sign":"true",
    		"minecraft:mossy_stone_brick_wall":"true",
    		"minecraft:brown_wool":"true",
    		"minecraft:lodestone":"true",
    		"minecraft:yellow_concrete_powder":"true",
    		"minecraft:quartz_pillar":"true",
    		"minecraft:waxed_oxidized_chiseled_copper":"true",
    		"minecraft:potted_warped_fungus":"true",
    		"minecraft:chiseled_bookshelf":"true",
    		"minecraft:acacia_stairs":"true",
    		"minecraft:target":"true",
    		"minecraft:jungle_wood":"true",
    		"minecraft:spruce_wood":"true",
    		"minecraft:deepslate_diamond_ore":"true",
    		"minecraft:cyan_wall_banner":"true",
    		"minecraft:magenta_bed":"true",
    		"minecraft:exposed_copper_grate":"true",
    		"minecraft:soul_lantern":"true",
    		"minecraft:nether_portal":"true",
    		"minecraft:bamboo_sign":"true",
    		"minecraft:pitcher_crop":"true",
    		"minecraft:honey_block":"true",
    		"minecraft:bubble_column":"true",
    		"minecraft:tuff_brick_stairs":"true",
    		"minecraft:gray_wool":"true",
    		"minecraft:cracked_nether_bricks":"true",
    		"minecraft:dead_tube_coral_block":"true",
    		"minecraft:deepslate_brick_stairs":"true",
    		"mercmod:glass_bottle_block":"true",
    		"minecraft:nether_bricks":"true",
    		"minecraft:oak_wood":"true",
    		"minecraft:polished_blackstone_stairs":"true",
    		"minecraft:deepslate_coal_ore":"true",
    		"minecraft:blue_terracotta":"true",
    		"minecraft:green_bed":"true",
    		"minecraft:redstone_wire":"true",
    		"minecraft:magenta_glazed_terracotta":"true",
    		"minecraft:stone_button":"true",
    		"minecraft:diorite_slab":"true",
    		"minecraft:brown_banner":"true",
    		"minecraft:red_candle":"true",
    		"minecraft:mangrove_log":"true",
    		"minecraft:nether_sprouts":"true",
    		"minecraft:gold_block":"true",
    		"minecraft:yellow_banner":"true",
    		"minecraft:amethyst_cluster":"true",
    		"minecraft:waxed_weathered_cut_copper_stairs":"true",
    		"minecraft:detector_rail":"true",
    		"minecraft:packed_mud":"true",
    		"minecraft:deepslate_tile_slab":"true",
    		"minecraft:waxed_weathered_copper_grate":"true",
    		"minecraft:birch_leaves":"true",
    		"minecraft:purple_banner":"true",
    		"minecraft:cocoa":"true",
    		"mercmod:structure_maletin":"true",
    		"minecraft:cave_air":"true",
    		"minecraft:acacia_planks":"true",
    		"minecraft:bone_block":"true",
    		"minecraft:black_stained_glass":"true",
    		"minecraft:pink_glazed_terracotta":"true",
    		"minecraft:cobbled_deepslate":"true",
    		"minecraft:yellow_stained_glass_pane":"true",
    		"minecraft:red_glazed_terracotta":"true",
    		"minecraft:blackstone":"true",
    		"minecraft:mangrove_propagule":"true",
    		"minecraft:mangrove_hanging_sign":"true",
    		"minecraft:hopper":"true",
    		"minecraft:waxed_cut_copper_slab":"true",
    		"minecraft:fern":"true",
    		"minecraft:orange_carpet":"true",
    		"minecraft:green_glazed_terracotta":"true",
    		"minecraft:orange_concrete":"true",
    		"minecraft:mossy_stone_brick_slab":"true",
    		"minecraft:cut_copper_slab":"true",
    		"minecraft:chiseled_nether_bricks":"true",
    		"minecraft:black_bed":"true",
    		"minecraft:brain_coral":"true",
    		"minecraft:redstone_lamp":"true",
    		"minecraft:dark_oak_sign":"true",
    		"minecraft:quartz_stairs":"true",
    		"minecraft:oak_wall_hanging_sign":"true",
    		"minecraft:blue_orchid":"true",
    		"minecraft:chorus_plant":"true",
    		"minecraft:oak_leaves":"true",
    		"minecraft:stone_brick_slab":"true",
    		"minecraft:dragon_egg":"true",
    		"minecraft:red_concrete":"true",
    		"minecraft:brown_wall_banner":"true",
    		"minecraft:potted_azalea_bush":"true",
    		"minecraft:bamboo_hanging_sign":"true",
    		"minecraft:skeleton_wall_skull":"true",
    		"minecraft:dark_oak_pressure_plate":"true",
    		"minecraft:weathered_copper_bulb":"true",
    		"mercmod:briefcase":"true",
    		"minecraft:pink_banner":"true",
    		"minecraft:cyan_shulker_box":"true",
    		"minecraft:stripped_acacia_wood":"true",
    		"minecraft:weathered_chiseled_copper":"true",
    		"minecraft:spruce_fence_gate":"true",
    		"mercmod:gravel_slab":"true",
    		"minecraft:potted_jungle_sapling":"true",
    		"minecraft:cherry_leaves":"true",
    		"minecraft:blackstone_slab":"true",
    		"minecraft:tuff_slab":"true",
    		"minecraft:spruce_stairs":"true",
    		"minecraft:sculk_shrieker":"true",
    		"minecraft:mangrove_slab":"true",
    		"minecraft:magenta_candle":"true",
    		"minecraft:nether_wart":"true",
    		"minecraft:soul_sand":"true",
    		"minecraft:light_blue_concrete_powder":"true",
    		"minecraft:dead_fire_coral":"true",
    		"minecraft:cornflower":"true",
    		"minecraft:deepslate_gold_ore":"true",
    		"minecraft:nether_wart_block":"true",
    		"minecraft:green_wool":"true",
    		"minecraft:lime_glazed_terracotta":"true",
    		"minecraft:deepslate_tile_wall":"true",
    		"minecraft:black_banner":"true",
    		"minecraft:white_wall_banner":"true",
    		"mercmod:steel_block":"true",
    		"mercmod:mredstone_wire":"true",
    		"minecraft:birch_button":"true",
    		"minecraft:cyan_banner":"true",
    		"minecraft:jungle_wall_sign":"true",
    		"minecraft:waxed_exposed_copper":"true",
    		"minecraft:acacia_sign":"true",
    		"minecraft:polished_tuff_stairs":"true",
    		"minecraft:cherry_hanging_sign":"true",
    		"mercmod:dirt_slab":"true",
    		"minecraft:warped_door":"true",
    		"minecraft:cherry_sapling":"true",
    		"minecraft:purpur_block":"true",
    		"minecraft:deepslate_bricks":"true",
    		"minecraft:oxidized_cut_copper":"true",
    		"minecraft:mangrove_wall_hanging_sign":"true",
    		"minecraft:blue_banner":"true",
    		"minecraft:infested_stone":"true",
    		"minecraft:stripped_birch_log":"true",
    		"minecraft:torch":"true",
    		"minecraft:crimson_stem":"true",
    		"minecraft:blue_wool":"true",
    		"minecraft:andesite_stairs":"true",
    		"mercmod:cobblestone_toilet":"true",
    		"minecraft:melon_stem":"true",
    		"minecraft:fire_coral_fan":"true",
    		"minecraft:dead_horn_coral":"true",
    		"minecraft:oxidized_copper_door":"true",
    		"minecraft:wither_skeleton_wall_skull":"true",
    		"minecraft:coal_block":"true",
    		"minecraft:exposed_copper_door":"true",
    		"minecraft:yellow_concrete":"true",
    		"minecraft:mangrove_stairs":"true",
    		"minecraft:packed_ice":"true",
    		"minecraft:potted_oak_sapling":"true",
    		"minecraft:red_terracotta":"true",
    		"minecraft:stripped_warped_hyphae":"true",
    		"minecraft:stripped_oak_wood":"true",
    		"minecraft:emerald_block":"true",
    		"minecraft:birch_slab":"true",
    		"minecraft:smooth_sandstone":"true",
    		"minecraft:stripped_cherry_wood":"true",
    		"minecraft:iron_bars":"true",
    		"minecraft:raw_copper_block":"true",
    		"minecraft:mycelium":"true",
    		"minecraft:bamboo":"true",
    		"minecraft:oak_sign":"true",
    		"minecraft:gray_shulker_box":"true",
    		"minecraft:potted_pink_tulip":"true",
    		"minecraft:gray_carpet":"true",
    		"minecraft:dead_bubble_coral_wall_fan":"true",
    		"minecraft:sugar_cane":"true",
    		"minecraft:medium_amethyst_bud":"true",
    		"minecraft:twisting_vines_plant":"true",
    		"minecraft:lime_candle":"true",
    		"minecraft:brown_shulker_box":"true",
    		"minecraft:red_nether_brick_wall":"true",
    		"minecraft:oak_fence":"true",
    		"minecraft:bamboo_stairs":"true",
    		"minecraft:dark_oak_planks":"true",
    		"minecraft:deepslate":"true",
    		"minecraft:potted_acacia_sapling":"true",
    		"minecraft:rooted_dirt":"true",
    		"minecraft:tall_grass":"true",
    		"minecraft:copper_ore":"true",
    		"mercmod:quartz_bricks_pipe":"true",
    		"minecraft:mangrove_trapdoor":"true",
    		"minecraft:sniffer_egg":"true",
    		"minecraft:stripped_mangrove_wood":"true",
    		"minecraft:emerald_ore":"true",
    		"minecraft:dead_bubble_coral_block":"true",
    		"minecraft:cobbled_deepslate_slab":"true"},				
    			

     

    have like 800 blocks of mi own this code is just picking like random 60's

    dont know if is a bug or this definitively change coze in 1.19this works great 

    #################

    well i need a new way to make a list of all the loaded blocks whit names for 1.20.4 



    thanks for your readings 

     

     

  4. i recheck the kapenjoe tutorial from another stance and actually manage to make custom trades for the villagers and the trader 

    Spoiler

    				
    			//########## ########## ########## ##########
    		    //########## ########## ########## ##########
    		    //########## ########## ########## ##########
    		    //########## ########## ########## ##########				
    			    @SubscribeEvent
    		    public static void addCustomTrades(VillagerTradesEvent event) {
    		        if (event.getType() == VillagerProfession.FLETCHER) {
    		            System.out.println("\n\n### VillagerProfession.FLETCHER \n\n");
    		            Int2ObjectMap<List<VillagerTrades.ItemListing>> trades = event.getTrades();				
    			            int villagerLevel = 1;
    		            trades.get(villagerLevel).add((trader, rand) -> new MerchantOffer(
    		                    new ItemStack(Items.EMERALD, 1), //Costo en esmeraldas
    		                    new ItemStack(ItemInit.ARROW_STEEL.get(), 12) //producto en venta
    		                    , 16, 3, 0.03F)
    		                    //stock de articulos, villager experienece, price multiplier
    		            );				
    			            villagerLevel = 2;
    		            trades.get(villagerLevel).add((trader, rand) -> new MerchantOffer(
    		                    new ItemStack(Items.EMERALD, 4), //Costo en esmeraldas
    		                    new ItemStack(ItemInit.BOW_CARBON.get(), 1) //producto en venta
    		                    , 16, 3, 0.05F)
    		                    //stock de articulos, villager experienece, price multiplier
    		            );				
    			            villagerLevel = 3;
    		            trades.get(villagerLevel).add((trader, rand) -> new MerchantOffer(
    		                    new ItemStack(Items.EMERALD, 6), //Costo en esmeraldas
    		                    new ItemStack(ItemInit.CROSSBOW_CARBON.get(), 1) //producto en venta
    		                    , 16, 3, 0.05F)
    		                    //stock de articulos, villager experienece, price multiplier
    		            );
    		        }				
    			        if (event.getType() == VillagerProfession.TOOLSMITH) {
    		            System.out.println("\n\n### VillagerProfession.TOOLSMITH \n\n");
    		            Int2ObjectMap<List<VillagerTrades.ItemListing>> trades = event.getTrades();				
    			            int villagerLevel = 1;
    		            trades.get(villagerLevel).add((trader, rand) -> new MerchantOffer(
    		                    new ItemStack(Items.CHARCOAL, 16),
    		                    new ItemStack(Items.EMERALD, 1),
    		                    16, 100, 0.02F)
    		            );				
    			            villagerLevel = 1;
    		            trades.get(villagerLevel).add((trader, rand) -> new MerchantOffer(
    		                    new ItemStack(Items.EMERALD, 1),
    		                    new ItemStack(Items.RAW_IRON, 6),
    		                    new ItemStack(ItemInit.INGOT_STEEL.get(), 6),
    		                    1024, 100, 0.02F)
    		            );				
    			            villagerLevel = 1;
    		            trades.get(villagerLevel).add((trader, rand) -> new MerchantOffer(
    		                    new ItemStack(Items.EMERALD, 1),
    		                    new ItemStack(ItemInit.STICK_TNT.get(), 8),
    		                    1024, 100, 0.02F)
    		            );				
    			            ItemStack stack = new ItemStack(BlockInit.HARDCASE.get().asItem(), 1);
    		            //Nbt_Helper nh = new Nbt_Helper();				
    			
    		            stack.getCapability(bi_c_provider.BIHANDLER).ifPresent(ih -> {
    		                //bi_handler ih = briefcase_blockitem.get_itemhandler(stack);
    		                ih.LootTable =  "DrillSet";
    		                ih.save();
    		                ih.print();
    		            });				
    			
    		            villagerLevel = 1;
    		            trades.get(villagerLevel).add((trader, rand) -> new MerchantOffer(
    		                    new ItemStack(Items.EMERALD, 48), //Costo en esmeraldas
    		                    stack //producto en venta
    		                    , 16, 100, 0.05F)
    		            ); //stock de articulos, ????, exp
    		        }				
    			    }				
    			    //########## ########## ########## ##########
    		    @SubscribeEvent
    		    public static void addCustomWandererTrades(WandererTradesEvent event) {				
    			
    		        List<VillagerTrades.ItemListing> generic = event.getGenericTrades();				
    			        List<VillagerTrades.ItemListing> rare = event.getRareTrades();				
    			        System.out.println("\n\n### addCustomWandererTrades( generic " + generic.size() + ")");
    		        System.out.println("\n\n### addCustomWandererTrades( rare    " + rare.size() + ")");				
    			        generic.clear();				
    			        generic.add((trader, rand) -> new MerchantOffer(
    		                new ItemStack(Items.EMERALD, 1),
    		                new ItemStack(BlockInit.POTTED_GREEN_HERB.get().asItem(), 1),
    		                12, 10, 0.02F)
    		                //stock de articulos, villager experienece, price multiplier
    		        );				
    			        generic.add((trader, rand) -> new MerchantOffer(
    		                new ItemStack(Items.EMERALD, 2),
    		                new ItemStack(BlockInit.POTTED_RED_HERB.get().asItem(), 1),
    		                4, 10, 0.02F)
    		        );				
    			        generic.add((trader, rand) -> new MerchantOffer(
    		                new ItemStack(Items.EMERALD, 6),
    		                new ItemStack(BlockInit.POTTED_BLUE_HERB.get().asItem(), 1),
    		                2, 10, 0.02F)
    		        );				
    			    }				
    			

     

    seems like the wanderer has 64 normal trades and 6 especial 

    ### addCustomWandererTrades( generic 64)

    ### addCustomWandererTrades( rare    6)

     

    ##################################################
    the problem is that the 3 custome trades i add rarely gets loaded in the wanderer offered item list but are there  if i delete the list whit generic.clear() before adding mi things then only mi things get loaded an a ice cube i dont know where is coming 

    2024-04-30-20-00-50.png

     

     

            generic.add((trader, rand) -> new MerchantOffer(
                    new ItemStack(Items.EMERALD, 6),
                    new ItemStack(BlockInit.POTTED_BLUE_HERB.get().asItem(), 2),
                    2, 10, 0.02F)
            );

    it dont seems to be a weight variable to increase the possibility of mi custom trades

    #########################

    what i want is  to increase the chance of mi custome trades to be vissible 

    how can i do that....

     

     

     

     

     

  5. 2024-04-19-18-21-51.png

    This is a costume block whit the shape of a zombie is not a full block its flamable
    when ignited  the flames just burn on top or by a aside 
    that dint seems right 


    	// ########## ########## ########## ##########
    @Override
    public int getFlammability(BlockState state, BlockGetter level, BlockPos pos, Direction direction)
    {
        return 300;//((FireBlock)Blocks.FIRE).getBurnOdds(state); //300
    }
    	

    it just seems like check to know if a fire block could despawn mi block 

     

    ###########

    i want mi block to look more like this 

    2024-04-19-18-30-10.png

     

     

    what could i use 

    i was thinking on something like onNeigbourgChange() check for nearby fire or lava blocks  
    then using the falling block entity spawn a fire block in the same position than mi dead body block 

    thanks for your readings 

     

     

     

     

     

     

  6. thast right 
    kapenjoe says something about not going up from 1.20.2 for some package issue 

    i have the mine working messing around until the code start working still seems like you have some more complex than the mine 

     

    //in mi main class 

    	//########## ########## ########## ########## ########## ########## ########## ##########
    private void commonSetup(final FMLCommonSetupEvent event) {
    ModMessage.register();
    }
    	

     

    ModMessage.class

    Spoiler

    				
    			package mercmod.networking;				
    			import mercmod.mercmod;
    		import net.minecraft.resources.ResourceLocation;
    		import net.minecraft.server.level.ServerPlayer;
    		import net.minecraftforge.network.ChannelBuilder;
    		import net.minecraftforge.network.NetworkDirection;
    		import net.minecraftforge.network.PacketDistributor;
    		import net.minecraftforge.network.SimpleChannel;				
    			public class ModMessage {				
    			    private static int packetId = 0;				
    			    private static int id() {
    		        return packetId++;
    		    }				
    			    public static final SimpleChannel INSTANCE = ChannelBuilder.named(
    		                    new ResourceLocation(mercmod.MOD_ID, "main"))
    		            .clientAcceptedVersions((status, versions) -> true)
    		            .serverAcceptedVersions((status, versions) -> true)
    		            .networkProtocolVersion(1)
    		            .simpleChannel();				
    			    public static void register() {				
    			        INSTANCE.messageBuilder(toggle_crawl.class, id(), NetworkDirection.PLAY_TO_SERVER)
    		                .decoder(toggle_crawl::new)
    		                .encoder(toggle_crawl::toBytes)
    		                .consumerMainThread(toggle_crawl::handle)
    		                .add();				
    			        INSTANCE.messageBuilder(set_crawl_locally.class, id(), NetworkDirection.PLAY_TO_CLIENT)
    		                .decoder(set_crawl_locally::new)
    		                .encoder(set_crawl_locally::toBytes)
    		                .consumerMainThread(set_crawl_locally::handle)
    		                .add();				
    			        INSTANCE.messageBuilder(send_display_mensage_locally.class, id(), NetworkDirection.PLAY_TO_CLIENT)
    		                .decoder(send_display_mensage_locally::new)
    		                .encoder(send_display_mensage_locally::toBytes)
    		                .consumerMainThread(send_display_mensage_locally::handle)
    		                .add();				
    			    }				
    			    public static void sendToServer(Object message) {
    		        INSTANCE.send(message, PacketDistributor.SERVER.noArg());
    		    }				
    			    public static void sendToPlayer(Object message, ServerPlayer pe) {//
    		        INSTANCE.send(message, PacketDistributor.PLAYER.with(pe));
    		    }				
    			    public static void sendToAllClients(Object message) {				
    			        INSTANCE.send(message, PacketDistributor.ALL.noArg());
    		    }				
    			}
    		 				
    			

     

     

     

  7. i has that 
    anyway i test it at the beginning and the end of the function just to be sure 

    	@Override
    public void load( CompoundTag nbt ){
    super.load( nbt );
    
    Level warudo = this.getLevel();
    itemhandler.deserializeNBT( nbt.getCompound("itemhandler") );
    this.progress = nbt.getInt("progress" );
    
    System.out.println("load(nbt)");
    System.out.println(NbtUtils.prettyPrint(nbt));
    	//super.load( nbt );
    }
    	

    but it does the same 

     

    looking at it a second time
    it seems like it only store the nbt data when the entity is created and set into the world 
    then never update values

     

  8.  hola thanks for answering 

    i set some system outs to test and see whats going on 

    	    @Override
        protected void saveAdditional( CompoundTag nbt ){
            
            nbt.put("itemhandler", itemhandler.serializeNBT() );
            nbt.putInt("progress", this.progress );
    	        System.out.println("saveAdditional(nbt)");        
            System.out.println(NbtUtils.prettyPrint(nbt)); //<-- this is whats getting saved
            super.saveAdditional( nbt );
        }
        @Override
        public void load( CompoundTag nbt ){
    	        itemhandler.deserializeNBT( nbt.getCompound("itemhandler") );
            this.progress = nbt.getInt("progress" );
    	        System.out.println(NbtUtils.prettyPrint(nbt)); //<-- this is whats minecraft is giving back to the entity 
            System.out.println("load(nbt)");
            super.load( nbt );
        }
    	

     

    This dead adventurer body  has two parts a block and a block Item  both has their own item-handlers and their own menus all of that seems fine 

    Testing remarks :
    *when i change some element inside the gui  it triggers the saveAdditional(nbt) system out and shows a pretty print of the data being saved 

    *when the world map loads it triggers the load(nbt) system out and shows a pretty print of the data minecraft is giving to this Block Entity

    For the testing i gonna set mi BlockEntityBodyBlock, save something in it, close minecraft, fireup the game again and check if the items remain 

     

     

    ################

    first try set the block entity (dead adventurer body like shaped) and left only a weath seed  in the slot 10
    the console says its all right 

    Spoiler
    				
    			saveAdditional(nbt)
    		{ "itemhandler": {
    		    "Items"     : list<TAG_Compound>[3] [
    		      { "Count": 1b,
    		        "Slot" : 10,
    		        "id"   : "minecraft:wheat_seeds"
    		      }
    		    ],
    		    "action"    : 0b,
    		    "limit"     : 100s,
    		    "start_time": 0L,
    		    "time"      : 0s
    		  },
    		  "progress"   : 0
    		}				
    			

     

    close minecraft, launch it again
    i see the system out whit the data returned to the entity and its look good theres is only a weed seed 

    Spoiler
    				
    			    load(nbt)
    		{ "id"         : "mercmod:blockentitymobblock",
    		  "itemhandler": {
    		    "Items"     : list<TAG_Compound>[1] [
    		      { "Count": 1b,
    		        "Slot" : 10,
    		        "id"   : "minecraft:wheat_seeds"
    		      }
    		    ],
    		    "action"    : 0b,
    		    "limit"     : 100s,
    		    "start_time": 0L,
    		    "time"      : 0s
    		  },
    		  "keepPacked" : 0b,
    		  "progress"   : 0,
    		  "x"          : -40,
    		  "y"          : 72,
    		  "z"          : 38
    		}				
    			

    ################

    Second try,
    now i gonna change the seed for two arrows 

    the console says its all right the two arrows are being saved 
     

    Spoiler
    				
    			saveAdditional(nbt)
    		{ "itemhandler": {
    		    "Items"     : list<TAG_Compound>[3] [
    		      { "Count": 1b,
    		        "Slot" : 9,
    		        "id"   : "minecraft:arrow"
    		      },
    		      { "Count": 1b,
    		        "Slot" : 11,
    		        "id"   : "minecraft:arrow"
    		      }
    		    ],
    		    "action"    : 0b,
    		    "limit"     : 100s,
    		    "start_time": 0L,
    		    "time"      : 0s
    		  },
    		  "progress"   : 0
    		}				
    			

    #########

    Now close and run again

    bam Error  minecraft returns the original data whit only a wheat seed
    the two arrows has been loss

    Spoiler
    				
    	load(nbt)
    		{ "id"         : "mercmod:blockentitymobblock",
    		  "itemhandler": {
    		    "Items"     : list<TAG_Compound>[1] [
    		      { "Count": 1b,
    		        "Slot" : 10,
    		        "id"   : "minecraft:wheat_seeds"
    		      }
    		    ],
    		    "action"    : 0b,
    		    "limit"     : 100s,
    		    "start_time": 0L,
    		    "time"      : 0s
    		  },

     

     

    ##########

    try again now i gonna put 3 wheat seeds

    Console system out says it gets it and is saving the data

    Spoiler
    				
    			saveAdditional(nbt)
    		{ "itemhandler": {
    		    "Items"     : list<TAG_Compound>[3] [
    		      { "Count": 1b,
    		        "Slot" : 9,
    		        "id"   : "minecraft:wheat_seeds"
    		      },
    		      { "Count": 1b,
    		        "Slot" : 10,
    		        "id"   : "minecraft:wheat_seeds"
    		      },
    		      { "Count": 1b,
    		        "Slot" : 11,
    		        "id"   : "minecraft:wheat_seeds"
    		      }
    		    ],
    		    "action"    : 0b,
    		    "limit"     : 100s,
    		    "start_time": 0L,
    		    "time"      : 0s
    		  },
    		  "progress"   : 0
    		}				
    			

     

    ##############

    but after close fire again 

    Spoiler
    				
    			load(nbt)
    		{ "id"         : "mercmod:blockentitymobblock",
    		  "itemhandler": {
    		    "Items"     : list<TAG_Compound>[1] [
    		      { "Count": 1b,
    		        "Slot" : 10,
    		        "id"   : "minecraft:wheat_seeds"
    		      }
    		    ],
    		    "action"    : 0b,
    		    "limit"     : 100s,
    		    "start_time": 0L,
    		    "time"      : 0s
    		  },
    		  "keepPacked" : 0b,
    		  "progress"   : 0,
    		  "x"          : -40,
    		  "y"          : 72,
    		  "z"          : 38
    		}				
    			

    wheat seed,  data losed once more time  and it just throw the original  

    #######################################################################################

    sorry for the long post and the crappy video 

    this is the reason why i say its saving the Block Entity data only when it feels like 
    coze its saves data when it feels like 

    ¿ its something wrong whit mi BlockEntity.saveAdditional() 

    if  i keep trying eventually it updates and the data chages 

     

     

    i alredy try to 
    level.removeBlockEntity(pos);

    level.setBlockEntity(pos, bebb);

     

     

    BlockEntityBodyBlock.class

    Spoiler

    				
    			package mercmod.blockentitys;//panel_blockentity				
    			import mercmod.capabity.be_handler;
    		import mercmod.capabity.briefcase_be_handler;
    		import mercmod.menus.MenuBodyBlock;
    		import net.minecraft.core.BlockPos;
    		import net.minecraft.core.Direction;
    		import net.minecraft.nbt.CompoundTag;
    		import net.minecraft.nbt.NbtUtils;
    		import net.minecraft.network.chat.Component;
    		import net.minecraft.world.Containers;
    		import net.minecraft.world.MenuProvider;
    		import net.minecraft.world.SimpleContainer;
    		import net.minecraft.world.entity.player.Inventory;
    		import net.minecraft.world.entity.player.Player;
    		import net.minecraft.world.inventory.AbstractContainerMenu;
    		import net.minecraft.world.inventory.ContainerData;
    		import net.minecraft.world.item.Item;
    		import net.minecraft.world.level.Level;
    		import net.minecraft.world.level.block.entity.BlockEntity;
    		import net.minecraft.world.level.block.state.BlockState;
    		import net.minecraftforge.common.capabilities.Capability;
    		import net.minecraftforge.common.capabilities.ForgeCapabilities;
    		import net.minecraftforge.common.util.LazyOptional;
    		import net.minecraftforge.items.IItemHandler;
    		import net.minecraftforge.items.ItemStackHandler;
    		import org.jetbrains.annotations.NotNull;
    		import org.jetbrains.annotations.Nullable;				
    			public class BlockEntityBodyBlock extends BlockEntity implements MenuProvider
    		{
    		    //https://youtu.be/uV81DhuZ96w?t=687				
    			    protected final ContainerData data;
    		    private int progress = 0;
    		    private int maxprogress = 70;				
    			    private static final int INPUT_SLOT = 0;
    		    private static final int OUTPUT_SLOT = 1;				
    			    public BlockEntityBodyBlock(BlockPos pos, BlockState blkstate) {
    		        super(BlockEntityInit.BLOCKENTITYMOBBLOCK.get() , pos, blkstate);
    		        this.data = new ContainerData() {
    		            @Override
    		            public int get(int pindex) {
    		                return switch(pindex){
    		                    case 0 -> BlockEntityBodyBlock.this.progress;
    		                    case 1 -> BlockEntityBodyBlock.this.maxprogress;
    		                    default -> 0;
    		                };
    		            }				
    			            @Override
    		            public void set(int pindex, int pvalue) {
    		                switch(pindex) {
    		                    case 0 -> BlockEntityBodyBlock.this.progress = pvalue;
    		                    case 1 -> BlockEntityBodyBlock.this.maxprogress = pvalue;
    		                }
    		            }				
    			            @Override
    		            public int getCount() {
    		                return 2;
    		            }
    		        };
    		    }				
    			    @Override
    		    public Component getDisplayName() {
    		        return Component.literal("Dead Body Block");
    		    }				
    			    @Nullable
    		    @Override
    		    public AbstractContainerMenu createMenu(int id, Inventory inventory, Player pe) {
    		        //System.out.println("#BlockEntityClass createMenu");
    		        return new MenuBodyBlock(id, inventory,this, this.data);
    		    }				
    			    private LazyOptional<IItemHandler> lazyitemhandler = LazyOptional.empty();				
    			    //private final ItemStackHandler itemhandler = new ItemStackHandler(14);
    		    private final be_handler itemhandler = new be_handler(this, 14);				
    			    @Override
    		    public @NotNull <T> LazyOptional<T> getCapability(@NotNull Capability<T> cap, @Nullable Direction side){
    		        if(cap == ForgeCapabilities.ITEM_HANDLER){
    		            return lazyitemhandler.cast();
    		        }
    		        return super.getCapability(cap, side);
    		    }				
    			    @Override
    		    public void onLoad(){
    		    super.onLoad();
    		    lazyitemhandler = LazyOptional.of(() -> itemhandler);
    		    }				
    			    @Override
    		    public void invalidateCaps(){
    		        super.invalidateCaps();
    		        lazyitemhandler.invalidate();
    		    }				
    			    public void drops(){
    		        SimpleContainer inventory = new SimpleContainer( itemhandler.getSlots() );
    		        for(int index = 0 ; index < itemhandler.getSlots() ; index ++){
    		            inventory.setItem(index, itemhandler.getStackInSlot(index));
    		        }
    		        Containers.dropContents(this.level, this.worldPosition, inventory);
    		    }				
    			@Override
    		    protected void saveAdditional( CompoundTag nbt ){				
    			        nbt.put("itemhandler", itemhandler.serializeNBT() );
    		        nbt.putInt("progress", this.progress );				
    			        System.out.println("saveAdditional(nbt)");
    		        System.out.println(NbtUtils.prettyPrint(nbt));
    		        super.saveAdditional( nbt );
    		    }
    		    @Override
    		    public void load( CompoundTag nbt ){				
    			        itemhandler.deserializeNBT( nbt.getCompound("itemhandler") );
    		        this.progress = nbt.getInt("progress" );				
    			        System.out.println("load(nbt)");
    		        System.out.println(NbtUtils.prettyPrint(nbt));
    		        super.load( nbt );
    		    }				
    			    //@Override
    		    public void tick(Level pLevel, BlockPos pPos, BlockState pState) {
    		    }				
    			    private boolean canInsertItemIntoOutputSlot(Item item) {
    		        return this.itemhandler.getStackInSlot(OUTPUT_SLOT).isEmpty() || this.itemhandler.getStackInSlot(OUTPUT_SLOT).is(item);
    		    }				
    			    private boolean canInsertAmountIntoOutputSlot(int count) {
    		        return this.itemhandler.getStackInSlot(OUTPUT_SLOT).getCount() + count <= this.itemhandler.getStackInSlot(OUTPUT_SLOT).getMaxStackSize();
    		    }
    		}				
    			 				
    			

     

    BlockEntityInit.class

    Spoiler

    				
    			package mercmod.blockentitys;
    		import mercmod.blocks.BlockInit;
    		import mercmod.mercmod;
    		import net.minecraft.Util;
    		import net.minecraft.resources.ResourceLocation;
    		import net.minecraft.util.datafix.fixes.References;
    		import net.minecraft.world.level.block.entity.BlockEntity;
    		import net.minecraft.world.level.block.entity.BlockEntityType;
    		import net.minecraftforge.eventbus.api.IEventBus;
    		import net.minecraftforge.registries.DeferredRegister;
    		import net.minecraftforge.registries.ForgeRegistries;
    		import net.minecraftforge.registries.RegistryObject;				
    			import java.util.function.BiConsumer;
    		import com.mojang.datafixers.types.Type;
    		public class BlockEntityInit {
    		    public static final DeferredRegister<BlockEntityType<?>> BLOCK_ENTITIES =
    		            DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, mercmod.MOD_ID);				
    			public static final RegistryObject<BlockEntityType<Panel_BlockEntity>> PANEL_BLOCKENTITY =
    		        BLOCK_ENTITIES.register( "panel_blockentity", () ->
    		                BlockEntityType.Builder.of( Panel_BlockEntity::new,
    		                        BlockInit.OAK_LADDER.get() ).build(null)  );				
    			    public static final RegistryObject<BlockEntityType<BlockEntityBriefcase>> BLOCKENTITYBRIEFCASE =
    		            BLOCK_ENTITIES.register( "blockentitybriefcase", () ->
    		                    BlockEntityType.Builder.of( BlockEntityBriefcase::new,
    		                            BlockInit.BRIEFCASE.get() ).build(null)  );				
    			
    		    public static final RegistryObject<BlockEntityType<BlockEntityHardcase>> BLOCKENTITYHARDCASE =
    		            BLOCK_ENTITIES.register( "blockentityhardcase", () ->
    		                    BlockEntityType.Builder.of( BlockEntityHardcase::new,
    		                            BlockInit.HARDCASE.get() ).build( null) );				
    			    public static final RegistryObject<BlockEntityType<BlockEntityBodyBlock>> BLOCKENTITYMOBBLOCK =
    		            BLOCK_ENTITIES.register( "blockentitymobblock", () ->
    		                    BlockEntityType.Builder.of( BlockEntityBodyBlock::new,
    		                            BlockInit.DEAD_BODY.get() ).build( null ) );				
    			    public static void register(IEventBus eventBus) {
    		        BLOCK_ENTITIES.register(eventBus);
    		    }				
    			}				
    			

     

     

    body_blockitem.class

    Spoiler

    				
    			package mercmod.blockitems;				
    			import mercmod.blockentitys.BlockEntityBodyBlock;
    		import mercmod.capabity.bi_c_provider;
    		import mercmod.capabity.bi_handler;
    		import mercmod.menus.MenuBodyBlockItem;
    		import net.minecraft.core.BlockPos;
    		import net.minecraft.nbt.CompoundTag;
    		import net.minecraft.nbt.NbtUtils;
    		import net.minecraft.network.chat.Component;
    		import net.minecraft.world.InteractionHand;
    		import net.minecraft.world.InteractionResult;
    		import net.minecraft.world.InteractionResultHolder;
    		import net.minecraft.world.MenuProvider;
    		import net.minecraft.world.entity.LivingEntity;
    		import net.minecraft.world.entity.player.Inventory;
    		import net.minecraft.world.entity.player.Player;
    		import net.minecraft.world.inventory.AbstractContainerMenu;
    		import net.minecraft.world.item.BlockItem;
    		import net.minecraft.world.item.ItemStack;
    		import net.minecraft.world.item.context.BlockPlaceContext;
    		import net.minecraft.world.item.context.UseOnContext;
    		import net.minecraft.world.level.ClipContext;
    		import net.minecraft.world.level.Level;
    		import net.minecraft.world.level.block.Block;
    		import net.minecraft.world.level.block.entity.BlockEntity;
    		import net.minecraft.world.level.block.state.BlockState;
    		import net.minecraft.world.phys.BlockHitResult;
    		import net.minecraft.world.phys.HitResult;
    		import net.minecraft.world.phys.Vec3;
    		import net.minecraftforge.common.capabilities.ForgeCapabilities;
    		import net.minecraftforge.common.capabilities.ICapabilityProvider;
    		import net.minecraftforge.common.extensions.IForgeServerPlayer;
    		import org.jetbrains.annotations.NotNull;
    		import org.jetbrains.annotations.Nullable;				
    			public class body_blockitem extends BlockItem implements MenuProvider {
    		   public static final String BLOCK_ENTITY_TAG = "BlockEntityTag";
    		   public static final String BLOCK_STATE_TAG = "BlockStateTag";
    		   /** @deprecated */
    		   @Deprecated
    		   private final Block block;				
    			   public body_blockitem(Block blk, Properties properties) {
    		      super(blk, properties);
    		      this.block = blk;
    		   }				
    			   // ########## ########## ########## ##########
    		   @Override
    		   public @NotNull Component getDisplayName()
    		   {
    		      return Component.literal("Body as Item");
    		   }				
    			   // ########## ########## ########## ##########
    		   public int getContainerSize() {
    		      return 14;
    		   }				
    			   // ########## ########## ########## ##########				
    			   public static CompoundTag get_nbt(ItemStack container){
    		      CompoundTag nbt = ( container.hasTag() )? container.getTag() : new CompoundTag() ;
    		      if(!nbt.contains("time")) {
    		         nbt.putLong("tick", 0L);
    		      }
    		      return nbt;
    		   }				
    			   // ########## ########## ########## ##########
    		   public static boolean can_do_it(ItemStack container){
    		      // System.out.print("can_do_it("  );				
    			      CompoundTag nbt = get_nbt(container);
    		      long millis = System.currentTimeMillis();				
    			      if( ( millis - nbt.getLong("time" ) ) > 1000 ){ //only once every second
    		         nbt.putLong("time", millis );
    		         container.setTag(nbt);
    		         //System.out.println("true);"  );
    		         return true;
    		      }
    		      // System.out.println("false);"  );
    		      return false;
    		   }				
    			   // ########## ########## ########## ##########
    		   @Nullable
    		   @Override
    		   public ICapabilityProvider initCapabilities(ItemStack container, @Nullable CompoundTag nbt)
    		   {
    		      return new bi_c_provider(container, 14);
    		   }				
    			   // ########## ########## ########## ##########
    		   public static bi_handler get_itemhandler(ItemStack helditem) {
    		      //bi_handler bh = get_itemhandler(helditem);				
    			      bi_handler bh = ((bi_handler) helditem.getCapability(ForgeCapabilities.ITEM_HANDLER)
    		              .orElseThrow(() -> new RuntimeException("O_O")));
    		      return bh;
    		   }				
    			   // ########## ########## ########## ##########
    		   @Nullable
    		   @Override
    		   public AbstractContainerMenu createMenu(int containerId, @NotNull Inventory inventory, @NotNull Player player)
    		   {
    		      return new MenuBodyBlockItem( containerId, inventory   );
    		   }				
    			   // ########## ########## ########## ##########
    		   //override normal block set process
    		   @Override
    		   public InteractionResult useOn(UseOnContext p_40581_) {
    		      return InteractionResult.PASS;
    		   }				
    			
    		   // ########## ########## ########## ##########
    		   @Override
    		   public InteractionResultHolder<ItemStack> use(Level warudo, Player pe, InteractionHand hand) {
    		      //System.out.println("use()");
    		      ItemStack helditem = pe.getItemInHand(hand);
    		      if(can_do_it(helditem)){
    		         if( !warudo.isClientSide() ) {
    		            if (!pe.isCrouching()) {
    		               open_briefcase(warudo, pe, helditem);//<---
    		            }
    		            if (pe.isCrouching()) {
    		               set_as_block(warudo, pe, hand, helditem);//<---
    		            }
    		         }
    		      }
    		      return InteractionResultHolder.success(helditem);
    		   }				
    			   // ########## ########## ########## ##########
    		   public void open_briefcase(Level warudo, Player pe, ItemStack helditem){
    		      if (helditem.getCapability(ForgeCapabilities.ITEM_HANDLER).isPresent()) {
    		         bi_handler bh = get_itemhandler(helditem);				
    			         IForgeServerPlayer ifpe = (IForgeServerPlayer) pe;
    		         ifpe.openMenu((MenuProvider) this, friendlyByteBuf -> friendlyByteBuf.writeItem(ItemStack.EMPTY));
    		      }
    		   }				
    			
    		   // ########## ########## ########## ##########
    		   @Override
    		   public boolean onEntitySwing(ItemStack helditem, LivingEntity le) {
    		      Level warudo = le.level();				
    			      if(!warudo.isClientSide()){				
    			         CompoundTag nbt = get_nbt(helditem);
    		         System.out.println(NbtUtils.prettyPrint(nbt));				
    			      }				
    			
    		      return true;
    		   }				
    			
    		   // ########## ########## ########## ##########
    		   public BlockPlaceContext getContext(Level warudo, Player pe, float dist, InteractionHand hand, ItemStack helditem){
    		      Vec3 vi = pe.getEyePosition();
    		      Vec3 vo = pe.getLookAngle();//is a delta
    		      //float dist = 6.0F;
    		      Vec3 vh;
    		      vh = new Vec3( (vi.x + (vo.x * dist) ), (vi.y + (vo.y * dist) ), (vi.z + (vo.z * dist) ) );
    		      BlockState clicked_blkstate;
    		      //if( !warudo.isClientSide()  )
    		      {
    		         HitResult hitresult = warudo.clip(
    		                 new ClipContext(vi, vh, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, pe));
    		         if (hitresult.getType() == HitResult.Type.BLOCK) {
    		            BlockPlaceContext context = new BlockPlaceContext(pe, hand, helditem, (BlockHitResult) hitresult);
    		            return context;
    		         }
    		      }
    		      return null;
    		   }				
    			   // ########## ########## ########## ##########
    		   public ItemStack set_as_block(Level warudo, Player pe, InteractionHand hand, ItemStack helditem){
    		      if( !warudo.isClientSide()  ) {// && can_do_it(helditem)				
    			            BlockPlaceContext context = getContext(warudo, pe, 5.0F ,hand, helditem);
    		            BlockState blkstate = this.getBlock().getStateForPlacement(context);//ask the blockstate from the block				
    			            BlockPos pos = context.getClickedPos();				
    			            BlockState clicked_blkstate = warudo.getBlockState(pos);
    		            if ( clicked_blkstate.canBeReplaced()  ) {
    		               warudo.setBlock(pos, blkstate, 2);				
    			               fill_blockentity_whit(warudo, pos, helditem);
    		               helditem.shrink(1);
    		            }
    		         }				
    			      return helditem;
    		   }				
    			
    		   // ########## ########## ########## ##########
    		   //@Override
    		   public void fill_blockentity_whit(Level warudo, BlockPos pos, ItemStack container) {
    		      BlockState blkstate = this.getBlock().defaultBlockState();
    		      BlockEntity blockentity = warudo.getBlockEntity(pos);				
    			      container.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(handleritem -> {
    		         BlockEntityBodyBlock bebb = null;				
    			         if(blockentity instanceof BlockEntityBodyBlock){
    		            bebb = (BlockEntityBodyBlock)blockentity;
    		         }				
    			         if(!(blockentity instanceof BlockEntityBodyBlock)){
    		            warudo.removeBlockEntity(pos);
    		            bebb = new BlockEntityBodyBlock(pos, blkstate);
    		            warudo.setBlockEntity(bebb);
    		         }				
    			         bebb.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(handlerblock -> {
    		            ItemStack cosa = null;
    		            for (int i = 0; i < handlerblock.getSlots(); ++i) {
    		               cosa = handleritem.getStackInSlot(i);
    		               handlerblock.insertItem(i, cosa, false);
    		            }
    		         });
    		      });
    		   }				
    			   // ########## ########## ########## ##########
    		   // ########## ########## ########## ##########
    		}
    		 				
    			

     

     

     

     

     

     

     

     

     

  9. well

    The problem is the data in mi blockentity, its not being saved when i close the game

    i put items on it i retrive items from it all just seems good, the problem cames until i close minecraft then when i reload the word i have an older version of the items saved or just an empty briefcase

     

    normally when you declare an entity or a block entity or an item capability, forge automatically keeps track of changes and save the data in nbt format all of this by itself 
    in this moments i have some items whit capabilities, those work right 
    i have entities , those also works right 

    but all of mi blockentities all of them are storages briefcase and all of them fails, save the data sometimes most of the time don't 

    well i have only like 3 blockentities up now 

     

     



     

  10.  

    im stuck in a problem whit BlockEntities i cannot solve
    so im trying to work around it but in the less complex way possible 

    i think is posible to store data to the minecraft world 

    in older versions people talk about  WordDataSave i dont find anything about it for 1.20.4 

    i find a tutorial for player capability in 1.19 

     

    here is an event 

    	
        //########## ########## ########## ##########
        @SubscribeEvent
        public static void onAttachCapabilitiesPlayer(AttachCapabilitiesEvent<Entity> event) {
            if(event.getObject() instanceof Player) {
                if(!event.getObject().getCapability(PlayerThirstProvider.PLAYER_THIRST).isPresent()) {
                    event.addCapability(new ResourceLocation(mercmod.MOD_ID, "properties"), new PlayerThirstProvider());
                }
            }
        }
    	

     soo i made this 

        //########## ########## ########## ##########
        @SubscribeEvent
        public static void onAttachCapabilitiesLevel(AttachCapabilitiesEvent<Level> event) {

        }

    i think i can do some witchcraft  here  but is many things don't understand 
    to start whit i dont get yet how to recall the saved data from a BlockEntity 

    the handler still in progress the plan is to make a Map to store nbt data using the block coordinates as index

    later store that map as a big nbt 

    Spoiler

    				
    			package mercmod.capabity;				
    			import net.minecraft.core.BlockPos;
    		import net.minecraft.nbt.CompoundTag;
    		import net.minecraft.world.item.ItemStack;
    		import net.minecraft.world.level.Level;
    		import net.minecraft.world.level.block.state.CompoundTag;
    		import net.minecraftforge.common.capabilities.AutoRegisterCapability;
    		import org.checkerframework.checker.units.qual.A;				
    			import java.nio.charset.StandardCharsets;
    		import java.util.*;
    		import java.util.stream.Collectors;				
    			@AutoRegisterCapability
    		public class warudo_handler {				
    			    public Level warudo;
    		    // X Z Y
    		    private Map<Integer, Map<Integer, Map<Integer, CompoundTag>>> map = new HashMap<Integer, Map<Integer, Map<Integer, CompoundTag>>>();
    		    // Z Y
    		    private Map<Integer, Map<Integer, CompoundTag>> X = new HashMap<Integer, Map<Integer, CompoundTag>>();
    		    // Y
    		    private Map<Integer, CompoundTag> Z = new HashMap<Integer, CompoundTag>();    
    		    				
    			    private List<Integer> color = new ArrayList<>();
    		    private List<BlockPos> pos = new ArrayList<>();				
    			
    		    public warudo_handler(Level warudo)
    		    {
    		        //super(9);
    		        this.warudo  = warudo;
    		    }				
    			
    		    // ########## ########## ########## ##########
    		    // sets the blockstate for this blockpos in the blockmap
    		    public boolean setBlock(BlockPos pos, CompoundTag value, int mode) {
    		        return setCompoundTag(pos.getX(), pos.getY(), pos.getZ(), value);
    		    }				
    			    public boolean setCompoundTag(BlockPos pos, CompoundTag value) {
    		        return setCompoundTag(pos.getX(), pos.getY(), pos.getZ(), value);
    		    }				
    			    public boolean setCompoundTag(int bx, int by, int bz, CompoundTag value) {				
    			        X = map.get(bx);				
    			        if (X == null) {
    		            X = new HashMap<Integer, Map<Integer, CompoundTag>>();
    		            map.put(bx, X);
    		        }				
    			        if (X != null) {
    		            Z = X.get(bz);				
    			            if (Z == null) {
    		                Z = new HashMap<Integer, CompoundTag>();
    		                X.put(bz, Z);
    		            }				
    			            if (Z != null) {
    		                Z.put(by, value);				
    			                this.block_list.add(new BlockPos(bx, by, bz));
    		                return true;
    		            }
    		        }				
    			        return false;
    		    }				
    			    // ########## ########## ########## ##########
    		    // return the blockstate if alredy exist in BlockMap
    		    // if not exist reads the CompoundTag from the world
    		    public CompoundTag getCompoundTag(BlockPos pos) {
    		        CompoundTag nbt = getCompoundTag(pos.getX(), pos.getY(), pos.getZ());
    		        return nbt;
    		    }				
    			    public CompoundTag getCompoundTag(int bx, int by, int bz) {
    		        CompoundTag nbt = null;				
    			        X = map.get(bx);				
    			        if (X != null) {
    		            Z = X.get(bz);				
    			            if (Z != null) {
    		                nbt = Z.get(by);				
    			                if (nbt != null) {
    		                    return nbt;
    		                }
    		            }
    		        }				
    			        nbt = this.warudo.getCompoundTag(new BlockPos(bx, by, bz));
    		        return nbt;
    		    }				
    			    // ########## ########## ########## ##########
    		    // return the blockstate if alredy exist in BlockMap
    		    // if not exist in the BlockMap return null
    		    public CompoundTag hasCompoundTag(BlockPos pos) {
    		        CompoundTag nbt = hasCompoundTag(pos.getX(), pos.getY(), pos.getZ());
    		        return nbt;
    		    }				
    			    public CompoundTag hasCompoundTag(int bx, int by, int bz) {
    		        CompoundTag nbt = null;				
    			        X = map.get(bx);				
    			        if (X != null) {
    		            Z = X.get(bz);				
    			            if (X != null) {
    		                nbt = Z.get(by);
    		            }
    		        }				
    			        return nbt;
    		    }				
    			    
    		    
    		    
    		    
    		    
    		    				
    			    public void saveNBTData(CompoundTag nbt) {
    		        String[] stringArray = pos.stream()
    		                .map(BlockPos::toShortString)
    		                .toArray(String[]::new);
    		        String concatenatedString = String.join(";", stringArray);
    		        byte[] byteArray = concatenatedString.getBytes(StandardCharsets.UTF_8);
    		        nbt.putByteArray("pos", byteArray);
    		        nbt.putIntArray("color", color);
    		    }				
    			    public void loadNBTData(CompoundTag nbt) {
    		        byte[] byteArray = nbt.getByteArray("pos");
    		        String restoredString = new String(byteArray, StandardCharsets.UTF_8);
    		        String[] restoredArray = restoredString.split(";");				
    			        pos = Arrays.stream(restoredArray).map(s -> {
    		            String[] parts = s.split(",");
    		            return new BlockPos(Integer.valueOf(parts[0]), Integer.valueOf(parts[1]), Integer.valueOf(parts[2]));
    		        }).collect(Collectors.toList());
    		        color = Arrays.stream(nbt.getIntArray("color"))
    		                .boxed()
    		                .collect(Collectors.toList());
    		    }
    		}				
    			

     

     

    ##########

    any way the question is if theres alredy a tutorial for 1.20.4 for this ??

    or some alredy working code from someone else doing something similar ? 

     

     

     

     

     

  11. looking around for the capabilities thing i found a piece of code and find this piece of code 

    	//########## ########## ########## ##########
    
    @SubscribeEvent
    public static void addCustomTrades(VillagerTradesEvent event) {
    if(event.getType() == VillagerProfession.FLETCHER) {
    System.out.println("\n\n### VillagerProfession.FLETCHER \n\n");//<-----------
    Int2ObjectMap<List<VillagerTrades.ItemListing>> trades = event.getTrades();
    ItemStack stack = new ItemStack(ItemInit.ARROW_STEEL.get(), 16);
    int villagerLevel = 1;
    trades.get(villagerLevel).add((trader, rand) -> new MerchantOffer(
    new ItemStack(Items.EMERALD, 2),
    stack,1,3,0.02F));
    }
    
    if(event.getType() == VillagerProfession.TOOLSMITH) {
    System.out.println("\n\n### VillagerProfession.TOOLSMITH \n\n");//<-----------
    Int2ObjectMap<List<VillagerTrades.ItemListing>> trades = event.getTrades();
    ItemStack stack = new ItemStack(ItemInit.INGOT_STEEL.get(), 1);
    int villagerLevel = 1;
    trades.get(villagerLevel).add((trader, rand) -> new MerchantOffer(
    new ItemStack(Items.EMERALD, 2),
    stack,10,8,0.02F));
    }
    	}
    	//########## ########## ########## ##########
    	

    the event is aknoledge and execute when the maps load 

    	### VillagerProfession.FLETCHER 
    	### VillagerProfession.TOOLSMITH 
    

    //##########

    But is not working 

    2024-04-13-08-46-06.png

     

    2024-04-13-08-39-53.png

     

    is a random piece of code is not working 

    could it be than this code is old 1.18 and no valid anymore for 1.20.4

    or the thing are this numbers 

    stack,10,8,0.02F)); 

    i dont know what this numbers means 

     

    ##########

    the question is ¿how to add things to the villager traders 

     

    thanks for your attention 

     

     

     

     

     

     

     

  12.  

    I have problems whit mi blockEntities they just save data only when it feels like 

    stonehead.png

    I just retake he topic after several weeks i know it not the menu nor the packages system 

    was thinking something xtreame like make the block entities to read write the data as .nbt text files just coze i can but think don't worts the effort 

    #################

    ???

    mi question is if theres a way to espose and  directly messup whit the minecraft nbt database system ??

    like 

    SELECT nbt FROM miwarudo WHERE x='127' and y='80' and z='-3627'

    or something whit

    CompoundTag worldnbt = warudo.getLevelData().something; ??

    CompoundTag blockentitynbt = worldnbt.getDataAt(x,y,z) ??

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  13. sound like thing for arrow loose event 

     

    	    @SubscribeEvent
        public static void ArrowLoose(ArrowLooseEvent event) {
            System.out.println("\n\n\n### ArrowLoose ");
            Player shooter = event.getEntity();
            String sshooter = (shooter != null)? shooter.getDisplayName().getString() : "null";
    	
            ItemStack bow = event.getBow();
    	        if( bow != null ){
                bow.enchant( Enchantments.FLAMING_ARROWS, 3 );
                System.out.println("### by " + sshooter  );
                System.out.println("### whit " + bow.getDisplayName().getString() );
            }
        }
    	

    this ones fires up before the arrow is released and for some reason dont works whit mi custom bows

     

  14. good days 
    this is a kind of cursed block intended to to be set in some dungeons and give lot as a chest 


    The problem is it saves the items only when it feels like  the gold and the emeralds just get loss after reload the world the block entity just goes back to the last saved state data the one whit 
    the carbono armor item in the chest slot 

     

    i made some experiments i made a custome itemhandler whit system outs to see whats happening 

    Spoiler

    				
    			package mercmod.capabity;				
    			//import mercmod.capabity.briefcase_handler;				
    			import net.minecraft.core.NonNullList;
    		import net.minecraft.nbt.CompoundTag;
    		import net.minecraft.nbt.ListTag;
    		import net.minecraft.nbt.Tag;
    		import net.minecraft.world.item.ItemStack;
    		import net.minecraft.world.level.Level;
    		import net.minecraft.world.level.block.entity.BlockEntity;
    		import net.minecraftforge.items.ItemStackHandler;
    		import org.jetbrains.annotations.NotNull;				
    			public class briefcase_be_handler extends ItemStackHandler
    		{
    		    //private final BasketBlock.BasketSize basketSize;				
    			    BlockEntity container = null;
    		    public int comment = 0;
    		    public byte pulling = 0;
    		    private Long t0 = 0L;
    		    private Long t1 = 0L;
    		    private int t = 0;				
    			    public long start_time = 0L;
    		    public int time = 0;
    		    public int limit = 60;
    		    public Byte action = 0;				
    			
    		    // ########## ########## ########## ##########
    		    //
    		    public briefcase_be_handler(BlockEntity blkent, int size)
    		    {
    		        super(size);
    		        this.container  = blkent;
    		    }				
    			    // ########## ########## ########## ##########
    		    //
    		    @Override
    		    public int getSlotLimit(int slot)
    		    {
    		        return 64;
    		    }				
    			    // ########## ########## ########## ##########
    		    //
    		    @Override
    		    public boolean isItemValid(int slot, @NotNull ItemStack stack)
    		    {
    		        if ( stack == null ||  stack.isEmpty() ) //|| stack.getItem() instanceof BasketBlockItem
    		        {
    		            return false;
    		        }
    		        else
    		        {
    		            return super.isItemValid(slot, stack);
    		        }
    		    }				
    			    // ########## ########## ########## ##########
    		    public void start_time() {
    		        this.start_time = System.currentTimeMillis();
    		        save();
    		    }				
    			    // ########## ########## ########## ##########
    		    public void stop_time() {
    		        this.start_time = 0L;
    		        this.time = 0;
    		        save();
    		    }				
    			    // ########## ########## ########## ##########
    		    public void print(Level warudo) {
    		        System.out.println("<!-- -->"); //<!-- -->
    		        System.out.println("world => " + ((warudo.isClientSide) ? "Mundo Local" : "Mundo Servidor"));
    		        print();
    		    }				
    			    public void print() {
    		        //System.out.println("this.id         = " + this.id);
    		        System.out.println("pulling         = " + this.pulling);				
    			
    		        ItemStack dstack = ItemStack.EMPTY;
    		        for (int index = 0; index < this.getSlots(); index++) {
    		            dstack = getStackInSlot(index);
    		            System.out.println(
    		                    "[" + index + "] (" +
    		                            dstack.getCount() + "), " +
    		                            dstack.getDisplayName().getString()
    		            );
    		        }
    		        System.out.println("\n"); //<!-- -->
    		    }				
    			    // ########## ########## ########## ##########
    		    public void save() {
    		        if (this.container == null) {
    		            System.out.println("\n#this.container is Null at save()#\n");
    		        }				
    			        if (this.container != null) {
    		            Level warudo = this.container.getLevel();
    		            if(!warudo.isClientSide()) {
    		                System.out.println("\n#this.container is saving()#\n");
    		                CompoundTag nbt = this.container.serializeNBT();
    		                nbt.put("inventory", this.serializeNBT());
    		                this.container.load(nbt);
    		                warudo.setBlockEntity(this.container);
    		            }
    		            return;
    		        }
    		        //this.container.saveAdditional( this.serializeNBT() );
    		    }				
    			
    		    @Override
    		    public void setStackInSlot(int slot, @NotNull ItemStack stack)
    		    {
    		        //System.out.println("\n >>> briefcase_be_handler().setStackInSlot(" + slot + ")");
    		        validateSlotIndex(slot);
    		        this.stacks.set(slot, stack);
    		        onContentsChanged(slot);
    		        save();
    		        //start_time();
    		    }				
    			    @Override
    		    @NotNull
    		    public ItemStack getStackInSlot(int slot)
    		    {
    		        //System.out.println("\n <<< briefcase_be_handler().getStackInSlot(" + slot + ")");
    		        validateSlotIndex(slot);
    		        return this.stacks.get(slot);
    		    }				
    			    // ########## ########## ########## ##########
    		    // @Override
    		    public static NonNullList<ItemStack> read_items_from(ItemStack itemstack) {				
    			        NonNullList<ItemStack> contained_items = NonNullList.withSize(9, ItemStack.EMPTY);// this.getContainerSize()				
    			        if (itemstack.hasTag()) {
    		            CompoundTag compoundtag = itemstack.getTag();
    		            ListTag listtag = null;
    		            int size = 0;				
    			            if (compoundtag.contains("Items")) {
    		                // ListTag listtag = new ListTag();
    		                listtag = compoundtag.getList("Items", 10);
    		                size = listtag.size();
    		                // contained_items = NonNullList.withSize(size, ItemStack.EMPTY);				
    			                for (int i = 0; i < listtag.size(); ++i) {
    		                    CompoundTag itemstacktag = listtag.getCompound(i);
    		                    int j = compoundtag.getByte("Slot") & 255;
    		                    if (j >= 0 && j < contained_items.size()) {
    		                        contained_items.set(j, ItemStack.of(itemstacktag));
    		                    }
    		                }
    		            }
    		        }
    		        return contained_items;
    		    }				
    			    // ########## ########## ########## ##########
    		    // @Override
    		    public void write_item_to_slot(ItemStack container, int slot, @NotNull ItemStack stack) {
    		        //,  NonNullList<ItemStack> contained_items				
    			        CompoundTag compoundtag = null;				
    			        if (container.hasTag()) {
    		            compoundtag = container.getTag();
    		        } else {
    		            compoundtag = new CompoundTag();
    		        }				
    			        ListTag listtag = null;
    		        if (compoundtag.contains("Items")) {
    		            listtag = compoundtag.getList("Items", 10);
    		        }else {
    		            listtag = new ListTag();
    		        }				
    			        CompoundTag itemstacktag = null;				
    			        if(slot < listtag.size() ) {
    		            itemstacktag = listtag.getCompound(slot);
    		        }
    		        else {
    		            itemstacktag = new CompoundTag();
    		        }				
    			        itemstacktag.putByte("Slot", (byte) slot);
    		        stack.save(itemstacktag);
    		        listtag.add(itemstacktag); //aqui tengi una duda, se sobreescrive o crea otra ??				
    			        compoundtag.put("Items", listtag);
    		        container.setTag(compoundtag);
    		    }				
    			    // ########## ########## ########## ##########
    		    //
    		    @Override
    		    public CompoundTag serializeNBT()
    		    {
    		        //System.out.println("serializeNBT()");
    		        ListTag nbtTagList = new ListTag();
    		        for (int i = 0; i < stacks.size(); i++)
    		        {
    		            if (!stacks.get(i).isEmpty())
    		            {
    		                CompoundTag itemTag = new CompoundTag();
    		                itemTag.putInt("Slot", i);
    		                stacks.get(i).save(itemTag);
    		                nbtTagList.add(itemTag);
    		            }
    		        }
    		        CompoundTag nbt = new CompoundTag();
    		        nbt.put("Items", nbtTagList);
    		        nbt.putInt("Size", stacks.size());
    		        nbt.putByte("pulling", pulling);
    		        nbt.putInt("comment", comment );				
    			        if (this.start_time > 0L) {
    		            this.t1 = System.currentTimeMillis();				
    			            if (this.t1 > this.t0) { //if it a diferent microtick
    		                // System.out.println( this.t1 + " > " + this.t0 );
    		                this.t0 = this.t1;				
    			                this.t = (int) (t1 - this.start_time) / 50;
    		                if (this.t > this.time) { //if its a diferent tick every 50ms
    		                    // System.out.println( this.t + " > " + this.time + ", " + this.limit  );
    		                    this.time = this.t;
    		                    this.onUseTick();//only once per tick
    		                    if (this.time >= this.limit) {
    		                        this.time = this.limit;
    		                        finishUsingItem();
    		                        this.time = 0;
    		                        this.stop_time();
    		                    }				
    			                }
    		            }
    		        }
    		        nbt.putLong("start_time", this.start_time);
    		        nbt.putShort("time", (short) this.time);
    		        nbt.putShort("limit", (short) this.limit);
    		        nbt.putByte("action", this.action);				
    			
    		        return nbt;
    		    }				
    			    // ########## ########## ########## ##########
    		    //
    		    @Override
    		    public void deserializeNBT(CompoundTag nbt)
    		    {
    		        //System.out.println("deserializeNBT");
    		        setSize(nbt.contains("Size", Tag.TAG_INT) ? nbt.getInt("Size") : stacks.size());
    		        ListTag tagList = nbt.getList("Items", Tag.TAG_COMPOUND);
    		        for (int i = 0; i < tagList.size(); i++)
    		        {
    		            CompoundTag itemTags = tagList.getCompound(i);
    		            int slot = itemTags.getInt("Slot");				
    			            if (slot >= 0 && slot < stacks.size())
    		            {
    		                stacks.set(slot, ItemStack.of(itemTags));
    		            }
    		        }				
    			        this.comment = nbt.getInt("comment" );
    		        this.pulling = nbt.getByte("pulling");				
    			        this.start_time = nbt.getLong("start_time");
    		        this.time = nbt.getShort("time");
    		        this.limit = nbt.getShort("limit");
    		        this.action = nbt.getByte("action");
    		        onLoad();
    		    }				
    			    // ########## ########## ########## ##########
    		    public void onUseTick() {				
    			        System.out.println("onUseTick       = " + this.time);
    		    }				
    			    // ########## ########## ########## ##########
    		    public void finishUsingItem() {				
    			        System.out.println("finishUsingItem = " + this.time);
    		        save();
    		    }				
    			}				
    			

     

    the important part is this  here this system out must only print when a change afects the itemhandler in the server side and here i manually force the block entity to save that custom itemhandler to the Block entity nbt and then save the BlockEnt to the world 

    	    // ########## ########## ########## ##########
        public void save() {
            if (this.container == null) {
                System.out.println("\n#this.container is Null at save()#\n");
            }
    	        if (this.container != null) {
                Level warudo = this.container.getLevel();
                if(!warudo.isClientSide()) {
                    System.out.println("\n#this.container is saving()#\n");
                    CompoundTag nbt = this.container.serializeNBT();
                    nbt.put("inventory", this.serializeNBT());
                    this.container.load(nbt);
                    warudo.setBlockEntity(this.container);
                }
                return;
            }
            //this.container.saveAdditional( this.serializeNBT() );
        }
    	

     

    in the console i see this every time i take or move some item from the gui

    	#this.container is saving()#
    	 
    	#this.container is saving()#
    	 
    	#this.container is saving()#
    	 
    	#this.container is saving()#
    	 
    	#this.container is saving()#
    	

    ####################################################

    this means the menu is working and sending the changes to the server side but this blockentity nbt data is not getting save to the world   

    warudo.setBlockEntity(this.container);

    is doing nothing 

    i have more block entities and those entities has the same problem i just no notice it until know  

     

    my guest is

    coze this happends before in 1.19 and that time whats coze i dont register the blockentities to the bus 

    but this time im doing it 
     

    Spoiler

    				
    			package mercmod.blockentitys;
    		import mercmod.blocks.BlockInit;
    		import mercmod.mercmod;
    		import net.minecraft.world.level.block.entity.BlockEntityType;
    		import net.minecraftforge.eventbus.api.IEventBus;
    		import net.minecraftforge.registries.DeferredRegister;
    		import net.minecraftforge.registries.ForgeRegistries;
    		import net.minecraftforge.registries.RegistryObject;				
    			public class BlockEntityInit {
    		    public static final DeferredRegister<BlockEntityType<?>> BLOCK_ENTITIES =
    		            DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, mercmod.MOD_ID);				
    			public static final RegistryObject<BlockEntityType<Panel_BlockEntity>> PANEL_BLOCKENTITY =
    		        BLOCK_ENTITIES.register( "panel_blockentity", () ->
    		                BlockEntityType.Builder.of( Panel_BlockEntity::new,
    		                        BlockInit.OAK_LADDER.get() ).build(null)  );				
    			    public static final RegistryObject<BlockEntityType<BlockEntityBriefcase>> BLOCKENTITYBRIEFCASE =
    		            BLOCK_ENTITIES.register( "blockentitybriefcase", () ->
    		                    BlockEntityType.Builder.of( BlockEntityBriefcase::new,
    		                            BlockInit.BRIEFCASE.get() ).build(null)  );				
    			    public static final RegistryObject<BlockEntityType<BlockEntityHardcase>> BLOCKENTITYHARDCASE =
    		            BLOCK_ENTITIES.register( "blockentityhardcase", () ->
    		                    BlockEntityType.Builder.of( BlockEntityHardcase::new,
    		                            BlockInit.HARDCASE.get() ).build(null)  );				
    			    public static final RegistryObject<BlockEntityType<BlockEntityBodyBlock>> BLOCKENTITYMOBBLOCK =
    		            BLOCK_ENTITIES.register( "blockentitymobblock", () ->
    		                    BlockEntityType.Builder.of( BlockEntityBodyBlock::new,
    		                            BlockInit.DEAD_BODY.get() ).build(null)  );				
    			
    		    public static void register(IEventBus eventBus) {
    		        BLOCK_ENTITIES.register(eventBus);
    		    }				
    			
    		}				
    			

     

     

    the thing is that i think this is not valid for 1.20.4 coze i get it from a 1.20.1 tutorial an probably the way of declaring it has change again 

        public static final RegistryObject<BlockEntityType<BlockEntityBodyBlock>> BLOCKENTITYMOBBLOCK =
                BLOCK_ENTITIES.register( "blockentitymobblock", () ->
                        BlockEntityType.Builder.of( BlockEntityBodyBlock::new,
                                BlockInit.DEAD_BODY.get() ).build(null)  );

     

    ############################################################################################

    what i think i need is an example a working code gits whit block entities register soo i could fix the mines according to 1.20.4 

     

     

    thanks for reading the long post 

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  15. Good days 
    advancing whit the problem from a post a made short ago and dint find anyway

    anyway i want to give the player a briefcase whit random stuff when play a new world for the first time 

    stonehead.png


    i made this 

    Spoiler

    				
    			@SubscribeEvent
    		public static void WorldInit(ServerStartedEvent event) {
    		System.out.println("\n\n\n###WorldInit### " + event.getServer().getWorldData().getLevelName().toString() );
    		Level warudo = event.getServer().overworld();
    		
    		warudo.setBlock( warudo.getSharedSpawnPos().above(), Blocks.GLOWSTONE.defaultBlockState() , 2 );
    		
    		System.out.println(" warudo " + warudo.isClientSide() + ", => " + warudo.getSharedSpawnPos().above() );
    		{
    		List<? extends Player> lista = warudo.players();
    		System.out.println(" lista " + lista.size() );
    		
    		for( Player spe : lista ){
    		//CompoundTag NBT = spe.serializeNBT();
    		//System.out.println( NbtUtils.prettyPrint( NBT ) );
    		}
    		}
    		System.out.println("###WorldInit###\n\n\n");
    		}
    		
    		
    		@SubscribeEvent
    		public static void WorldStop(ServerStoppedEvent event) {
    		System.out.println("\n\n\n###WorldStop###\n\n\n");
    		}				
    			

    this event triggers once the world map finish loading but before the players and the entities get loaded into the world an from it i can get a block position close to the player random spawn point 

    and do it every time yo play the world

    this block position returned is always the same and is no the same as the bonus chest 

    2024-03-24-08-26-04.png

    ###WorldInit### New World
     warudo false, => BlockPos{x=0, y=54, z=0}
     lista 0 //<-- no players yet 
    ###WorldInit###

     

    - first problem there's no player yet when triggered 

    - second one it triggers every time you star the game and loads the world so it keeps creating again the glow stone block those giving the briefcase again 

    ##############

    i was thinking into also spawn a black wool block at the block position but at y -63 soo every time its fires check if its a black wool block at -63 this way knows if its the first time or not 
    the other think would be not create directly the briefcase but some block whit logic to tick() 5 seconds later when i suppose the players  already loaded and then create the briefcase in front of the player 

     

    ########## ########## ########## ########## 

    someone knows about another event that trigger only once when the world is loaded and the players already inside the world ? 

    way i dont have to made complicated stuff like this to make something like that 

     

     

    thanks for your attention 

     

     

     

     

     

     

  16. may you are talking about catching all the AGE declaration even the ones from other mods custom properties ?

    one would be to check only againts the minecraft BlockStateProperties class

    Spoiler

    				
    			import net.minecraft.world.level.block.state.properties.BlockStateProperties;				
    			// ########## ########## ########## ##########
    		public int get_AGE() {
    		if (this.level > -1) {
    		return this.level;
    		}
    		
    		BlockState blkstate = this.getBlockState();
    		
    		if (blkstate.hasProperty(BlockStateProperties.AGE_1)) {
    		return blkstate.getValue(BlockStateProperties.AGE_1);
    		}
    		
    		if (blkstate.hasProperty(BlockStateProperties.AGE_2)) {
    		return blkstate.getValue(BlockStateProperties.AGE_2);
    		}
    		
    		if (blkstate.hasProperty(BlockStateProperties.AGE_3)) {
    		return blkstate.getValue(BlockStateProperties.AGE_3);
    		}
    		
    		if (blkstate.hasProperty(BlockStateProperties.AGE_4)) {
    		return blkstate.getValue(BlockStateProperties.AGE_4);
    		}
    		
    		if (blkstate.hasProperty(BlockStateProperties.AGE_5)) {
    		return blkstate.getValue(BlockStateProperties.AGE_5);
    		}
    		
    		if (blkstate.hasProperty(BlockStateProperties.AGE_7)) {
    		return blkstate.getValue(BlockStateProperties.AGE_7);
    		}
    		
    		if (blkstate.hasProperty(BlockStateProperties.AGE_15)) {
    		return blkstate.getValue(BlockStateProperties.AGE_15);
    		}
    		
    		if (blkstate.hasProperty(BlockStateProperties.AGE_25)) {
    		return blkstate.getValue(BlockStateProperties.AGE_25);
    		}
    		
    		return -1;
    		}				
    			

     

    the other would be dirt your hands on the nbt data of the block and check if it have a string whit same name 

    	// ##########
    public String print() {
    BlockState blkstate = this.getBlockState();
    
    String json = "";
    
    //int id = Block.getId(blkstate);
    
    String propiedades = "";
    for (Property<?> porp : blkstate.getProperties()) {
    
    System.out.println(porp.getName() + " -> " + blkstate.getValue(porp));
    propiedades += String.format( ",\"%1$s\":\"%2$s\"", porp.getName(), blkstate.getValue(porp) );
    }
    
    json = String.format("{\"blockname\":\"%1$s\",\"x\":\"%2$s\",\"y\":\"%3$s\",\"z\":\"%4$s\"%5$s}",
    this.get_blkfullname(), this.pos.getX(), this.pos.getY(), this.pos.getZ(), propiedades
    );
    
    //System.out.println("\n" + json + "\n" );
    return json;
    }
    	

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  17. good days 
    in the chicken it does areference to an entity place event triggering when chicken lays an egg

    	if (!this.level().isClientSide && this.isAlive() && !this.isBaby() && !this.isChickenJockey() && --this.eggTime <= 0) {
    this.playSound(SoundEvents.CHICKEN_EGG, 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
    this.spawnAtLocation(Items.EGG);
    this.gameEvent(GameEvent.ENTITY_PLACE);
    this.eggTime = this.random.nextInt(6000) + 6000;
    }
    	

    followin the trail it takes to a GameEvent class that just register events and dont works for suscribing events internally must be register under other name 
    i was searching the events tree on net.minecraftforge.event but no avail 

     


    @SubscribeEvent
    public static void entityPlace(GameEvent event) {
    }

     

    -------

    wheres the event when a chiken layes an egg ??

     

  18. could it be something whit the SmiffleModConfig.ENABLE_POLAR_BEAR_MEAT.get()

    or could be coze onLivingDeathEvent has two entities

     

     

    	@SubscribeEvent
    public static void onLivingDeathEvent(LivingDeathEvent event) {
    Level level = event.getEntity().level();
    Entity target = event.getEntity();
    Entity entity = event.getSource().getEntity();
    
    if(!level.isClientSide() && target != null && entity != null ){
    System.out.println("onLivingDeathEvent(" + entity.getDisplayName().getString() + ", " + target.getDisplayName().getString() + ")");
    BlockPos pos = entity.blockPosition();
    	

     Villager['Butcher'/47, l='ServerLevel[New World]', x=41.51, y=72.00, z=84.30] died, message: 'Butcher was slain by Zombie'
    onLivingDeathEvent(Zombie, Butcher)

     

     

     

     

     

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.