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.
@@ -4136,11 +4136,35 @@ var init_ModelObject = __esm({
4136
4136
  }
4137
4137
  });
4138
4138
 
4139
+ // src/model/fluid/fluidBlocks.json
4140
+ var fluidBlocks_default;
4141
+ var init_fluidBlocks = __esm({
4142
+ "src/model/fluid/fluidBlocks.json"() {
4143
+ fluidBlocks_default = {
4144
+ "minecraft:water": { kind: "water", levelProperty: "level", renderModel: false },
4145
+ "minecraft:lava": { kind: "lava", levelProperty: "level", renderModel: false },
4146
+ "minecraft:kelp": { kind: "water", renderModel: true },
4147
+ "minecraft:kelp_plant": { kind: "water", renderModel: true },
4148
+ "minecraft:seagrass": { kind: "water", renderModel: true },
4149
+ "minecraft:tall_seagrass": { kind: "water", renderModel: true },
4150
+ "minecraft:bubble_column": { kind: "water", renderModel: false }
4151
+ };
4152
+ }
4153
+ });
4154
+
4139
4155
  // src/model/fluid/FluidGeometry.ts
4140
4156
  import { BufferGeometry as BufferGeometry2, Float32BufferAttribute as Float32BufferAttribute4 } from "three";
4157
+ function getBlockFluidState(key, state) {
4158
+ const rule = key && fluidRules[key.toNamespacedString()];
4159
+ if (rule) return {
4160
+ kind: rule.kind,
4161
+ level: rule.levelProperty ? Number(state?.[rule.levelProperty] ?? 0) : 0,
4162
+ renderModel: rule.renderModel
4163
+ };
4164
+ return state?.waterlogged === "true" ? { kind: "water", level: 0, renderModel: true } : void 0;
4165
+ }
4141
4166
  function getFluidKind(key, state) {
4142
- if (key?.namespace === "minecraft" && !key.type && (key.path === "water" || key.path === "lava")) return key.path;
4143
- return state?.waterlogged === "true" ? "water" : void 0;
4167
+ return getBlockFluidState(key, state)?.kind;
4144
4168
  }
4145
4169
  function ownHeight(sample) {
4146
4170
  const level = sample.level ?? 0;
@@ -4252,9 +4276,11 @@ function createFluidGeometry(kind, sample) {
4252
4276
  geometry.setIndex(indices);
4253
4277
  return geometry;
4254
4278
  }
4255
- var HORIZONTAL, EPSILON;
4279
+ var fluidRules, HORIZONTAL, EPSILON;
4256
4280
  var init_FluidGeometry = __esm({
4257
4281
  "src/model/fluid/FluidGeometry.ts"() {
4282
+ init_fluidBlocks();
4283
+ fluidRules = fluidBlocks_default;
4258
4284
  HORIZONTAL = [[0, -1], [0, 1], [-1, 0], [1, 0]];
4259
4285
  EPSILON = 1e-3;
4260
4286
  }
@@ -5585,7 +5611,7 @@ var _BlockObject = class _BlockObject extends SceneObject {
5585
5611
  return getFluidKind(this.blockState.key, this.state);
5586
5612
  }
5587
5613
  get fluidLevel() {
5588
- return getFluidKind(this.blockState.key) ? Number(this.state.level ?? 0) : 0;
5614
+ return getBlockFluidState(this.blockState.key, this.state)?.level ?? 0;
5589
5615
  }
5590
5616
  /** Refreshes fluid surfaces from relative neighbors; standalone previews use air around the block. */
5591
5617
  async updateFluid(sample) {
@@ -5627,7 +5653,7 @@ var _BlockObject = class _BlockObject extends SceneObject {
5627
5653
  }
5628
5654
  async recreateModels() {
5629
5655
  this.clearModels();
5630
- if (getFluidKind(this.blockState.key)) {
5656
+ if (getBlockFluidState(this.blockState.key, this.state)?.renderModel === false) {
5631
5657
  await this.updateFluid(this._fluidSampler);
5632
5658
  return;
5633
5659
  }
@@ -10901,6 +10927,7 @@ export {
10901
10927
  createFluidGeometry,
10902
10928
  createImage,
10903
10929
  estimateBytesUsed,
10930
+ getBlockFluidState,
10904
10931
  getFluidKind,
10905
10932
  interleaveAttributes,
10906
10933
  isAssetKey,