@@ -50,19 +50,76 @@ const CustomRender = {
5050 )
5151 continue ;
5252 const faceVertex = this . genBlockFace ( side , block , pos ) ;
53+ let waterLevels = [ ] ;
54+ for ( let x = - 1 ; x <= 1 ; x ++ )
55+ for ( let z = - 1 ; z <= 1 ; z ++ ) {
56+ let block = this . chunkTerrain . getBlock (
57+ pos [ 0 ] + x ,
58+ pos [ 1 ] ,
59+ pos [ 2 ] + z
60+ ) ;
61+ if ( block . name === "water" )
62+ if ( block . stateId - 32 === 10 ) waterLevels . push ( 0 ) ;
63+ else waterLevels . push ( ( block . stateId - 33 ) / 10 ) ;
64+ else if ( block . boundingBox === "block" )
65+ waterLevels . push ( 10 ) ;
66+ else waterLevels . push ( 1 ) ;
67+ }
68+ let waterLevelAverages = [
69+ Math . min (
70+ waterLevels [ 0 ] ,
71+ waterLevels [ 1 ] ,
72+ waterLevels [ 3 ] ,
73+ waterLevels [ 4 ]
74+ ) ,
75+ Math . min (
76+ waterLevels [ 1 ] ,
77+ waterLevels [ 2 ] ,
78+ waterLevels [ 4 ] ,
79+ waterLevels [ 5 ]
80+ ) ,
81+ Math . min (
82+ waterLevels [ 4 ] ,
83+ waterLevels [ 5 ] ,
84+ waterLevels [ 7 ] ,
85+ waterLevels [ 8 ]
86+ ) ,
87+ Math . min (
88+ waterLevels [ 3 ] ,
89+ waterLevels [ 4 ] ,
90+ waterLevels [ 6 ] ,
91+ waterLevels [ 7 ]
92+ ) ,
93+ ] ;
94+
5395 switch ( side ) {
5496 case "py" :
55- for ( let i = 0 ; i < 6 ; i ++ ) {
56- faceVertex . pos [ 3 * i + 1 ] -= ( level - 1 ) / 9 ;
57- }
97+ faceVertex . pos [ 3 * 0 + 1 ] -= waterLevelAverages [ 3 ] ;
98+ faceVertex . pos [ 3 * 1 + 1 ] -= waterLevelAverages [ 0 ] ;
99+ faceVertex . pos [ 3 * 2 + 1 ] -= waterLevelAverages [ 2 ] ;
100+ faceVertex . pos [ 3 * 3 + 1 ] -= waterLevelAverages [ 2 ] ;
101+ faceVertex . pos [ 3 * 4 + 1 ] -= waterLevelAverages [ 0 ] ;
102+ faceVertex . pos [ 3 * 5 + 1 ] -= waterLevelAverages [ 1 ] ;
58103 break ;
59104 case "nx" :
105+ faceVertex . pos [ 3 * 2 + 1 ] -= waterLevelAverages [ 2 ] ;
106+ faceVertex . pos [ 3 * 3 + 1 ] -= waterLevelAverages [ 2 ] ;
107+ faceVertex . pos [ 3 * 5 + 1 ] -= waterLevelAverages [ 3 ] ;
108+ break ;
60109 case "px" :
110+ faceVertex . pos [ 3 * 2 + 1 ] -= waterLevelAverages [ 0 ] ;
111+ faceVertex . pos [ 3 * 3 + 1 ] -= waterLevelAverages [ 0 ] ;
112+ faceVertex . pos [ 3 * 5 + 1 ] -= waterLevelAverages [ 1 ] ;
113+ break ;
61114 case "nz" :
115+ faceVertex . pos [ 3 * 2 + 1 ] -= waterLevelAverages [ 3 ] ;
116+ faceVertex . pos [ 3 * 3 + 1 ] -= waterLevelAverages [ 3 ] ;
117+ faceVertex . pos [ 3 * 5 + 1 ] -= waterLevelAverages [ 0 ] ;
118+ break ;
62119 case "pz" :
63- faceVertex . pos [ 3 * 2 + 1 ] -= ( level - 1 ) / 9 ;
64- faceVertex . pos [ 3 * 3 + 1 ] -= ( level - 1 ) / 9 ;
65- faceVertex . pos [ 3 * 5 + 1 ] -= ( level - 1 ) / 9 ;
120+ faceVertex . pos [ 3 * 2 + 1 ] -= waterLevelAverages [ 1 ] ;
121+ faceVertex . pos [ 3 * 3 + 1 ] -= waterLevelAverages [ 1 ] ;
122+ faceVertex . pos [ 3 * 5 + 1 ] -= waterLevelAverages [ 2 ] ;
66123
67124 break ;
68125 }
0 commit comments