KubeJS-Mods / KubeJS

https://kubejs.com
GNU Lesser General Public License v3.0
307 stars 90 forks source link

enables customizable bucket models to fluid builder #830

Closed pietro-lopes closed 4 months ago

pietro-lopes commented 5 months ago

Description

Current implementation is overriding any kind of model customization on the FluidBucketItemBuilder. This PR adds some checks and use those if defined.

Example Script

at client_scripts

ClientEvents.highPriorityAssets(event => {
  event.addModel("item", "kubejs:milk_bucket", generator => {
    generator.parent("item/generated")
    generator.textures({
      layer0: "kubejs:item/special_bucket",
      layer1: "kubejs:item/milk_topping"
    })
  })
  event.addModel("item", "kubejs:milkshake_bucket", generator => {
    generator.parent("item/generated")
    generator.textures({
      layer0: "kubejs:item/special_bucket",
      layer1: "kubejs:item/milkshake_topping"
    })
  })
})

at startup_scripts

StartupEvents.registry("fluid", (event) => {
  let milkBucketsList = [
    ["azalea_flowers", "COMMON", 0xa13f9e],
    ["banana", "COMMON", 0xfbfabd],
    ["coco", "COMMON", 0x744e33],
    ["coconut", "COMMON", 0xf3f3e3],
    ["coffee", "COMMON", 0x87500d],
    ["maple_syrup", "COMMON", 0xc45116],
    ["matcha", "COMMON", 0xc8cf5c],
    ["mint", "COMMON", 0x6cd189],
    ["honey", "COMMON", 0xfcec8c],
    ["lush_fruit", "COMMON", 0xd0488d],
    ["sweet_berries", "COMMON", 0x891d1d],
    ["glittering_dust", "COMMON", 0x56dca3]
  ]

  let milkBuckets = (name, rarity, color) => {
    event
      .create(name + "_milk")
      .thickTexture(color)
      .color(color)
      .bucketItem
      .parentModel("kubejs:item/milk_bucket")
      .rarity(rarity)

    event
      .create(name + "_milkshake")
      .thickTexture(color)
      .color(color)
      .bucketItem
      .parentModel("kubejs:item/milkshake_bucket")
      .rarity(rarity)
  }

  milkBucketsList.forEach((bucket) => {
    milkBuckets(bucket[0], bucket[1], bucket[2])
  })

  event
    .create("regular_fluid")
    .thickTexture(0xfcec8c)
    .color(0xfcec8c)
})

Required files at kubejs/assets/kubejs/textures/item/ textures.zip

Before the PR

fluid_builder_not_working

After the PR (added regular_fluid to show default working as intended)

fluid_builder_working

Other details

Tested on Fabric and Forge.