From ff7f0fc5046bc30ea32b2b22d254afdf99cfae39 Mon Sep 17 00:00:00 2001 From: Motschen Date: Wed, 12 May 2021 10:58:19 +0200 Subject: [PATCH] Update gradle, fix bugs & crashes --- .gitignore | 0 LICENSE | 0 README.md | 2 +- build.gradle | 2 +- gradle.properties | 8 +- gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 35 +- gradlew.bat | 25 +- renders/puddle_banner.png | Bin 0 -> 33738 bytes renders/puddle_logo.png | Bin 0 -> 11482 bytes settings.gradle | 0 .../java/eu/midnightdust/puddles/Puddles.java | 0 .../midnightdust/puddles/PuddlesClient.java | 0 .../puddles/block/PuddleBlock.java | 333 +++++++++--------- .../puddles/mixin/MixinServerWorld.java | 126 +++---- .../assets/puddles/blockstates/puddle.json | 0 src/main/resources/assets/puddles/icon.png | Bin .../resources/assets/puddles/lang/en_us.json | 4 +- .../assets/puddles/models/block/puddle.json | 0 .../assets/puddles/models/item/puddle.json | 0 src/main/resources/fabric.mod.json | 0 src/main/resources/puddles.mixins.json | 0 23 files changed, 263 insertions(+), 274 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 build.gradle mode change 100644 => 100755 gradle.properties mode change 100644 => 100755 gradle/wrapper/gradle-wrapper.jar mode change 100644 => 100755 gradle/wrapper/gradle-wrapper.properties mode change 100644 => 100755 gradlew mode change 100644 => 100755 gradlew.bat create mode 100755 renders/puddle_banner.png create mode 100755 renders/puddle_logo.png mode change 100644 => 100755 settings.gradle mode change 100644 => 100755 src/main/java/eu/midnightdust/puddles/Puddles.java mode change 100644 => 100755 src/main/java/eu/midnightdust/puddles/PuddlesClient.java mode change 100644 => 100755 src/main/java/eu/midnightdust/puddles/block/PuddleBlock.java mode change 100644 => 100755 src/main/java/eu/midnightdust/puddles/mixin/MixinServerWorld.java mode change 100644 => 100755 src/main/resources/assets/puddles/blockstates/puddle.json mode change 100644 => 100755 src/main/resources/assets/puddles/icon.png mode change 100644 => 100755 src/main/resources/assets/puddles/lang/en_us.json mode change 100644 => 100755 src/main/resources/assets/puddles/models/block/puddle.json mode change 100644 => 100755 src/main/resources/assets/puddles/models/item/puddle.json mode change 100644 => 100755 src/main/resources/fabric.mod.json mode change 100644 => 100755 src/main/resources/puddles.mixins.json diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 9759196..a74e442 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # Puddles -Adds Puddles. Compatible with any shaderpack! +Adds puddles. Compatible with your favorite shaderpacks & mods! diff --git a/build.gradle b/build.gradle old mode 100644 new mode 100755 index 590713a..e205e7f --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.5-SNAPSHOT' + id 'fabric-loom' version '0.7-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties old mode 100644 new mode 100755 index f6bab1c..fb81335 --- a/gradle.properties +++ b/gradle.properties @@ -4,14 +4,14 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use minecraft_version=1.16.5 - yarn_mappings=1.16.5+build.3 - loader_version=0.11.1 + yarn_mappings=1.16.5+build.9 + loader_version=0.11.3 # Mod Properties - mod_version = 1.0.0 + mod_version = 1.1.0 maven_group = eu.midnightdust archives_base_name = puddles # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.29.4+1.16 \ No newline at end of file + fabric_version=0.34.2+1.16 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar old mode 100644 new mode 100755 index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch delta 23334 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 WDWbsF$p{Gi@ZUasP|4|kdH)CXgbPdn delta 19998 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties old mode 100644 new mode 100755 index 4b7e1f3..442d913 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 index 8e25e6c..4f906e0 --- a/gradlew +++ b/gradlew @@ -82,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -125,10 +126,11 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath @@ -154,19 +156,19 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -175,14 +177,9 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat old mode 100644 new mode 100755 index 9618d8d..107acd3 --- a/gradlew.bat +++ b/gradlew.bat @@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -51,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -61,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/renders/puddle_banner.png b/renders/puddle_banner.png new file mode 100755 index 0000000000000000000000000000000000000000..3b62f4f48c29554f963a62949b8da494b4a63f94 GIT binary patch literal 33738 zcmd@6i$BwU{|Am!>7auSP7#uK<&Z-;Myv?sR8GSjMiMh~$f>ZAW98I=^~ zi|gp^TQ@DZxc2t|?>7(b2maN#u-6^<#_exmsLNGOJ~In^*yn!3^adAKW%A)I7arjA zA>Uhe{#;zgT6Vv<1*DB4xVWOAw{PCCdgR399L_2nbR6Hvsb58S*W15wld}IUe2HH5 z@o(q5wZb1YVomwu&MH0ekZiay9IeqXM{$~TSS1~^3kni)BI~9+-B)$|BsS7c^u!_h zH*Rc}D4xfFV>Um!Rb1`?z4Ii>lK41|f~O2(9wcAe z?kz(+sccp){0Ll#%b9)Rk7Zn=xsJ||xAz`cBy`1LS0Qc~L5z+oD-^ux>{xlvO2j~9 z@WuW(z}68=!#_q&II%}17s=*3Gvc1P2H`wiV8BhY2%A!9J+KhgD8Z=p{iI0Ww_USW zaQ@gk;<9eUemoI4H65|c1TPXp8mzT0w#tE_HJeowfABt-@Kpyrku$q4K$Q4ndnJQ| zJrP|@kngVx^sv7fY;2GntgPM4Y#*}Osj_d=Bd45FHjc42)<<$?PVp^Gh-!)dk5f7~ zat<6L5B&^5OH^&fgA?=YY%bp5_y;jdA%v9!K~o=6bH-ktJ*sv3fBf#*q400tq7h>- zR#ZJa5S!XkU9P&%J*XjHab~rQGhIu`u|u{oMtU!b_YFpf#ldg={~O^Tx5&5F>c#4= zJGM+h2GPhqkTRi;Dn9lxokB4JXONeYG22nrlJ(H5o1gTE+_4h>;|K|8;P_7NnZfp> zuB;$*R;uRXK{4&^YhpxRa@jUYRKZqTfPx0g8Rk5?^+ZHzpf*-TW7ku>K!1YCIpKJ& z%g8*SLp6F>NvdwOPql^bn;xq~Ya6sD-fl1l-3<{Vgpe69bWy>bYlSa8oA3S)%fl_V;f6Wqk<4GNd@9+8PYx;k4`V8Q zS(VVxaLvrbj`^_kz`W$&;6BSZz=};RDv7sINoI9cnp1u0htkNV^#Pjf4@mR5!o~-I zUp!;Z9&OFfhTqEG9{w08!^Ne9`L|ESn&WqxZzL*&mQeU0urKYRmfpCaul;8+ zd|eJSZ*^&i%ysrFiZU1{j+%dBN8dw#zMHiYPW?X`8raoP17i6#n2jmMs+hXc$}Vai z@FYARy%q8+%^=IoQB(cLmEq6e>2#e6^f5cmI2a9%2e-8*YdecNSL~jqSz|Y#xVYK@ zs~gnR2%dP5^!t4I8uf+Nf;-@i99;_-# z%S4Cx-M9OX{K>Au7yljXt!BG1qfYzTfEjzh0;Ahi$srbK&$9L^?-<3uF8t^lK7^J5 zS-Z-PE`O`F(*oTY@)IwA!y694@+;5>!AU^C|B~)8+`XQ2)<0=@H`ukhfM6%oQH|y@ zIZr7GfMdLiQf4hzG^H2A<~!V{@Ww^{r~y0K%)#%8nui*6YN$FS`ehrmfYyB95)e4G z$RBX9NFMmw?{z~0N~A}K>7aLRSN?*?KNUe(YM;lD3}EisPPH0aSVns&M#Xf>8~rY( z$3%*}@>pY{R0MhJ4RQJ6fJj5O*|dXffw{+NWM08?@3yGHXBiFj8;lCXyUQ31ts1d~^{-vSDarmnKHyRV=m>*o>S8#d?Xli?qe~i=2L*Ji3qgnFj(5)d zRlVb*YFeOOUV29PY8rW_D0bOvY6HB35kKI5-Ugd8zfk-nM|(!W4yHou2VcZGRhM0E zlzIguEWn(H{+)}I67pdps+ZZ3Qd9$;9OK4I9`j}$lN()> zQ8~3^H~8g%`?EX!(m|+o*lE@07(-ez^|rBF*o$IUs)sVjbn2%RnReNS6-h}$T%mS*u(QjNoN0{B)@57@`!~D78OkRunBGmjiV$`QpD%1-`4iU%NRnZJIn;9pE@D*;ZZxIhiLw-y=`(KlhD~>EJ&-1y}4_21D=13u6wXY$t3@TI~$7{VhExK z?U>c|Ml;F0eJv~Teh7nZn;}8nYL`ui%%IZPz}`)yI94lpFtVB$byM|MB;^EJ5z=@s zu%)bJCCQ^0NMC<~(CVKclmdc~&IE)o??|uM1f%&Nqh5ipt;b}K^wM-^(!i@bo`mmZ zKO#qu*_n;Fw?3`zY9-`-D+x*%R59KTE6X8?JSm}jzJ8~y$OFr%s&@{gdM*G}unlz3 zVJ+R8{=-z%ej;wyX9 zVQvYO-R(#U7VJZ`pjBU98n$R8#W>%xR4!9#b1lMqCEGCb%*Fkvu~r`pXi2ccjitOj z?;>bx!1(gKp|I94A)-N0h+$k8O{iI_jXGKVDvObhkJZ_YSy{YksB{h~U zwHC6zUHYL{zP@#Oxf$o(#z>&VgS+iyZfZTSPZ0j^i#d$~7t46F1k^hbia2@{tc^~w zafEGD@pYADwEK1JbB7dMauvne36kS|w>>j!bysn=GS}E2D01MmBp?Y^ zAujLv&m3g{6y|!rT|d1)oCwY+TM|dpF{^egl}Quir34MRS|h(+>o0PsFYVc_gOS`dM(h=vS)dfLP80XPAdq*80|D}1wi(w?VAs1_7f%b0ypB(j%H9zfYnboDD zKSd81G?Ju=Vne{#6vra`_Y(LKcows;R7AD!60=nqw&w8bMutJbhJSoF?d4;%5XQ`2 z+lR&41z|E0m3wz_d4%7e62z4N#2bF9oGn4gMCZ;c?q-U3%2BX3X;$Q!HPxfKB_9AI z)NYlw337T_Z&4K-Ny_v;tAk@$YW+^9zu%jJbqXx~YFQfa^FE3pl4xYFvo*9=3wCRA z=ue*b4{sd$x|_o%tdvUw7EDV`78+&JLM&yoAIBk0mrp%d$@1QKX_H!o2J@EVL)s{1 z=jDE!*NS1WtS&H?^TvbeJEGlk68SRMT@zK{cTHo`s~?cTmZe|oOuQL)m}rsIpb^Fo z05aveyZrs%@~QX()ycs%bIo@2-r_vnQI_+@N>)4F2#&X=Ed-_Il=4~2>64o52p>Fa z1hP`|4TGf#aeVzPD~Z`pyGxZ4UHRW7YVo+IAEMt!WG>TZg5wR|IaY+UG33A{e4y3l zL9cj8>VFm8UEeh@_g&2fL#9j!9iBMrzc9L7h~c%;Cbgm) z`iXfm2jl{83vs`&B1K4RF|>{=5Ea5WRrI|F;3HWKK()K#_5Q!bQ)|lqHlGM)W5?VA z3n=y&P3Ofrz~{J3C2x_#2@v@PBfrmpfRBEbz*a2zlTN`i-#bQTsNOh}u~es-O5WIh zMTV%a6o}OP4Y%)qia!N*$EaYZc7oR{53HzqDgRgOs-XZ0PavG!S(0e=n?)x)v_CxI zjbCBP*vJdDdQ=WhPKFcVrk=9a zP0%YjO%u+Cn*1!mOKY$Dg|mvNn>I6X zyuB**rZuUl0g|b`PMq#v!H6A}j`#tX_PoS}A0-|u6Y0=#ler&9SJrNRW<00Z$?rEKhqoPp>y{2!&FU>93`rW?#;;rv&h5A@y--Nxj zLi1-+HH^VD&6fsQGAif;4%h*9QDpfe&yGYSWwUs^rr2|yIDV=SVfxX%y{3|?(ZBg% zmT)%Uy@xh_3e4Nx-^v~>!Xm#3>fr+15?)}9qE|D1IP5*4c<3iXXignq@LpW(;Wj$d_SvdU+IEM134n)jGBv(PsfCTduXFFJJZ zQfSaMN6rVt`e;~hl68L&;!DzO2VxmMF{W9tn%13|;rL=51;^nGYH;@uEH<%s^G4L~ z?)gXCuz&`5&`9^t&#nn4dOdQ7Qcm*d;ABpC`v;lS|60zTaPpaVCj?Hkqkd}ayhE&_ z7>)I#)cI4I#M2fj5DM>-=h*^btp+= z8R+NwFdI*+g9g~{*Uoh?M?+Yf`+G;Mn?8b+wifD*>MaV~ecGf=ZfTU zw_*cdh#BLe;9LKrY9lR{c2N@X}ubxkrEN^>q*V)tt)Z_|^`Jvh5I# zG1WPr7l+Y~KKc>Fs1YD@(BAj5*1*|%BPm9dz|g3tByPPM$(4SzCgyql|KnJq6nK=sb{E7Cd_ zYx>&ihKEH#w1YkMh7r^=+>o_{J^Pz!Pr2mJUY|1?--~~z6a9y$4cRTmh4}!EX_=1# zhj%eh=*6nOzpKkZHM7h2t-1A!=4FcnY-Dh;zf5wJEqnQ&>Z~xp2OU))x7ij-_auHH zS-Kr1&T^Q~#m;{n+vKm8-iqJbOg2>9KpN(mVvF7I?b_EYrPKY>M^ZX}x;uD3^m#au zz9?#!_Qj+Y&$JY{GhM2aU!hQhb6X}KYi<%YP$cRtA_)#F$a;tcNr4txFL)4+xbC>J z)d>c<1&#w`#<-6?z`o=n{xBz86{fq@!jag!QYqqB+%sQ-J!Z@L>)10D>w=aT4UOuZ z^^QSZ1&I(lm{l5|8trIP{vxY?sZ`hZ%|3}N>rTldOC9uiiBwtVet#nu5hI>R`I)Oa zCRXb|_g;;x4tUVw_OM?;tCH^aTUqC(aV+aVj4Lsm=e~}#aU6@G_8Zx|X%2y7WK60N z!fv%r2dybMba}oG!kWdY_kj9rI+f`yR`$`JY;Vy3f^i(b$qf*D$V0&ShtB*%dmnjP z3`;P~vV&op*#KwI4Xx^nLGgGxKHIxL=B9O`S~V{`n-W!>sQaQgIfl0xzmVEefi>jb zn7-LFl3Nt!v%U>(N3>7GhMz&3|B{k$|Lioj?HLd)WcluJ~hn8%I zpnEn4Yr{Y@F}l|DI0LB%01Kl<(k^hi`K>cB&gYf=0L zzy^J(E02C5oj`kTn6;tw`G7eyMjy@{+mb|h>E`!BFqLnJAOF{>tY>@;lK@FnOS$b! ze5w0Jss55l?|ZdFQe=kZ^(47aAI?FXOxowgpyAKj08>>pV8|a4bHcsx7pF7%X6J@Z zK5A6omzr?0PTh7C&gLA_x`WzG3I#0{fPGlWdw@g!YYvf{yxZwvD5A=B>5HaC{t`q* zPGM?fwfgLm)A~1z1w=wgT8Z(|`UZ{mR5|9s=kREZ%#q;$fQSZi<5k}8uV{;AMdprI zLE2NFz9uSw{G*^#CYI_KaEx)oaS2tP622fUpU@p7F9-ojoycReAVDVJ63@oaKMT`O#m0y^%mfS=GJ5eq(QVe(YOfoiu}Dv zF_k=8>RVV2b*H{Nw5MR=_MxXy_z;%PBqqILf2P5u^PHuCgec`ksE!8x z$M62ZhR>twY#CAI;b(V)=rwhVafh04Iz95W84@zZvl^;&zChw-Pyq!%&7r@1fB>RtVd}*Nc)9exL)gm=M16Vv z?p6va_jaf%HAlaDuhJi;h>Pp2Wbo*Y#}}iyx1-)HBv@qhw|byfs?q3MBX?yN#QSH` z%{_)yt9ueWz9;Z;$z~K^&L}g_i{M$F@;xZw54NUJ33IRd-L_CP0&4D zrzv#qLNJMp^CQ08W3H|EI{UZf`AtH57}Vs}nL@kLPMjQqO3G8UhS$}~5QlL`tAKr}XEH`lGnG{3-_x1to zLd~Wqn74;&?wmrtkBpdzQXx@aM;83dGrtyMAmu-K!d)b_;I6aPK$J>imc`owqelS) z()NeRtF<4BJ+tbmKjv4#VVNaNHfG0-syq5UO2xGC{RtTSMg|{#(mch@MnPJm|7o>c zImF?)K~|vRyw))?Ui_Uw7C~FnQq1fIjgDy=WHf0la6TCd6xuPXCU-}Y&BCW+NL$Qm z(mHg|Ourl2KYumTdPN@aAFgks0>!X_r`4n2#R^3jZ*5L>-{u3}KB9@zynig;C4Oh= z54YS4%wfgg_{a#)wgc{SRCTz&(TD6?h?723rDA%uPtkUwrQ_d=k-ln#HL&_+|EQdN z^N+R-y7qFnI_)H~s+fgHRVLf1pdMqRX(IbNTRz+XdGB(`u#3 zw!76Rf*$_OImm5cK)x;2F43x2#b>9EvKNf2rokz1jyp-;>Wn_y6({j{N0o<5AaUfG zK^E(z!u(%w#L3j1p|TUO1cUg(FpoEx_3ft6(1y%96e)AWAFg|&K-b>1# iy+#rQ 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 O91X6SUMZpP$`A(vWXNDVuz+2 zA{tX7A&R1?nG!0;$TZC0xqf=~^WM+%x!?Em-tXVssIId@bi~t+&dM zmB|PpneE#)+aZL9CLWQb;LneftrPGE7i_oH0u{Vi@)dp%4sG1I5g|^zwB!#W{GJoI zZBH;l^B!YgoPxR~8zJq0?VC3`oZLU~-uKSIL*e}IhDwIZ_?sT6E5?1cnq}=xyk)oF zD5Kdi*Xx?&a;E&QSES+}^gJVryi2a9w%@kRa=c}kV0mjhZI0cFr>BjM-Hp*&Fvmge zsp?IdwqNSz<2!u&4WbN6W`~-F->7_JxPLV5SjZcf>E5ZyZLERXz!z^1%O!lN! zHm%1_^Z!5pJ_5AGabu+~_dN*w_@$k5;KY1HQ}kOl@9FcJu1Ot)yhy-$w$v_ImwwND z{fVftpfH)LYmIyPI%~vflLLb1-;Gba`6m&q~P+MnF%Ge_3+V)N$cpT0qM9q<_fy-Hf)+&z=s2TvAhOki7R# zF22BjsIC8+Yv!NL39r65Y5udpx6yAb%CqKCPfFS2i$CTVdZ=6*l@u)c8tz$RwmNCN z$@8pr@*?qr&Yp)2+dNc~x=aslnMg?H#P2h7O4+kY7~?$WR`!3o1WBgMt(B>8${<-VXog+tJ7L&`+1R=AEBH8$0w)GY3Yd|S^oLa>?*fZ##Yi-7`ctp}Ch?UtYrP9}k$_WgD zh}&3^<0=*W-5^1n-mQdthj*K9x_qdg&MrY0!~0XtPg1KY3nTNt(%BicgIeDGU2m-G z^zauAmNN(oefl3t-@2rSpKHMN?5XmMsF~|kLDK(`x+eH#LkZz&At3QTMfYC|^ndo+ z<`V@^d7^hC>ky*kz5!B>OXe7whl=#fgLd~jVCTOE~|Y47<+;bei~mB0Aw0m^rAt>v;|*&cF$UIoOC>Gta8iys=po)2 zoJWIWrf;MGhRU1&ZdP4wN?9bnrXf6&bsK?A(C=Yf#ePrM%+>r?@Bh=(zngWs?m-_P zpUL#7eejzRDr)eIID2_?^I(*7$77rSEx%}{E`<^T4F7u{+7r&y>OZ;eJ&FE%il<-l zE%_cjLjOh8qn>6jbt=P4lh+)tcgq$=kIff%q;&fBB>R`S#ELxzzo(71HCEhomHNKh zkkzhpKd3Uf^k{wF&JB76Mx!Un56YJ;Q+YbhPL`Hw&}zIGk_HC1EhYZip1z#Mi{U!? z&;GtY&0NEuHMF<2q@=C6l6e9^WBR5vT}>W2Zs?I_-?urq zf(vlUWWf0_(Sqj9|JM9i+0wvDxw^Qq$kWgK0j`Uggqw1YwL za@&1zoo{ub#`hRb7r4evoK5a4Kd4{0YV>4j#pz1LD)GaEvfRTxTg$W7gzB)<`Vuz+ zpwZ>s>hNo*FLCF|%w)Zz_4TldX{XM$;X|JOUlTL?i_wSoI#D8`q4{f_`|gFr;g|l4 z8Ztf2I&`j_eAUqE;R{_H|3y2#6mn~pP97d}-#hoqp@s$y(XD^fDEb1f(r6v@%x(}p z;5W4Q`dWXxfD3QD7~cVWc+?YUkbcBKSL$d|^4_Np7TSJc5j@W;;qd<&;eYP^aG>Uq zjN$9B=Q}Kg0Y@%|Gc>XnNtUv|$G0g@&8rd(pFsPuhE>Z5AGd8ont|cU8b0pX{|)8< z>X6Y2{-JfLz74?Y1VwUHqx2J-jR-X^m;9U7>X%bq+81CCqGPTU-%D2SKLBrAT_p7d|7>y?Tuj^wP7WO6bDqc1ym3JTX zpYeY+W_kmo!F2_E@^_p8n^^hfRAuhIg)it#9^L9(TE$0wrUG{<#+ z&9bNyN9#X-aO>In@SuKf@H%Bzq-&&KXk=J}Iky?zsE1ZzmT{VqVJ)(uDPH7F8)!=Q%mC+wFb@SYDu@skmqb%)N<$Dm#*7Yxk zl|c>vmo5E&YpPbT0&4aj3GmAds$%TG>@|p*fmBPf zeD`gwT;lngvA=x!d5_<4WaRF;zB!3(ao(r%cXTEbsIklZP3@oTcEXeReFa|vHibOm zHtzm1(Dbs?!>((peRRnIR>iF|9tVB+MHK^%R=sr_dZl4D_PM)XTr&T|;hbq36#Fq> ziRO`QF(qW;yf?Xd)|ViLNU(rI~b^iRw%=@H8HbXV}e*KL>|IzG5|OMZu+O zQ&75WnG`ndIZRvSWQldF22hZyeb!9(2)w<@e&%geJ?NG%mf{9~OL0>1=Zaj1Zj#U< zp!0n30?7h8+I9htetYFJvxE#8$u8oV$5Bx=9fzpPMU%D!_FACAjWE3$w$O%g60b0d zicW9Dp@i4VB(*lF>pS-!nK=98@Z2Wz(8PM#SrBfqFFQsu$a@HW*s8SIMAV-9T99OP zp~@NSa8n_pyK+2pe;c{sIn47^ zCrI+q#CwPnsAz8t9{s3^WW3VGml3!QL2|=ya{$XtINE4fB;%buAxMUqdy9JaV45AF zc|94W6t5Iz8Pn4f1W7@1EF2t_<@<6b#+0}MnE_ZGrtO7@MZqNi>HTt&iO=!fz7nMn9}4bs9G>k5J&F6TZk21^Dn~0&N6+T* z3IiIoMs#A>W-%xTR#{DAhWkbV`@Uq7RFx>`x2?l{9g9K4XexA+y9-^K%PX`ofjzMa zcA&27BN>b@7&|A_@#kXkY_HE_BAXlK1&lK-X`L-_Rlh~DJ|x;&A4zNeGZa&a9T`ZliZH$2Z05bcim>-CsiOzy z1pGtV3HF_8NB>-gZ9I>N2;5bRpKA=tm-|R#x3Va9g30OpkE@?P zU;(uK0`nu^-Z5XVV+~%L)J*-z5p{=t*d*sgA*OH41svybT6ubBL`+~C{3P!p^u*C) zXrbyzrcOtcRhg0K3Uu>Tc!hdEwoyz~ipM{w&GX2#SwZsw)MwqxB(D;Ok_2r@a01tu zsv9tDYfh#;wUlOhYy5y`U9VV8H1?;WOp#`8 z?>gNE+@VC6HWIlGK61}Au)z=*+#?UClV8R&kEdRWHsWB|ti2a#+p#T1w&I>$^&GbHP&18Wsl?Ehq=1>QBUoY+FX@qKXDy_-2W(Cf zxVka4h0CKDmb(c)WNb`@OxuEam1U9BKVclc?QXE({SHnDK6zEX)f?} zH^F6Qk7Y#Fj9fud5inB4*Nz|o@O!`QBN~-8$qk9=F32)56JJgijf0bGm}$ zm4jR}p#FMBm*!%e_LAZn?Iw_>2GsE%cOg7kL2_9O4^a4IVTz04bAk3ukhB+;8M7rk z&OiiNaEcUS)%jyLgVi2ze0!s1#i!SI7P#2-5zGNWvXJFRlD0TlC&2hGs6wZv*eJ4u0KiuEX;>)=o_5;ic&OS}D4l z3Asut3#@;zT=RO~_>Ik$WTr-&J_d*loTM-Pn4c}-O(wcy3x0N;LWHf_gWM~Ybs!xJ z=7EgFD&Qiy^D^ROV%X+ncC-U$?gmt5b?v-k?jMjwKGw}$;l4Z zn5@J_&(AgJTlwPorM2;Crk!UKZ=%%D2@Z2N*IBK+J>#Qpz4+4wy(RveOn$aHiFcd& zr@fh2=%SP0ae=BIi`RclwIC6RU>7*!s%-da8;>?~R>K@&%MG z&|ZN4j4X7?3M-^Uh*ETsYZPNd2mk9yV0{R)ISJT(b|uW9R@?lF><~k%OwmRzJiVO? zxO_oUHimR!uKa%RyE_#kE=Mt*1AP`mb$YtlP6f6tPp^zB3-mdGWZf&1->-vp*aCUE z%Qk5_y4exFz1)mD2lDt`tKgf{A7%32T8-;Asfy}*t?zKA22ab6j#Owwt}SWD?SX)>LQ|#tZn_pQ*M7aJPXKP6P`g z7JmSZ?$>SY6@f-D+nLo=TL;|Tr0&;Ye{?JmGpE{rD!EFlwYK-q(d}XGJYrGou84ER z+x54ksMNOCGV^-98wQG4_FdA`lX31bG&x91PDz$Wg=nAi;4{29^QROqUKdyl_ByCJ zXdIARC^n|WguAqKEflvmb%!ViJ*=I&>Ntn4+K1N%lkcf7CLHM(wID%WBVAxgm}dKWTR(CsbIUXr6Z6L+)7~@|(l--l^}4?dPf`M{%(ou-zu$!s}^-8{OgH;yDHd8L2V1KaM3yNX2T+>yw|X8y&g zwpoA3!I)i4c*+R2Tib-`(!p9;pj#VXN2XmIKG8o*d9+ShJawmiHp}lgE4#hM#U?2K z?ithLa)py3nL?@(GL_ftjW!A^sAhhsUc1^(g=HZ8I$SpLxGZO${Hx5g>1Th~ zZFfYevUIn>^9w$0rvM4Ij5SKZYS&uTsGogx`+KLj8+vXm=A^Az9v9mgS1Kz$I#?zL z9$_9+Ed&>cxqr2@HCNPylY3kkYEHh^tIMumz4Rg_kTJ>$eq*ZSZXRF+6XW$_!^?Zh z(svPp<}lT+;RSvg_|O|9SF<%RF?8@gArvO2-IjfEL!UoU7P<^X=bBFK7Vp}Y#HRP7 z6>q`IN;B0S;sqi~#0DGXx?bO>kIbz`&4O=*+|wASJ~JRpty;-1%o=yDWquGXS)8R} zZpN@04e6SR-_<(sf{O~cMzvTYVX+54O<}|=Sa#%q{lxjXEk-tiSFLUH#@lO{A1*Fk zT)b4zgJJS{)bkGM^D>FGkXXf8Dd^yz(tgMLG^o}yDU;)9V6!^c+AqV}Xx(;BEN8Ig z486g_Kxi-&cY#v7wLe_BFT}&DiV-&G6hmU>T*V72hCAOrIc+pI?xS)?R%bkCP~2)< zXm+vN;@0XX12L7c!byq2hZff0*V=jVR{b6x3m)uSReG;zR6*4;gNOUb)W9JcK z)f|Y#=2e$X&u5pM6&ZbofWdr9bV>7J3=z!7IOy3m#UL#m+R6UyADmW3N zgW|TxIR~p2jJGFtSELm^Dg__r9(^m(n17=GaO?Vv(j}71j&8o;OBuex+?vtsA23M| zy-1|q?WJ{&mKke#bNwdww-LA$liy0;jfU5JsL5A58p(S1rs;ifnrr{t9M>CbAic5Q zi3<#iVfRGb9xt|Z9AOSme)u^vDcqaM;FP}ndD?ndJUZ!;^7HGa;Is+T00>fZ$}z4) zT$=6vtnm8%l#);%SEDFK%+kyD7EBdR>5*?RCt%H3@um;GS1*Z=_J`Q}4x7{!NS*B9 zPb9x~nq@jIF`V?NOxm}!hhVm{XX8IC8suFyIZ1y})r4Q4Lt9^E z+^_*VpBfiy%dc;3iw$RG6e&uqgNaoyHSrvq)tskhvi4WW%DB)_f%t$jkhbQ7&DR)|ov_SfT%1qlCoasSYx zSA~za$w@|z%$<}+;8bH+OY3{Lf2lPVu4WEQ#jE(or#%=6e3To3lK^%%jsbl%?&0>cF21eb6x|W45J~(W`k*)%!+i!-s3h2;bxn^Bt zJqR!|N=irxvJ$&~)E+5FEA1A??n52{T@EmVO!MXqQC!gyK266@P|+f&0PuYpNPi#x3;kmm636P$KN2_-|d%3)7(r*QwmyK8~5;CB!7=4%9rA{gy8~yjP*K7$G zM&i$&P{bfH_X*eD0g=kZHv_N~wDB*JpANFVNQJ~g*+k?q{c?ft$vqz^ti5Vdk>+<6 zb}SBE>@l0WLK^W{8sw_em2|fNAb=9_25MYKMy@?v#?k>PiPx$YmM)OQX(7V&T5?rn zKArX#TB}S?AA@wl`YdEwf4V@BSY#yJ>dPAnn`|=QIoydyXbsOUblbCnl1@9TjiNi`Dx}mFN7D?>#V1cB@L7PYwS6h_uj4JyO zbeTIMWGcM)uC@P^Z{ztZqb#pYPwMR3#{SC8Jk(^?S@^hoBC1|$lN7VQjk)uhA==mrwFkPJE|zBKD@iVIf%CLz7L)G0 z%~9@9kK&)-hd_SSQN*8nXHwHF(jABaedV07v>gK{D}j3VP@4bSnq0vNci6yOn@sy{ zr9#98p58cw7VuR3)rQ0;piB|h82;^ktQBtvfF!V%P}t9)==Uo#YsAtIHkQ?67S&3Z zuKL+*X~!16;DiOXt}dBIg^cbJPwy>N7HSI+i(^SF#Ofsubk!cS;*JNaMN0?pkT`9` zZPSjX2KHCi#}$N(F$Sl#Qa{?@-2Y^^@IyL23X=`zFZ16N+SA}PvAg0*$N*-Qn;e)&9whp2Ul{Vo-oOi5?XWrm$T4JSb_DK~dl)sD$iW>7T|l_D(~?sh{WHGL0CwTr=$VW=X2?OPJbKfeb6D7QtL#o46Ous{Jl{gxmp z45X(}F9!sdf+D%r6!vov*-ON#x-3!x0O0_-FxI_LV*L!x))tFzJ_pHfCR&>tL)(ev zz2F||*NLvn64`=)S;TY$54x%+F3?>eqCMh|x6Q-jzK64XmW%c!#}wzYj_~zVmYOhc zP8S|Cf}`>k$+XO~bX7WLU?ZRy@Y(^Z9%;0ebby{J0yR4+?3%aKOJMX}=&DJABul8q z&gR}K);r4^x}^@f)1i*mKKLqTy#l`*2m6*NM*OOtK<%hx@EQkB1?#9N5>b+~J;8#4 zYD-B83nX?gK)ZhSJ}m43RCXZ}bM7vr|2&6uS{uD^kW)7nWnpPA_kHW5QAjKffIu6Z z#k2PW(^a?N0{6;67Mzs;E3|b9yHh|j0XUUlbu_%nkpSEEK?z=EU&y5I#5B3-?3RYW z9lP=F{vP?fAyZ-2!-?0YQUI&y`DEm{NHGFxO>_1TYAjY9*w!=R%f8gHZCI}bPG}d>2TMQ zh!^Y~8*vpY7(K9(t+fjtHt~RCZrw&fn=^J1gcKA_y*r<$^5QPcIR|rY!`(tGUI2xv z<)SC|u~&CM5ucMq@=}CX_2UKcUHwm{qXk=!LiaC$okthgfw?4@+ucN}(q?qk1GqpJ zJ@D<&6-2|)9O0_uBKTiNF!^gq%+IIsZ0%Tuh^xe^+)7gQJZ7kO_f?ikgkW|yTn`lg zA-8Q8N_`hYi-Ed}VnpHl>F-Yl&L}mh_}ecR{lk!qV%+`?0fR`)?f0Q_HRC)~R;HtL zb>XV&$yK?pVrX$ZJt!Bf5?yb{&ahn_sV|^c+05bT z3>J{IXW}vlTNe@0?sU>o9}?5s8B862&Tf#zRyLlUSL8zQnLCxS)qMIRvpDWJuwj=x z8RaFElTuBOHGUKxbc&XF-p*r9nD`GmT~|tDWi!rjj73ZHK}R#UP>_SpZn;3n4s`KY z>0K8e3gHo0KW6JiJp1=*T|6jM=mnZTkgkJw;SE7RLNIp$1nog@bMb;ZI{32L+@cba z*KF?n5@49u93t9D-bY9TDRLlSC3gq{$jsVOY)lTupyU}Q&0cYV_LZksN0nVKx}JrR za*%?mnsxEM((K@o=TJjlk`cu?^?5#%!+2_d9hQwpdo5-HqQUj!wS{ZLAINlnbE+s{ z9J83N{`gYN><$!v8t?{vg;WcGA1 zBR>Upi`?ul{rHpzB z0@io*DkAqv9>B_82DhJ8jRDNUwhP3S`FKIU&fiit`v>gHexryRm|@l5QYH)6HRq~k z!nYT8a?WI?+EEakh+();-E2iyJ&FrFfR#(t9I)P#(2KXHt2*KWAANszNQ?#YY{BeL zaA`fKj@s;ky>k@ak=iTgl?CL`PQk_Qiqc18{8N?AwwhTeHRQ|wNR?*;>aK|1;e5QUJKmj(~+K3vQ8BVZS7dkKJ$|OoX)W7&d7HCPmJi9(IA7 z5*pE8+%fd?6eqo?7@1CW^H+)@9>alSKq@h(Kfg5!?zEqkl0=wgzdaxBz1!iqn4a0{ zkx?@{m#U9RL^>0;Tz-!@>2k^ceg{jRA1 literal 0 HcmV?d00001 diff --git a/settings.gradle b/settings.gradle old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/puddles/Puddles.java b/src/main/java/eu/midnightdust/puddles/Puddles.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/puddles/PuddlesClient.java b/src/main/java/eu/midnightdust/puddles/PuddlesClient.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/puddles/block/PuddleBlock.java b/src/main/java/eu/midnightdust/puddles/block/PuddleBlock.java old mode 100644 new mode 100755 index ea98240..82a5f49 --- a/src/main/java/eu/midnightdust/puddles/block/PuddleBlock.java +++ b/src/main/java/eu/midnightdust/puddles/block/PuddleBlock.java @@ -1,166 +1,167 @@ -package eu.midnightdust.puddles.block; - -import eu.midnightdust.puddles.Puddles; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.block.*; -import net.minecraft.entity.ai.pathing.NavigationType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.*; -import net.minecraft.item.*; -import net.minecraft.loot.context.LootContext; -import net.minecraft.potion.PotionUtil; -import net.minecraft.potion.Potions; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; -import net.minecraft.stat.Stats; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; -import net.minecraft.world.BlockView; -import net.minecraft.world.World; -import net.minecraft.world.WorldAccess; -import net.minecraft.world.WorldView; - -import java.util.Collections; -import java.util.List; -import java.util.Random; - -@SuppressWarnings("deprecation") -public class PuddleBlock extends Block { - - protected final FlowableFluid fluid; - public static final VoxelShape COLLISION_SHAPE; - - public PuddleBlock(FlowableFluid fluid, AbstractBlock.Settings settings) { - super(settings); - this.fluid = fluid; - } - @Override - public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { - ItemStack itemStack = player.getStackInHand(hand); - if (itemStack.isEmpty()) { - return ActionResult.PASS; - } else { - Item item = itemStack.getItem(); - ItemStack waterBottleStack; - if (item == Items.GLASS_BOTTLE) { - if (!world.isClient) { - if (!player.abilities.creativeMode) { - waterBottleStack = PotionUtil.setPotion(new ItemStack(Items.POTION), Potions.WATER); - player.incrementStat(Stats.USE_CAULDRON); - itemStack.decrement(1); - if (itemStack.isEmpty()) { - player.setStackInHand(hand, waterBottleStack); - } else if (!player.inventory.insertStack(waterBottleStack)) { - player.dropItem(waterBottleStack, false); - } else if (player instanceof ServerPlayerEntity) { - ((ServerPlayerEntity)player).refreshScreenHandler(player.playerScreenHandler); - } - } - - world.playSound(null, pos, SoundEvents.ITEM_BOTTLE_FILL, SoundCategory.BLOCKS, 1.0F, 1.0F); - world.setBlockState(pos, Blocks.AIR.getDefaultState()); - } - return ActionResult.success(world.isClient); - } - else return ActionResult.FAIL; - } - - } - @Override - public boolean hasRandomTicks(BlockState state) { - return true; - } - @Override - public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { - if (!world.isRaining() && random.nextInt(2000) == 0) { - world.setBlockState(pos, Blocks.AIR.getDefaultState()); - } - - this.scheduledTick(state, world, pos, random); - } - - @Override - public VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { - return context.isAbove(COLLISION_SHAPE, pos, true) ? COLLISION_SHAPE : VoxelShapes.empty(); - } - @Override - public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { - return COLLISION_SHAPE; - } - @Override - public VoxelShape getCullingShape(BlockState state, BlockView world, BlockPos pos) { - return VoxelShapes.empty(); - } - - public boolean canPathfindThrough(BlockState state, BlockView world, BlockPos pos, NavigationType type) { - return true; - } - - public FluidState getFluidState(BlockState state) { - return fluid.getFlowing(1,false); - } - - @Environment(EnvType.CLIENT) - public boolean isSideInvisible(BlockState state, BlockState stateFrom, Direction direction) { - return stateFrom.getFluidState().getFluid().matchesType(this.fluid); - } - - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.INVISIBLE; - } - - public List getDroppedStacks(BlockState state, LootContext.Builder builder) { - return Collections.emptyList(); - } - - public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { - if (world.getBlockState(pos) == Blocks.AIR.getDefaultState() || world.getBlockState(pos) == Puddles.Puddle.getDefaultState()) { - int i; - // Check if there are fluids on the sides or corners of the block above - for (i = 2; i < 6; ++i) { - BlockPos pos1 = pos.up(); - BlockPos pos2 = pos1.offset(Direction.byId(i)); - if (!world.getFluidState(pos1.offset(Direction.byId(i))).isEmpty()) { - // When sides of the block above have water don't place the puddle - return false; - } - if (!world.getFluidState(pos2.offset(Direction.byId(i).rotateYClockwise())).isEmpty()) { - // When corners of the block above have water don't place the puddle - return false; - } - } - // Check if there are fluids on the sides or corners of the block below - for (i = 2; i < 6; ++i) { - BlockPos pos1 = pos.down(); - BlockPos pos2 = pos1.offset(Direction.byId(i)); - if (!world.getFluidState(pos1.offset(Direction.byId(i))).isEmpty()) { - // When sides of the block below have water don't place the puddle - return false; - } - if (!world.getFluidState(pos2.offset(Direction.byId(i).rotateYClockwise())).isEmpty()) { - // When corners of the block below have water don't place the puddle - return false; - } - } - return world.getBlockState(pos.down()).isSideSolidFullSquare(world, pos, Direction.UP); - } - // When there's already another block at the position don't place the puddle - else return false; - } - public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) { - return !state.canPlaceAt(world, pos) ? Blocks.AIR.getDefaultState() : super.getStateForNeighborUpdate(state, direction, newState, world, pos, posFrom); - } - - static { - COLLISION_SHAPE = net.minecraft.block.Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 0.5D, 16.0D); - } -} - +package eu.midnightdust.puddles.block; + +import eu.midnightdust.puddles.Puddles; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.block.*; +import net.minecraft.entity.ai.pathing.NavigationType; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.*; +import net.minecraft.item.*; +import net.minecraft.loot.context.LootContext; +import net.minecraft.potion.PotionUtil; +import net.minecraft.potion.Potions; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.stat.Stats; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; + +import java.util.Collections; +import java.util.List; +import java.util.Random; + +@SuppressWarnings("deprecation") +public class PuddleBlock extends Block { + + protected final FlowableFluid fluid; + public static final VoxelShape COLLISION_SHAPE; + + public PuddleBlock(FlowableFluid fluid, AbstractBlock.Settings settings) { + super(settings); + this.fluid = fluid; + } + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + ItemStack itemStack = player.getStackInHand(hand); + if (itemStack.isEmpty()) { + return ActionResult.PASS; + } else { + Item item = itemStack.getItem(); + ItemStack waterBottleStack; + if (item == Items.GLASS_BOTTLE) { + if (!world.isClient) { + if (!player.abilities.creativeMode) { + waterBottleStack = PotionUtil.setPotion(new ItemStack(Items.POTION), Potions.WATER); + player.incrementStat(Stats.USE_CAULDRON); + itemStack.decrement(1); + if (itemStack.isEmpty()) { + player.setStackInHand(hand, waterBottleStack); + } else if (!player.inventory.insertStack(waterBottleStack)) { + player.dropItem(waterBottleStack, false); + } else if (player instanceof ServerPlayerEntity) { + ((ServerPlayerEntity)player).refreshScreenHandler(player.playerScreenHandler); + } + } + + world.playSound(null, pos, SoundEvents.ITEM_BOTTLE_FILL, SoundCategory.BLOCKS, 1.0F, 1.0F); + world.setBlockState(pos, Blocks.AIR.getDefaultState()); + } + return ActionResult.success(world.isClient); + } + else return ActionResult.FAIL; + } + + } + @Override + public boolean hasRandomTicks(BlockState state) { + return true; + } + @Override + public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { + if (!world.isRaining() && random.nextInt(2000) == 0) { + world.setBlockState(pos, Blocks.AIR.getDefaultState()); + } + + this.scheduledTick(state, world, pos, random); + } + + @Override + public VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return context.isAbove(COLLISION_SHAPE, pos, true) ? COLLISION_SHAPE : VoxelShapes.empty(); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return COLLISION_SHAPE; + } + @Override + public VoxelShape getCullingShape(BlockState state, BlockView world, BlockPos pos) { + return VoxelShapes.empty(); + } + + public boolean canPathfindThrough(BlockState state, BlockView world, BlockPos pos, NavigationType type) { + return true; + } + + public FluidState getFluidState(BlockState state) { + return fluid.getFlowing(1,false); + } + + @Environment(EnvType.CLIENT) + public boolean isSideInvisible(BlockState state, BlockState stateFrom, Direction direction) { + return stateFrom.getFluidState().getFluid().matchesType(this.fluid); + } + + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.INVISIBLE; + } + + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + return Collections.emptyList(); + } + + @Override + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + if (world.getBlockState(pos) == Blocks.AIR.getDefaultState() || world.getBlockState(pos) == Puddles.Puddle.getDefaultState()) { + int i; + // Check if there are fluids on the sides or corners of the block above + for (i = 2; i < 6; ++i) { + BlockPos pos1 = pos.up(); + BlockPos pos2 = pos1.offset(Direction.byId(i)); + if (!world.getFluidState(pos1.offset(Direction.byId(i))).isEmpty()) { + // When sides of the block above have water don't place the puddle + return false; + } + if (!world.getFluidState(pos2.offset(Direction.byId(i).rotateYClockwise())).isEmpty()) { + // When corners of the block above have water don't place the puddle + return false; + } + } + // Check if there are fluids on the sides or corners of the block below + for (i = 2; i < 6; ++i) { + BlockPos pos1 = pos.down(); + BlockPos pos2 = pos1.offset(Direction.byId(i)); + if (!world.getFluidState(pos1.offset(Direction.byId(i))).isEmpty()) { + // When sides of the block below have water don't place the puddle + return false; + } + if (!world.getFluidState(pos2.offset(Direction.byId(i).rotateYClockwise())).isEmpty()) { + // When corners of the block below have water don't place the puddle + return false; + } + } + return world.getBlockState(pos.down()).isSideSolidFullSquare(world, pos, Direction.UP); + } + // When there's already another block at the position don't place the puddle + else return false; + } + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) { + return !state.canPlaceAt(world, pos) ? Blocks.AIR.getDefaultState() : super.getStateForNeighborUpdate(state, direction, newState, world, pos, posFrom); + } + + static { + COLLISION_SHAPE = net.minecraft.block.Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 0.5D, 16.0D); + } +} + diff --git a/src/main/java/eu/midnightdust/puddles/mixin/MixinServerWorld.java b/src/main/java/eu/midnightdust/puddles/mixin/MixinServerWorld.java old mode 100644 new mode 100755 index d1bd884..cb04fe9 --- a/src/main/java/eu/midnightdust/puddles/mixin/MixinServerWorld.java +++ b/src/main/java/eu/midnightdust/puddles/mixin/MixinServerWorld.java @@ -1,63 +1,65 @@ -package eu.midnightdust.puddles.mixin; - -import eu.midnightdust.puddles.Puddles; -import net.minecraft.block.Blocks; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.state.property.Properties; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.math.Direction; -import net.minecraft.util.profiler.Profiler; -import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.*; -import net.minecraft.world.chunk.WorldChunk; -import net.minecraft.world.dimension.DimensionType; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.function.Supplier; - -@Mixin(ServerWorld.class) -public abstract class MixinServerWorld extends World { - protected MixinServerWorld(MutableWorldProperties properties, RegistryKey registryRef, DimensionType dimensionType, Supplier profiler, boolean isClient, boolean debugWorld, long seed) { - super(properties, registryRef, dimensionType, profiler, isClient, debugWorld, seed); - } - - @Shadow protected abstract BlockPos getSurface(BlockPos pos); - - @Inject(at = @At("TAIL"),method = "tickChunk") - public void tickChunk(WorldChunk chunk, int randomTickSpeed, CallbackInfo ci) { - ChunkPos chunkPos = chunk.getPos(); - boolean bl = this.isRaining(); - int x = chunkPos.getStartX(); - int z = chunkPos.getStartZ(); - Profiler profiler = this.getProfiler(); - BlockPos pos; - - if (this.getGameRules().getInt(Puddles.PUDDLE_SPAWN_RATE) != 0) { - profiler.push("puddles"); - if (bl && random.nextInt(10000 / this.getGameRules().getInt(Puddles.PUDDLE_SPAWN_RATE)) == 0) { - pos = this.getSurface(getRandomPosInChunk(x, 0, z, 15)); - if (this.hasRain(pos) && getBlockState(pos.down()).isSideSolidFullSquare(this, pos, Direction.UP)) { - setBlockState(pos, Puddles.Puddle.getDefaultState()); - } - } - profiler.pop(); - } - - if (this.getGameRules().getInt(Puddles.SNOW_STACK_CHANCE) != 0) { - profiler.push("extra_snow"); - if (bl && random.nextInt(10000 / this.getGameRules().getInt(Puddles.SNOW_STACK_CHANCE)) == 0) { - pos = this.getSurface(getRandomPosInChunk(x, 0, z, 15)); - if (this.getBlockState(pos).getBlock() == Blocks.SNOW && getBlockState(pos.down()).isSideSolidFullSquare(this, pos, Direction.UP)) { - int layer = getBlockState(pos).get(Properties.LAYERS); - setBlockState(pos, Blocks.SNOW.getDefaultState().with(Properties.LAYERS, layer + 1)); - } - } - profiler.pop(); - } - } +package eu.midnightdust.puddles.mixin; + +import eu.midnightdust.puddles.Puddles; +import net.minecraft.block.Blocks; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.profiler.Profiler; +import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.*; +import net.minecraft.world.chunk.WorldChunk; +import net.minecraft.world.dimension.DimensionType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.function.Supplier; + +@Mixin(ServerWorld.class) +public abstract class MixinServerWorld extends World { + protected MixinServerWorld(MutableWorldProperties properties, RegistryKey registryRef, DimensionType dimensionType, Supplier profiler, boolean isClient, boolean debugWorld, long seed) { + super(properties, registryRef, dimensionType, profiler, isClient, debugWorld, seed); + } + + @Shadow protected abstract BlockPos getSurface(BlockPos pos); + + @Inject(at = @At("TAIL"),method = "tickChunk") + public void puddles$tickChunk(WorldChunk chunk, int randomTickSpeed, CallbackInfo ci) { + ChunkPos chunkPos = chunk.getPos(); + boolean bl = this.isRaining(); + int x = chunkPos.getStartX(); + int z = chunkPos.getStartZ(); + Profiler profiler = this.getProfiler(); + BlockPos pos; + + if (this.getGameRules().getInt(Puddles.PUDDLE_SPAWN_RATE) != 0) { + profiler.push("puddles"); + if (bl && random.nextInt(10000 / this.getGameRules().getInt(Puddles.PUDDLE_SPAWN_RATE)) == 0) { + pos = this.getSurface(getRandomPosInChunk(x, 0, z, 15)); + if (this.hasRain(pos) && getBlockState(pos.down()).isSideSolidFullSquare(this, pos, Direction.UP) && Puddles.Puddle.canPlaceAt(null,this,pos)) { + setBlockState(pos, Puddles.Puddle.getDefaultState()); + } + } + profiler.pop(); + } + + if (this.getGameRules().getInt(Puddles.SNOW_STACK_CHANCE) != 0) { + profiler.push("extra_snow"); + if (bl && random.nextInt(10000 / this.getGameRules().getInt(Puddles.SNOW_STACK_CHANCE)) == 0) { + pos = this.getSurface(getRandomPosInChunk(x, 0, z, 15)); + if (this.getBlockState(pos).getBlock() == Blocks.SNOW && getBlockState(pos.down()).isSideSolidFullSquare(this, pos, Direction.UP)) { + int layer = getBlockState(pos).get(Properties.LAYERS); + if (layer < 5) { + setBlockState(pos, Blocks.SNOW.getDefaultState().with(Properties.LAYERS, layer + 1)); + } + } + } + profiler.pop(); + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/puddles/blockstates/puddle.json b/src/main/resources/assets/puddles/blockstates/puddle.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/puddles/icon.png b/src/main/resources/assets/puddles/icon.png old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/puddles/lang/en_us.json b/src/main/resources/assets/puddles/lang/en_us.json old mode 100644 new mode 100755 index ee95555..8544624 --- a/src/main/resources/assets/puddles/lang/en_us.json +++ b/src/main/resources/assets/puddles/lang/en_us.json @@ -1,3 +1,3 @@ -{ - "block.puddles.puddle":"Puddle" +{ + "block.puddles.puddle":"Puddle" } \ No newline at end of file diff --git a/src/main/resources/assets/puddles/models/block/puddle.json b/src/main/resources/assets/puddles/models/block/puddle.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/puddles/models/item/puddle.json b/src/main/resources/assets/puddles/models/item/puddle.json old mode 100644 new mode 100755 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json old mode 100644 new mode 100755 diff --git a/src/main/resources/puddles.mixins.json b/src/main/resources/puddles.mixins.json old mode 100644 new mode 100755