minerender 2.1.0-alpha.45 → 2.1.0-alpha.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4220,11 +4220,35 @@ var init_ModelObject = __esm({
4220
4220
  }
4221
4221
  });
4222
4222
 
4223
+ // src/model/fluid/fluidBlocks.json
4224
+ var fluidBlocks_default;
4225
+ var init_fluidBlocks = __esm({
4226
+ "src/model/fluid/fluidBlocks.json"() {
4227
+ fluidBlocks_default = {
4228
+ "minecraft:water": { kind: "water", levelProperty: "level", renderModel: false },
4229
+ "minecraft:lava": { kind: "lava", levelProperty: "level", renderModel: false },
4230
+ "minecraft:kelp": { kind: "water", renderModel: true },
4231
+ "minecraft:kelp_plant": { kind: "water", renderModel: true },
4232
+ "minecraft:seagrass": { kind: "water", renderModel: true },
4233
+ "minecraft:tall_seagrass": { kind: "water", renderModel: true },
4234
+ "minecraft:bubble_column": { kind: "water", renderModel: false }
4235
+ };
4236
+ }
4237
+ });
4238
+
4223
4239
  // src/model/fluid/FluidGeometry.ts
4224
4240
  import { BufferGeometry as BufferGeometry2, Float32BufferAttribute as Float32BufferAttribute4 } from "three";
4241
+ function getBlockFluidState(key, state) {
4242
+ const rule = key && fluidRules[key.toNamespacedString()];
4243
+ if (rule) return {
4244
+ kind: rule.kind,
4245
+ level: rule.levelProperty ? Number(state?.[rule.levelProperty] ?? 0) : 0,
4246
+ renderModel: rule.renderModel
4247
+ };
4248
+ return state?.waterlogged === "true" ? { kind: "water", level: 0, renderModel: true } : void 0;
4249
+ }
4225
4250
  function getFluidKind(key, state) {
4226
- if (key?.namespace === "minecraft" && !key.type && (key.path === "water" || key.path === "lava")) return key.path;
4227
- return state?.waterlogged === "true" ? "water" : void 0;
4251
+ return getBlockFluidState(key, state)?.kind;
4228
4252
  }
4229
4253
  function ownHeight(sample) {
4230
4254
  const level = sample.level ?? 0;
@@ -4336,9 +4360,11 @@ function createFluidGeometry(kind, sample) {
4336
4360
  geometry.setIndex(indices);
4337
4361
  return geometry;
4338
4362
  }
4339
- var HORIZONTAL, EPSILON;
4363
+ var fluidRules, HORIZONTAL, EPSILON;
4340
4364
  var init_FluidGeometry = __esm({
4341
4365
  "src/model/fluid/FluidGeometry.ts"() {
4366
+ init_fluidBlocks();
4367
+ fluidRules = fluidBlocks_default;
4342
4368
  HORIZONTAL = [[0, -1], [0, 1], [-1, 0], [1, 0]];
4343
4369
  EPSILON = 1e-3;
4344
4370
  }
@@ -5637,7 +5663,7 @@ var BlockObject = class _BlockObject extends SceneObject {
5637
5663
  return getFluidKind(this.blockState.key, this.state);
5638
5664
  }
5639
5665
  get fluidLevel() {
5640
- return getFluidKind(this.blockState.key) ? Number(this.state.level ?? 0) : 0;
5666
+ return getBlockFluidState(this.blockState.key, this.state)?.level ?? 0;
5641
5667
  }
5642
5668
  /** Refreshes fluid surfaces from relative neighbors; standalone previews use air around the block. */
5643
5669
  async updateFluid(sample) {
@@ -5679,7 +5705,7 @@ var BlockObject = class _BlockObject extends SceneObject {
5679
5705
  }
5680
5706
  async recreateModels() {
5681
5707
  this.clearModels();
5682
- if (getFluidKind(this.blockState.key)) {
5708
+ if (getBlockFluidState(this.blockState.key, this.state)?.renderModel === false) {
5683
5709
  await this.updateFluid(this._fluidSampler);
5684
5710
  return;
5685
5711
  }
@@ -10951,6 +10977,7 @@ export {
10951
10977
  createFluidGeometry,
10952
10978
  createImage,
10953
10979
  estimateBytesUsed,
10980
+ getBlockFluidState,
10954
10981
  getFluidKind,
10955
10982
  interleaveAttributes,
10956
10983
  isAssetKey,