// priority: 500
// LightmansCustomGachaTraderModel
/**
 * @type {Map<String, WeightRandomModel>}
 */
const ShopItemTraderType2TradeData = new Map()
/**
 * @type {Map<String, WeightRandomModel>}
 */
const ShopGachaTraderType2TradeData = new Map()
BlockEvents.rightClicked(event => {
    const level = event.level
    const block = event.block
    const state = block.blockState
    if (!(state.block instanceof $TraderBlockBase)) return
    // 逻辑仅在商店维度生效
    if (level.dimension != 'infinity:room') return

    /**@type {Internal.TraderBlockEntity} */
    let coreBlockEntity = block.entity
    if (coreBlockEntity instanceof $CapabilityInterfaceBlockEntity) {
        coreBlockEntity = coreBlockEntity.tryGetCoreBlockEntity()
    }
    if (coreBlockEntity == null) return
    if (coreBlockEntity.isIgnoreCustomTrader()) return
    const persistentData = coreBlockEntity.persistentData
    if (persistentData.getBoolean('hadGen')) return
    const nbt = new $CompoundTag()
    if (!persistentData.contains('genType')) return
    let genType = String(persistentData.getString('genType'))
    if (coreBlockEntity instanceof $ItemTraderBlockEntity) {
        if (!ShopItemTraderType2TradeData.has(genType)) genType = 'misc'
        let trades = ShopItemTraderType2TradeData.get(genType).getWeightRandomObjs(coreBlockEntity.getTradeCount())
        let customTrader = new LightmansCustomItemTraderModel().setTrades(trades)
        nbt.put('CustomTrader', customTrader.write())
    } else if (coreBlockEntity instanceof $GachaMachineBlockEntity) {
        if (!ShopGachaTraderType2TradeData.has(genType)) genType = 'weapon_skin'
        let storages = ShopGachaTraderType2TradeData.get(genType).getWeightRandomRepeatedObjs(Math.floor(Math.random() * 35 + 5))
        let customTrader = new LightmansCustomGachaTraderModel().setStorage(storages)
        nbt.put('CustomTrader', customTrader.write())
    } else {
        return
    }
    const coreBlock = level.getBlock(coreBlockEntity.blockPos)
    coreBlock.mergeEntityData(nbt)
    coreBlockEntity.serverTick()
    coreBlockEntity.persistentData.putBoolean('hadGen', true)
})

/**
 * 
 * @param {String} type 
 * @param {WeightRandomModel} data 
 */
function RegistryShopGachaTraderType(type, data) {
    ShopGachaTraderType2TradeData.set(type, data)
}

/**
 * 
 * @param {String} type 
 * @param {WeightRandomModel} data 
 */
function RegistryShopItemTraderType(type, data) {
    ShopItemTraderType2TradeData.set(type, data)
}


RegistryShopItemTraderType('ore_common',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('tetra:geode')], 100), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:clay')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:lapis_lazuli')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:amethyst_shard')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:quartz')], 5), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:coal')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:raw_gold')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:raw_copper')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:raw_iron')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:emerald')], 5), 20)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:diamond')], 50), 20)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:redstone')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:glowstone_dust')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:andesite')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:raw_zinc')], 10), 100)
)

RegistryShopItemTraderType('ore_rare',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('tetra:geode')], 100), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:emerald')], 5), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:diamond')], 50), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:netherite_scrap')], 100), 20)
)

RegistryShopItemTraderType('misc',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('supplementaries:lunch_basket')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('candlelight:love_letter', '{author:"未名人",letter_sender:"未名人",letter_title:"你",text:["每次看你砍树、挖矿、建起小屋，我的心就跟着你的脚步跳动。不敢靠太近，怕打扰你的冒险。但请知道——这个世界里，最珍贵的不是钻石，而是你。愿陪你走过每一座山、每一条河。永远爱你♥️♥️♥️。"],title:"♥️"}')], 300).setTradeLimitRule(1), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('supplementaries:bubble_blower')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('supplementaries:slingshot')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('supplementaries:flute')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('immersive_melodies:tiny_drum')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('immersive_melodies:didgeridoo')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('immersive_melodies:lute')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('immersive_melodies:piano')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('immersive_melodies:triangle')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('immersive_melodies:vielle')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('immersive_melodies:flute')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('immersive_melodies:trumpet')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('supplementaries:speaker_block')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('ropebridge:bridge_builder')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('ropebridge:ladder_builder')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('exposure_polaroid:instant_color_slide')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('exposure_polaroid:instant_camera')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('elevatorid:elevator_white')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('refurbished_furniture:yellow_toilet')], 50), 100)

        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:totem_of_undying')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:dried_ghast')], 100).setTradeLimitRule(1), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:turtle_egg')], 200), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:sniffer_egg')], 600), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:budding_amethyst')], 300), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:crying_obsidian', 3)], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('dracolotl:bucket_of_dracolotl')], 1000).setTradeLimitRule(1), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:spawner')], 1000).setTradeLimitRule(1), 20)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('cornucopia:cornucopia')], 300), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:end_portal_frame', 13)], 1000).setTradeLimitRule(1), 5)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:ghast_tear')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:netherite_upgrade_smithing_template')], 800), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:echo_shard')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:leather')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:shulker_shell')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:slime_ball')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:nether_star')], 300), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:enchanted_golden_apple')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('supplementaries:confetti_popper', 64)], 1), 20)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:ender_pearl')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:prismarine_shard')], 5), 20)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:prismarine_crystals')], 5), 20)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:nether_wart')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:dragon_breath')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:blaze_rod')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:heart_of_the_sea')], 300), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:rabbit_foot')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:honeycomb')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:armadillo_scute')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:honey_bottle')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:name_tag')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:axolotl_bucket')], 100), 50)
)

RegistryShopItemTraderType('create',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create_connected:fan_blasting_catalyst')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create_connected:fan_haunting_catalyst')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create_connected:fan_splashing_catalyst')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create_connected:fan_smoking_catalyst')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:mechanical_mixer')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:mechanical_press')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:deployer')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:mechanical_saw')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:mechanical_drill')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:extendo_grip')], 300), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:packager')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:potato_cannon')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:blaze_cake')], 50), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:rotation_speed_controller')], 150), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:blaze_burner')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:mechanical_roller')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:mechanical_harvester')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:mechanical_plough')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:encased_fan')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:basin')], 50), 100)
)

RegistryShopItemTraderType('potion',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"minecraft:night_vision"}')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"minecraft:invisibility"}')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"minecraft:swiftness"}')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"minecraft:water_breathing"}'), 20], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"chestcavity:organ_slip"}')], 100), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"potioncore:flight"}')], 500), 3)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"potioncore:perplexity"}')], 50), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"potioncore:disorganization"}')], 50), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"potioncore:spawn_teleport"}')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"potioncore:spin"}')], 100), 20)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"potioncore:love"}')], 100), 20)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"potioncore:lightning"}')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potion', '{Potion:"potioncore:nausea"}')], 50), 100)
)


RegistryShopItemTraderType('drink',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:whiskey_carrasconlabel')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:whiskey_jojannik')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:whiskey_smokey_reverie')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:whiskey_jamesons_malt')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:beer_hops')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:beer_haley')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:oolong')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:sakura_fubuki')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:flower_tea')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:whiskey_lilitusinglemalt')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:whiskey_cristelwalker')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:whiskey_maggoallan')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:whiskey_ak')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:whiskey_highland_hearth')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:beer_wheat')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:beer_barley')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:beer_nettle')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:tieguanyin')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:biluochun')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:beer_oat')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:barley_tea')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:jo_special_mixture')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:eiswein')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:glowing_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:apple_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:red_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:apple_cider')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:solaris_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:mellohi_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:mead')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:chorus_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:villagers_fright')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:cherry_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:chenet_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:clark_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:magnetic_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:stal_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:jellie_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:bottle_mojang_noir')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:noir_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:strad_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:bolvar_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:aegis_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:cristel_wine')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:creepers_crush')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:kelp_cider')], 50), 10)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:lilitu_wine')], 50), 10)
)

RegistryShopItemTraderType('food',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:white_grape')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:taiga_grapes_white')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:glow_berries')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:pufferfish')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:jungle_grapes_red')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:salmon')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:taiga_grapes_red')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:jungle_grapes_white')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:cherry')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:chicken')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:rice_panicle')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:green_chili')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:caterpillar')], 20), 20)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:tomato')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:raw_donkey_meat')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:red_chili')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kaleidoscope_cookery:lettuce')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:apple')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:rabbit')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:potato')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:cod')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:cooked_salmon')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:tropical_fish')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:egg')], 1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('brewery:hops')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:sugar')], 1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:red_grape')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('vinery:savanna_grapes_red')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:wheat')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:melon_slice')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:sweet_berries')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:carrot')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:beetroot')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:beef')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:porkchop')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:mutton')], 3), 100)
)

RegistryShopItemTraderType('blueprint',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[33,17,15],Deployed:0b,File:"schematic.medium_cottage.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 400).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[14,11,16],Deployed:0b,File:"schematic.basic_small_house.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 200).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[31,46,31],Deployed:0b,File:"schematic.cherry_tree_double_room.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 800).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[50,24,31],Deployed:0b,File:"schematic.whistling_sand_apartment.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1000).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[19,10,19],Deployed:0b,File:"schematic.underground_small_base.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 250).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[15,9,17],Deployed:0b,File:"schematic.small_house.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 200).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[18,22,20],Deployed:0b,File:"schematic.small_apple.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 325).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[22,13,15],Deployed:0b,File:"schematic.laterano_sweets_house.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 400).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[41,36,21],Deployed:0b,File:"schematic.create_workbase.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 6666).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[32,17,16],Deployed:0b,File:"schematic.create_bar.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1200).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[20,47,20],Deployed:0b,File:"schematic.lighthouse.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 250).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[27,30,27],Deployed:0b,File:"schematic.cherry_pavilion.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 325).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[13,9,16],Deployed:0b,File:"schematic.fox_house.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 325).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[47,27,32],Deployed:0b,File:"schematic.blossoms_villa.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1000).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[48,58,48],Deployed:0b,File:"schematic.defiled_monastery.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 2500).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[30,30,31],Deployed:0b,File:"schematic.hanami_pavilion.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 500).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[39,33,59],Deployed:0b,File:"schematic.honey_villa.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1100).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[19,13,31],Deployed:0b,File:"schematic.create_workshop.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1800).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[45,36,45],Deployed:0b,File:"schematic.chocolate_cake_shop.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1000).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[57,4,57],Deployed:0b,File:"schematic.basic_platform.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1000).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[11,11,11],Deployed:0b,File:"schematic.small_grave.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 200).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[63,11,63],Deployed:0b,File:"schematic.eternal_battle_field.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 200).setTradeLimitRule(1), 300) // 特殊战斗场地，权重略微提高
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[31,116,34],Deployed:0b,File:"schematic.ars_repo_tower.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 900).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[36,28,37],Deployed:0b,File:"schematic.cherry_glass_sphere.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1000).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[7,4,8],Deployed:0b,File:"schematic.basic_create_craft_storage.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 300).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[4,3,8],Deployed:0b,File:"schematic.basic_create_storage.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 200).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[14,7,11],Deployed:0b,File:"schematic.ars_garden.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}'), Item.of('minecraft:written_book', '{author:"Side Alley C24",pages:[\'{"text":"使用方法：\\\\n1.用薇克精护符右键炼药并提供魔源\\\\n\\\\n2.五种药水分别右键五个炼药锅绑定配方。然后放入左侧五个药水罐，支配之杖shift右键锁定\\\\n\\\\n3.使用支配之杖将仓库与炼药锅连接\\\\n\\\\n4.使用支配之杖右键药水罐连接混合锅并输出到右边的药水罐，将药水两两混合，最后合成四种效果的药水，通过炼金魔源通道获得魔源"}\'],resolved:1b,title:"使用手册"}')], 300).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[7,13,23],Deployed:0b,File:"schematic.arcane_organ.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 500).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[26,44,38],Deployed:0b,File:"schematic.blood_big_windmill.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 600).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[5,5,5],Deployed:0b,File:"schematic.auto_source_gem.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 200).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[15,27,27],Deployed:0b,File:"schematic.god_of_waterwheel.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",Author:"老King呀老King",canSurvivalPrint:1b}')], 500).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[19,30,16],Deployed:0b,File:"schematic.kelp_farm.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",Author:"老King呀老King",canSurvivalPrint:1b}')], 200).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[19,26,14],Deployed:0b,File:"schematic.dimension_behemoth.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 200).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[20,15,32],Deployed:0b,File:"schematic.dance_machine.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 800).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[25,7,10],Deployed:0b,File:"schematic.create_all_in_one.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1200).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[20,41,18],Deployed:0b,File:"schematic.smithing_template_god.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 500).setTradeLimitRule(1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('create:schematic', '{Anchor:{X:0,Y:0,Z:0},Bounds:[35,24,27],Deployed:0b,File:"schematic.sakura_house.nbt",Mirror:"NONE",Owner:"prefab",Rotation:"NONE",canSurvivalPrint:1b}')], 1200).setTradeLimitRule(1), 100)
)

RegistryShopItemTraderType('graveyard',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('graveyard:corruption')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:bone')], 3), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('graveyard:sarcophagus')], 20), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:rotten_flesh')], 1), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:golden_apple')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('graveyard:skull_pile')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('graveyard:leaning_skeleton')], 5), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:sculk_catalyst')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('minecraft:echo_shard')], 20), 100)
)

RegistryShopItemTraderType('tetra',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('tetra:geode')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('tetra:vent_plate')], 300), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('tetra:planar_stabilizer')], 300), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('tetra:thermal_cell', '{Damage:0}')], 300), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('tetra:lubricant_dispenser')], 300), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('tetra:combustion_chamber')], 300), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('tetra:forged_workbench')], 300), 100)
)

RegistryShopItemTraderType('biomancy',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:acidic_egg')], 200), 200)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:mob_fang')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:mob_sinew')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:volatile_gland')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:toxin_gland')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:mob_gland')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:withered_mob_marrow')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:mob_marrow')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:mob_claw')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:nutrients')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:gem_fragments')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:mineral_fragment')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:elastic_fibers')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:bone_fragments')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:tough_fibers')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:flesh_bits')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:stone_powder')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:volatile_fluid')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:toxin_extract')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:withering_ooze')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:hormone_secretion')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:exotic_dust')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:living_flesh')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:regenerative_fluid')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:acid_extract')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:bile')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:bio_lumens')], 100), 30)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('biomancy:organic_matter')], 100), 30)
)


RegistryShopItemTraderType('organ',
    new WeightRandomModel()
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:tasty_gland')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:endermite_gland')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:symbiocto_arm')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:leaf_insect_exoskeleton')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:dumbo_octopus_hat')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:ferret_tail')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:nightmare_core')], 200), 50)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:jumping_spider_leg')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:ender_golem_line')], 200), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:fox_tail')], 200), 200)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:heart')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:intestine')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:kidney')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:liver')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:appendix')], 10), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:lung')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:muscle')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:rib')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:spleen')], 20), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:stomach')], 50), 100)
        .addWeightRandom(CreateSimpleTradeModel([Item.of('kubejs:spine')], 50), 100)
)



RegistryShopGachaTraderType('weapon_skin',
    new WeightRandomModel()
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/the_sword_in_the_stone",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/twea_01",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/twea_02",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/twea_03",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/twea_04",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_01",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_02",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_03",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_04",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_05",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_06",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_07",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_08",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_09",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_10",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_11",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_12",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_13",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_14",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_15",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_16",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_17",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_18",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_19",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_20",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_21",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_22",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_23",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_24",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_25",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_26",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_27",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_28",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_29",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_30",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_31",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_32",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_33",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_01",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_02",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_03",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_04",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_05",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_06",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_07",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_08",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_09",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_10",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_11",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_12",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_13",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_14",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_15",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_16",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_17",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_18",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_19",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_20",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_21",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_22",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_23",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_24",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_25",SkinType:"armourers:item"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/weapon_skins/wea_s_26",SkinType:"armourers:item"}}'), 100)
        // 非weaponSkin，后续迁移
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/statue/moon",SkinType:"armourers:block"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/statue/statue_tw",SkinType:"armourers:block"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/statue/sun",SkinType:"armourers:block"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/costume/cat_ear",SkinType:"armourers:head"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/costume/rabbit_ear",SkinType:"armourers:head"}}'), 100)
        .addWeightRandom(Item.of('armourers_workshop:skin', '{ArmourersWorkshop:{Identifier:"secret/costume/the_familiar_hair_clip",SkinType:"armourers:head"}}'), 100)
)

