diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1c82626
--- /dev/null
+++ b/README.md
@@ -0,0 +1,9 @@
+

+The Mighty Architect
+
+
+
+
+
+
+
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 86b16fb..0000000
--- a/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-## The Mighty Architect for 1.14.2
-Check out the Wiki to learn about the Tool
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 0876fa3..2fa789e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,24 +1,26 @@
buildscript {
repositories {
- maven { url = 'https://files.minecraftforge.net/maven' }
+ maven { url = 'https://maven.minecraftforge.net' }
jcenter()
mavenCentral()
+ maven { url = 'https://maven.parchmentmc.org' }
}
dependencies {
- classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
+ classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: "${forgegradle_version}", changing: true
+ classpath "org.parchmentmc:librarian:${librarian_version}"
}
}
+
apply plugin: 'net.minecraftforge.gradle'
-// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
+apply plugin: 'org.parchmentmc.librarian.forgegradle'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
-version = 'mc1.16.5_v0.5'
+version = "mc${minecraft_version}_v${mod_version}"
group = 'com.simibubi.mightyarchitect'
archivesBaseName = 'mightyarchitect'
-sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8'
-
+java.toolchain.languageVersion = JavaLanguageVersion.of(17)
repositories {
maven {
@@ -26,10 +28,17 @@ repositories {
name = "tterrag maven"
url = "https://maven.tterrag.com/"
}
+ maven {
+ // Location of the maven that hosts JEI files (and TiC)
+ name 'Progwml6 maven'
+ url 'https://dvs1.progwml6.com/files/maven'
+ }
}
+println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
minecraft {
- mappings channel: 'official', version: '1.16.5'
+ mappings channel: 'parchment', version: "${parchment_version}-${minecraft_version}"
+ accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
runs {
client {
@@ -67,7 +76,8 @@ minecraft {
}
dependencies {
- minecraft 'net.minecraftforge:forge:1.16.5-36.2.19'
+ minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
+ runtimeOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}:${jei_version}")
}
jar {
@@ -84,15 +94,12 @@ jar {
}
}
-// Example configuration to allow publishing using the maven-publish task
-// we define a custom artifact that is sourced from the reobfJar output task
-// and then declare that to be published
-// Note you'll need to add a repository here
def reobfFile = file("$buildDir/reobfJar/output.jar")
def reobfArtifact = artifacts.add('default', reobfFile) {
type 'jar'
builtBy 'reobfJar'
}
+
publishing {
publications {
mavenJava(MavenPublication) {
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..05873fa
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,19 @@
+# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
+# This is required to provide enough memory for the Minecraft decompilation process.
+org.gradle.jvmargs = -Xmx3G
+org.gradle.daemon = false
+
+# mod version info
+mod_version = 0.6
+minecraft_version = 1.18.2
+forge_version = 40.1.60
+
+# build dependency versions
+forgegradle_version = 5.1.+
+librarian_version = 1.+
+parchment_version = 2022.07.10
+
+# dependency versions
+jei_minecraft_version = 1.18.2
+jei_version = 9.5.3.143
+
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 7a3265e..7454180 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 949819d..e750102 100644
--- 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-7.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip
diff --git a/gradlew b/gradlew
index cccdd3d..c53aefa 100644
--- a/gradlew
+++ b/gradlew
@@ -1,78 +1,129 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
# Attempt to set APP_HOME
+
# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
+
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
+APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
warn () {
echo "$*"
-}
+} >&2
die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
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
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
- JAVACMD="java"
+ JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
@@ -89,84 +140,95 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
fi
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; 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
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
fi
- i=$((i+1))
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
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" ;;
- esac
fi
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-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
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index f955316..107acd3 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,3 +1,19 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@@ -13,15 +29,18 @@ 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=
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
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.
@@ -35,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%
@@ -45,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/logs/debug.log b/logs/debug.log
deleted file mode 100644
index e69de29..0000000
diff --git a/logs/latest.log b/logs/latest.log
deleted file mode 100644
index e69de29..0000000
diff --git a/src/main/java/com/simibubi/mightyarchitect/AllBlocks.java b/src/main/java/com/simibubi/mightyarchitect/AllBlocks.java
index a400317..2d8b344 100644
--- a/src/main/java/com/simibubi/mightyarchitect/AllBlocks.java
+++ b/src/main/java/com/simibubi/mightyarchitect/AllBlocks.java
@@ -4,10 +4,10 @@
import com.simibubi.mightyarchitect.block.IJustForRendering;
import com.simibubi.mightyarchitect.block.SliceMarkerBlock;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.item.BlockItem;
-import net.minecraft.item.Item;
+import net.minecraft.world.item.BlockItem;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.registries.IForgeRegistry;
public enum AllBlocks {
diff --git a/src/main/java/com/simibubi/mightyarchitect/AllItems.java b/src/main/java/com/simibubi/mightyarchitect/AllItems.java
index c782c4e..cca40ba 100644
--- a/src/main/java/com/simibubi/mightyarchitect/AllItems.java
+++ b/src/main/java/com/simibubi/mightyarchitect/AllItems.java
@@ -2,9 +2,9 @@
import com.simibubi.mightyarchitect.item.ArchitectWandItem;
-import net.minecraft.item.Item;
-import net.minecraft.item.Item.Properties;
-import net.minecraft.item.ItemStack;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.Item.Properties;
+import net.minecraft.world.item.ItemStack;
import net.minecraftforge.registries.IForgeRegistry;
public enum AllItems {
diff --git a/src/main/java/com/simibubi/mightyarchitect/AllPackets.java b/src/main/java/com/simibubi/mightyarchitect/AllPackets.java
index e999f4a..7bd28f5 100644
--- a/src/main/java/com/simibubi/mightyarchitect/AllPackets.java
+++ b/src/main/java/com/simibubi/mightyarchitect/AllPackets.java
@@ -1,13 +1,12 @@
package com.simibubi.mightyarchitect;
-import com.google.common.base.Predicates;
import com.simibubi.mightyarchitect.networking.InstantPrintPacket;
import com.simibubi.mightyarchitect.networking.PlaceSignPacket;
import com.simibubi.mightyarchitect.networking.SetHotbarItemPacket;
-import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.fml.network.NetworkRegistry;
-import net.minecraftforge.fml.network.simple.SimpleChannel;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraftforge.network.NetworkRegistry;
+import net.minecraftforge.network.simple.SimpleChannel;
public class AllPackets {
@@ -15,9 +14,10 @@ public class AllPackets {
public static void registerPackets() {
channel = NetworkRegistry.newSimpleChannel(new ResourceLocation(TheMightyArchitect.ID, "simple_channel"),
- () -> "1", Predicates.alwaysTrue(), v -> v.equals("1"));
+ () -> "1", s -> true, v -> v.equals("1"));
int i = 0;
+
channel.registerMessage(i++, InstantPrintPacket.class, InstantPrintPacket::toBytes, InstantPrintPacket::new,
InstantPrintPacket::handle);
channel.registerMessage(i++, PlaceSignPacket.class, PlaceSignPacket::toBytes, PlaceSignPacket::new,
diff --git a/src/main/java/com/simibubi/mightyarchitect/AllSpecialTextures.java b/src/main/java/com/simibubi/mightyarchitect/AllSpecialTextures.java
index b48d318..55fe80f 100644
--- a/src/main/java/com/simibubi/mightyarchitect/AllSpecialTextures.java
+++ b/src/main/java/com/simibubi/mightyarchitect/AllSpecialTextures.java
@@ -1,7 +1,8 @@
package com.simibubi.mightyarchitect;
-import net.minecraft.client.Minecraft;
-import net.minecraft.util.ResourceLocation;
+import com.mojang.blaze3d.systems.RenderSystem;
+
+import net.minecraft.resources.ResourceLocation;
public enum AllSpecialTextures {
@@ -36,7 +37,7 @@ private AllSpecialTextures(String filename) {
}
public void bind() {
- Minecraft.getInstance().getTextureManager().bind(location);
+ RenderSystem.setShaderTexture(0, location);
}
public ResourceLocation getLocation() {
diff --git a/src/main/java/com/simibubi/mightyarchitect/MightyClient.java b/src/main/java/com/simibubi/mightyarchitect/MightyClient.java
index 1b67988..5398b83 100644
--- a/src/main/java/com/simibubi/mightyarchitect/MightyClient.java
+++ b/src/main/java/com/simibubi/mightyarchitect/MightyClient.java
@@ -1,36 +1,31 @@
package com.simibubi.mightyarchitect;
-import java.util.Random;
-
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.control.ArchitectManager;
import com.simibubi.mightyarchitect.control.SchematicRenderer;
+import com.simibubi.mightyarchitect.foundation.SuperRenderTypeBuffer;
import com.simibubi.mightyarchitect.foundation.utility.AnimationTickHolder;
import com.simibubi.mightyarchitect.foundation.utility.Keyboard;
import com.simibubi.mightyarchitect.foundation.utility.outliner.Outliner;
-import net.minecraft.block.Blocks;
+import net.minecraft.client.Camera;
+import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.ActiveRenderInfo;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.client.renderer.RenderType;
-import net.minecraft.client.settings.KeyBinding;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
-import net.minecraftforge.client.event.RenderWorldLastEvent;
-import net.minecraftforge.client.model.data.EmptyModelData;
+import net.minecraftforge.client.ClientRegistry;
+import net.minecraftforge.client.event.RenderLevelLastEvent;
import net.minecraftforge.event.TickEvent.ClientTickEvent;
import net.minecraftforge.event.TickEvent.Phase;
import net.minecraftforge.eventbus.api.SubscribeEvent;
-import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
@EventBusSubscriber(value = Dist.CLIENT)
public class MightyClient {
- public static KeyBinding COMPOSE;
- public static KeyBinding TOOL_MENU;
+ public static KeyMapping COMPOSE;
+ public static KeyMapping TOOL_MENU;
public static SchematicRenderer renderer = new SchematicRenderer();
public static Outliner outliner = new Outliner();
@@ -38,8 +33,8 @@ public class MightyClient {
public static void init() {
AllItems.initColorHandlers();
String modName = TheMightyArchitect.NAME;
- COMPOSE = new KeyBinding("Start composing", Keyboard.G, modName);
- TOOL_MENU = new KeyBinding("Tool Menu (Hold)", Keyboard.LALT, modName);
+ COMPOSE = new KeyMapping("Start composing", Keyboard.G, modName);
+ TOOL_MENU = new KeyMapping("Tool Menu (Hold)", Keyboard.LALT, modName);
ClientRegistry.registerKeyBinding(COMPOSE);
ClientRegistry.registerKeyBinding(TOOL_MENU);
}
@@ -60,20 +55,22 @@ public static void onTick(ClientTickEvent event) {
}
@SubscribeEvent
- public static void onRenderWorld(RenderWorldLastEvent event) {
- MatrixStack ms = event.getMatrixStack();
- ActiveRenderInfo info = Minecraft.getInstance().gameRenderer.getMainCamera();
- Vector3d view = info.getPosition();
+ public static void onRenderWorld(RenderLevelLastEvent event) {
+ PoseStack ms = event.getPoseStack();
+ Camera info = Minecraft.getInstance().gameRenderer.getMainCamera();
+ Vec3 view = info.getPosition();
ms.pushPose();
ms.translate(-view.x(), -view.y(), -view.z());
- IRenderTypeBuffer.Impl buffer = Minecraft.getInstance()
+ MultiBufferSource.BufferSource buffer = Minecraft.getInstance()
.renderBuffers()
.bufferSource();
- MightyClient.renderer.render(ms, buffer);
- ArchitectManager.render(ms, buffer);
- MightyClient.outliner.renderOutlines(ms, buffer);
+ SuperRenderTypeBuffer b = SuperRenderTypeBuffer.getInstance();
+
+ MightyClient.renderer.render(ms, b);
+ ArchitectManager.render(ms, b);
+ MightyClient.outliner.renderOutlines(ms, b);
// ms.push();
// ms.translate(5, 10, 4);
@@ -83,6 +80,7 @@ public static void onRenderWorld(RenderWorldLastEvent event) {
// ms, buffer.getBuffer(RenderType.getSolid()), true, new Random(), EmptyModelData.INSTANCE);
// ms.pop();
+ b.draw();
buffer.endBatch();
ms.popPose();
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/TheMightyArchitect.java b/src/main/java/com/simibubi/mightyarchitect/TheMightyArchitect.java
index e59330f..5791af0 100644
--- a/src/main/java/com/simibubi/mightyarchitect/TheMightyArchitect.java
+++ b/src/main/java/com/simibubi/mightyarchitect/TheMightyArchitect.java
@@ -3,8 +3,8 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import net.minecraft.block.Block;
-import net.minecraft.item.Item;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.level.block.Block;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.IEventBus;
@@ -23,7 +23,7 @@ public class TheMightyArchitect {
public static final String ID = "mightyarchitect";
public static final String NAME = "The Mighty Architect";
- public static final String VERSION = "0.5";
+ public static final String VERSION = "0.6";
public static TheMightyArchitect instance;
public static Logger logger = LogManager.getLogger();
@@ -36,7 +36,7 @@ public TheMightyArchitect() {
}
private void clientInit(FMLClientSetupEvent event) {
- DistExecutor.runWhenOn(Dist.CLIENT, () -> MightyClient::init);
+ DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> MightyClient::init);
}
private void init(final FMLCommonSetupEvent event) {
diff --git a/src/main/java/com/simibubi/mightyarchitect/block/DesignAnchorBlock.java b/src/main/java/com/simibubi/mightyarchitect/block/DesignAnchorBlock.java
index 9de10c5..898c837 100644
--- a/src/main/java/com/simibubi/mightyarchitect/block/DesignAnchorBlock.java
+++ b/src/main/java/com/simibubi/mightyarchitect/block/DesignAnchorBlock.java
@@ -1,13 +1,11 @@
package com.simibubi.mightyarchitect.block;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.material.Material;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.state.BooleanProperty;
-import net.minecraft.state.StateContainer.Builder;
-
-import net.minecraft.block.AbstractBlock.Properties;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.StateDefinition.Builder;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.material.Material;
public class DesignAnchorBlock extends Block {
@@ -24,7 +22,7 @@ protected void createBlockStateDefinition(Builder builder) {
}
@Override
- public BlockState getStateForPlacement(BlockItemUseContext context) {
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
return defaultBlockState().setValue(compass, true);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/block/SliceMarkerBlock.java b/src/main/java/com/simibubi/mightyarchitect/block/SliceMarkerBlock.java
index 524086c..3c6060c 100644
--- a/src/main/java/com/simibubi/mightyarchitect/block/SliceMarkerBlock.java
+++ b/src/main/java/com/simibubi/mightyarchitect/block/SliceMarkerBlock.java
@@ -3,23 +3,21 @@
import com.simibubi.mightyarchitect.AllItems;
import com.simibubi.mightyarchitect.control.design.DesignSlice.DesignSliceTrait;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.material.Material;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.state.BooleanProperty;
-import net.minecraft.state.EnumProperty;
-import net.minecraft.state.StateContainer.Builder;
-import net.minecraft.util.ActionResultType;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.Hand;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.BlockRayTraceResult;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.world.World;
-
-import net.minecraft.block.AbstractBlock.Properties;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.StateDefinition.Builder;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.properties.EnumProperty;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.phys.BlockHitResult;
public class SliceMarkerBlock extends Block {
@@ -39,28 +37,28 @@ protected void createBlockStateDefinition(Builder builder) {
}
@Override
- public BlockState getStateForPlacement(BlockItemUseContext context) {
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
if (context.getLevel().getBlockState(context.getClickedPos().below()).getBlock() == this)
return defaultBlockState().setValue(compass, false);
return defaultBlockState().setValue(compass, true);
}
@Override
- public ActionResultType use(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn,
- BlockRayTraceResult hit) {
+ public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn,
+ BlockHitResult hit) {
if (hit.getDirection().getAxis() == Axis.Y)
- return ActionResultType.PASS;
+ return InteractionResult.PASS;
if (AllItems.ARCHITECT_WAND.typeOf(player.getItemInHand(handIn)))
- return ActionResultType.PASS;
+ return InteractionResult.PASS;
if (worldIn.isClientSide)
- return ActionResultType.SUCCESS;
+ return InteractionResult.SUCCESS;
DesignSliceTrait currentTrait = state.getValue(VARIANT);
DesignSliceTrait newTrait = currentTrait.cycle(player.isShiftKeyDown() ? -1 : 1);
worldIn.setBlockAndUpdate(pos, state.setValue(VARIANT, newTrait));
- player.displayClientMessage(new StringTextComponent(newTrait.getDescription()), true);
+ player.displayClientMessage(new TextComponent(newTrait.getDescription()), true);
- return ActionResultType.SUCCESS;
+ return InteractionResult.SUCCESS;
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/ArchitectKits.java b/src/main/java/com/simibubi/mightyarchitect/control/ArchitectKits.java
index 9e941dd..300149b 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/ArchitectKits.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/ArchitectKits.java
@@ -7,12 +7,12 @@
import com.simibubi.mightyarchitect.control.palette.Palette;
import com.simibubi.mightyarchitect.networking.SetHotbarItemPacket;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.state.BlockState;
public class ArchitectKits {
@@ -84,9 +84,9 @@ private static void setHotbarBlock(int slot, Palette palette) {
BlockState state = DesignExporter.theme.getDefaultPalette().get(palette);
ItemStack stack = new ItemStack(state.getBlock().asItem());
setHotbarItem(slot,
- stack.setHoverName(new StringTextComponent(TextFormatting.RESET + "" + TextFormatting.GOLD
- + palette.getDisplayName() + TextFormatting.WHITE + " (" + TextFormatting.GRAY
- + stack.getHoverName().getString() + TextFormatting.WHITE + ")")));
+ stack.setHoverName(new TextComponent(ChatFormatting.RESET + "" + ChatFormatting.GOLD
+ + palette.getDisplayName() + ChatFormatting.WHITE + " (" + ChatFormatting.GRAY
+ + stack.getHoverName().getString() + ChatFormatting.WHITE + ")")));
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/ArchitectManager.java b/src/main/java/com/simibubi/mightyarchitect/control/ArchitectManager.java
index d86be8b..8db8cbb 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/ArchitectManager.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/ArchitectManager.java
@@ -9,8 +9,8 @@
import org.apache.commons.io.IOUtils;
import org.lwjgl.glfw.GLFW;
-import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.AllPackets;
import com.simibubi.mightyarchitect.MightyClient;
import com.simibubi.mightyarchitect.control.compose.GroundPlan;
@@ -33,13 +33,13 @@
import com.simibubi.mightyarchitect.gui.ThemeSettingsScreen;
import com.simibubi.mightyarchitect.networking.InstantPrintPacket;
+import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.CompressedStreamTools;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.NbtIo;
+import net.minecraft.network.chat.TextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.InputEvent.KeyInputEvent;
import net.minecraftforge.client.event.InputEvent.MouseInputEvent;
@@ -167,9 +167,9 @@ public static void writeToFile(String name) {
OutputStream outputStream = null;
try {
outputStream = Files.newOutputStream(Paths.get(filepath), StandardOpenOption.CREATE);
- CompoundNBT nbttagcompound = getModel().writeToTemplate()
- .save(new CompoundNBT());
- CompressedStreamTools.writeCompressed(nbttagcompound, outputStream);
+ CompoundTag nbttagcompound = getModel().writeToTemplate()
+ .save(new CompoundTag());
+ NbtIo.writeCompressed(nbttagcompound, outputStream);
} catch (IOException e) {
e.printStackTrace();
} finally {
@@ -181,14 +181,14 @@ public static void writeToFile(String name) {
BlockPos pos = model.getAnchor()
.offset(((TemplateBlockAccess) model.getMaterializedSketch()).getBounds()
.getOrigin());
- StringTextComponent component = new StringTextComponent("Deploy Schematic at: " + TextFormatting.BLUE + "["
+ TextComponent component = new TextComponent("Deploy Schematic at: " + ChatFormatting.BLUE + "["
+ pos.getX() + "," + pos.getY() + "," + pos.getZ() + "]");
Minecraft.getInstance().player.displayClientMessage(component, false);
unload();
}
public static void status(String message) {
- Minecraft.getInstance().player.displayClientMessage(new StringTextComponent(message), true);
+ Minecraft.getInstance().player.displayClientMessage(new TextComponent(message), true);
}
public static void pickPalette() {
@@ -281,7 +281,7 @@ public static void onMouseScrolled(MouseScrollEvent event) {
event.setCanceled(true);
}
- public static void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public static void render(PoseStack ms, MultiBufferSource buffer) {
if (Minecraft.getInstance().level != null)
phase.getPhaseHandler()
.render(ms, buffer);
@@ -335,7 +335,7 @@ public static void tickBlockHighlightOutlines() {
@SubscribeEvent
public static void onDrawGameOverlay(RenderGameOverlayEvent.Pre event) {
- if (event.getType() != ElementType.HOTBAR)
+ if (event.getType() != ElementType.ALL)
return;
IArchitectPhase phaseHandler = phase.getPhaseHandler();
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/ArchitectMenu.java b/src/main/java/com/simibubi/mightyarchitect/control/ArchitectMenu.java
index acf17a7..36fc75d 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/ArchitectMenu.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/ArchitectMenu.java
@@ -16,8 +16,8 @@
import com.simibubi.mightyarchitect.gui.TextInputPromptScreen;
import com.simibubi.mightyarchitect.gui.ThemeSettingsScreen;
+import net.minecraft.Util;
import net.minecraft.client.Minecraft;
-import net.minecraft.util.Util;
public class ArchitectMenu {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/Schematic.java b/src/main/java/com/simibubi/mightyarchitect/control/Schematic.java
index 24116e3..66bae4e 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/Schematic.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/Schematic.java
@@ -15,10 +15,10 @@
import com.simibubi.mightyarchitect.control.palette.PaletteDefinition;
import com.simibubi.mightyarchitect.networking.InstantPrintPacket;
-import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.gen.feature.template.Template;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
public class Schematic {
@@ -198,8 +198,8 @@ private void checkBounds(BlockPos pos) {
bounds.length = z - bounds.z + 1;
}
- public Template writeToTemplate() {
- final Template template = new Template();
+ public StructureTemplate writeToTemplate() {
+ final StructureTemplate template = new StructureTemplate();
template.setAuthor(Minecraft.getInstance().player.getName()
.getString());
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/SchematicRenderer.java b/src/main/java/com/simibubi/mightyarchitect/control/SchematicRenderer.java
index e240708..7724884 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/SchematicRenderer.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/SchematicRenderer.java
@@ -5,22 +5,21 @@
import java.util.Map;
import java.util.Set;
-import org.lwjgl.opengl.GL11;
-
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.BufferBuilder;
+import com.mojang.blaze3d.vertex.DefaultVertexFormat;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.blaze3d.vertex.VertexFormat;
import com.simibubi.mightyarchitect.foundation.MatrixStacker;
import com.simibubi.mightyarchitect.foundation.SuperByteBuffer;
-import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.BlockRendererDispatcher;
-import net.minecraft.client.renderer.BufferBuilder;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.renderer.ItemBlockRenderTypes;
+import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
-import net.minecraft.client.renderer.RenderTypeLookup;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockDisplayReader;
+import net.minecraft.client.renderer.block.BlockRenderDispatcher;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.BlockAndTintGetter;
+import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.ForgeHooksClient;
import net.minecraftforge.client.model.data.EmptyModelData;
@@ -64,7 +63,7 @@ public void tick() {
changed = false;
}
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
if (!active)
return;
@@ -85,11 +84,11 @@ private void redraw(Minecraft minecraft) {
usedBlockRenderLayers.clear();
startedBufferBuilders.clear();
- final IBlockDisplayReader blockAccess = schematic.getMaterializedSketch();
- final BlockRendererDispatcher blockRendererDispatcher = minecraft.getBlockRenderer();
+ final BlockAndTintGetter blockAccess = schematic.getMaterializedSketch();
+ final BlockRenderDispatcher blockRendererDispatcher = minecraft.getBlockRenderer();
Map buffers = new HashMap<>();
- MatrixStack ms = new MatrixStack();
+ PoseStack ms = new PoseStack();
BlockPos.betweenClosedStream(schematic.getLocalBounds()
.toMBB())
@@ -101,22 +100,22 @@ private void redraw(Minecraft minecraft) {
BlockState state = blockAccess.getBlockState(pos);
for (RenderType blockRenderLayer : RenderType.chunkBufferLayers()) {
- if (!RenderTypeLookup.canRenderInLayer(state, blockRenderLayer))
+ if (!ItemBlockRenderTypes.canRenderInLayer(state, blockRenderLayer))
continue;
- ForgeHooksClient.setRenderLayer(blockRenderLayer);
+ ForgeHooksClient.setRenderType(blockRenderLayer);
if (!buffers.containsKey(blockRenderLayer))
- buffers.put(blockRenderLayer, new BufferBuilder(DefaultVertexFormats.BLOCK.getIntegerSize()));
+ buffers.put(blockRenderLayer, new BufferBuilder(DefaultVertexFormat.BLOCK.getIntegerSize()));
BufferBuilder bufferBuilder = buffers.get(blockRenderLayer);
if (startedBufferBuilders.add(blockRenderLayer))
- bufferBuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
- if (blockRendererDispatcher.renderModel(state, pos, blockAccess, ms, bufferBuilder, true,
+ bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLOCK);
+ if (blockRendererDispatcher.renderBatched(state, pos, blockAccess, ms, bufferBuilder, true,
minecraft.level.random, EmptyModelData.INSTANCE)) {
usedBlockRenderLayers.add(blockRenderLayer);
}
}
- ForgeHooksClient.setRenderLayer(null);
+ ForgeHooksClient.setRenderType(null);
ms.popPose();
});
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/TemplateBlockAccess.java b/src/main/java/com/simibubi/mightyarchitect/control/TemplateBlockAccess.java
index aa165d7..848e10b 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/TemplateBlockAccess.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/TemplateBlockAccess.java
@@ -11,26 +11,27 @@
import com.simibubi.mightyarchitect.control.compose.Cuboid;
import com.simibubi.mightyarchitect.foundation.WrappedWorld;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.Blocks;
import net.minecraft.client.Minecraft;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.particles.IParticleData;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.SoundCategory;
-import net.minecraft.util.SoundEvent;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.registry.Registry;
-import net.minecraft.world.EmptyTickList;
-import net.minecraft.world.ITickList;
-import net.minecraft.world.LightType;
-import net.minecraft.world.biome.Biome;
-import net.minecraft.world.biome.Biomes;
-import net.minecraft.world.gen.Heightmap.Type;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Holder;
+import net.minecraft.core.Registry;
+import net.minecraft.core.particles.ParticleOptions;
+import net.minecraft.sounds.SoundEvent;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.level.LightLayer;
+import net.minecraft.world.level.biome.Biome;
+import net.minecraft.world.level.biome.Biomes;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.levelgen.Heightmap.Types;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.world.ticks.BlackholeTickAccess;
+import net.minecraft.world.ticks.LevelTickAccess;
public class TemplateBlockAccess extends WrappedWorld {
@@ -66,7 +67,7 @@ public Set getAllPositions() {
}
@Override
- public TileEntity getBlockEntity(BlockPos pos) {
+ public BlockEntity getBlockEntity(BlockPos pos) {
return null;
}
@@ -85,9 +86,8 @@ public Map getBlockMap() {
}
@Override
- public Biome getBiome(BlockPos pos) {
- return registryAccess().registryOrThrow(Registry.BIOME_REGISTRY)
- .get(Biomes.THE_VOID);
+ public Holder getBiome(BlockPos pos) {
+ return Holder.direct(registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).get(Biomes.THE_VOID));
}
@Override
@@ -96,24 +96,24 @@ public int getMaxLocalRawBrightness(BlockPos p_201696_1_) {
}
@Override
- public List getEntities(Entity arg0, AxisAlignedBB arg1, Predicate super Entity> arg2) {
+ public List getEntities(Entity arg0, AABB arg1, Predicate super Entity> arg2) {
return Collections.emptyList();
}
@Override
- public List getEntitiesOfClass(Class extends T> arg0, AxisAlignedBB arg1,
+ public List getEntitiesOfClass(Class arg0, AABB arg1,
Predicate super T> arg2) {
return Collections.emptyList();
}
@Override
- public List extends PlayerEntity> players() {
+ public List extends Player> players() {
return Collections.emptyList();
}
@Override
- public int getBrightness(LightType lt, BlockPos p_226658_2_) {
- return lt == LightType.BLOCK ? 12 : 14;
+ public int getBrightness(LightLayer lt, BlockPos p_226658_2_) {
+ return lt == LightLayer.BLOCK ? 12 : 14;
}
@Override
@@ -122,12 +122,12 @@ public int getLightEmission(BlockPos pos) {
}
@Override
- public BlockPos getHeightmapPos(Type heightmapType, BlockPos pos) {
+ public BlockPos getHeightmapPos(Types heightmapType, BlockPos pos) {
return BlockPos.ZERO;
}
@Override
- public int getHeight(Type heightmapType, int x, int z) {
+ public int getHeight(Types heightmapType, int x, int z) {
return 256;
}
@@ -153,13 +153,13 @@ public boolean setBlock(BlockPos pos, BlockState state, int p_241211_3_, int p_2
}
@Override
- public ITickList getBlockTicks() {
- return EmptyTickList.empty();
+ public LevelTickAccess getBlockTicks() {
+ return BlackholeTickAccess.emptyLevelList();
}
@Override
- public ITickList getLiquidTicks() {
- return EmptyTickList.empty();
+ public LevelTickAccess getFluidTicks() {
+ return BlackholeTickAccess.emptyLevelList();
}
@Override
@@ -174,15 +174,15 @@ public void updateNeighborsAt(BlockPos p_195593_1_, Block p_195593_2_) {}
public void sendBlockUpdated(BlockPos pos, BlockState oldState, BlockState newState, int flags) {}
@Override
- public void playSound(PlayerEntity player, BlockPos pos, SoundEvent soundIn, SoundCategory category, float volume,
+ public void playSound(Player player, BlockPos pos, SoundEvent soundIn, SoundSource category, float volume,
float pitch) {}
@Override
- public void addParticle(IParticleData particleData, double x, double y, double z, double xSpeed, double ySpeed,
+ public void addParticle(ParticleOptions particleData, double x, double y, double z, double xSpeed, double ySpeed,
double zSpeed) {}
@Override
- public void levelEvent(PlayerEntity player, int type, BlockPos pos, int data) {}
+ public void levelEvent(Player player, int type, BlockPos pos, int data) {}
public Cuboid getBounds() {
return bounds;
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/Cuboid.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/Cuboid.java
index c10c346..517605b 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/Cuboid.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/Cuboid.java
@@ -1,9 +1,9 @@
package com.simibubi.mightyarchitect.control.compose;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.MutableBoundingBox;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.world.level.levelgen.structure.BoundingBox;
+import net.minecraft.world.phys.AABB;
public class Cuboid {
@@ -109,12 +109,12 @@ public boolean equals(Object obj) {
&& ((Cuboid) obj).getSize().equals(getSize());
}
- public MutableBoundingBox toMBB() {
- return new MutableBoundingBox(getOrigin(), getOrigin().offset(getSize()));
+ public BoundingBox toMBB() {
+ return BoundingBox.fromCorners(getOrigin(), getOrigin().offset(getSize()));
}
- public AxisAlignedBB toAABB() {
- return new AxisAlignedBB(getOrigin(), getOrigin().offset(getSize()));
+ public AABB toAABB() {
+ return new AABB(getOrigin(), getOrigin().offset(getSize()));
}
}
\ No newline at end of file
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/GroundPlan.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/GroundPlan.java
index 08be03d..10dcb98 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/GroundPlan.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/GroundPlan.java
@@ -7,7 +7,7 @@
import com.simibubi.mightyarchitect.control.design.DesignTheme;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
public class GroundPlan {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/Room.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/Room.java
index ff25a2e..da6386f 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/Room.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/Room.java
@@ -3,8 +3,8 @@
import com.simibubi.mightyarchitect.control.design.DesignLayer;
import com.simibubi.mightyarchitect.control.design.DesignType;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction.Axis;
public class Room extends Cuboid {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/Stack.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/Stack.java
index 5e80aeb..c52cc19 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/Stack.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/Stack.java
@@ -13,7 +13,7 @@
import com.simibubi.mightyarchitect.control.design.DesignType;
import com.simibubi.mightyarchitect.control.design.ThemeStatistics;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
public class Stack {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/AbstractRoomFaceSelectionTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/AbstractRoomFaceSelectionTool.java
index bb4886e..c4a14a0 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/AbstractRoomFaceSelectionTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/AbstractRoomFaceSelectionTool.java
@@ -3,8 +3,8 @@
import com.simibubi.mightyarchitect.control.compose.Room;
import com.simibubi.mightyarchitect.control.compose.Stack;
-import net.minecraft.client.entity.player.ClientPlayerEntity;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.client.player.LocalPlayer;
+import net.minecraft.core.BlockPos;
public abstract class AbstractRoomFaceSelectionTool extends GroundPlanningToolBase {
@@ -17,7 +17,7 @@ public void init() {
}
@Override
- protected void makeStacksTransparent(ClientPlayerEntity player, BlockPos hit) {}
+ protected void makeStacksTransparent(LocalPlayer player, BlockPos hit) {}
@Override
public void tickToolOutlines() {}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/ComposerToolBase.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/ComposerToolBase.java
index b196d7b..6761b29 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/ComposerToolBase.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/ComposerToolBase.java
@@ -2,8 +2,9 @@
import org.lwjgl.glfw.GLFW;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.platform.Window;
import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.control.ArchitectManager;
import com.simibubi.mightyarchitect.control.Schematic;
import com.simibubi.mightyarchitect.control.compose.GroundPlan;
@@ -13,13 +14,12 @@
import com.simibubi.mightyarchitect.foundation.utility.RaycastHelper;
import com.simibubi.mightyarchitect.foundation.utility.RaycastHelper.PredicateTraceResult;
-import net.minecraft.client.MainWindow;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.player.ClientPlayerEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.MathHelper;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.client.player.LocalPlayer;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.util.Mth;
public abstract class ComposerToolBase implements IComposerTool {
@@ -63,7 +63,7 @@ protected void updateSelectedRooms() {
return;
}
- ClientPlayerEntity player = Minecraft.getInstance().player;
+ LocalPlayer player = Minecraft.getInstance().player;
PredicateTraceResult result = RaycastHelper.rayTraceUntil(player, 70, position -> {
return groundPlan.getRoomAtPos(position.subtract(anchor)) != null;
@@ -89,13 +89,13 @@ protected void updateOverlay() {
}
@Override
- public void renderOverlay(MatrixStack ms) {
- RenderSystem.pushMatrix();
+ public void renderOverlay(PoseStack ms) {
+ ms.pushPose();
Minecraft mc = Minecraft.getInstance();
- MainWindow mainWindow = mc.getWindow();
- RenderSystem.translated(mainWindow.getGuiScaledWidth() / 2, mainWindow.getGuiScaledHeight() / 2 - 3, 0);
- RenderSystem.translated(25,
- -MathHelper.lerp(mc.getFrameTime(), lastToolModeYOffset, toolModeYOffset),
+ Window mainWindow = mc.getWindow();
+ ms.translate(mainWindow.getGuiScaledWidth() / 2, mainWindow.getGuiScaledHeight() / 2 - 3, 0);
+ ms.translate(25,
+ -Mth.lerp(mc.getFrameTime(), lastToolModeYOffset, toolModeYOffset),
0);
if (toolModeNoCtrl != null) {
@@ -111,12 +111,12 @@ public void renderOverlay(MatrixStack ms) {
mc.font.drawShadow(ms, toolModeCtrl, 0, 12, color);
}
- RenderSystem.color4f(1, 1, 1, 1);
- RenderSystem.popMatrix();
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ ms.popPose();
}
protected void status(String message) {
- Minecraft.getInstance().player.displayClientMessage(new StringTextComponent(message), true);
+ Minecraft.getInstance().player.displayClientMessage(new TextComponent(message), true);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/CopyDesignTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/CopyDesignTool.java
index e356d95..f682f2c 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/CopyDesignTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/CopyDesignTool.java
@@ -14,11 +14,11 @@
import com.simibubi.mightyarchitect.control.design.partials.Design;
import com.simibubi.mightyarchitect.foundation.utility.Keyboard;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.world.phys.AABB;
public class CopyDesignTool extends WallDecorationToolBase {
@@ -78,9 +78,10 @@ public void tickToolOutlines() {
Consumer renderCorner = pos -> {
MightyClient.outliner
.showAABB(pos,
- new AxisAlignedBB(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1,
+ new AABB(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1,
pos.getY() + selectedRoom.height, pos.getZ() + 1))
- .lineWidth(1 / 8f);
+ .lineWidth(1 / 8f)
+ .withAlpha(1);
};
renderCorner.accept(origin);
@@ -96,9 +97,10 @@ public void tickToolOutlines() {
BlockPos end = start.offset(size);
MightyClient.outliner
.showAABB(start,
- new AxisAlignedBB(start.getX() - 1 / 2d, start.getY(), start.getZ() - 1 / 2d, end.getX() - 1 / 2d,
+ new AABB(start.getX() - 1 / 2d, start.getY(), start.getZ() - 1 / 2d, end.getX() - 1 / 2d,
end.getY(), end.getZ() - 1 / 2d))
- .lineWidth(1 / 8f);
+ .lineWidth(1 / 8f)
+ .withAlpha(1);
};
if (selectedFace.getAxis() == Axis.X) {
@@ -129,7 +131,7 @@ public String handleRightClick() {
boolean keyDown = Keyboard.isKeyDown(GLFW.GLFW_KEY_LEFT_CONTROL);
if (copiedDesign == null && !keyDown)
- return TextFormatting.RED + "Ctrl+Click to copy a Design";
+ return ChatFormatting.RED + "Ctrl+Click to copy a Design";
DesignPicker designPicker = model.getTheme()
.getDesignPicker();
@@ -153,7 +155,7 @@ public String handleRightClick() {
copiedDesignType = DesignType.WALL;
}
- return "Copied " + TextFormatting.GREEN + copiedDesignType.getDisplayName();
+ return "Copied " + ChatFormatting.GREEN + copiedDesignType.getDisplayName();
}
if (!keyDown && selectedRoom != null) {
@@ -161,10 +163,10 @@ public String handleRightClick() {
if (DesignType.roofTypes()
.contains(copiedDesignType)) {
if (selectedStack.getRoofType() != copiedDesignType)
- return TextFormatting.RED + "Roof types have to match.";
+ return ChatFormatting.RED + "Roof types have to match.";
int facadeWidth = Math.min(selectedStack.highest().width, selectedStack.highest().length);
if (!copiedDesign.fitsHorizontally(facadeWidth))
- return TextFormatting.RED + "Roof does not fit.";
+ return ChatFormatting.RED + "Roof does not fit.";
designPicker.putRoof(selectedStack, copiedDesign);
return pasteSuccessful();
@@ -172,11 +174,11 @@ public String handleRightClick() {
if (copiedDesignType == DesignType.TOWER) {
if (!(selectedStack instanceof CylinderStack))
- return TextFormatting.RED + "Room shapes have to match.";
+ return ChatFormatting.RED + "Room shapes have to match.";
if (!copiedDesign.fitsHorizontally(selectedRoom.width))
- return TextFormatting.RED + "Target needs to have the same diameter.";
+ return ChatFormatting.RED + "Target needs to have the same diameter.";
if (!copiedDesign.fitsVertically(selectedRoom.height))
- return TextFormatting.RED + "Design does not fit the targets height.";
+ return ChatFormatting.RED + "Design does not fit the targets height.";
designPicker.putRoom(selectedRoom, new RoomDesignMapping(copiedDesign));
return pasteSuccessful();
@@ -184,9 +186,9 @@ public String handleRightClick() {
if (copiedDesignType == DesignType.CORNER) {
if (selectedStack instanceof CylinderStack)
- return TextFormatting.RED + "Cylinders cannot have corners.";
+ return ChatFormatting.RED + "Cylinders cannot have corners.";
if (!copiedDesign.fitsVertically(selectedRoom.height))
- return TextFormatting.RED + "Corner Design cannot fit the required height.";
+ return ChatFormatting.RED + "Corner Design cannot fit the required height.";
RoomDesignMapping priorMapping = designPicker.getCachedRoom(selectedRoom);
priorMapping.corner = copiedDesign;
@@ -197,16 +199,16 @@ public String handleRightClick() {
if (copiedDesignType == DesignType.WALL) {
if (selectedStack instanceof CylinderStack)
- return TextFormatting.RED + "Room shapes have to match.";
+ return ChatFormatting.RED + "Room shapes have to match.";
if (selectedFace.getAxis()
.isVertical())
- return TextFormatting.RED + "Cannot apply Wall vertically.";
+ return ChatFormatting.RED + "Cannot apply Wall vertically.";
int wallWidth = selectedFace.getAxis() == Axis.Z ? selectedRoom.width - 2 : selectedRoom.length - 2;
if (!copiedDesign.fitsHorizontally(wallWidth))
- return TextFormatting.RED + "Wall Design cannot fit the required width.";
+ return ChatFormatting.RED + "Wall Design cannot fit the required width.";
if (!copiedDesign.fitsVertically(selectedRoom.height))
- return TextFormatting.RED + "Wall Design cannot fit the required height.";
+ return ChatFormatting.RED + "Wall Design cannot fit the required height.";
RoomDesignMapping priorMapping = designPicker.getCachedRoom(selectedRoom);
if (selectedFace.getAxis() == Axis.Z)
@@ -218,7 +220,7 @@ public String handleRightClick() {
return pasteSuccessful();
}
- return TextFormatting.RED + "Couldn't apply " + copiedDesignType.getDisplayName() + " here.";
+ return ChatFormatting.RED + "Couldn't apply " + copiedDesignType.getDisplayName() + " here.";
}
return super.handleRightClick();
@@ -226,7 +228,7 @@ public String handleRightClick() {
private String pasteSuccessful() {
ArchitectManager.reAssemble();
- return "Applied " + TextFormatting.GREEN + copiedDesignType.getDisplayName();
+ return "Applied " + ChatFormatting.GREEN + copiedDesignType.getDisplayName();
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/CylinderRoomTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/CylinderRoomTool.java
index 9424ede..451a9a2 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/CylinderRoomTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/CylinderRoomTool.java
@@ -14,11 +14,11 @@
import com.simibubi.mightyarchitect.foundation.utility.RaycastHelper;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.player.ClientPlayerEntity;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.BlockRayTraceResult;
-import net.minecraft.util.math.RayTraceResult.Type;
+import net.minecraft.client.player.LocalPlayer;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.phys.HitResult.Type;
public class CylinderRoomTool extends RoomTool {
@@ -32,10 +32,10 @@ public void init() {
@Override
public void updateSelection() {
- ClientPlayerEntity player = Minecraft.getInstance().player;
+ LocalPlayer player = Minecraft.getInstance().player;
transparentStacks.clear();
- BlockRayTraceResult trace = RaycastHelper.rayTraceRange(player.level, player, 75);
+ BlockHitResult trace = RaycastHelper.rayTraceRange(player.level, player, 75);
if (trace != null && trace.getType() == Type.BLOCK) {
BlockPos hit = trace.getBlockPos();
@@ -124,7 +124,7 @@ public void tickToolOutlines() {
BlockPos previouslySelectedPos = (firstPosition != null) ? firstPosition.offset(anchor) : cursorPos;
if (firstPosition == null) {
- MightyClient.outliner.chaseAABB(outlineKey, new AxisAlignedBB(cursorPos))
+ MightyClient.outliner.chaseAABB(outlineKey, new AABB(cursorPos))
.withFaceTexture(AllSpecialTextures.CHECKERED);
return;
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/GroundPlanningToolBase.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/GroundPlanningToolBase.java
index cbbb867..aada8f7 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/GroundPlanningToolBase.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/GroundPlanningToolBase.java
@@ -16,14 +16,14 @@
import com.simibubi.mightyarchitect.foundation.utility.outliner.Outline.OutlineParams;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.player.ClientPlayerEntity;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.item.ItemUseContext;
-import net.minecraft.util.Hand;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.BlockRayTraceResult;
-import net.minecraft.util.math.RayTraceResult.Type;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.client.player.LocalPlayer;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.item.context.UseOnContext;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.phys.HitResult.Type;
+import net.minecraft.world.phys.Vec3;
public abstract class GroundPlanningToolBase extends ComposerToolBase {
@@ -40,17 +40,17 @@ public void init() {
public void updateSelection() {
super.updateSelection();
- ClientPlayerEntity player = Minecraft.getInstance().player;
+ LocalPlayer player = Minecraft.getInstance().player;
transparentStacks.clear();
- BlockRayTraceResult trace = RaycastHelper.rayTraceRange(player.level, player, 75);
+ BlockHitResult trace = RaycastHelper.rayTraceRange(player.level, player, 75);
if (trace != null && trace.getType() == Type.BLOCK) {
BlockPos hit = new BlockPos(trace.getLocation());
makeStacksTransparent(player, hit);
boolean replaceable = player.level.getBlockState(hit)
- .canBeReplaced(new BlockItemUseContext(new ItemUseContext(player, Hand.MAIN_HAND, trace)));
+ .canBeReplaced(new BlockPlaceContext(new UseOnContext(player, InteractionHand.MAIN_HAND, trace)));
if (trace.getDirection()
.getAxis()
.isVertical() && !replaceable)
@@ -67,7 +67,7 @@ public void updateSelection() {
}
- protected void makeStacksTransparent(ClientPlayerEntity player, BlockPos hit) {
+ protected void makeStacksTransparent(LocalPlayer player, BlockPos hit) {
if (!model.getGroundPlan()
.isEmpty()) {
final BlockPos target = hit;
@@ -236,7 +236,7 @@ protected void tickRoofOutlines() {
}
- private Vector3d prevVertex;
+ private Vec3 prevVertex;
private int vertexCounter;
private String key;
@@ -246,8 +246,8 @@ GroundPlanningToolBase key(String key) {
}
GroundPlanningToolBase vertex(double x, double y, double z, List lines) {
- Vector3d previousVec = prevVertex;
- prevVertex = new Vector3d(x, y, z);
+ Vec3 previousVec = prevVertex;
+ prevVertex = new Vec3(x, y, z);
if (previousVec == null)
return this;
lines.add(MightyClient.outliner.chaseLine(key + vertexCounter, previousVec, prevVertex));
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/HeightTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/HeightTool.java
index eaeb90e..df1471f 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/HeightTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/HeightTool.java
@@ -5,7 +5,7 @@
import com.simibubi.mightyarchitect.control.compose.Room;
import com.simibubi.mightyarchitect.foundation.utility.Keyboard;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
public class HeightTool extends AbstractRoomFaceSelectionTool {
@@ -25,12 +25,12 @@ public boolean handleMouseWheel(int scroll) {
.getMaxFloorHeight()) {
selectedRoom.height = model.getTheme()
.getMaxFloorHeight();
- status("Height: " + TextFormatting.AQUA + selectedRoom.height + TextFormatting.WHITE + "m (max)");
+ status("Height: " + ChatFormatting.AQUA + selectedRoom.height + ChatFormatting.WHITE + "m (max)");
return true;
}
if (selectedRoom.height + scroll < 1) {
selectedRoom.height = 1;
- status("Height: " + TextFormatting.AQUA + selectedRoom.height + TextFormatting.WHITE + "m (min)");
+ status("Height: " + ChatFormatting.AQUA + selectedRoom.height + ChatFormatting.WHITE + "m (min)");
return true;
}
@@ -38,13 +38,13 @@ public boolean handleMouseWheel(int scroll) {
selectedStack.forEachAbove(selectedRoom, room -> {
room.y += scroll;
});
- status("Height: " + TextFormatting.AQUA + selectedRoom.height + TextFormatting.WHITE + "m");
+ status("Height: " + ChatFormatting.AQUA + selectedRoom.height + ChatFormatting.WHITE + "m");
} else {
// Move
selectedStack.forRoomAndEachAbove(selectedStack.lowest(), room -> {
room.move(0, scroll, 0);
});
- status("Position: " + TextFormatting.AQUA + selectedStack.lowest().y);
+ status("Position: " + ChatFormatting.AQUA + selectedStack.lowest().y);
}
return true;
}
@@ -65,4 +65,8 @@ public void updateSelection() {
highlightRoom = Keyboard.isKeyDown(GLFW.GLFW_KEY_LEFT_CONTROL);
}
+ @Override
+ public boolean numberInputSimulatesScrolls() {
+ return true;
+ }
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/IComposerTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/IComposerTool.java
index 1c6609a..92942bd 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/IComposerTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/IComposerTool.java
@@ -1,18 +1,48 @@
package com.simibubi.mightyarchitect.control.compose.planner;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import java.util.Arrays;
+import java.util.Optional;
+
+import org.apache.commons.lang3.ArrayUtils;
+import org.lwjgl.glfw.GLFW;
+
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.simibubi.mightyarchitect.foundation.utility.Keyboard;
+
+import net.minecraft.client.KeyMapping;
+import net.minecraft.client.Minecraft;
public interface IComposerTool {
- static Object toolOutlineKey = new Object();
+ Object toolOutlineKey = new Object();
- public String handleRightClick();
- public boolean handleMouseWheel(int scroll);
-
- public void tickToolOutlines();
- public void tickGroundPlanOutlines();
+ String handleRightClick();
+ boolean handleMouseWheel(int scroll);
+
+ default void handleKeyInput(int key) {
+ if (!numberInputSimulatesScrolls())
+ return;
+
+ Optional mapping = Arrays.stream(Minecraft.getInstance().options.keyHotbarSlots).filter(keyMapping -> keyMapping.getKey().getValue() == key).findFirst();
+ if (mapping.isEmpty())
+ return;
+
+ int number = ArrayUtils.indexOf(Minecraft.getInstance().options.keyHotbarSlots, mapping.get()) + 1;
+ if (Keyboard.isKeyDown(GLFW.GLFW_KEY_LEFT_SHIFT) || Keyboard.isKeyDown(GLFW.GLFW_KEY_RIGHT_SHIFT)) {
+ number = number * -1;
+ }
+
+ handleMouseWheel(number);
+
+ }
+ default boolean numberInputSimulatesScrolls() {
+ return false;
+ }
+
+ void tickToolOutlines();
+ void tickGroundPlanOutlines();
- public void updateSelection();
- public void renderOverlay(MatrixStack ms);
- public void init();
+ void updateSelection();
+ void renderOverlay(PoseStack ms);
+ void init();
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/LayerStyleTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/LayerStyleTool.java
index 938b9c4..655c043 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/LayerStyleTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/LayerStyleTool.java
@@ -1,11 +1,17 @@
package com.simibubi.mightyarchitect.control.compose.planner;
+import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
+
+import org.apache.commons.lang3.ArrayUtils;
import com.simibubi.mightyarchitect.control.ArchitectManager;
import com.simibubi.mightyarchitect.control.design.DesignLayer;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
+import net.minecraft.client.KeyMapping;
+import net.minecraft.client.Minecraft;
public class LayerStyleTool extends WallDecorationToolBase {
@@ -29,9 +35,36 @@ public boolean handleMouseWheel(int amount) {
selectedRoom.designLayer = newLayer;
model.getTheme().getDesignPicker().rerollRoom(selectedRoom);
ArchitectManager.reAssemble();
- status("Style: " + TextFormatting.AQUA + newLayer.getDisplayName());
+ status("Style: " + ChatFormatting.AQUA + newLayer.getDisplayName());
return true;
}
+ @Override
+ public void handleKeyInput(int key) {
+ if (selectedRoom == null)
+ return;
+
+ Optional mapping = Arrays.stream(Minecraft.getInstance().options.keyHotbarSlots).filter(keyMapping -> keyMapping.getKey().getValue() == key).findFirst();
+ if (mapping.isEmpty())
+ return;
+
+ DesignLayer currentLayer = selectedRoom.designLayer;
+ List layers = model.getTheme().getRoomLayers();
+
+ int index = ArrayUtils.indexOf(Minecraft.getInstance().options.keyHotbarSlots, mapping.get());
+ if (index > layers.size())
+ return;
+
+ DesignLayer newLayer = layers.get(index);
+
+ if (newLayer == currentLayer)
+ return;
+
+ selectedRoom.designLayer = newLayer;
+ model.getTheme().getDesignPicker().rerollRoom(selectedRoom);
+ ArchitectManager.reAssemble();
+ status("Style: " + ChatFormatting.AQUA + newLayer.getDisplayName());
+
+ }
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/MoveReshapeTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/MoveReshapeTool.java
index 1124036..6788448 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/MoveReshapeTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/MoveReshapeTool.java
@@ -9,8 +9,8 @@
import com.simibubi.mightyarchitect.control.design.ThemeStatistics;
import com.simibubi.mightyarchitect.foundation.utility.Keyboard;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
+import net.minecraft.core.BlockPos;
public class MoveReshapeTool extends AbstractRoomFaceSelectionTool {
@@ -78,16 +78,16 @@ public boolean handleMouseWheel(int scroll) {
});
selectedStack.highest().roofType =
statistics.fallbackRoof(selectedStack.highest(), selectedStack instanceof CylinderStack);
- status("Size: " + TextFormatting.AQUA + selectedRoom.width + TextFormatting.WHITE + "x"
- + TextFormatting.AQUA + selectedRoom.length);
+ status("Size: " + ChatFormatting.AQUA + selectedRoom.width + ChatFormatting.WHITE + "x"
+ + ChatFormatting.AQUA + selectedRoom.length);
} else {
// Move
selectedStack.forRoomAndEachAbove(selectedRoom, room -> {
BlockPos diff = BlockPos.ZERO.relative(selectedFace, scroll);
room.move(-diff.getX(), 0, -diff.getZ());
});
- status("Position: " + TextFormatting.AQUA + selectedRoom.x + TextFormatting.WHITE + ", "
- + TextFormatting.AQUA + selectedRoom.z);
+ status("Position: " + ChatFormatting.AQUA + selectedRoom.x + ChatFormatting.WHITE + ", "
+ + ChatFormatting.AQUA + selectedRoom.z);
}
return true;
}
@@ -95,4 +95,8 @@ public boolean handleMouseWheel(int scroll) {
return super.handleMouseWheel(scroll);
}
+ @Override
+ public boolean numberInputSimulatesScrolls() {
+ return true;
+ }
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/PalettePainterTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/PalettePainterTool.java
index 077082f..4369ca5 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/PalettePainterTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/PalettePainterTool.java
@@ -1,11 +1,17 @@
package com.simibubi.mightyarchitect.control.compose.planner;
+import java.util.Arrays;
+import java.util.Optional;
+
+import org.apache.commons.lang3.ArrayUtils;
import org.lwjgl.glfw.GLFW;
import com.simibubi.mightyarchitect.control.ArchitectManager;
import com.simibubi.mightyarchitect.foundation.utility.Keyboard;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
+import net.minecraft.client.KeyMapping;
+import net.minecraft.client.Minecraft;
public class PalettePainterTool extends WallDecorationToolBase {
@@ -25,7 +31,7 @@ public void init() {
public boolean handleMouseWheel(int amount) {
if (model.getPrimary().getName().equals(model.getSecondary().getName())) {
- status(TextFormatting.RED + "Choose a secondary Palette first [ G -> C ]");
+ status(ChatFormatting.RED + "Choose a secondary Palette first [ G -> C ]");
return true;
}
@@ -48,7 +54,40 @@ public boolean handleMouseWheel(int amount) {
status(selectedRoom.secondaryPalette ? "Secondary Palette" : "Primary Palette");
return true;
}
-
+
+ @Override
+ public void handleKeyInput(int key) {
+ Optional mapping = Arrays.stream(Minecraft.getInstance().options.keyHotbarSlots).filter(keyMapping -> keyMapping.getKey().getValue() == key).findFirst();
+ if (mapping.isEmpty())
+ return;
+
+ int index = ArrayUtils.indexOf(Minecraft.getInstance().options.keyHotbarSlots, mapping.get());
+ if (index > 1)
+ return;
+
+ if (model.getPrimary().getName().equals(model.getSecondary().getName())) {
+ status(ChatFormatting.RED + "Choose a secondary Palette first [ G -> C ]");
+ return;
+ }
+
+ if (selectedRoom == null) {
+ status("Point at the Room to modify.");
+ return;
+ }
+
+ if (Keyboard.isKeyDown(GLFW.GLFW_KEY_LEFT_CONTROL)) {
+ // Paint Room
+ selectedRoom.secondaryPalette = index == 1;
+
+ } else {
+ // Paint Stack
+ selectedStack.forEach(room -> room.secondaryPalette = index == 1);
+ }
+
+ ArchitectManager.reAssemble();
+ status(selectedRoom.secondaryPalette ? "Secondary Palette" : "Primary Palette");
+ }
+
@Override
public void updateSelection() {
super.updateSelection();
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RerollTargetTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RerollTargetTool.java
index 53ede1c..e0a0553 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RerollTargetTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RerollTargetTool.java
@@ -5,7 +5,7 @@
import com.simibubi.mightyarchitect.control.ArchitectManager;
import com.simibubi.mightyarchitect.foundation.utility.Keyboard;
-import net.minecraft.util.Direction;
+import net.minecraft.core.Direction;
public class RerollTargetTool extends WallDecorationToolBase {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RoofTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RoofTool.java
index 84f0af8..abe596a 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RoofTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RoofTool.java
@@ -4,7 +4,7 @@
import com.simibubi.mightyarchitect.control.compose.Room;
import com.simibubi.mightyarchitect.control.design.DesignType;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
public class RoofTool extends AbstractRoomFaceSelectionTool {
@@ -51,9 +51,9 @@ public void updateSelection() {
if (selectedStack == null)
return;
if (selectedStack.highest().quadFacadeRoof)
- status("Roof Type: " + TextFormatting.AQUA + "4-Facade Gable Roof");
+ status("Roof Type: " + ChatFormatting.AQUA + "4-Facade Gable Roof");
else
- status("Roof Type: " + TextFormatting.AQUA + selectedStack.highest().roofType.getDisplayName());
+ status("Roof Type: " + ChatFormatting.AQUA + selectedStack.highest().roofType.getDisplayName());
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RoomTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RoomTool.java
index 32e9cd6..e8c9b65 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RoomTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/RoomTool.java
@@ -16,8 +16,8 @@
import com.simibubi.mightyarchitect.control.design.ThemeStatistics;
import com.simibubi.mightyarchitect.foundation.utility.Keyboard;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.phys.Vec3;
public class RoomTool extends GroundPlanningToolBase {
@@ -54,7 +54,7 @@ public String handleRightClick() {
} else {
return createRoom(ArchitectManager.getModel()
- .getGroundPlan());
+ .getGroundPlan());
}
}
@@ -66,7 +66,7 @@ protected String createRoom(GroundPlan groundPlan) {
DesignTheme theme = groundPlan.theme;
ThemeStatistics stats = theme.getStatistics();
boolean hasFoundation = theme.getLayers()
- .contains(DesignLayer.Foundation);
+ .contains(DesignLayer.Foundation);
room.designLayer = hasFoundation ? DesignLayer.Foundation : DesignLayer.Regular;
int facadeWidth = Math.min(room.width, room.length);
@@ -106,7 +106,7 @@ protected boolean adjustHeightForIntersection(GroundPlan groundPlan, Room room)
groundPlan.forEachRoom(r -> {
if (r.intersects(room) && !(r.y + r.height <= room.y || room.y + room.height <= r.y)
- && (biggestRoom.getValue() == null
+ && (biggestRoom.getValue() == null
|| biggestRoom.getValue().width * biggestRoom.getValue().length < r.width * r.length)) {
biggestRoom.setValue(r);
}
@@ -130,7 +130,7 @@ public static void increaseMatchingOthers(GroundPlan groundPlan, Stack stack) {
if (r == added)
return;
if (r.intersects(added) && r.y <= added.y && r.y + r.height > added.y && (biggestRoom.getValue() == null
- || biggestRoom.getValue().width * biggestRoom.getValue().length < r.width * r.length)) {
+ || biggestRoom.getValue().width * biggestRoom.getValue().length < r.width * r.length)) {
biggestRoom.setValue(r);
}
});
@@ -146,13 +146,13 @@ public boolean handleMouseWheel(int scroll) {
if (scroll > 0) {
increaseMatchingOthers(ArchitectManager.getModel()
- .getGroundPlan(), lastAddedStack);
+ .getGroundPlan(), lastAddedStack);
} else {
lastAddedStack.decrease();
if (lastAddedStack.floors() == 0) {
ArchitectManager.getModel()
- .getGroundPlan()
- .remove(lastAddedStack);
+ .getGroundPlan()
+ .remove(lastAddedStack);
lastAddedStack = null;
}
}
@@ -213,7 +213,7 @@ public void tickToolOutlines() {
return;
BlockPos anchor = ArchitectManager.getModel()
- .getAnchor();
+ .getAnchor();
BlockPos cursorPos = (anchor != null) ? selectedPosition.offset(anchor) : selectedPosition;
BlockPos previouslySelectedPos = (firstPosition != null) ? firstPosition.offset(anchor) : cursorPos;
@@ -223,8 +223,9 @@ public void tickToolOutlines() {
selection.length += 1;
MightyClient.outliner.chaseAABB(outlineKey, selection.toAABB())
- .withFaceTexture(AllSpecialTextures.CHECKERED)
- .colored(0);
+ .withFaceTexture(AllSpecialTextures.CHECKERED)
+ .withAlpha(0.75f)
+ .colored(0x0);
if (firstPosition == null)
return;
@@ -242,11 +243,11 @@ protected void drawTextAroundBounds(Cuboid selection) {
}
private void chaseText(Object key, float x, float y, float z, String text) {
- MightyClient.outliner.chaseText(key, new Vector3d(x, y, z), text)
- .colored(0)
- .coloredFaces(0xffffff)
- .disableNormals()
- .withFaceTexture(AllSpecialTextures.BLANK);
+ MightyClient.outliner.chaseText(key, new Vec3(x, y, z), text)
+ .colored(0)
+ .coloredFaces(0xffffff)
+ .disableNormals()
+ .withFaceTexture(AllSpecialTextures.BLANK);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/StackTool.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/StackTool.java
index 434cd06..46946de 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/StackTool.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/StackTool.java
@@ -9,7 +9,7 @@
import com.simibubi.mightyarchitect.control.compose.Stack;
import com.simibubi.mightyarchitect.foundation.utility.Keyboard;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
public class StackTool extends AbstractRoomFaceSelectionTool {
@@ -68,7 +68,7 @@ public void updateSelection() {
highlightRoom = Keyboard.isKeyDown(GLFW.GLFW_KEY_LEFT_CONTROL);
if (selectedStack != null)
- status("Floors: " + TextFormatting.AQUA + selectedStack.floors());
+ status("Floors: " + ChatFormatting.AQUA + selectedStack.floors());
}
public static void insertMatchingOthers(GroundPlan groundPlan, Stack stack, int index) {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/WallDecorationToolBase.java b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/WallDecorationToolBase.java
index fa4846d..05219bf 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/WallDecorationToolBase.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/compose/planner/WallDecorationToolBase.java
@@ -4,9 +4,9 @@
import com.simibubi.mightyarchitect.control.compose.Cuboid;
import com.simibubi.mightyarchitect.control.compose.Room;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.world.phys.AABB;
public abstract class WallDecorationToolBase extends ComposerToolBase {
@@ -50,8 +50,12 @@ public void tickToolOutlines() {
max = max.offset(0, selectedRoom.height, 0);
}
- MightyClient.outliner.chaseAABB(toolOutlineKey, new AxisAlignedBB(min.getX() - 1 / 2d,
- min.getY() + 1 / 4d, min.getZ() - 1 / 2d, max.getX() + 1 / 2d, max.getY(), max.getZ() + 1 / 2d)).lineWidth(1/8f);
+ //highlight room
+ MightyClient.outliner.chaseAABB(toolOutlineKey, new AABB(min.getX() - 1 / 2d,
+ min.getY() + 1 / 4d, min.getZ() - 1 / 2d, max.getX() + 1 / 2d, max.getY(), max.getZ() + 1 / 2d))
+ .lineWidth(1/8f)
+ .colored(0xffffff)
+ .withAlpha(1);
return;
}
@@ -84,8 +88,13 @@ public void tickToolOutlines() {
BlockPos max = stack.getOrigin()
.offset(stack.getSize())
.offset(model.getAnchor());
- MightyClient.outliner.chaseAABB(toolOutlineKey, new AxisAlignedBB(min.getX() - 1 / 2d, min.getY() + 1 / 4d,
- min.getZ() - 1 / 2d, max.getX() + 1 / 2d, max.getY(), max.getZ() + 1 / 2d)).lineWidth(1/8f);
+
+ //highlight stack
+ MightyClient.outliner.chaseAABB(toolOutlineKey, new AABB(min.getX() - 1 / 2d, min.getY() + 1 / 4d,
+ min.getZ() - 1 / 2d, max.getX() + 1 / 2d, max.getY(), max.getZ() + 1 / 2d))
+ .lineWidth(1/8f)
+ .colored(0xffffff)
+ .withAlpha(1);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/DesignExporter.java b/src/main/java/com/simibubi/mightyarchitect/control/design/DesignExporter.java
index eac5f5b..7d99bb5 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/DesignExporter.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/DesignExporter.java
@@ -18,16 +18,16 @@
import com.simibubi.mightyarchitect.foundation.utility.FilesHelper;
import com.simibubi.mightyarchitect.networking.PlaceSignPacket;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.Blocks;
import net.minecraft.client.Minecraft;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTUtil;
-import net.minecraft.tileentity.SignTileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.world.World;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtUtils;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.entity.SignBlockEntity;
+import net.minecraft.world.level.block.state.BlockState;
public class DesignExporter {
@@ -41,7 +41,7 @@ public class DesignExporter {
public static boolean changed = true;
- public static String exportDesign(World worldIn, BlockPos anchor) {
+ public static String exportDesign(Level worldIn, BlockPos anchor) {
BlockPos layerDefAnchor = anchor;
boolean found = false;
for (int range = 1; range < 100 && !found; range++) {
@@ -94,13 +94,13 @@ public static String exportDesign(World worldIn, BlockPos anchor) {
PhaseEditTheme.resetVisualization();
// Assemble nbt
- CompoundNBT compound = new CompoundNBT();
- compound.put("Size", NBTUtil.writeBlockPos(size));
+ CompoundTag compound = new CompoundTag();
+ compound.put("Size", NbtUtils.writeBlockPos(size));
- ListNBT layers = new ListNBT();
+ ListTag layers = new ListTag();
for (int y = 0; y < size.getY(); y++) {
- CompoundNBT layerTag = new CompoundNBT();
+ CompoundTag layerTag = new CompoundTag();
DesignSliceTrait trait = DesignSliceTrait.values()[markerValueAt(worldIn, layerDefAnchor.above(y))];
layerTag.putString("Trait", trait.name());
@@ -114,7 +114,7 @@ public static String exportDesign(World worldIn, BlockPos anchor) {
if (block == null && blockState.getBlock() != Blocks.AIR) {
Minecraft.getInstance().player.displayClientMessage(
- new StringTextComponent(blockState.getBlock()
+ new TextComponent(blockState.getBlock()
.getDescriptionId() + " @" + pos.getX() + "," + pos.getY() + "," + pos.getZ()
+ " does not belong to the Scanner Palette"), false);
return "Export failed";
@@ -187,8 +187,8 @@ public static String exportDesign(World worldIn, BlockPos anchor) {
BlockPos signPos = anchor.above();
if (worldIn.getBlockState(signPos)
.getBlock() == Blocks.SPRUCE_SIGN) {
- SignTileEntity sign = (SignTileEntity) worldIn.getBlockEntity(signPos);
- filename = sign.getMessage(1)
+ SignBlockEntity sign = (SignBlockEntity) worldIn.getBlockEntity(signPos);
+ filename = sign.getMessage(1, false)
.getString();
designPath = typePath + "/" + filename;
@@ -228,11 +228,11 @@ public static DesignTheme getTheme() {
return theme;
}
- private static boolean isMarker(World worldIn, BlockPos pos) {
+ private static boolean isMarker(Level worldIn, BlockPos pos) {
return AllBlocks.SLICE_MARKER.typeOf(worldIn.getBlockState(pos));
}
- private static int markerValueAt(World worldIn, BlockPos pos) {
+ private static int markerValueAt(Level worldIn, BlockPos pos) {
return worldIn.getBlockState(pos)
.getValue(SliceMarkerBlock.VARIANT)
.ordinal();
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/DesignResourceLoader.java b/src/main/java/com/simibubi/mightyarchitect/control/design/DesignResourceLoader.java
index 541c845..ea2dddc 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/DesignResourceLoader.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/DesignResourceLoader.java
@@ -16,9 +16,9 @@
import com.simibubi.mightyarchitect.control.design.partials.Design;
import com.simibubi.mightyarchitect.foundation.utility.FilesHelper;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.CompressedStreamTools;
-import net.minecraft.nbt.ListNBT;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtIo;
public class DesignResourceLoader {
@@ -51,7 +51,7 @@ public static Map>> loadDesignsForTheme
public static Map>> loadExternalDesignsForTheme(DesignTheme theme) {
final Map>> designMap = new HashMap<>();
boolean isFile = theme.getFilePath().endsWith(".theme") || theme.getFilePath().endsWith(".json");
- final Map>> compoundMap = isFile ? loadThemeFromThemeFile(theme) : loadThemeFromFolder(theme);
+ final Map>> compoundMap = isFile ? loadThemeFromThemeFile(theme) : loadThemeFromFolder(theme);
theme.getLayers().forEach(layer -> {
if (!compoundMap.containsKey(layer))
@@ -71,16 +71,16 @@ public static Map>> loadExternalDesigns
return designMap;
}
- private static Map>> loadThemeFromThemeFile(DesignTheme theme) {
- final Map>> compoundMap = new HashMap<>();
+ private static Map>> loadThemeFromThemeFile(DesignTheme theme) {
+ final Map>> compoundMap = new HashMap<>();
- CompoundNBT importedThemeFile = new CompoundNBT();
+ CompoundTag importedThemeFile = new CompoundTag();
if (theme.getFilePath().endsWith(".theme")) {
try {
InputStream inputStream = Files.newInputStream(Paths.get("themes/" + theme.getFilePath()),
StandardOpenOption.READ);
- importedThemeFile = CompressedStreamTools.readCompressed(inputStream);
+ importedThemeFile = NbtIo.readCompressed(inputStream);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
@@ -89,21 +89,21 @@ private static Map>> loadThemeFrom
importedThemeFile = FilesHelper.loadJsonAsNBT("themes/" + theme.getFilePath());
}
- final CompoundNBT themeFile = importedThemeFile;
+ final CompoundTag themeFile = importedThemeFile;
if (themeFile.contains("Designs")) {
theme.getLayers().forEach(layer -> {
- final HashMap> typeMap = new HashMap<>();
+ final HashMap> typeMap = new HashMap<>();
theme.getTypes().forEach(type -> {
- Set designs = new HashSet<>();
- CompoundNBT tagLayers = themeFile.getCompound("Designs");
+ Set designs = new HashSet<>();
+ CompoundTag tagLayers = themeFile.getCompound("Designs");
if (tagLayers.contains(layer.name())) {
- CompoundNBT tagTypes = tagLayers.getCompound(layer.name());
+ CompoundTag tagTypes = tagLayers.getCompound(layer.name());
if (tagTypes.contains(type.name())) {
- ListNBT tagDesigns = tagTypes.getList(type.name(), 10);
- tagDesigns.forEach(tag -> designs.add((CompoundNBT) tag));
+ ListTag tagDesigns = tagTypes.getList(type.name(), 10);
+ tagDesigns.forEach(tag -> designs.add((CompoundTag) tag));
}
}
typeMap.put(type, designs);
@@ -116,8 +116,8 @@ private static Map>> loadThemeFrom
return compoundMap;
}
- public static Map>> loadThemeFromFolder(DesignTheme theme) {
- final Map>> compoundMap = new HashMap<>();
+ public static Map>> loadThemeFromFolder(DesignTheme theme) {
+ final Map>> compoundMap = new HashMap<>();
String folderPath = "themes";
String themePath = folderPath + "/" + theme.getFilePath();
@@ -127,7 +127,7 @@ public static Map>> loadThemeFromF
theme.getLayers().forEach(layer -> {
- final HashMap> typeMap = new HashMap<>();
+ final HashMap> typeMap = new HashMap<>();
theme.getTypes().forEach(type -> {
String path = folderPath + "/" + theme.getFilePath() + "/" + layer.getFilePath() + "/"
@@ -150,7 +150,7 @@ private static Set importDesigns(DesignTheme theme, DesignLayer layer, D
final String path = folderPath + "/design" + ((index == 0) ? "" : "_" + index) + ".json";
if (TheMightyArchitect.class.getClassLoader().getResource(path) == null)
break;
- final CompoundNBT designTag = FilesHelper.loadJsonResourceAsNBT(path);
+ final CompoundTag designTag = FilesHelper.loadJsonResourceAsNBT(path);
designs.add(type.getDesign().fromNBT(designTag));
index++;
}
@@ -158,9 +158,9 @@ private static Set importDesigns(DesignTheme theme, DesignLayer layer, D
return designs;
}
- private static Set importExternalDesigns(DesignTheme theme, DesignLayer layer, DesignType type,
+ private static Set importExternalDesigns(DesignTheme theme, DesignLayer layer, DesignType type,
String folderPath) {
- final Set designs = new HashSet<>();
+ final Set designs = new HashSet<>();
if (!Files.exists(Paths.get(folderPath)))
return designs;
@@ -168,7 +168,7 @@ private static Set importExternalDesigns(DesignTheme theme, DesignL
try {
DirectoryStream newDirectoryStream = Files.newDirectoryStream(Paths.get(folderPath));
for (Path path : newDirectoryStream) {
- final CompoundNBT designTag = FilesHelper.loadJsonAsNBT(path.toString());
+ final CompoundTag designTag = FilesHelper.loadJsonAsNBT(path.toString());
designs.add(designTag);
}
newDirectoryStream.close();
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/DesignSlice.java b/src/main/java/com/simibubi/mightyarchitect/control/design/DesignSlice.java
index 61ee93f..0c91321 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/DesignSlice.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/DesignSlice.java
@@ -9,14 +9,14 @@
import com.simibubi.mightyarchitect.control.palette.Palette;
import com.simibubi.mightyarchitect.control.palette.PaletteBlockInfo;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.IStringSerializable;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.util.StringRepresentable;
public class DesignSlice {
- public enum DesignSliceTrait implements IStringSerializable {
+ public enum DesignSliceTrait implements StringRepresentable {
Standard("-> Use this slice once"),
CloneOnce("-> Duplicate this slice if necessary"),
CloneThrice("-> Duplicate up to 3 times"),
@@ -49,7 +49,7 @@ public DesignSliceTrait cycle(int amount) {
private Palette[][] blocks;
private BlockOrientation[][] orientations;
- public static DesignSlice fromNBT(CompoundNBT sliceTag) {
+ public static DesignSlice fromNBT(CompoundTag sliceTag) {
DesignSlice slice = new DesignSlice();
slice.trait = DesignSliceTrait.valueOf(sliceTag.getString("Trait"));
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/DesignTheme.java b/src/main/java/com/simibubi/mightyarchitect/control/design/DesignTheme.java
index 880eaaa..cb408a4 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/DesignTheme.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/DesignTheme.java
@@ -10,9 +10,9 @@
import com.simibubi.mightyarchitect.control.design.partials.Design;
import com.simibubi.mightyarchitect.control.palette.PaletteDefinition;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.StringNBT;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.StringTag;
public class DesignTheme {
@@ -151,17 +151,17 @@ public void setTypes(List types) {
this.types = types;
}
- public CompoundNBT asTagCompound() {
- CompoundNBT compound = new CompoundNBT();
+ public CompoundTag asTagCompound() {
+ CompoundTag compound = new CompoundTag();
compound.putString("Name", getDisplayName());
compound.putString("Designer", getDesigner());
- ListNBT layers = new ListNBT();
- ListNBT types = new ListNBT();
+ ListTag layers = new ListTag();
+ ListTag types = new ListTag();
- this.layers.forEach(layer -> layers.add(StringNBT.valueOf(layer.name())));
- this.types.forEach(type -> types.add(StringNBT.valueOf(type.name())));
+ this.layers.forEach(layer -> layers.add(StringTag.valueOf(layer.name())));
+ this.types.forEach(type -> types.add(StringTag.valueOf(type.name())));
compound.put("Layers", layers);
compound.put("Types", types);
@@ -170,7 +170,7 @@ public CompoundNBT asTagCompound() {
return compound;
}
- public static DesignTheme fromNBT(CompoundNBT compound) {
+ public static DesignTheme fromNBT(CompoundTag compound) {
if (compound == null)
return null;
@@ -182,8 +182,8 @@ public static DesignTheme fromNBT(CompoundNBT compound) {
if (compound.contains("Maximum Room Height"))
theme.maxFloorHeight = compound.getInt("Maximum Room Height");
- compound.getList("Layers", 8).forEach(s -> theme.layers.add(DesignLayer.valueOf(((StringNBT) s).getAsString())));
- compound.getList("Types", 8).forEach(s -> theme.types.add(DesignType.valueOf(((StringNBT) s).getAsString())));
+ compound.getList("Layers", 8).forEach(s -> theme.layers.add(DesignLayer.valueOf(((StringTag) s).getAsString())));
+ compound.getList("Types", 8).forEach(s -> theme.types.add(DesignType.valueOf(((StringTag) s).getAsString())));
theme.updateRoomLayers();
return theme;
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/Sketch.java b/src/main/java/com/simibubi/mightyarchitect/control/design/Sketch.java
index 69cf4a5..758efe8 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/Sketch.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/Sketch.java
@@ -15,7 +15,7 @@
import com.simibubi.mightyarchitect.control.palette.Palette;
import com.simibubi.mightyarchitect.control.palette.PaletteBlockInfo;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
public class Sketch {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeStatistics.java b/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeStatistics.java
index 3655f87..c36d2f2 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeStatistics.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeStatistics.java
@@ -6,7 +6,7 @@
import com.simibubi.mightyarchitect.foundation.utility.DesignHelper;
import net.minecraft.client.Minecraft;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.network.chat.TextComponent;
public class ThemeStatistics {
@@ -178,7 +178,7 @@ public void sendToPlayer() {
}
private void chat(String message) {
- Minecraft.getInstance().player.displayClientMessage(new StringTextComponent(message), false);
+ Minecraft.getInstance().player.displayClientMessage(new TextComponent(message), false);
}
public DesignType fallbackRoof(Room room, boolean tower) {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeStorage.java b/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeStorage.java
index 69641f4..2371734 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeStorage.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeStorage.java
@@ -18,9 +18,9 @@
import com.simibubi.mightyarchitect.foundation.utility.FilesHelper;
import net.minecraft.client.Minecraft;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.CompressedStreamTools;
-import net.minecraft.nbt.ListNBT;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtIo;
public class ThemeStorage {
@@ -110,40 +110,40 @@ public static void exportTheme(DesignTheme theme) {
String palettePath = folderPath + "/" + foldername + "/palette.json";
FilesHelper.saveTagCompoundAsJson(theme.getDefaultPalette()
- .writeToNBT(new CompoundNBT()), palettePath);
+ .writeToNBT(new CompoundTag()), palettePath);
String palette2Path = folderPath + "/" + foldername + "/palette2.json";
FilesHelper.saveTagCompoundAsJson(theme.getDefaultSecondaryPalette()
- .writeToNBT(new CompoundNBT()), palette2Path);
+ .writeToNBT(new CompoundTag()), palette2Path);
}
public static String exportThemeFullyAsFile(DesignTheme theme, boolean compressed) {
String folderPath = "themes/export";
FilesHelper.createFolderIfMissing(folderPath);
- CompoundNBT massiveThemeTag = new CompoundNBT();
+ CompoundTag massiveThemeTag = new CompoundTag();
massiveThemeTag.put("Theme", theme.asTagCompound());
massiveThemeTag.put("Palette", theme.getDefaultPalette()
- .writeToNBT(new CompoundNBT()));
+ .writeToNBT(new CompoundTag()));
massiveThemeTag.put("SecondaryPalette", theme.getDefaultSecondaryPalette()
- .writeToNBT(new CompoundNBT()));
+ .writeToNBT(new CompoundTag()));
- Map>> designFiles =
+ Map>> designFiles =
DesignResourceLoader.loadThemeFromFolder(theme);
- CompoundNBT layers = new CompoundNBT();
+ CompoundTag layers = new CompoundTag();
for (DesignLayer layer : theme.getLayers()) {
if (!designFiles.containsKey(layer))
continue;
- CompoundNBT types = new CompoundNBT();
+ CompoundTag types = new CompoundTag();
for (DesignType type : theme.getTypes()) {
if (!designFiles.get(layer)
.containsKey(type))
continue;
- ListNBT designs = new ListNBT();
- for (CompoundNBT tag : designFiles.get(layer)
+ ListTag designs = new ListTag();
+ for (CompoundTag tag : designFiles.get(layer)
.get(type))
designs.add(tag);
types.put(type.name(), designs);
@@ -157,7 +157,7 @@ public static String exportThemeFullyAsFile(DesignTheme theme, boolean compresse
Path path = Paths.get(folderPath + "/" + theme.getFilePath() + ".theme");
Files.deleteIfExists(path);
OutputStream outputStream = Files.newOutputStream(path, StandardOpenOption.CREATE);
- CompressedStreamTools.writeCompressed(massiveThemeTag, outputStream);
+ NbtIo.writeCompressed(massiveThemeTag, outputStream);
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
@@ -174,9 +174,9 @@ public static DesignTheme importThemeFullyFromFile(String path) {
}
private static DesignTheme loadInternalTheme(String themeFolder) {
- CompoundNBT themeCompound = FilesHelper.loadJsonResourceAsNBT("themes/" + themeFolder + "/theme.json");
- CompoundNBT paletteCompound = FilesHelper.loadJsonResourceAsNBT("themes/" + themeFolder + "/palette.json");
- CompoundNBT palette2Compound = FilesHelper.loadJsonResourceAsNBT("themes/" + themeFolder + "/palette2.json");
+ CompoundTag themeCompound = FilesHelper.loadJsonResourceAsNBT("themes/" + themeFolder + "/theme.json");
+ CompoundTag paletteCompound = FilesHelper.loadJsonResourceAsNBT("themes/" + themeFolder + "/palette.json");
+ CompoundTag palette2Compound = FilesHelper.loadJsonResourceAsNBT("themes/" + themeFolder + "/palette2.json");
DesignTheme theme = DesignTheme.fromNBT(themeCompound);
theme.setFilePath(themeFolder);
theme.setImported(false);
@@ -199,21 +199,21 @@ private static void importThemes() {
String themeFolder = path.getFileName()
.toString();
- CompoundNBT themeCompound;
- CompoundNBT paletteCompound;
- CompoundNBT secondaryPaletteCompound = null;
+ CompoundTag themeCompound;
+ CompoundTag paletteCompound;
+ CompoundTag secondaryPaletteCompound = null;
if (themeFolder.equals("export"))
continue;
if (themeFolder.endsWith(".theme") || themeFolder.endsWith(".json")) {
- CompoundNBT themeFile = new CompoundNBT();
+ CompoundTag themeFile = new CompoundTag();
if (themeFolder.endsWith(".theme")) {
try {
InputStream inputStream = Files.newInputStream(Paths.get(folderPath + "/" + themeFolder),
StandardOpenOption.READ);
- themeFile = CompressedStreamTools.readCompressed(inputStream);
+ themeFile = NbtIo.readCompressed(inputStream);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeValidator.java b/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeValidator.java
index 827d7a8..d2602ce 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeValidator.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/ThemeValidator.java
@@ -7,22 +7,22 @@
import com.simibubi.mightyarchitect.foundation.utility.DesignHelper;
+import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.player.ClientPlayerEntity;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.client.player.LocalPlayer;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
public class ThemeValidator {
- static List complaints;
+ static List complaints;
public static void check(DesignTheme theme) {
- ClientPlayerEntity player = Minecraft.getInstance().player;
+ LocalPlayer player = Minecraft.getInstance().player;
for (int i = 0; i < 3; i++)
- player.displayClientMessage(new StringTextComponent(" "), false);
- player.displayClientMessage(new StringTextComponent(TextFormatting.AQUA + "--> Validation on "
- + TextFormatting.BLUE + TextFormatting.BOLD + theme.getDisplayName() + TextFormatting.AQUA + " <--"),
+ player.displayClientMessage(new TextComponent(" "), false);
+ player.displayClientMessage(new TextComponent(ChatFormatting.AQUA + "--> Validation on "
+ + ChatFormatting.BLUE + ChatFormatting.BOLD + theme.getDisplayName() + ChatFormatting.AQUA + " <--"),
false);
theme.clearDesigns();
ThemeStatistics stats = theme.getStatistics();
@@ -144,18 +144,18 @@ public static void check(DesignTheme theme) {
if (complaints.size() > 0) {
player.displayClientMessage(
- new StringTextComponent(TextFormatting.GOLD + "The Following Designs are missing:"), false);
- for (ITextComponent text : complaints) {
+ new TextComponent(ChatFormatting.GOLD + "The Following Designs are missing:"), false);
+ for (Component text : complaints) {
player.displayClientMessage(text, false);
}
player.displayClientMessage(
- new StringTextComponent(
- TextFormatting.GOLD + "Try and add these missing designs or exclude their type from your theme."),
+ new TextComponent(
+ ChatFormatting.GOLD + "Try and add these missing designs or exclude their type from your theme."),
false);
} else {
player.displayClientMessage(
- new StringTextComponent(TextFormatting.GREEN + "For prior traits no missing designs have been found."),
+ new TextComponent(ChatFormatting.GREEN + "For prior traits no missing designs have been found."),
false);
}
@@ -166,7 +166,7 @@ private static boolean exists(DesignQuery query) {
}
private static void alert(String message) {
- complaints.add(new StringTextComponent("-> " + TextFormatting.RED + message));
+ complaints.add(new TextComponent("-> " + ChatFormatting.RED + message));
}
private static String glue(List heights) {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Corner.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Corner.java
index 6e30efc..318388e 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Corner.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Corner.java
@@ -6,15 +6,13 @@
import com.simibubi.mightyarchitect.control.design.DesignSlice;
import com.simibubi.mightyarchitect.control.palette.PaletteBlockInfo;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.math.BlockPos;
-
-import com.simibubi.mightyarchitect.control.design.partials.Design.DesignInstance;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
public class Corner extends Design {
@Override
- public Design fromNBT(CompoundNBT compound) {
+ public Design fromNBT(CompoundTag compound) {
Corner corner = new Corner();
corner.applyNBT(compound);
return corner;
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Design.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Design.java
index dfa21e5..ec60059 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Design.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Design.java
@@ -10,10 +10,10 @@
import com.simibubi.mightyarchitect.control.design.DesignSlice.DesignSliceTrait;
import com.simibubi.mightyarchitect.control.palette.PaletteBlockInfo;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.nbt.NBTUtil;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.NbtUtils;
public abstract class Design {
@@ -24,17 +24,17 @@ public abstract class Design {
protected int defaultWidth;
protected int yShift;
- public abstract Design fromNBT(CompoundNBT compound);
+ public abstract Design fromNBT(CompoundTag compound);
- protected void applyNBT(CompoundNBT compound) {
- size = NBTUtil.readBlockPos(compound.getCompound("Size"));
+ protected void applyNBT(CompoundTag compound) {
+ size = NbtUtils.readBlockPos(compound.getCompound("Size"));
defaultWidth = size.getX();
slices = new DesignSlice[size.getY()];
defaultHeight = 0;
yShift = 0;
heights = ImmutableSet.of(0);
- ListNBT sliceTagList = compound.getList("Layers", 10);
+ ListTag sliceTagList = compound.getList("Layers", 10);
for (int sliceIndex = 0; sliceIndex < slices.length; sliceIndex++) {
DesignSlice slice = DesignSlice.fromNBT(sliceTagList.getCompound(sliceIndex));
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Facade.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Facade.java
index 9290e04..4fba748 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Facade.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Facade.java
@@ -1,13 +1,11 @@
package com.simibubi.mightyarchitect.control.design.partials;
-import net.minecraft.nbt.CompoundNBT;
-
-import com.simibubi.mightyarchitect.control.design.partials.Wall.ExpandBehaviour;
+import net.minecraft.nbt.CompoundTag;
public class Facade extends Wall {
@Override
- public Design fromNBT(CompoundNBT compound) {
+ public Design fromNBT(CompoundTag compound) {
Facade facade = new Facade();
facade.expandBehaviour = ExpandBehaviour.None;
facade.applyNBT(compound);
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/FlatRoof.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/FlatRoof.java
index edc92a8..fdbb73e 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/FlatRoof.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/FlatRoof.java
@@ -6,17 +6,15 @@
import com.simibubi.mightyarchitect.control.design.DesignSlice;
import com.simibubi.mightyarchitect.control.palette.PaletteBlockInfo;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.math.BlockPos;
-
-import com.simibubi.mightyarchitect.control.design.partials.Design.DesignInstance;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
public class FlatRoof extends Design {
protected int margin;
@Override
- public Design fromNBT(CompoundNBT compound) {
+ public Design fromNBT(CompoundTag compound) {
FlatRoof flatRoof = new FlatRoof();
flatRoof.applyNBT(compound);
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Roof.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Roof.java
index f23ad0e..103fd50 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Roof.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Roof.java
@@ -6,17 +6,15 @@
import com.simibubi.mightyarchitect.control.design.DesignSlice;
import com.simibubi.mightyarchitect.control.palette.PaletteBlockInfo;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.math.BlockPos;
-
-import com.simibubi.mightyarchitect.control.design.partials.Design.DesignInstance;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
public class Roof extends Design {
private static final int CROSS_ROOF_DEPTH = -1;
@Override
- public Design fromNBT(CompoundNBT compound) {
+ public Design fromNBT(CompoundTag compound) {
Roof roof = new Roof();
roof.applyNBT(compound);
roof.defaultWidth = compound.getInt("Roofspan");
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Tower.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Tower.java
index ca48b5f..47a203a 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Tower.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Tower.java
@@ -4,17 +4,15 @@
import com.simibubi.mightyarchitect.control.palette.PaletteBlockInfo;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.math.BlockPos;
-
-import com.simibubi.mightyarchitect.control.design.partials.Design.DesignInstance;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
public class Tower extends Design {
public int radius;
@Override
- public Design fromNBT(CompoundNBT compound) {
+ public Design fromNBT(CompoundTag compound) {
Tower tower = new Tower();
tower.applyNBT(compound);
tower.radius = compound.getInt("Radius");
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/TowerFlatRoof.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/TowerFlatRoof.java
index 0f2a627..fd714ff 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/TowerFlatRoof.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/TowerFlatRoof.java
@@ -1,11 +1,11 @@
package com.simibubi.mightyarchitect.control.design.partials;
-import net.minecraft.nbt.CompoundNBT;
+import net.minecraft.nbt.CompoundTag;
public class TowerFlatRoof extends TowerRoof {
@Override
- public Design fromNBT(CompoundNBT compound) {
+ public Design fromNBT(CompoundTag compound) {
TowerFlatRoof towerRoof = new TowerFlatRoof();
towerRoof.applyNBT(compound);
towerRoof.radius = compound.getInt("Radius");
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/TowerRoof.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/TowerRoof.java
index 57d19b8..b2a6f58 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/TowerRoof.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/TowerRoof.java
@@ -4,15 +4,13 @@
import com.simibubi.mightyarchitect.control.palette.PaletteBlockInfo;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.math.BlockPos;
-
-import com.simibubi.mightyarchitect.control.design.partials.Design.DesignInstance;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
public class TowerRoof extends Tower {
@Override
- public Design fromNBT(CompoundNBT compound) {
+ public Design fromNBT(CompoundTag compound) {
TowerRoof towerRoof = new TowerRoof();
towerRoof.applyNBT(compound);
towerRoof.radius = compound.getInt("Radius");
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Trim.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Trim.java
index ffab009..5d4174a 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Trim.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Trim.java
@@ -1,11 +1,11 @@
package com.simibubi.mightyarchitect.control.design.partials;
-import net.minecraft.nbt.CompoundNBT;
+import net.minecraft.nbt.CompoundTag;
public class Trim extends Design {
@Override
- public Design fromNBT(CompoundNBT compound) {
+ public Design fromNBT(CompoundTag compound) {
Trim trim = new Trim();
trim.applyNBT(compound);
return trim;
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Wall.java b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Wall.java
index ded04e1..ec8e501 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Wall.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/design/partials/Wall.java
@@ -4,10 +4,8 @@
import com.simibubi.mightyarchitect.control.palette.PaletteBlockInfo;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.util.math.BlockPos;
-
-import com.simibubi.mightyarchitect.control.design.partials.Design.DesignInstance;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
public class Wall extends Design {
@@ -18,7 +16,7 @@ public enum ExpandBehaviour {
public ExpandBehaviour expandBehaviour;
@Override
- public Design fromNBT(CompoundNBT compound) {
+ public Design fromNBT(CompoundTag compound) {
Wall wall = new Wall();
wall.applyNBT(compound);
wall.expandBehaviour = ExpandBehaviour.valueOf(compound.getString("ExpandBehaviour"));
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/palette/BlockOrientation.java b/src/main/java/com/simibubi/mightyarchitect/control/palette/BlockOrientation.java
index 03efe4d..1279b94 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/palette/BlockOrientation.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/palette/BlockOrientation.java
@@ -1,17 +1,17 @@
package com.simibubi.mightyarchitect.control.palette;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.SlabBlock;
-import net.minecraft.block.TrapDoorBlock;
import net.minecraft.client.Minecraft;
-import net.minecraft.state.properties.BlockStateProperties;
-import net.minecraft.state.properties.Half;
-import net.minecraft.state.properties.SlabType;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.Direction.AxisDirection;
-import net.minecraft.util.Rotation;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.core.Direction.AxisDirection;
+import net.minecraft.world.level.block.Rotation;
+import net.minecraft.world.level.block.SlabBlock;
+import net.minecraft.world.level.block.TrapDoorBlock;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.level.block.state.properties.Half;
+import net.minecraft.world.level.block.state.properties.SlabType;
public enum BlockOrientation {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteBlockInfo.java b/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteBlockInfo.java
index ad9b0dc..a12fe45 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteBlockInfo.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteBlockInfo.java
@@ -1,6 +1,6 @@
package com.simibubi.mightyarchitect.control.palette;
-import net.minecraft.block.BlockState;
+import net.minecraft.world.level.block.state.BlockState;
public class PaletteBlockInfo {
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteDefinition.java b/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteDefinition.java
index 25de5df..c640636 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteDefinition.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteDefinition.java
@@ -4,18 +4,18 @@
import java.util.HashMap;
import java.util.Map;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.Blocks;
-import net.minecraft.block.LeavesBlock;
-import net.minecraft.block.TrapDoorBlock;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.NBTUtil;
-import net.minecraft.state.DirectionProperty;
-import net.minecraft.state.Property;
-import net.minecraft.state.properties.BlockStateProperties;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.NbtUtils;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.LeavesBlock;
+import net.minecraft.world.level.block.TrapDoorBlock;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.properties.Property;
public class PaletteDefinition {
@@ -103,14 +103,14 @@ public String getName() {
return name;
}
- public CompoundNBT writeToNBT(CompoundNBT compound) {
- compound = (compound == null) ? new CompoundNBT() : compound;
- CompoundNBT palette = new CompoundNBT();
+ public CompoundTag writeToNBT(CompoundTag compound) {
+ compound = (compound == null) ? new CompoundTag() : compound;
+ CompoundTag palette = new CompoundTag();
palette.putString("Name", getName());
Palette[] values = Palette.values();
for (int i = 0; i < values.length; i++) {
- CompoundNBT state = NBTUtil.writeBlockState(get(values[i]));
+ CompoundTag state = NbtUtils.writeBlockState(get(values[i]));
palette.put(values[i].name(), state);
}
@@ -118,16 +118,16 @@ public CompoundNBT writeToNBT(CompoundNBT compound) {
return compound;
}
- public static PaletteDefinition fromNBT(CompoundNBT compound) {
+ public static PaletteDefinition fromNBT(CompoundTag compound) {
PaletteDefinition palette = defaultPalette().clone();
if (compound != null) {
if (compound.contains("Palette")) {
- CompoundNBT paletteTag = compound.getCompound("Palette");
+ CompoundTag paletteTag = compound.getCompound("Palette");
palette.name = paletteTag.getString("Name");
for (Palette key : Palette.values()) {
if (paletteTag.contains(key.name())) {
- palette.put(key, NBTUtil.readBlockState(paletteTag.getCompound(key.name())));
+ palette.put(key, NbtUtils.readBlockState(paletteTag.getCompound(key.name())));
}
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteStorage.java b/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteStorage.java
index 4082dc0..81a7844 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteStorage.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/palette/PaletteStorage.java
@@ -18,8 +18,8 @@
import com.simibubi.mightyarchitect.TheMightyArchitect;
import com.simibubi.mightyarchitect.foundation.utility.FilesHelper;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.JsonToNBT;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.TagParser;
public class PaletteStorage {
@@ -61,7 +61,7 @@ public static void exportPalette(PaletteDefinition palette) {
FilesHelper.createFolderIfMissing(folderPath);
String filename = FilesHelper.findFirstValidFilename(palette.getName(), folderPath, "json");
String filepath = folderPath + "/" + filename;
- FilesHelper.saveTagCompoundAsJson(palette.writeToNBT(new CompoundNBT()), filepath);
+ FilesHelper.saveTagCompoundAsJson(palette.writeToNBT(new CompoundTag()), filepath);
}
public static PaletteDefinition importPalette(Path path) {
@@ -69,7 +69,7 @@ public static PaletteDefinition importPalette(Path path) {
JsonReader reader = new JsonReader(Files.newBufferedReader(path));
reader.setLenient(true);
JsonElement element = Streams.parse(reader);
- return PaletteDefinition.fromNBT(JsonToNBT.parseTag(element.toString()));
+ return PaletteDefinition.fromNBT(TagParser.parseTag(element.toString()));
} catch (IOException | CommandSyntaxException e) {
e.printStackTrace();
}
@@ -100,7 +100,7 @@ public static void loadResourcePalettes() {
String path = "palettes/p" + index + ".json";
if (TheMightyArchitect.class.getClassLoader().getResource(path) == null)
break;
- CompoundNBT tag = FilesHelper.loadJsonResourceAsNBT(path);
+ CompoundTag tag = FilesHelper.loadJsonResourceAsNBT(path);
PaletteDefinition paletteDefinition = PaletteDefinition.fromNBT(tag);
resourcePalettes.put(paletteDefinition.getName(), paletteDefinition);
index++;
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/IArchitectPhase.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/IArchitectPhase.java
index 2c0153e..c99fa0b 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/IArchitectPhase.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/IArchitectPhase.java
@@ -2,15 +2,15 @@
import java.util.List;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.renderer.MultiBufferSource;
public interface IArchitectPhase {
public void whenEntered();
public void update();
- public void render(MatrixStack ms, IRenderTypeBuffer buffer);
+ public void render(PoseStack ms, MultiBufferSource buffer);
public void whenExited();
public List getToolTip();
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseBase.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseBase.java
index 1b676cc..fce4fca 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseBase.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseBase.java
@@ -4,7 +4,7 @@
import com.simibubi.mightyarchitect.control.Schematic;
import net.minecraft.client.Minecraft;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.network.chat.TextComponent;
public abstract class PhaseBase implements IArchitectPhase {
@@ -35,7 +35,7 @@ protected void sendStatusMessage(String message) {
if (message == null)
return;
- minecraft.player.displayClientMessage(new StringTextComponent(message), true);
+ minecraft.player.displayClientMessage(new TextComponent(message), true);
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseComposing.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseComposing.java
index 623ab77..995cb17 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseComposing.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseComposing.java
@@ -1,17 +1,22 @@
package com.simibubi.mightyarchitect.control.phase;
+import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
+
+import org.apache.commons.lang3.ArrayUtils;
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.MightyClient;
import com.simibubi.mightyarchitect.control.compose.planner.Tools;
import com.simibubi.mightyarchitect.foundation.utility.ShaderManager;
import com.simibubi.mightyarchitect.foundation.utility.Shaders;
import com.simibubi.mightyarchitect.gui.ToolSelectionScreen;
+import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class PhaseComposing extends PhaseBase implements IRenderGameOverlay {
@@ -64,18 +69,37 @@ public void onClick(int button) {
@Override
public void onKey(int key, boolean released) {
- if (key != MightyClient.TOOL_MENU.getKey()
- .getValue())
- return;
+ if (key == MightyClient.TOOL_MENU.getKey()
+ .getValue()) {
+ if (released && toolSelection.focused) {
+ toolSelection.focused = false;
+ toolSelection.onClose();
+ }
+
+ if (!released && !toolSelection.focused)
+ toolSelection.focused = true;
- if (released && toolSelection.focused) {
- toolSelection.focused = false;
- toolSelection.onClose();
+ return;
}
- if (!released && !toolSelection.focused)
- toolSelection.focused = true;
+ if (released)
+ return;
+
+ if (toolSelection.focused) {
+ Optional mapping = Arrays.stream(Minecraft.getInstance().options.keyHotbarSlots)
+ .filter(keyMapping -> keyMapping.getKey()
+ .getValue() == key)
+ .findFirst();
+ if (mapping.isEmpty())
+ return;
+
+ toolSelection.select(ArrayUtils.indexOf(Minecraft.getInstance().options.keyHotbarSlots, mapping.get()));
+
+ return;
+ }
+ activeTool.getTool()
+ .handleKeyInput(key);
}
@Override
@@ -90,7 +114,7 @@ public boolean onScroll(int amount) {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {}
+ public void render(PoseStack ms, MultiBufferSource buffer) {}
@Override
public void whenExited() {
@@ -102,8 +126,9 @@ public void renderGameOverlay(Pre event) {
if (Minecraft.getInstance().screen != null)
return;
- MatrixStack ms = event.getMatrixStack();
- toolSelection.renderPassive(ms, event.getPartialTicks());
+ PoseStack ms = event.getMatrixStack();
+ toolSelection.renderPassive(ms, Minecraft.getInstance()
+ .getDeltaFrameTime());
activeTool.getTool()
.renderOverlay(ms);
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseCreatingPalette.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseCreatingPalette.java
index 7cb80eb..e79381c 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseCreatingPalette.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseCreatingPalette.java
@@ -5,26 +5,23 @@
import java.util.Map;
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.MightyClient;
import com.simibubi.mightyarchitect.control.Schematic;
import com.simibubi.mightyarchitect.control.palette.Palette;
import com.simibubi.mightyarchitect.control.palette.PaletteDefinition;
-import com.simibubi.mightyarchitect.foundation.utility.RaycastHelper;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.TrapDoorBlock;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.multiplayer.ClientLevel;
+import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.texture.OverlayTexture;
-import net.minecraft.client.world.ClientWorld;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.RayTraceResult;
-import net.minecraft.util.math.RayTraceResult.Type;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.world.gen.Heightmap;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.world.level.block.TrapDoorBlock;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.levelgen.Heightmap;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.world.phys.Vec3;
import net.minecraftforge.client.model.data.EmptyModelData;
-import net.minecraftforge.common.ForgeMod;
public class PhaseCreatingPalette extends PhaseBase implements IDrawBlockHighlights {
@@ -37,11 +34,11 @@ public class PhaseCreatingPalette extends PhaseBase implements IDrawBlockHighlig
public void whenEntered() {
Schematic model = getModel();
- ClientWorld world = minecraft.level;
+ ClientLevel world = minecraft.level;
changed = new boolean[16];
palette = model.getCreatedPalette();
- center = world.getHeightmapPos(Heightmap.Type.WORLD_SURFACE, minecraft.player.blockPosition());
+ center = world.getHeightmapPos(Heightmap.Types.WORLD_SURFACE, minecraft.player.blockPosition());
grid = new HashMap<>();
for (int i = 0; i < 16; i++) {
@@ -90,7 +87,7 @@ public void update() {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
// Blocks
for (int i = 0; i < 16; i++) {
BlockState state = palette.get(Palette.values()[i]);
@@ -106,7 +103,7 @@ public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
ms.translate(1 / 32f, 1 / 32f, 1 / 32f);
ms.scale(15 / 16f, 15 / 16f, 15 / 16f);
minecraft.getBlockRenderer()
- .renderBlock(state, ms, buffer, 0xF000F0, OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE);
+ .renderSingleBlock(state, ms, buffer, 0xF000F0, OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE);
ms.popPose();
}
}
@@ -119,7 +116,7 @@ public void whenExited() {
protected void notifyChange() {
getModel().updatePalettePreview();
- minecraft.player.displayClientMessage(new StringTextComponent("Updating Preview..."), true);
+ minecraft.player.displayClientMessage(new TextComponent("Updating Preview..."), true);
MightyClient.renderer.update();
}
@@ -127,26 +124,27 @@ protected void notifyChange() {
@Override
public void tickHighlightOutlines() {
- BlockPos targetBlock = null;
-
- RayTraceResult raytrace = RaycastHelper.rayTraceRange(minecraft.level, minecraft.player,
- minecraft.player.getAttributeValue(ForgeMod.REACH_DISTANCE.get()));
- if (raytrace != null && raytrace.getType() == Type.BLOCK) {
- targetBlock = new BlockPos(raytrace.getLocation());
- if (grid.containsKey(targetBlock))
- sendStatusMessage(grid.get(targetBlock)
- .getDisplayName());
- }
+ Vec3 from = minecraft.player.getEyePosition();
+ Vec3 to = from.add(minecraft.player.getLookAngle()
+ .normalize()
+ .scale(10));
for (int i = 0; i < 16; i++) {
BlockPos pos = positionFromIndex(i);
+ AABB bb = new AABB(pos);
// Render Outline
- boolean s = targetBlock != null && pos.equals(targetBlock);
boolean b = changed[i];
- MightyClient.outliner.showAABB("pallete" + i, new AxisAlignedBB(pos))
- .lineWidth(b || s ? 1 / 16f : 1 / 32f)
- .colored(s ? 0x8888ff : b ? 0x6666ff : 0xbbbbbb);
+ boolean s = bb.clip(from, to)
+ .isPresent();
+
+ if (s)
+ sendStatusMessage(grid.get(pos)
+ .getDisplayName());
+
+ MightyClient.outliner.showAABB("pallete" + i, bb)
+ .lineWidth(b || s ? 1 / 16f : 1 / 24f)
+ .colored(s ? 0x6677ee : b ? 0xccccdd : 0x666677);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseEmpty.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseEmpty.java
index 37ae613..a046c86 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseEmpty.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhaseEmpty.java
@@ -3,9 +3,9 @@
import java.util.List;
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.renderer.MultiBufferSource;
public class PhaseEmpty extends PhaseBase {
@@ -22,7 +22,7 @@ public void onClick(int button) {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
}
@Override
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhasePaused.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhasePaused.java
index e2b1e7c..d773007 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhasePaused.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhasePaused.java
@@ -3,29 +3,29 @@
import java.util.List;
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.MightyClient;
+import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.player.ClientPlayerEntity;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.client.player.LocalPlayer;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.network.chat.TextComponent;
public class PhasePaused extends PhaseBase {
@Override
public void whenEntered() {
- ClientPlayerEntity player = Minecraft.getInstance().player;
+ LocalPlayer player = Minecraft.getInstance().player;
if (player == null)
return;
- player.displayClientMessage(new StringTextComponent(
- "The Mighty Architect was " + TextFormatting.BOLD + "Paused" + TextFormatting.RESET + "."), false);
- player.displayClientMessage(new StringTextComponent("You can continue composing with [" + TextFormatting.AQUA
+ player.displayClientMessage(new TextComponent(
+ "The Mighty Architect was " + ChatFormatting.BOLD + "Paused" + ChatFormatting.RESET + "."), false);
+ player.displayClientMessage(new TextComponent("You can continue composing with [" + ChatFormatting.AQUA
+ MightyClient.COMPOSE.getTranslatedKeyMessage()
.getString()
.toUpperCase()
- + TextFormatting.WHITE + "]"), false);
+ + ChatFormatting.WHITE + "]"), false);
}
@Override
@@ -34,7 +34,7 @@ public void update() {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhasePreviewing.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhasePreviewing.java
index 2914b66..644812e 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/PhasePreviewing.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/PhasePreviewing.java
@@ -1,16 +1,21 @@
package com.simibubi.mightyarchitect.control.phase;
+import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.function.Consumer;
+import org.apache.commons.lang3.ArrayUtils;
+
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.MightyClient;
import com.simibubi.mightyarchitect.control.compose.planner.Tools;
import com.simibubi.mightyarchitect.gui.ToolSelectionScreen;
+import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
public class PhasePreviewing extends PhaseBase implements IRenderGameOverlay {
@@ -54,18 +59,32 @@ public void onClick(int button) {
@Override
public void onKey(int key, boolean released) {
- if (key != MightyClient.TOOL_MENU.getKey()
- .getValue())
- return;
+ if (key == MightyClient.TOOL_MENU.getKey().getValue()) {
+ if (released && toolSelection.focused) {
+ toolSelection.focused = false;
+ toolSelection.onClose();
+ }
- if (released && toolSelection.focused) {
- toolSelection.focused = false;
- toolSelection.onClose();
+ if (!released && !toolSelection.focused)
+ toolSelection.focused = true;
+
+ return;
}
- if (!released && !toolSelection.focused)
- toolSelection.focused = true;
+ if (released)
+ return;
+
+ if (toolSelection.focused) {
+ Optional mapping = Arrays.stream(Minecraft.getInstance().options.keyHotbarSlots).filter(keyMapping -> keyMapping.getKey().getValue() == key).findFirst();
+ if (mapping.isEmpty())
+ return;
+
+ toolSelection.select(ArrayUtils.indexOf(Minecraft.getInstance().options.keyHotbarSlots, mapping.get()));
+
+ return;
+ }
+ activeTool.getTool().handleKeyInput(key);
}
@Override
@@ -91,7 +110,7 @@ public boolean onScroll(int amount) {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {}
+ public void render(PoseStack ms, MultiBufferSource buffer) {}
@Override
public void whenExited() {
@@ -100,7 +119,7 @@ public void whenExited() {
@Override
public void renderGameOverlay(RenderGameOverlayEvent.Pre event) {
- MatrixStack ms = event.getMatrixStack();
+ PoseStack ms = event.getMatrixStack();
toolSelection.renderPassive(ms, event.getPartialTicks());
activeTool.getTool()
.renderOverlay(ms);
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/PrintingToMultiplayer.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/PrintingToMultiplayer.java
index 5494b5b..bb1978e 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/PrintingToMultiplayer.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/PrintingToMultiplayer.java
@@ -4,20 +4,20 @@
import java.util.List;
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.TheMightyArchitect;
import com.simibubi.mightyarchitect.control.ArchitectManager;
import com.simibubi.mightyarchitect.control.TemplateBlockAccess;
-import net.minecraft.block.BlockState;
+import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.shapes.ISelectionContext;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TextFormatting;
-import net.minecraft.util.text.TranslationTextComponent;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
@@ -59,7 +59,7 @@ public void update() {
if (minecraft.level.getBlockState(pos) == state)
continue;
- if (!minecraft.level.isUnobstructed(state, pos, ISelectionContext.of(minecraft.player)))
+ if (!minecraft.level.isUnobstructed(state, pos, CollisionContext.of(minecraft.player)))
continue;
String blockstring = state.toString().replaceFirst("Block\\{", "").replaceFirst("\\}", "");
@@ -79,20 +79,20 @@ public static void onCommandFeedback(ClientChatReceivedEvent event) {
return;
if (cooldown > 0) {
- List checking = new LinkedList<>();
+ List checking = new LinkedList<>();
checking.add(event.getMessage());
while (!checking.isEmpty()) {
- ITextComponent iTextComponent = checking.get(0);
- if (iTextComponent instanceof TranslationTextComponent) {
- String test = ((TranslationTextComponent) iTextComponent).getKey();
+ Component iTextComponent = checking.get(0);
+ if (iTextComponent instanceof TranslatableComponent) {
+ String test = ((TranslatableComponent) iTextComponent).getKey();
TheMightyArchitect.logger.info(test);
if (test.equals("command.unknown.command")) {
cooldown = 0;
- event.setMessage(new StringTextComponent(
- TextFormatting.RED + "You do not have permission to print on this server."));
+ event.setMessage(new TextComponent(
+ ChatFormatting.RED + "You do not have permission to print on this server."));
return;
}
if (test.equals("parsing.int.expected")) {
@@ -113,13 +113,13 @@ public static void onCommandFeedback(ClientChatReceivedEvent event) {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
}
@Override
public void whenExited() {
if (approved) {
- Minecraft.getInstance().player.displayClientMessage(new StringTextComponent(TextFormatting.GREEN + "Finished Printing, enjoy!"),
+ Minecraft.getInstance().player.displayClientMessage(new TextComponent(ChatFormatting.GREEN + "Finished Printing, enjoy!"),
false);
Minecraft.getInstance().player.chat("/gamerule logAdminCommands true");
Minecraft.getInstance().player.chat("/gamerule sendCommandFeedback true");
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseEditTheme.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseEditTheme.java
index 683f838..56a5639 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseEditTheme.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseEditTheme.java
@@ -5,7 +5,7 @@
import java.util.function.Function;
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.AllSpecialTextures;
import com.simibubi.mightyarchitect.MightyClient;
import com.simibubi.mightyarchitect.control.compose.Cuboid;
@@ -17,9 +17,9 @@
import com.simibubi.mightyarchitect.foundation.utility.outliner.BlockClusterOutline;
import com.simibubi.mightyarchitect.foundation.utility.outliner.Outline;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.phys.Vec3;
public class PhaseEditTheme extends PhaseBase {
@@ -119,7 +119,7 @@ private void tickOutlines() {
}
private void chaseText(Object key, float x, float y, float z, String text) {
- MightyClient.outliner.chaseText(key, new Vector3d(x, y, z), text)
+ MightyClient.outliner.chaseText(key, new Vec3(x, y, z), text)
.disableNormals()
.colored(0xffffff);
}
@@ -197,6 +197,6 @@ public static void resetVisualization() {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {}
+ public void render(PoseStack ms, MultiBufferSource buffer) {}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseListThemesForEditing.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseListThemesForEditing.java
index 406ed01..dbadcf8 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseListThemesForEditing.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseListThemesForEditing.java
@@ -3,10 +3,10 @@
import java.util.List;
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.control.phase.PhaseBase;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.renderer.MultiBufferSource;
public class PhaseListThemesForEditing extends PhaseBase {
@@ -20,7 +20,7 @@ public void update() {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseManageThemes.java b/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseManageThemes.java
index d3bffb9..fecbfc1 100644
--- a/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseManageThemes.java
+++ b/src/main/java/com/simibubi/mightyarchitect/control/phase/export/PhaseManageThemes.java
@@ -4,10 +4,10 @@
import java.util.List;
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.control.phase.PhaseBase;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.renderer.MultiBufferSource;
public class PhaseManageThemes extends PhaseBase {
@@ -22,7 +22,7 @@ public void update() {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/MatrixStacker.java b/src/main/java/com/simibubi/mightyarchitect/foundation/MatrixStacker.java
index 233639c..8e3f8f8 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/MatrixStacker.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/MatrixStacker.java
@@ -1,22 +1,22 @@
package com.simibubi.mightyarchitect.foundation;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.math.Vector3f;
import com.simibubi.mightyarchitect.foundation.utility.AngleHelper;
import com.simibubi.mightyarchitect.foundation.utility.VecHelper;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.vector.Vector3d;
-import net.minecraft.util.math.vector.Vector3f;
-import net.minecraft.util.math.vector.Vector3i;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Vec3i;
+import net.minecraft.world.phys.Vec3;
public class MatrixStacker {
- static Vector3d center = VecHelper.getCenterOf(BlockPos.ZERO);
+ static Vec3 center = VecHelper.getCenterOf(BlockPos.ZERO);
static MatrixStacker instance;
- MatrixStack ms;
+ PoseStack ms;
- public static MatrixStacker of(MatrixStack ms) {
+ public static MatrixStacker of(PoseStack ms) {
if (instance == null)
instance = new MatrixStacker();
instance.ms = ms;
@@ -50,17 +50,17 @@ public MatrixStacker unCentre() {
return translateBack(center);
}
- public MatrixStacker translate(Vector3i vec) {
+ public MatrixStacker translate(Vec3i vec) {
ms.translate(vec.getX(), vec.getY(), vec.getZ());
return this;
}
- public MatrixStacker translate(Vector3d vec) {
+ public MatrixStacker translate(Vec3 vec) {
ms.translate(vec.x, vec.y, vec.z);
return this;
}
- public MatrixStacker translateBack(Vector3d vec) {
+ public MatrixStacker translateBack(Vec3 vec) {
ms.translate(-vec.x, -vec.y, -vec.z);
return this;
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/RenderTypes.java b/src/main/java/com/simibubi/mightyarchitect/foundation/RenderTypes.java
index 79453e5..79131ea 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/RenderTypes.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/RenderTypes.java
@@ -1,114 +1,125 @@
package com.simibubi.mightyarchitect.foundation;
import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.DefaultVertexFormat;
+import com.mojang.blaze3d.vertex.VertexFormat;
import com.simibubi.mightyarchitect.AllSpecialTextures;
+import com.simibubi.mightyarchitect.TheMightyArchitect;
-import net.minecraft.client.renderer.RenderState;
+import net.minecraft.client.renderer.RenderStateShard;
import net.minecraft.client.renderer.RenderType;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraft.inventory.container.PlayerContainer;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.inventory.InventoryMenu;
-public class RenderTypes extends RenderState {
+public class RenderTypes extends RenderStateShard {
- protected static final RenderState.CullState DISABLE_CULLING = new NoCullState();
+ protected static final RenderStateShard.CullStateShard DISABLE_CULLING = new NoCullState();
- public static RenderType getOutlineTranslucent(ResourceLocation texture, boolean cull) {
- RenderType.State rendertype$state = RenderType.State.builder()
- .setTextureState(new RenderState.TextureState(texture, false, false))
- .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
- .setDiffuseLightingState(DIFFUSE_LIGHTING)
- .setAlphaState(DEFAULT_ALPHA)
- .setCullState(cull ? CULL : DISABLE_CULLING)
- .setLightmapState(LIGHTMAP)
- .setOverlayState(OVERLAY)
- .createCompositeState(true);
- return RenderType.create("outline_translucent" + (cull ? "_cull" : ""),
- DefaultVertexFormats.NEW_ENTITY, 7, 256, true, true, rendertype$state);
+ public static RenderType getOutlineSolid(ResourceLocation texture) {
+ return RenderType.create(createLayerName("outline_solid"), DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true,
+ false, RenderType.CompositeState.builder()
+ .setShaderState(RenderStateShard.RENDERTYPE_ENTITY_CUTOUT_SHADER)
+ .setTextureState(new RenderStateShard.TextureStateShard(texture, false, false))
+ .setLightmapState(LIGHTMAP)
+ .setOverlayState(OVERLAY)
+ .createCompositeState(true));
}
- private static final RenderType OUTLINE_SOLID =
- RenderType.create("outline_solid", DefaultVertexFormats.NEW_ENTITY, 7, 256, true,
- false, RenderType.State.builder()
- .setTextureState(new RenderState.TextureState(AllSpecialTextures.BLANK.getLocation(), false, false))
- .setTransparencyState(NO_TRANSPARENCY)
- .setDiffuseLightingState(DIFFUSE_LIGHTING)
- .setLightmapState(LIGHTMAP)
- .setOverlayState(OVERLAY)
- .createCompositeState(true));
+ private static final RenderType DEFAULT_OUTLINE_SOLID =
+ getOutlineSolid(AllSpecialTextures.BLANK.getLocation());
+
+ public static RenderType getOutlineSolid() {
+ return DEFAULT_OUTLINE_SOLID;
+ }
+
+ public static RenderType getOutlineTranslucent(ResourceLocation texture, boolean cull) {
+ return RenderType.create(createLayerName("outline_translucent" + (cull ? "_cull" : "")),
+ DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, true, RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_SHADER)
+ .setTextureState(new RenderStateShard.TextureStateShard(texture, false, false))
+ .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
+ .setCullState(cull ? CULL : NO_CULL)
+ .setLightmapState(LIGHTMAP)
+ .setOverlayState(OVERLAY)
+ .setWriteMaskState(RenderStateShard.COLOR_WRITE)
+ .createCompositeState(true));
+ }
public static RenderType getGlowingSolid(ResourceLocation texture) {
- RenderType.State rendertype$state = RenderType.State.builder()
- .setTextureState(new RenderState.TextureState(texture, false, false))
- .setTransparencyState(NO_TRANSPARENCY)
- .setDiffuseLightingState(NO_DIFFUSE_LIGHTING)
- .setLightmapState(LIGHTMAP)
- .setOverlayState(OVERLAY)
- .createCompositeState(true);
- return RenderType.create("glowing_solid", DefaultVertexFormats.NEW_ENTITY, 7, 256,
- true, false, rendertype$state);
+ return RenderType.create(createLayerName("glowing_solid"), DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256,
+ true, false, RenderType.CompositeState.builder()
+ .setShaderState(NEW_ENTITY_SHADER)
+ .setTextureState(new RenderStateShard.TextureStateShard(texture, false, false))
+ .setLightmapState(LIGHTMAP)
+ .setOverlayState(OVERLAY)
+ .createCompositeState(true));
+ }
+
+ private static final RenderType GLOWING_SOLID_DEFAULT = getGlowingSolid(InventoryMenu.BLOCK_ATLAS);
+
+ public static RenderType getGlowingSolid() {
+ return GLOWING_SOLID_DEFAULT;
}
public static RenderType getGlowingTranslucent(ResourceLocation texture) {
- RenderType.State rendertype$state = RenderType.State.builder()
- .setTextureState(new RenderState.TextureState(texture, false, false))
- .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
- .setDiffuseLightingState(NO_DIFFUSE_LIGHTING)
- .setAlphaState(DEFAULT_ALPHA)
- .setCullState(DISABLE_CULLING)
- .setLightmapState(LIGHTMAP)
- .setOverlayState(OVERLAY)
- .createCompositeState(true);
- return RenderType.create("glowing_translucent", DefaultVertexFormats.NEW_ENTITY, 7,
- 256, true, true, rendertype$state);
+ return RenderType.create(createLayerName("glowing_translucent"), DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS,
+ 256, true, true, RenderType.CompositeState.builder()
+ .setShaderState(NEW_ENTITY_SHADER)
+ .setTextureState(new RenderStateShard.TextureStateShard(texture, false, false))
+ .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
+ .setCullState(NO_CULL)
+ .setLightmapState(LIGHTMAP)
+ .setOverlayState(OVERLAY)
+ .createCompositeState(true));
}
- private static final RenderType GLOWING_SOLID = RenderTypes.getGlowingSolid(PlayerContainer.BLOCK_ATLAS);
- private static final RenderType GLOWING_TRANSLUCENT =
- RenderTypes.getGlowingTranslucent(PlayerContainer.BLOCK_ATLAS);
+ private static final RenderType GLOWING_TRANSLUCENT_DEFAULT = getGlowingTranslucent(InventoryMenu.BLOCK_ATLAS);
+
+ public static RenderType getGlowingTranslucent() {
+ return GLOWING_TRANSLUCENT_DEFAULT;
+ }
private static final RenderType ITEM_PARTIAL_SOLID =
- RenderType.create("item_solid", DefaultVertexFormats.NEW_ENTITY, 7, 256, true,
- false, RenderType.State.builder()
- .setTextureState(new RenderState.TextureState(PlayerContainer.BLOCK_ATLAS, false, false))
- .setTransparencyState(NO_TRANSPARENCY)
- .setDiffuseLightingState(DIFFUSE_LIGHTING)
- .setLightmapState(LIGHTMAP)
- .setOverlayState(OVERLAY)
- .createCompositeState(true));
-
- private static final RenderType ITEM_PARTIAL_TRANSLUCENT = RenderType.create("entity_translucent",
- DefaultVertexFormats.NEW_ENTITY, 7, 256, true, true, RenderType.State.builder()
- .setTextureState(new RenderState.TextureState(PlayerContainer.BLOCK_ATLAS, false, false))
- .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
- .setDiffuseLightingState(DIFFUSE_LIGHTING)
- .setAlphaState(DEFAULT_ALPHA)
- .setCullState(DISABLE_CULLING)
- .setLightmapState(LIGHTMAP)
- .setOverlayState(OVERLAY)
- .createCompositeState(true));
+ RenderType.create(createLayerName("item_partial_solid"), DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true,
+ false, RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_SOLID_SHADER)
+ .setTextureState(BLOCK_SHEET)
+ .setTransparencyState(NO_TRANSPARENCY)
+ .setLightmapState(LIGHTMAP)
+ .setOverlayState(OVERLAY)
+ .createCompositeState(true));
public static RenderType getItemPartialSolid() {
return ITEM_PARTIAL_SOLID;
}
-
- public static RenderType getItemPartialTranslucent() {
- return ITEM_PARTIAL_TRANSLUCENT;
- }
- public static RenderType getOutlineSolid() {
- return OUTLINE_SOLID;
- }
+ private static final RenderType ITEM_PARTIAL_TRANSLUCENT = RenderType.create(createLayerName("item_partial_translucent"),
+ DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, true, RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_SHADER)
+ .setTextureState(BLOCK_SHEET)
+ .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
+ .setLightmapState(LIGHTMAP)
+ .setOverlayState(OVERLAY)
+ .createCompositeState(true));
- public static RenderType getGlowingSolid() {
- return GLOWING_SOLID;
+ public static RenderType getItemPartialTranslucent() {
+ return ITEM_PARTIAL_TRANSLUCENT;
}
- public static RenderType getGlowingTranslucent() {
- return GLOWING_TRANSLUCENT;
+ private static final RenderType FLUID = RenderType.create(createLayerName("fluid"),
+ DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, true, RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_SHADER)
+ .setTextureState(BLOCK_SHEET_MIPPED)
+ .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
+ .setLightmapState(LIGHTMAP)
+ .setOverlayState(OVERLAY)
+ .createCompositeState(true));
+
+ public static RenderType getFluid() {
+ return FLUID;
}
- protected static class NoCullState extends RenderState.CullState {
+ protected static class NoCullState extends RenderStateShard.CullStateShard {
public NoCullState() {
super(false);
}
@@ -119,6 +130,10 @@ public void setupRenderState() {
}
}
+ private static String createLayerName(String name) {
+ return TheMightyArchitect.ID + ":" + name;
+ }
+
// Mmm gimme those protected fields
public RenderTypes() {
super(null, null, null);
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/SpriteShiftEntry.java b/src/main/java/com/simibubi/mightyarchitect/foundation/SpriteShiftEntry.java
index 118e015..ea856ff 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/SpriteShiftEntry.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/SpriteShiftEntry.java
@@ -4,8 +4,8 @@
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.inventory.container.PlayerContainer;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.inventory.InventoryMenu;
public class SpriteShiftEntry {
protected ResourceLocation originalTextureLocation;
@@ -20,7 +20,7 @@ public void set(ResourceLocation originalTextureLocation, ResourceLocation targe
protected void loadTextures() {
Function textureMap = Minecraft.getInstance()
- .getTextureAtlas(PlayerContainer.BLOCK_ATLAS);
+ .getTextureAtlas(InventoryMenu.BLOCK_ATLAS);
original = textureMap.apply(originalTextureLocation);
target = textureMap.apply(targetTextureLocation);
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/SuperByteBuffer.java b/src/main/java/com/simibubi/mightyarchitect/foundation/SuperByteBuffer.java
index 17cb134..99ab407 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/SuperByteBuffer.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/SuperByteBuffer.java
@@ -3,21 +3,20 @@
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
-import com.mojang.blaze3d.matrix.MatrixStack;
-import com.mojang.blaze3d.vertex.IVertexBuilder;
+import com.mojang.blaze3d.vertex.BufferBuilder;
+import com.mojang.blaze3d.vertex.BufferBuilder.DrawState;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.datafixers.util.Pair;
+import com.mojang.math.Matrix4f;
+import com.mojang.math.Vector4f;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.BufferBuilder;
-import net.minecraft.client.renderer.BufferBuilder.DrawState;
-import net.minecraft.client.renderer.GLAllocation;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.vector.Matrix4f;
-import net.minecraft.util.math.vector.Vector4f;
-import net.minecraft.world.LightType;
-import net.minecraft.world.World;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.LightLayer;
public class SuperByteBuffer {
@@ -29,7 +28,7 @@ public interface IVertexLighter {
protected int formatSize;
// Vertex Position
- private MatrixStack transforms;
+ private PoseStack transforms;
// Vertex Texture Coords
private boolean shouldShiftUV;
@@ -56,13 +55,13 @@ public SuperByteBuffer(BufferBuilder buf) {
int size = state.getFirst()
.vertexCount() * formatSize;
- template = GLAllocation.createByteBuffer(size);
+ template = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder());
template.order(rendered.order());
template.limit(rendered.limit());
template.put(rendered);
template.rewind();
- transforms = new MatrixStack();
+ transforms = new PoseStack();
}
public static float getUnInterpolatedU(TextureAtlasSprite sprite, float u) {
@@ -75,7 +74,7 @@ public static float getUnInterpolatedV(TextureAtlasSprite sprite, float v) {
return (v - sprite.getV0()) / f * 16.0F;
}
- public void renderInto(MatrixStack input, IVertexBuilder builder) {
+ public void renderInto(PoseStack input, VertexConsumer builder) {
ByteBuffer buffer = template;
if (buffer.limit() == 0)
return;
@@ -137,7 +136,7 @@ public void renderInto(MatrixStack input, IVertexBuilder builder) {
.endVertex();
}
- transforms = new MatrixStack();
+ transforms = new PoseStack();
shouldShiftUV = false;
shouldColor = false;
shouldLight = false;
@@ -265,16 +264,16 @@ protected byte getNZ(ByteBuffer buffer, int index) {
return buffer.get(getBufferPosition(index) + 30);
}
- private static int getLight(World world, Vector4f lightPos) {
- BlockPos.Mutable pos = new BlockPos.Mutable();
+ private static int getLight(Level world, Vector4f lightPos) {
+ BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos();
float sky = 0, block = 0;
float offset = 1 / 8f;
for (float zOffset = offset; zOffset >= -offset; zOffset -= 2 * offset)
for (float yOffset = offset; yOffset >= -offset; yOffset -= 2 * offset)
for (float xOffset = offset; xOffset >= -offset; xOffset -= 2 * offset) {
pos.set(lightPos.x() + xOffset, lightPos.y() + yOffset, lightPos.z() + zOffset);
- sky += world.getBrightness(LightType.SKY, pos) / 8f;
- block += world.getBrightness(LightType.BLOCK, pos) / 8f;
+ sky += world.getBrightness(LightLayer.SKY, pos) / 8f;
+ block += world.getBrightness(LightLayer.BLOCK, pos) / 8f;
}
return ((int) sky) << 20 | ((int) block) << 4;
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/SuperByteBufferCache.java b/src/main/java/com/simibubi/mightyarchitect/foundation/SuperByteBufferCache.java
index ae949b5..8e4cf13 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/SuperByteBufferCache.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/SuperByteBufferCache.java
@@ -7,21 +7,20 @@
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
-import org.lwjgl.opengl.GL11;
-
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.BufferBuilder;
+import com.mojang.blaze3d.vertex.DefaultVertexFormat;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.blaze3d.vertex.VertexFormat;
-import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.BlockModelRenderer;
-import net.minecraft.client.renderer.BlockRendererDispatcher;
-import net.minecraft.client.renderer.BufferBuilder;
-import net.minecraft.client.renderer.model.IBakedModel;
+import net.minecraft.client.renderer.block.BlockRenderDispatcher;
+import net.minecraft.client.renderer.block.ModelBlockRenderer;
import net.minecraft.client.renderer.texture.OverlayTexture;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.client.resources.model.BakedModel;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.data.EmptyModelData;
public class SuperByteBufferCache {
@@ -69,21 +68,21 @@ public void registerCompartment(Compartment> instance, long ticksTillExpired)
}
private SuperByteBuffer standardBlockRender(BlockState renderedState) {
- BlockRendererDispatcher dispatcher = Minecraft.getInstance().getBlockRenderer();
+ BlockRenderDispatcher dispatcher = Minecraft.getInstance().getBlockRenderer();
return standardModelRender(dispatcher.getBlockModel(renderedState), renderedState);
}
- private SuperByteBuffer standardModelRender(IBakedModel model, BlockState referenceState) {
- return standardModelRender(model, referenceState, new MatrixStack());
+ private SuperByteBuffer standardModelRender(BakedModel model, BlockState referenceState) {
+ return standardModelRender(model, referenceState, new PoseStack());
}
- private SuperByteBuffer standardModelRender(IBakedModel model, BlockState referenceState, MatrixStack ms) {
- BlockRendererDispatcher dispatcher = Minecraft.getInstance().getBlockRenderer();
- BlockModelRenderer blockRenderer = dispatcher.getModelRenderer();
- BufferBuilder builder = new BufferBuilder(DefaultVertexFormats.BLOCK.getIntegerSize());
+ private SuperByteBuffer standardModelRender(BakedModel model, BlockState referenceState, PoseStack ms) {
+ BlockRenderDispatcher dispatcher = Minecraft.getInstance().getBlockRenderer();
+ ModelBlockRenderer blockRenderer = dispatcher.getModelRenderer();
+ BufferBuilder builder = new BufferBuilder(DefaultVertexFormat.BLOCK.getIntegerSize());
Random random = new Random();
- builder.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
- blockRenderer.renderModelFlat(Minecraft.getInstance().level, model, referenceState, BlockPos.ZERO.above(255), ms,
+ builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLOCK);
+ blockRenderer.tesselateBlock(Minecraft.getInstance().level, model, referenceState, BlockPos.ZERO.above(255), ms,
builder, true, random, 42, OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE);
builder.end();
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/SuperRenderTypeBuffer.java b/src/main/java/com/simibubi/mightyarchitect/foundation/SuperRenderTypeBuffer.java
index d8b28c0..c01ef0f 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/SuperRenderTypeBuffer.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/SuperRenderTypeBuffer.java
@@ -2,19 +2,18 @@
import java.util.SortedMap;
-import com.mojang.blaze3d.systems.RenderSystem;
-import com.mojang.blaze3d.vertex.IVertexBuilder;
+import com.mojang.blaze3d.vertex.BufferBuilder;
+import com.mojang.blaze3d.vertex.VertexConsumer;
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
-import net.minecraft.client.renderer.Atlases;
-import net.minecraft.client.renderer.BufferBuilder;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.client.renderer.RegionRenderCacheBuilder;
+import net.minecraft.Util;
+import net.minecraft.client.renderer.ChunkBufferBuilderPack;
+import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
-import net.minecraft.client.renderer.model.ModelBakery;
-import net.minecraft.util.Util;
+import net.minecraft.client.renderer.Sheets;
+import net.minecraft.client.resources.model.ModelBakery;
-public class SuperRenderTypeBuffer implements IRenderTypeBuffer {
+public class SuperRenderTypeBuffer implements MultiBufferSource {
static SuperRenderTypeBuffer instance;
@@ -34,68 +33,65 @@ public SuperRenderTypeBuffer() {
lateBuffer = new SuperRenderTypeBufferPhase();
}
- public IVertexBuilder getEarlyBuffer(RenderType type) {
- return earlyBuffer.getBuffer(type);
+ public VertexConsumer getEarlyBuffer(RenderType type) {
+ return earlyBuffer.bufferSource.getBuffer(type);
}
@Override
- public IVertexBuilder getBuffer(RenderType type) {
- return defaultBuffer.getBuffer(type);
+ public VertexConsumer getBuffer(RenderType type) {
+ return defaultBuffer.bufferSource.getBuffer(type);
}
- public IVertexBuilder getLateBuffer(RenderType type) {
- return lateBuffer.getBuffer(type);
+ public VertexConsumer getLateBuffer(RenderType type) {
+ return lateBuffer.bufferSource.getBuffer(type);
}
public void draw() {
- RenderSystem.disableCull();
- earlyBuffer.endBatch();
- defaultBuffer.endBatch();
- lateBuffer.endBatch();
+ earlyBuffer.bufferSource.endBatch();
+ defaultBuffer.bufferSource.endBatch();
+ lateBuffer.bufferSource.endBatch();
}
public void draw(RenderType type) {
- RenderSystem.disableCull();
- earlyBuffer.endBatch(type);
- defaultBuffer.endBatch(type);
- lateBuffer.endBatch(type);
+ earlyBuffer.bufferSource.endBatch(type);
+ defaultBuffer.bufferSource.endBatch(type);
+ lateBuffer.bufferSource.endBatch(type);
}
- private static class SuperRenderTypeBufferPhase extends IRenderTypeBuffer.Impl {
-
- // Visible clones from net.minecraft.client.renderer.RenderTypeBuffers
- static final RegionRenderCacheBuilder blockBuilders = new RegionRenderCacheBuilder();
- static final SortedMap createEntityBuilders() {
- return Util.make(new Object2ObjectLinkedOpenHashMap<>(), (map) -> {
- map.put(Atlases.solidBlockSheet(), blockBuilders.builder(RenderType.solid()));
- assign(map, RenderTypes.getOutlineSolid());
- map.put(Atlases.cutoutBlockSheet(), blockBuilders.builder(RenderType.cutout()));
- map.put(Atlases.bannerSheet(), blockBuilders.builder(RenderType.cutoutMipped()));
- map.put(Atlases.translucentCullBlockSheet(), blockBuilders.builder(RenderType.translucent())); // FIXME new equivalent of getEntityTranslucent() ?
- assign(map, Atlases.shieldSheet());
- assign(map, Atlases.bedSheet());
- assign(map, Atlases.shulkerBoxSheet());
- assign(map, Atlases.signSheet());
- assign(map, Atlases.chestSheet());
- assign(map, RenderType.translucentNoCrumbling());
- assign(map, RenderType.glint());
- assign(map, RenderType.entityGlint());
- assign(map, RenderType.waterMask());
- ModelBakery.DESTROY_TYPES.forEach((p_228488_1_) -> {
- assign(map, p_228488_1_);
- });
+ private static class SuperRenderTypeBufferPhase {
+
+ // Visible clones from RenderBuffers
+ private final ChunkBufferBuilderPack fixedBufferPack = new ChunkBufferBuilderPack();
+ private final SortedMap fixedBuffers = Util.make(new Object2ObjectLinkedOpenHashMap<>(), map -> {
+ map.put(Sheets.solidBlockSheet(), fixedBufferPack.builder(RenderType.solid()));
+ map.put(Sheets.cutoutBlockSheet(), fixedBufferPack.builder(RenderType.cutout()));
+ map.put(Sheets.bannerSheet(), fixedBufferPack.builder(RenderType.cutoutMipped()));
+ map.put(Sheets.translucentCullBlockSheet(), fixedBufferPack.builder(RenderType.translucent()));
+ put(map, Sheets.shieldSheet());
+ put(map, Sheets.bedSheet());
+ put(map, Sheets.shulkerBoxSheet());
+ put(map, Sheets.signSheet());
+ put(map, Sheets.chestSheet());
+ put(map, RenderType.translucentNoCrumbling());
+ put(map, RenderType.armorGlint());
+ put(map, RenderType.armorEntityGlint());
+ put(map, RenderType.glint());
+ put(map, RenderType.glintDirect());
+ put(map, RenderType.glintTranslucent());
+ put(map, RenderType.entityGlint());
+ put(map, RenderType.entityGlintDirect());
+ put(map, RenderType.waterMask());
+ put(map, RenderTypes.getOutlineSolid());
+ ModelBakery.DESTROY_TYPES.forEach((p_173062_) -> {
+ put(map, p_173062_);
});
- }
-
+ });
+ private final MultiBufferSource.BufferSource bufferSource = MultiBufferSource.immediateWithBuffers(fixedBuffers, new BufferBuilder(256));
- private static void assign(Object2ObjectLinkedOpenHashMap map, RenderType type) {
+ private static void put(Object2ObjectLinkedOpenHashMap map, RenderType type) {
map.put(type, new BufferBuilder(type.bufferSize()));
}
- protected SuperRenderTypeBufferPhase() {
- super(new BufferBuilder(256), createEntityBuilders());
- }
-
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/WrappedWorld.java b/src/main/java/com/simibubi/mightyarchitect/foundation/WrappedWorld.java
index c9d8fea..07ddb68 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/WrappedWorld.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/WrappedWorld.java
@@ -2,35 +2,77 @@
import java.util.Collections;
import java.util.List;
+import java.util.UUID;
+import java.util.function.Consumer;
import java.util.function.Predicate;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.item.crafting.RecipeManager;
-import net.minecraft.scoreboard.Scoreboard;
-import net.minecraft.tags.ITagCollectionSupplier;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.SoundCategory;
-import net.minecraft.util.SoundEvent;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.registry.DynamicRegistries;
-import net.minecraft.world.ITickList;
-import net.minecraft.world.World;
-import net.minecraft.world.biome.Biome;
-import net.minecraft.world.chunk.AbstractChunkProvider;
-import net.minecraft.world.storage.ISpawnWorldInfo;
-import net.minecraft.world.storage.MapData;
-
-public class WrappedWorld extends World {
-
- protected World world;
-
- public WrappedWorld(World world) {
- super((ISpawnWorldInfo) world.getLevelData(), world.dimension(), world.dimensionType(),
+import javax.annotation.Nullable;
+
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Holder;
+import net.minecraft.core.RegistryAccess;
+import net.minecraft.sounds.SoundEvent;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.crafting.RecipeManager;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.biome.Biome;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.entity.BlockEntity;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.chunk.ChunkSource;
+import net.minecraft.world.level.entity.EntityTypeTest;
+import net.minecraft.world.level.entity.LevelEntityGetter;
+import net.minecraft.world.level.gameevent.GameEvent;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.level.saveddata.maps.MapItemSavedData;
+import net.minecraft.world.level.storage.WritableLevelData;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.world.scores.Scoreboard;
+import net.minecraft.world.ticks.LevelTickAccess;
+
+public class WrappedWorld extends Level {
+
+ protected Level world;
+
+ protected LevelEntityGetter entityGetter = new LevelEntityGetter() {
+ @Nullable
+ @Override
+ public Entity get(int p_156931_) {
+ return null;
+ }
+
+ @Nullable
+ @Override
+ public Entity get(UUID p_156939_) {
+ return null;
+ }
+
+ @Override
+ public Iterable getAll() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public void get(EntityTypeTest p_156935_, Consumer p_156936_) {
+
+ }
+
+ @Override
+ public void get(AABB p_156937_, Consumer p_156938_) {
+
+ }
+
+ @Override
+ public void get(EntityTypeTest p_156932_, AABB p_156933_, Consumer p_156934_) {
+
+ }
+ };
+
+ public WrappedWorld(Level world) {
+ super((WritableLevelData) world.getLevelData(), world.dimension(), world.dimensionTypeRegistration(),
() -> world.getProfiler(), world.isClientSide, false, 0);
this.world = world;
}
@@ -46,7 +88,7 @@ public boolean isStateAtPosition(BlockPos p_217375_1_, Predicate p_2
}
@Override
- public TileEntity getBlockEntity(BlockPos pos) {
+ public BlockEntity getBlockEntity(BlockPos pos) {
return world.getBlockEntity(pos);
}
@@ -66,30 +108,40 @@ public void sendBlockUpdated(BlockPos pos, BlockState oldState, BlockState newSt
}
@Override
- public ITickList getBlockTicks() {
+ public LevelTickAccess getBlockTicks() {
return world.getBlockTicks();
}
@Override
- public ITickList getLiquidTicks() {
- return world.getLiquidTicks();
+ public LevelTickAccess getFluidTicks() {
+ return world.getFluidTicks();
}
@Override
- public void levelEvent(PlayerEntity player, int type, BlockPos pos, int data) {}
+ public void levelEvent(Player player, int type, BlockPos pos, int data) {}
@Override
- public List extends PlayerEntity> players() {
+ public void gameEvent(@Nullable Entity p_151549_, GameEvent p_151550_, BlockPos p_151551_) {
+
+ }
+
+ @Override
+ public List extends Player> players() {
return Collections.emptyList();
}
@Override
- public void playSound(PlayerEntity player, double x, double y, double z, SoundEvent soundIn, SoundCategory category,
+ public void playSound(Player player, double x, double y, double z, SoundEvent soundIn, SoundSource category,
float volume, float pitch) {}
@Override
- public void playSound(PlayerEntity p_217384_1_, Entity p_217384_2_, SoundEvent p_217384_3_,
- SoundCategory p_217384_4_, float p_217384_5_, float p_217384_6_) {}
+ public void playSound(Player p_217384_1_, Entity p_217384_2_, SoundEvent p_217384_3_,
+ SoundSource p_217384_4_, float p_217384_5_, float p_217384_6_) {}
+
+ @Override
+ public String gatherChunkSourceStats() {
+ return null;
+ }
@Override
public Entity getEntity(int id) {
@@ -97,18 +149,18 @@ public Entity getEntity(int id) {
}
@Override
- public MapData getMapData(String mapName) {
+ public MapItemSavedData getMapData(String mapName) {
return null;
}
@Override
public boolean addFreshEntity(Entity entityIn) {
- entityIn.setLevel(world);
+ entityIn.level = world;
return world.addFreshEntity(entityIn);
}
@Override
- public void setMapData(MapData mapDataIn) {}
+ public void setMapData(String mapId, MapItemSavedData mapDataIn) {}
@Override
public int getFreeMapId() {
@@ -129,17 +181,17 @@ public RecipeManager getRecipeManager() {
}
@Override
- public Biome getUncachedNoiseBiome(int p_225604_1_, int p_225604_2_, int p_225604_3_) {
+ public Holder getUncachedNoiseBiome(int p_225604_1_, int p_225604_2_, int p_225604_3_) {
return world.getUncachedNoiseBiome(p_225604_1_, p_225604_2_, p_225604_3_);
}
@Override
- public AbstractChunkProvider getChunkSource() {
+ public ChunkSource getChunkSource() {
return world.getChunkSource();
}
@Override
- public DynamicRegistries registryAccess() {
+ public RegistryAccess registryAccess() {
return world.registryAccess();
}
@@ -149,11 +201,11 @@ public float getShade(Direction p_230487_1_, boolean p_230487_2_) {
}
@Override
- public ITagCollectionSupplier getTagManager() {
- return world.getTagManager();
+ protected LevelEntityGetter getEntities() {
+ return entityGetter;
}
- public World getWorld() {
+ public Level getWorld() {
return world;
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/AngleHelper.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/AngleHelper.java
index 0b74c07..027a287 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/AngleHelper.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/AngleHelper.java
@@ -1,22 +1,14 @@
package com.simibubi.mightyarchitect.foundation.utility;
-import com.mojang.blaze3d.matrix.MatrixStack;
-
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.math.vector.Vector3f;
-import net.minecraftforge.api.distmarker.Dist;
-import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.util.Mth;
public class AngleHelper {
-
- @OnlyIn(Dist.CLIENT)
- public static void applyRotation(Direction direction, MatrixStack ms) {
- ms.mulPose(Vector3f.YP.rotationDegrees(AngleHelper.horizontalAngle(direction)));
- ms.mulPose(Vector3f.XP.rotationDegrees(AngleHelper.verticalAngle(direction)));
- }
public static float horizontalAngle(Direction facing) {
+ if (facing.getAxis().isVertical())
+ return 0;
float angle = facing.toYRot();
if (facing.getAxis() == Axis.X)
angle = -angle;
@@ -28,15 +20,19 @@ public static float verticalAngle(Direction facing) {
}
public static float rad(double angle) {
+ if (angle == 0)
+ return 0;
return (float) (angle / 180 * Math.PI);
}
public static float deg(double angle) {
+ if (angle == 0)
+ return 0;
return (float) (angle * 180 / Math.PI);
}
- public static float angleLerp(float pct, float current, float target) {
- return current + getShortestAngleDiff(current, target) * pct;
+ public static float angleLerp(double pct, double current, double target) {
+ return (float) (current + getShortestAngleDiff(current, target) * pct);
}
public static float getShortestAngleDiff(double current, double target) {
@@ -45,4 +41,12 @@ public static float getShortestAngleDiff(double current, double target) {
return (float) (((((target - current) % 360) + 540) % 360) - 180);
}
+ public static float getShortestAngleDiff(double current, double target, float hint) {
+ float diff = getShortestAngleDiff(current, target);
+ if (Mth.equal(Math.abs(diff), 180) && Math.signum(diff) != Math.signum(hint)) {
+ return diff + 360*Math.signum(hint);
+ }
+ return diff;
+ }
+
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/BuildingHelper.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/BuildingHelper.java
index c8667b1..460d958 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/BuildingHelper.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/BuildingHelper.java
@@ -3,7 +3,7 @@
import java.util.HashSet;
import java.util.Set;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
public class BuildingHelper {
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/ColorHelper.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/ColorHelper.java
index 8dabcb9..e074a23 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/ColorHelper.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/ColorHelper.java
@@ -2,9 +2,7 @@
import java.util.UUID;
-import com.mojang.blaze3d.systems.RenderSystem;
-
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.world.phys.Vec3;
public class ColorHelper {
@@ -43,24 +41,11 @@ public static int mixColors(int color1, int color2, float w) {
return color;
}
- public static void glColor(int color) {
- color = mixColors(color, 0xFFFFFF, .5f);
- int r = (color >> 16);
- int g = (color >> 8) & 0xFF;
- int b = color & 0xFF;
-
- RenderSystem.color4f(r / 256f, g / 256f, b / 256f, 1);
- }
-
- public static void glResetColor() {
- RenderSystem.color4f(1, 1, 1, 1);
- }
-
- public static Vector3d getRGB(int color) {
+ public static Vec3 getRGB(int color) {
int r = (color >> 16);
int g = (color >> 8) & 0xFF;
int b = color & 0xFF;
- return new Vector3d(r, g, b).scale(1 / 256d);
+ return new Vec3(r, g, b).scale(1 / 256d);
}
public static int colorFromUUID(UUID uuid) {
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/DesignHelper.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/DesignHelper.java
index 16178c8..05f9f91 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/DesignHelper.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/DesignHelper.java
@@ -22,7 +22,7 @@
import com.simibubi.mightyarchitect.control.design.partials.TowerFlatRoof;
import com.simibubi.mightyarchitect.control.design.partials.TowerRoof;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
public class DesignHelper {
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/FilesHelper.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/FilesHelper.java
index caaa409..937b291 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/FilesHelper.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/FilesHelper.java
@@ -16,8 +16,8 @@
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.simibubi.mightyarchitect.TheMightyArchitect;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.JsonToNBT;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.TagParser;
public class FilesHelper {
@@ -44,15 +44,16 @@ public static String findFirstValidFilename(String name, String folderPath, Stri
}
public static String slug(String name) {
- return name.toLowerCase().replace(' ', '_');
+ return name.toLowerCase()
+ .replace(' ', '_');
}
- public static boolean saveTagCompoundAsJson(CompoundNBT compound, String path) {
+ public static boolean saveTagCompoundAsJson(CompoundTag compound, String path) {
try {
Files.deleteIfExists(Paths.get(path));
JsonWriter writer = new JsonWriter(Files.newBufferedWriter(Paths.get(path), StandardOpenOption.CREATE));
writer.setIndent(" ");
- Streams.write(new JsonParser().parse(compound.toString()), writer);
+ Streams.write(JsonParser.parseString(compound.toString()), writer);
writer.close();
return true;
} catch (IOException e) {
@@ -60,30 +61,29 @@ public static boolean saveTagCompoundAsJson(CompoundNBT compound, String path) {
}
return false;
}
-
- public static boolean saveTagCompoundAsJsonCompact(CompoundNBT compound, String path) {
+ public static boolean saveTagCompoundAsJsonCompact(CompoundTag compound, String path) {
try {
Files.deleteIfExists(Paths.get(path));
JsonWriter writer = new JsonWriter(Files.newBufferedWriter(Paths.get(path), StandardOpenOption.CREATE));
- Streams.write(new JsonParser().parse(compound.toString()), writer);
+ Streams.write(JsonParser.parseString(compound.toString()), writer);
writer.close();
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
-
+
}
- public static CompoundNBT loadJsonNBT(InputStream inputStream) {
+ public static CompoundTag loadJsonNBT(InputStream inputStream) {
try {
JsonReader reader = new JsonReader(new BufferedReader(new InputStreamReader(inputStream)));
reader.setLenient(true);
JsonElement element = Streams.parse(reader);
reader.close();
inputStream.close();
- return JsonToNBT.parseTag(element.toString());
+ return TagParser.parseTag(element.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (CommandSyntaxException e) {
@@ -92,11 +92,12 @@ public static CompoundNBT loadJsonNBT(InputStream inputStream) {
return null;
}
- public static CompoundNBT loadJsonResourceAsNBT(String filepath) {
- return loadJsonNBT(TheMightyArchitect.class.getClassLoader().getResourceAsStream(filepath));
+ public static CompoundTag loadJsonResourceAsNBT(String filepath) {
+ return loadJsonNBT(TheMightyArchitect.class.getClassLoader()
+ .getResourceAsStream(filepath));
}
- public static CompoundNBT loadJsonAsNBT(String filepath) {
+ public static CompoundTag loadJsonAsNBT(String filepath) {
try {
return loadJsonNBT(Files.newInputStream(Paths.get(filepath), StandardOpenOption.READ));
} catch (IOException e) {
@@ -105,5 +106,4 @@ public static CompoundNBT loadJsonAsNBT(String filepath) {
return null;
}
-
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Iterate.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Iterate.java
index 08620d0..90a5c75 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Iterate.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Iterate.java
@@ -3,9 +3,9 @@
import java.util.Arrays;
import java.util.List;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
public class Iterate {
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Keyboard.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Keyboard.java
index 420d409..a6d9a83 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Keyboard.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Keyboard.java
@@ -1,7 +1,8 @@
package com.simibubi.mightyarchitect.foundation.utility;
+import com.mojang.blaze3d.platform.InputConstants;
+
import net.minecraft.client.Minecraft;
-import net.minecraft.client.util.InputMappings;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -24,7 +25,7 @@ public class Keyboard {
public static final int G = 71;
public static boolean isKeyDown(int key) {
- return InputMappings.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), key);
+ return InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), key);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Lang.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Lang.java
new file mode 100644
index 0000000..307acdb
--- /dev/null
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Lang.java
@@ -0,0 +1,85 @@
+package com.simibubi.mightyarchitect.foundation.utility;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import com.simibubi.mightyarchitect.TheMightyArchitect;
+
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraftforge.fluids.FluidStack;
+
+public class Lang {
+
+ public static String asId(String name) {
+ return name.toLowerCase(Locale.ROOT);
+ }
+
+ public static String nonPluralId(String name) {
+ String asId = asId(name);
+ return asId.endsWith("s") ? asId.substring(0, asId.length() - 1) : asId;
+ }
+
+ public static List translatedOptions(String prefix, String... keys) {
+ List result = new ArrayList<>(keys.length);
+ for (String key : keys)
+ result.add(translate((prefix != null ? prefix + "." : "") + key).component());
+ return result;
+ }
+
+ public static Component empty() {
+ return TextComponent.EMPTY;
+ }
+
+ //
+
+ public static LangBuilder builder() {
+ return new LangBuilder(TheMightyArchitect.ID);
+ }
+
+ public static LangBuilder builder(String namespace) {
+ return new LangBuilder(namespace);
+ }
+
+ //
+
+ public static LangBuilder blockName(BlockState state) {
+ return builder().add(state.getBlock()
+ .getName());
+ }
+
+ public static LangBuilder itemName(ItemStack stack) {
+ return builder().add(stack.getHoverName()
+ .copy());
+ }
+
+ public static LangBuilder fluidName(FluidStack stack) {
+ return builder().add(stack.getDisplayName()
+ .copy());
+ }
+
+ public static LangBuilder number(double d) {
+ return builder().text(LangNumberFormat.format(d));
+ }
+
+ public static LangBuilder translate(String langKey, Object... args) {
+ return builder().translate(langKey, args);
+ }
+
+ public static LangBuilder text(String text) {
+ return builder().text(text);
+ }
+
+ //
+
+ public static Object[] resolveBuilders(Object[] args) {
+ for (int i = 0; i < args.length; i++)
+ if (args[i]instanceof LangBuilder cb)
+ args[i] = cb.component();
+ return args;
+ }
+
+}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/LangBuilder.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/LangBuilder.java
new file mode 100644
index 0000000..e32bf4f
--- /dev/null
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/LangBuilder.java
@@ -0,0 +1,167 @@
+package com.simibubi.mightyarchitect.foundation.utility;
+
+import java.util.List;
+
+import joptsimple.internal.Strings;
+import net.minecraft.ChatFormatting;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
+import net.minecraft.world.entity.player.Player;
+
+public class LangBuilder {
+
+ String namespace;
+ MutableComponent component;
+
+ public LangBuilder(String namespace) {
+ this.namespace = namespace;
+ }
+
+ public LangBuilder space() {
+ return text(" ");
+ }
+
+ public LangBuilder newLine() {
+ return text("\n");
+ }
+
+ /**
+ * Appends a localised component
+ * To add an independently formatted localised component, use add() and a nested
+ * builder
+ *
+ * @param langKey
+ * @param args
+ * @return
+ */
+ public LangBuilder translate(String langKey, Object... args) {
+ return add(new TranslatableComponent(namespace + "." + langKey, Lang.resolveBuilders(args)));
+ }
+
+ /**
+ * Appends a text component
+ *
+ * @param literalText
+ * @return
+ */
+ public LangBuilder text(String literalText) {
+ return add(new TextComponent(literalText));
+ }
+
+ /**
+ * Appends a colored text component
+ *
+ * @param format
+ * @param literalText
+ * @return
+ */
+ public LangBuilder text(ChatFormatting format, String literalText) {
+ return add(new TextComponent(literalText).withStyle(format));
+ }
+
+ /**
+ * Appends a colored text component
+ *
+ * @param color
+ * @param literalText
+ * @return
+ */
+ public LangBuilder text(int color, String literalText) {
+ return add(new TextComponent(literalText).withStyle(s -> s.withColor(color)));
+ }
+
+ /**
+ * Appends the contents of another builder
+ *
+ * @param otherBuilder
+ * @return
+ */
+ public LangBuilder add(LangBuilder otherBuilder) {
+ return add(otherBuilder.component());
+ }
+
+ /**
+ * Appends a component
+ *
+ * @param customComponent
+ * @return
+ */
+ public LangBuilder add(MutableComponent customComponent) {
+ component = component == null ? customComponent : component.append(customComponent);
+ return this;
+ }
+
+ //
+
+ /**
+ * Applies the format to all added components
+ *
+ * @param format
+ * @return
+ */
+ public LangBuilder style(ChatFormatting format) {
+ assertComponent();
+ component = component.withStyle(format);
+ return this;
+ }
+
+ /**
+ * Applies the color to all added components
+ *
+ * @param color
+ * @return
+ */
+ public LangBuilder color(int color) {
+ assertComponent();
+ component = component.withStyle(s -> s.withColor(color));
+ return this;
+ }
+
+ //
+
+ public MutableComponent component() {
+ assertComponent();
+ return component;
+ }
+
+ public String string() {
+ return component().getString();
+ }
+
+ public String json() {
+ return Component.Serializer.toJson(component());
+ }
+
+ public void sendStatus(Player player) {
+ player.displayClientMessage(component(), true);
+ }
+
+ public void sendChat(Player player) {
+ player.displayClientMessage(component(), false);
+ }
+
+ public void addTo(List super MutableComponent> tooltip) {
+ tooltip.add(component());
+ }
+
+ public void forGoggles(List super MutableComponent> tooltip) {
+ forGoggles(tooltip, 0);
+ }
+
+ public void forGoggles(List super MutableComponent> tooltip, int indents) {
+ tooltip.add(Lang.builder()
+ .text(Strings.repeat(' ', 4 + indents))
+ .add(this)
+ .component());
+ }
+
+ //
+
+ private void assertComponent() {
+ if (component == null)
+ throw new IllegalStateException("No components were added to builder");
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/LangNumberFormat.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/LangNumberFormat.java
new file mode 100644
index 0000000..56976d7
--- /dev/null
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/LangNumberFormat.java
@@ -0,0 +1,33 @@
+package com.simibubi.mightyarchitect.foundation.utility;
+
+import java.text.NumberFormat;
+import java.util.Locale;
+
+import net.minecraft.client.Minecraft;
+
+public class LangNumberFormat {
+
+ private NumberFormat format = NumberFormat.getNumberInstance(Locale.ROOT);
+ public static LangNumberFormat numberFormat = new LangNumberFormat();
+
+ public NumberFormat get() {
+ return format;
+ }
+
+ public void update() {
+ format = NumberFormat.getInstance(Minecraft.getInstance()
+ .getLanguageManager()
+ .getSelected()
+ .getJavaLocale());
+ format.setMaximumFractionDigits(2);
+ format.setMinimumFractionDigits(0);
+ format.setGroupingUsed(true);
+ }
+
+ public static String format(double d) {
+ return numberFormat.get()
+ .format(d)
+ .replace("\u00A0", " ");
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/LerpedFloat.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/LerpedFloat.java
new file mode 100644
index 0000000..032c73c
--- /dev/null
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/LerpedFloat.java
@@ -0,0 +1,148 @@
+package com.simibubi.mightyarchitect.foundation.utility;
+
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.util.Mth;
+
+public class LerpedFloat {
+
+ protected Interpolator interpolator;
+ protected float previousValue;
+ protected float value;
+
+ protected Chaser chaseFunction;
+ protected float chaseTarget;
+ protected float chaseSpeed;
+ protected boolean angularChase;
+
+ protected boolean forcedSync;
+
+ public LerpedFloat(Interpolator interpolator) {
+ this.interpolator = interpolator;
+ startWithValue(0);
+ forcedSync = true;
+ }
+
+ public static LerpedFloat linear() {
+ return new LerpedFloat((p, c, t) -> (float) Mth.lerp(p, c, t));
+ }
+
+ public static LerpedFloat angular() {
+ LerpedFloat lerpedFloat = new LerpedFloat(AngleHelper::angleLerp);
+ lerpedFloat.angularChase = true;
+ return lerpedFloat;
+ }
+
+ public LerpedFloat startWithValue(double value) {
+ float f = (float) value;
+ this.previousValue = f;
+ this.chaseTarget = f;
+ this.value = f;
+ return this;
+ }
+
+ public LerpedFloat chase(double value, double speed, Chaser chaseFunction) {
+ updateChaseTarget((float) value);
+ this.chaseSpeed = (float) speed;
+ this.chaseFunction = chaseFunction;
+ return this;
+ }
+
+ public LerpedFloat disableSmartAngleChasing() {
+ angularChase = false;
+ return this;
+ }
+
+ public void updateChaseTarget(float target) {
+ if (angularChase)
+ target = value + AngleHelper.getShortestAngleDiff(value, target);
+ this.chaseTarget = target;
+ }
+
+ public boolean updateChaseSpeed(double speed) {
+ float prevSpeed = this.chaseSpeed;
+ this.chaseSpeed = (float) speed;
+ return !Mth.equal(prevSpeed, speed);
+ }
+
+ public void tickChaser() {
+ previousValue = value;
+ if (chaseFunction == null)
+ return;
+ if (Mth.equal((double) value, chaseTarget)) {
+ value = chaseTarget;
+ return;
+ }
+ value = chaseFunction.chase(value, chaseSpeed, chaseTarget);
+ }
+
+ public void setValueNoUpdate(double value) {
+ this.value = (float) value;
+ }
+
+ public void setValue(double value) {
+ this.previousValue = this.value;
+ this.value = (float) value;
+ }
+
+ public float getValue() {
+ return getValue(1);
+ }
+
+ public float getValue(float partialTicks) {
+ return interpolator.interpolate(partialTicks, previousValue, value);
+ }
+
+ public boolean settled() {
+ return Mth.equal((double) previousValue, value);
+ }
+
+ public float getChaseTarget() {
+ return chaseTarget;
+ }
+
+ public void forceNextSync() {
+ forcedSync = true;
+ }
+
+ public CompoundTag writeNBT() {
+ CompoundTag compoundNBT = new CompoundTag();
+ compoundNBT.putFloat("Speed", chaseSpeed);
+ compoundNBT.putFloat("Target", chaseTarget);
+ compoundNBT.putFloat("Value", value);
+ if (forcedSync)
+ compoundNBT.putBoolean("Force", true);
+ forcedSync = false;
+ return compoundNBT;
+ }
+
+ public void readNBT(CompoundTag compoundNBT, boolean clientPacket) {
+ if (!clientPacket || compoundNBT.contains("Force"))
+ startWithValue(compoundNBT.getFloat("Value"));
+ readChaser(compoundNBT);
+ }
+
+ protected void readChaser(CompoundTag compoundNBT) {
+ chaseSpeed = compoundNBT.getFloat("Speed");
+ chaseTarget = compoundNBT.getFloat("Target");
+ }
+
+ @FunctionalInterface
+ public interface Interpolator {
+ float interpolate(double progress, double current, double target);
+ }
+
+ @FunctionalInterface
+ public interface Chaser {
+
+ Chaser IDLE = (c, s, t) -> (float) c;
+ Chaser EXP = exp(Double.MAX_VALUE);
+ Chaser LINEAR = (c, s, t) -> (float) (c + Mth.clamp(t - c, -s, s));
+
+ static Chaser exp(double maxEffectiveSpeed) {
+ return (c, s, t) -> (float) (c + Mth.clamp((t - c) * s, -maxEffectiveSpeed, maxEffectiveSpeed));
+ }
+
+ float chase(double current, double speed, double target);
+ }
+
+}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/RaycastHelper.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/RaycastHelper.java
index 7aaca8e..b7dd4c8 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/RaycastHelper.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/RaycastHelper.java
@@ -2,66 +2,66 @@
import java.util.function.Predicate;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.util.Direction;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.BlockRayTraceResult;
-import net.minecraft.util.math.MathHelper;
-import net.minecraft.util.math.RayTraceContext;
-import net.minecraft.util.math.RayTraceContext.BlockMode;
-import net.minecraft.util.math.RayTraceContext.FluidMode;
-import net.minecraft.util.math.vector.Vector3d;
-import net.minecraft.world.World;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.util.Mth;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.level.ClipContext;
+import net.minecraft.world.level.ClipContext.Block;
+import net.minecraft.world.level.ClipContext.Fluid;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.phys.Vec3;
public class RaycastHelper {
- public static BlockRayTraceResult rayTraceRange(World worldIn, PlayerEntity playerIn, double range) {
- Vector3d origin = getTraceOrigin(playerIn);
- Vector3d target = getTraceTarget(playerIn, range, origin);
- RayTraceContext context = new RayTraceContext(origin, target, BlockMode.COLLIDER, FluidMode.NONE, playerIn);
+ public static BlockHitResult rayTraceRange(Level worldIn, Player playerIn, double range) {
+ Vec3 origin = getTraceOrigin(playerIn);
+ Vec3 target = getTraceTarget(playerIn, range, origin);
+ ClipContext context = new ClipContext(origin, target, Block.COLLIDER, Fluid.NONE, playerIn);
return worldIn.clip(context);
}
- public static PredicateTraceResult rayTraceUntil(PlayerEntity playerIn, double range, Predicate predicate) {
- Vector3d origin = getTraceOrigin(playerIn);
- Vector3d target = getTraceTarget(playerIn, range, origin);
+ public static PredicateTraceResult rayTraceUntil(Player playerIn, double range, Predicate predicate) {
+ Vec3 origin = getTraceOrigin(playerIn);
+ Vec3 target = getTraceTarget(playerIn, range, origin);
return rayTraceUntil(origin, target, predicate);
}
- private static Vector3d getTraceTarget(PlayerEntity playerIn, double range, Vector3d origin) {
- float f = playerIn.xRot;
- float f1 = playerIn.yRot;
- float f2 = MathHelper.cos(-f1 * 0.017453292F - (float) Math.PI);
- float f3 = MathHelper.sin(-f1 * 0.017453292F - (float) Math.PI);
- float f4 = -MathHelper.cos(-f * 0.017453292F);
- float f5 = MathHelper.sin(-f * 0.017453292F);
+ private static Vec3 getTraceTarget(Player playerIn, double range, Vec3 origin) {
+ float f = playerIn.getXRot();
+ float f1 = playerIn.getYRot();
+ float f2 = Mth.cos(-f1 * 0.017453292F - (float) Math.PI);
+ float f3 = Mth.sin(-f1 * 0.017453292F - (float) Math.PI);
+ float f4 = -Mth.cos(-f * 0.017453292F);
+ float f5 = Mth.sin(-f * 0.017453292F);
float f6 = f3 * f4;
float f7 = f2 * f4;
double d3 = range;
- Vector3d Vector3d1 = origin.add((double) f6 * d3, (double) f5 * d3, (double) f7 * d3);
+ Vec3 Vector3d1 = origin.add((double) f6 * d3, (double) f5 * d3, (double) f7 * d3);
return Vector3d1;
}
- private static Vector3d getTraceOrigin(PlayerEntity playerIn) {
+ private static Vec3 getTraceOrigin(Player playerIn) {
double d0 = playerIn.getX();
double d1 = playerIn.getY() + (double) playerIn.getEyeHeight();
double d2 = playerIn.getZ();
- Vector3d Vector3d = new Vector3d(d0, d1, d2);
+ Vec3 Vector3d = new Vec3(d0, d1, d2);
return Vector3d;
}
- private static PredicateTraceResult rayTraceUntil(Vector3d start, Vector3d end, Predicate predicate) {
+ private static PredicateTraceResult rayTraceUntil(Vec3 start, Vec3 end, Predicate predicate) {
if (Double.isNaN(start.x) || Double.isNaN(start.y) || Double.isNaN(start.z))
return null;
if (Double.isNaN(end.x) || Double.isNaN(end.y) || Double.isNaN(end.z))
return null;
- int dx = MathHelper.floor(end.x);
- int dy = MathHelper.floor(end.y);
- int dz = MathHelper.floor(end.z);
- int x = MathHelper.floor(start.x);
- int y = MathHelper.floor(start.y);
- int z = MathHelper.floor(start.z);
+ int dx = Mth.floor(end.x);
+ int dy = Mth.floor(end.y);
+ int dz = Mth.floor(end.z);
+ int x = Mth.floor(start.x);
+ int y = Mth.floor(start.y);
+ int z = Mth.floor(start.z);
BlockPos currentPos = new BlockPos(x, y, z);
@@ -145,18 +145,18 @@ private static PredicateTraceResult rayTraceUntil(Vector3d start, Vector3d end,
if (d3 < d4 && d3 < d5) {
enumfacing = dx > x ? Direction.WEST : Direction.EAST;
- start = new Vector3d(d0, start.y + d7 * d3, start.z + d8 * d3);
+ start = new Vec3(d0, start.y + d7 * d3, start.z + d8 * d3);
} else if (d4 < d5) {
enumfacing = dy > y ? Direction.DOWN : Direction.UP;
- start = new Vector3d(start.x + d6 * d4, d1, start.z + d8 * d4);
+ start = new Vec3(start.x + d6 * d4, d1, start.z + d8 * d4);
} else {
enumfacing = dz > z ? Direction.NORTH : Direction.SOUTH;
- start = new Vector3d(start.x + d6 * d5, start.y + d7 * d5, d2);
+ start = new Vec3(start.x + d6 * d5, start.y + d7 * d5, d2);
}
- x = MathHelper.floor(start.x) - (enumfacing == Direction.EAST ? 1 : 0);
- y = MathHelper.floor(start.y) - (enumfacing == Direction.UP ? 1 : 0);
- z = MathHelper.floor(start.z) - (enumfacing == Direction.SOUTH ? 1 : 0);
+ x = Mth.floor(start.x) - (enumfacing == Direction.EAST ? 1 : 0);
+ y = Mth.floor(start.y) - (enumfacing == Direction.UP ? 1 : 0);
+ z = Mth.floor(start.z) - (enumfacing == Direction.SOUTH ? 1 : 0);
currentPos = new BlockPos(x, y, z);
if (predicate.test(currentPos))
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/ShaderManager.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/ShaderManager.java
index cc59120..aa0a4de 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/ShaderManager.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/ShaderManager.java
@@ -1,9 +1,9 @@
package com.simibubi.mightyarchitect.foundation.utility;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.player.ClientPlayerEntity;
-import net.minecraft.potion.EffectInstance;
-import net.minecraft.potion.Effects;
+import net.minecraft.client.player.LocalPlayer;
+import net.minecraft.world.effect.MobEffectInstance;
+import net.minecraft.world.effect.MobEffects;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.event.TickEvent.ClientTickEvent;
import net.minecraftforge.eventbus.api.EventPriority;
@@ -20,10 +20,10 @@ public static void onClientTick(ClientTickEvent event) {
if (Minecraft.getInstance().level == null && activeShader != Shaders.None)
stopUsingShaders();
- ClientPlayerEntity player = Minecraft.getInstance().player;
+ LocalPlayer player = Minecraft.getInstance().player;
if (player == null)
return;
- EffectInstance activePotionEffect = player.getEffect(Effects.NIGHT_VISION);
+ MobEffectInstance activePotionEffect = player.getEffect(MobEffects.NIGHT_VISION);
if (activeShader == Shaders.Blueprint) {
if (activePotionEffect == null || activePotionEffect.getDuration() < 999)
@@ -32,7 +32,7 @@ public static void onClientTick(ClientTickEvent event) {
}
if (activePotionEffect instanceof NVEffectInstance)
- player.removeEffectNoUpdate(Effects.NIGHT_VISION);
+ player.removeEffectNoUpdate(MobEffects.NIGHT_VISION);
}
public static Shaders getActiveShader() {
@@ -51,10 +51,10 @@ public static void stopUsingShaders() {
activeShader.setActive(true);
}
- private static class NVEffectInstance extends EffectInstance {
+ private static class NVEffectInstance extends MobEffectInstance {
public NVEffectInstance() {
- super(Effects.NIGHT_VISION, 1000, 0, false, false, false);
+ super(MobEffects.NIGHT_VISION, 1000, 0, false, false, false);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Shaders.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Shaders.java
index 40b2a26..1274a43 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Shaders.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/Shaders.java
@@ -3,8 +3,8 @@
import com.simibubi.mightyarchitect.TheMightyArchitect;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.shader.ShaderGroup;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.client.renderer.PostChain;
+import net.minecraft.resources.ResourceLocation;
public enum Shaders {
@@ -18,7 +18,7 @@ private Shaders(String filename) {
public boolean isActive() {
Minecraft mc = Minecraft.getInstance();
- ShaderGroup shaderGroup = mc.gameRenderer.currentEffect();
+ PostChain shaderGroup = mc.gameRenderer.currentEffect();
return shaderGroup != null && shaderGroup.getName()
.equals(location.toString());
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/VecHelper.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/VecHelper.java
index f1ea411..8bb42e8 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/VecHelper.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/VecHelper.java
@@ -4,106 +4,106 @@
import javax.annotation.Nullable;
-import net.minecraft.nbt.DoubleNBT;
-import net.minecraft.nbt.ListNBT;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.MathHelper;
-import net.minecraft.util.math.vector.Vector3d;
-import net.minecraft.util.math.vector.Vector3i;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.core.Vec3i;
+import net.minecraft.nbt.DoubleTag;
+import net.minecraft.nbt.ListTag;
+import net.minecraft.util.Mth;
+import net.minecraft.world.phys.Vec3;
public class VecHelper {
- public static final Vector3d CENTER_OF_ORIGIN = new Vector3d(.5, .5, .5);
+ public static final Vec3 CENTER_OF_ORIGIN = new Vec3(.5, .5, .5);
- public static Vector3d rotate(Vector3d vec, Vector3d rotationVec) {
+ public static Vec3 rotate(Vec3 vec, Vec3 rotationVec) {
return rotate(vec, rotationVec.x, rotationVec.y, rotationVec.z);
}
- public static Vector3d rotate(Vector3d vec, double xRot, double yRot, double zRot) {
+ public static Vec3 rotate(Vec3 vec, double xRot, double yRot, double zRot) {
return rotate(rotate(rotate(vec, xRot, Axis.X), yRot, Axis.Y), zRot, Axis.Z);
}
- public static Vector3d rotateCentered(Vector3d vec, double deg, Axis axis) {
- Vector3d shift = getCenterOf(BlockPos.ZERO);
+ public static Vec3 rotateCentered(Vec3 vec, double deg, Axis axis) {
+ Vec3 shift = getCenterOf(BlockPos.ZERO);
return VecHelper.rotate(vec.subtract(shift), deg, axis)
.add(shift);
}
- public static Vector3d lerp(Vector3d start, Vector3d end, double pct) {
+ public static Vec3 lerp(Vec3 start, Vec3 end, double pct) {
return start.add(end.subtract(start).scale(pct));
}
- public static Vector3d rotate(Vector3d vec, double deg, Axis axis) {
+ public static Vec3 rotate(Vec3 vec, double deg, Axis axis) {
if (deg == 0)
return vec;
- if (vec == Vector3d.ZERO)
+ if (vec == Vec3.ZERO)
return vec;
float angle = (float) (deg / 180f * Math.PI);
- double sin = MathHelper.sin(angle);
- double cos = MathHelper.cos(angle);
+ double sin = Mth.sin(angle);
+ double cos = Mth.cos(angle);
double x = vec.x;
double y = vec.y;
double z = vec.z;
if (axis == Axis.X)
- return new Vector3d(x, y * cos - z * sin, z * cos + y * sin);
+ return new Vec3(x, y * cos - z * sin, z * cos + y * sin);
if (axis == Axis.Y)
- return new Vector3d(x * cos + z * sin, y, z * cos - x * sin);
+ return new Vec3(x * cos + z * sin, y, z * cos - x * sin);
if (axis == Axis.Z)
- return new Vector3d(x * cos - y * sin, y * cos + x * sin, z);
+ return new Vec3(x * cos - y * sin, y * cos + x * sin, z);
return vec;
}
- public static boolean isVecPointingTowards(Vector3d vec, Direction direction) {
- return Vector3d.atLowerCornerOf(direction.getNormal()).distanceTo(vec.normalize()) < .75;
+ public static boolean isVecPointingTowards(Vec3 vec, Direction direction) {
+ return Vec3.atLowerCornerOf(direction.getNormal()).distanceTo(vec.normalize()) < .75;
}
- public static Vector3d getCenterOf(Vector3i pos) {
- if (pos.equals(Vector3i.ZERO))
+ public static Vec3 getCenterOf(Vec3i pos) {
+ if (pos.equals(Vec3i.ZERO))
return CENTER_OF_ORIGIN;
- return Vector3d.atLowerCornerOf(pos).add(.5f, .5f, .5f);
+ return Vec3.atLowerCornerOf(pos).add(.5f, .5f, .5f);
}
- public static Vector3d offsetRandomly(Vector3d vec, Random r, float radius) {
- return new Vector3d(vec.x + (r.nextFloat() - .5f) * 2 * radius, vec.y + (r.nextFloat() - .5f) * 2 * radius,
+ public static Vec3 offsetRandomly(Vec3 vec, Random r, float radius) {
+ return new Vec3(vec.x + (r.nextFloat() - .5f) * 2 * radius, vec.y + (r.nextFloat() - .5f) * 2 * radius,
vec.z + (r.nextFloat() - .5f) * 2 * radius);
}
- public static Vector3d axisAlingedPlaneOf(Vector3d vec) {
+ public static Vec3 axisAlingedPlaneOf(Vec3 vec) {
vec = vec.normalize();
- return new Vector3d(1, 1, 1).subtract(Math.abs(vec.x), Math.abs(vec.y), Math.abs(vec.z));
+ return new Vec3(1, 1, 1).subtract(Math.abs(vec.x), Math.abs(vec.y), Math.abs(vec.z));
}
- public static Vector3d axisAlingedPlaneOf(Direction face) {
- return axisAlingedPlaneOf(Vector3d.atLowerCornerOf(face.getNormal()));
+ public static Vec3 axisAlingedPlaneOf(Direction face) {
+ return axisAlingedPlaneOf(Vec3.atLowerCornerOf(face.getNormal()));
}
- public static ListNBT writeNBT(Vector3d vec) {
- ListNBT listnbt = new ListNBT();
- listnbt.add(DoubleNBT.valueOf(vec.x));
- listnbt.add(DoubleNBT.valueOf(vec.y));
- listnbt.add(DoubleNBT.valueOf(vec.z));
+ public static ListTag writeNBT(Vec3 vec) {
+ ListTag listnbt = new ListTag();
+ listnbt.add(DoubleTag.valueOf(vec.x));
+ listnbt.add(DoubleTag.valueOf(vec.y));
+ listnbt.add(DoubleTag.valueOf(vec.z));
return listnbt;
}
- public static Vector3d readNBT(ListNBT list) {
+ public static Vec3 readNBT(ListTag list) {
if (list.isEmpty())
- return Vector3d.ZERO;
- return new Vector3d(list.getDouble(0), list.getDouble(1), list.getDouble(2));
+ return Vec3.ZERO;
+ return new Vec3(list.getDouble(0), list.getDouble(1), list.getDouble(2));
}
- public static Vector3d voxelSpace(double x, double y, double z) {
- return new Vector3d(x, y, z).scale(1 / 16f);
+ public static Vec3 voxelSpace(double x, double y, double z) {
+ return new Vec3(x, y, z).scale(1 / 16f);
}
- public static int getCoordinate(Vector3i pos, Axis axis) {
+ public static int getCoordinate(Vec3i pos, Axis axis) {
return axis.choose(pos.getX(), pos.getY(), pos.getZ());
}
- public static float getCoordinate(Vector3d vec, Axis axis) {
+ public static float getCoordinate(Vec3 vec, Axis axis) {
return (float) axis.choose(vec.x, vec.y, vec.z);
}
@@ -117,35 +117,35 @@ public static boolean onSameAxis(BlockPos pos1, BlockPos pos2, Axis axis) {
return true;
}
- public static Vector3d clamp(Vector3d vec, float maxLength) {
+ public static Vec3 clamp(Vec3 vec, float maxLength) {
return vec.length() > maxLength ? vec.normalize()
.scale(maxLength) : vec;
}
- public static Vector3d clampComponentWise(Vector3d vec, float maxLength) {
- return new Vector3d(MathHelper.clamp(vec.x, -maxLength, maxLength), MathHelper.clamp(vec.y, -maxLength, maxLength),
- MathHelper.clamp(vec.z, -maxLength, maxLength));
+ public static Vec3 clampComponentWise(Vec3 vec, float maxLength) {
+ return new Vec3(Mth.clamp(vec.x, -maxLength, maxLength), Mth.clamp(vec.y, -maxLength, maxLength),
+ Mth.clamp(vec.z, -maxLength, maxLength));
}
- public static Vector3d project(Vector3d vec, Vector3d ontoVec) {
- if (ontoVec.equals(Vector3d.ZERO))
- return Vector3d.ZERO;
+ public static Vec3 project(Vec3 vec, Vec3 ontoVec) {
+ if (ontoVec.equals(Vec3.ZERO))
+ return Vec3.ZERO;
return ontoVec.scale(vec.dot(ontoVec) / ontoVec.lengthSqr());
}
@Nullable
- public static Vector3d intersectSphere(Vector3d origin, Vector3d lineDirection, Vector3d sphereCenter, double radius) {
- if (lineDirection.equals(Vector3d.ZERO))
+ public static Vec3 intersectSphere(Vec3 origin, Vec3 lineDirection, Vec3 sphereCenter, double radius) {
+ if (lineDirection.equals(Vec3.ZERO))
return null;
if (lineDirection.length() != 1)
lineDirection = lineDirection.normalize();
- Vector3d diff = origin.subtract(sphereCenter);
+ Vec3 diff = origin.subtract(sphereCenter);
double lineDotDiff = lineDirection.dot(diff);
double delta = lineDotDiff * lineDotDiff - (diff.lengthSqr() - radius * radius);
if (delta < 0)
return null;
- double t = -lineDotDiff + MathHelper.sqrt(delta);
+ double t = -lineDotDiff + Math.sqrt(delta);
return origin.add(lineDirection.scale(t));
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/AABBOutline.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/AABBOutline.java
index 0c78cff..59aa1ca 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/AABBOutline.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/AABBOutline.java
@@ -1,48 +1,47 @@
package com.simibubi.mightyarchitect.foundation.utility.outliner;
-import com.mojang.blaze3d.matrix.MatrixStack;
-import com.mojang.blaze3d.vertex.IVertexBuilder;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.mightyarchitect.foundation.RenderTypes;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.client.renderer.RenderType;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.world.phys.Vec3;
public class AABBOutline extends Outline {
- protected AxisAlignedBB bb;
+ protected AABB bb;
- public AABBOutline(AxisAlignedBB bb) {
+ public AABBOutline(AABB bb) {
this.setBounds(bb);
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
renderBB(ms, buffer, bb);
}
- public void renderBB(MatrixStack ms, IRenderTypeBuffer buffer, AxisAlignedBB bb) {
- Vector3d projectedView = Minecraft.getInstance().gameRenderer.getMainCamera()
+ public void renderBB(PoseStack ms, MultiBufferSource buffer, AABB bb) {
+ Vec3 projectedView = Minecraft.getInstance().gameRenderer.getMainCamera()
.getPosition();
boolean noCull = bb.contains(projectedView);
bb = bb.inflate(noCull ? -1 / 128d : 1 / 128d);
noCull |= params.disableCull;
- Vector3d xyz = new Vector3d(bb.minX, bb.minY, bb.minZ);
- Vector3d Xyz = new Vector3d(bb.maxX, bb.minY, bb.minZ);
- Vector3d xYz = new Vector3d(bb.minX, bb.maxY, bb.minZ);
- Vector3d XYz = new Vector3d(bb.maxX, bb.maxY, bb.minZ);
- Vector3d xyZ = new Vector3d(bb.minX, bb.minY, bb.maxZ);
- Vector3d XyZ = new Vector3d(bb.maxX, bb.minY, bb.maxZ);
- Vector3d xYZ = new Vector3d(bb.minX, bb.maxY, bb.maxZ);
- Vector3d XYZ = new Vector3d(bb.maxX, bb.maxY, bb.maxZ);
+ Vec3 xyz = new Vec3(bb.minX, bb.minY, bb.minZ);
+ Vec3 Xyz = new Vec3(bb.maxX, bb.minY, bb.minZ);
+ Vec3 xYz = new Vec3(bb.minX, bb.maxY, bb.minZ);
+ Vec3 XYz = new Vec3(bb.maxX, bb.maxY, bb.minZ);
+ Vec3 xyZ = new Vec3(bb.minX, bb.minY, bb.maxZ);
+ Vec3 XyZ = new Vec3(bb.maxX, bb.minY, bb.maxZ);
+ Vec3 xYZ = new Vec3(bb.minX, bb.maxY, bb.maxZ);
+ Vec3 XYZ = new Vec3(bb.maxX, bb.maxY, bb.maxZ);
- Vector3d start = xyz;
+ Vec3 start = xyz;
renderAACuboidLine(ms, buffer, start, Xyz);
renderAACuboidLine(ms, buffer, start, xYz);
renderAACuboidLine(ms, buffer, start, xyZ);
@@ -71,8 +70,8 @@ public void renderBB(MatrixStack ms, IRenderTypeBuffer buffer, AxisAlignedBB bb)
}
- protected void renderFace(MatrixStack ms, IRenderTypeBuffer buffer, Direction direction, Vector3d p1, Vector3d p2,
- Vector3d p3, Vector3d p4, boolean noCull) {
+ protected void renderFace(PoseStack ms, MultiBufferSource buffer, Direction direction, Vec3 p1, Vec3 p2, Vec3 p3,
+ Vec3 p4, boolean noCull) {
if (!params.faceTexture.isPresent())
return;
if (params.isFaceHidden(direction))
@@ -84,20 +83,23 @@ protected void renderFace(MatrixStack ms, IRenderTypeBuffer buffer, Direction di
params.alpha =
(direction == params.getHighlightedFace() && params.hightlightedFaceTexture.isPresent()) ? 1 : alphaBefore;
- RenderType translucentType = RenderTypes.getOutlineTranslucent(faceTexture, !noCull);
- IVertexBuilder builder = buffer.getBuffer(translucentType);
+ // LogManager.getLogger().info(faceTexture.getPath() + " " + params.alpha + " "
+ // + alphaBefore);
+
+ VertexConsumer builder = buffer.getBuffer(RenderTypes.getOutlineTranslucent(faceTexture, !noCull));
Axis axis = direction.getAxis();
- Vector3d uDiff = p2.subtract(p1);
- Vector3d vDiff = p4.subtract(p1);
+ Vec3 uDiff = p2.subtract(p1);
+ Vec3 vDiff = p4.subtract(p1);
float maxU = (float) Math.abs(axis == Axis.X ? uDiff.z : uDiff.x);
float maxV = (float) Math.abs(axis == Axis.Y ? vDiff.z : vDiff.y);
- putQuadUVColor(ms, builder, p1, p2, p3, p4, params.faceRgb == null ? params.rgb : params.faceRgb, 0, 0, maxU,
- maxV, Direction.UP);
+
+ putQuadUV(ms, builder, p1, p2, p3, p4, 0, 0, maxU, maxV, Direction.UP, true);
+
params.alpha = alphaBefore;
}
- public void setBounds(AxisAlignedBB bb) {
+ public void setBounds(AABB bb) {
this.bb = bb;
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/BlockClusterOutline.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/BlockClusterOutline.java
index b81b191..04c670f 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/BlockClusterOutline.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/BlockClusterOutline.java
@@ -6,19 +6,19 @@
import java.util.Optional;
import java.util.Set;
-import com.mojang.blaze3d.matrix.MatrixStack;
-import com.mojang.blaze3d.vertex.IVertexBuilder;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.mightyarchitect.AllSpecialTextures;
import com.simibubi.mightyarchitect.foundation.RenderTypes;
import com.simibubi.mightyarchitect.foundation.utility.VecHelper;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.Direction.AxisDirection;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.core.Direction.AxisDirection;
+import net.minecraft.world.phys.Vec3;
public class BlockClusterOutline extends Outline {
@@ -30,11 +30,11 @@ public BlockClusterOutline(Iterable selection) {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
for (MergeEntry edge : cluster.visibleEdges) {
- Vector3d start = Vector3d.atLowerCornerOf(edge.pos);
+ Vec3 start = Vec3.atLowerCornerOf(edge.pos);
Direction direction = Direction.get(AxisDirection.POSITIVE, edge.axis);
- renderAACuboidLine(ms, buffer, start, Vector3d.atLowerCornerOf(edge.pos.relative(direction)));
+ renderAACuboidLine(ms, buffer, start, Vec3.atLowerCornerOf(edge.pos.relative(direction)));
}
for (MergeEntry face : cluster.visibleFaces.keySet()) {
@@ -47,18 +47,18 @@ public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
}
}
- protected void renderBlockFace(MatrixStack ms, IRenderTypeBuffer buffer, BlockPos pos, Direction face) {
+ protected void renderBlockFace(PoseStack ms, MultiBufferSource buffer, BlockPos pos, Direction face) {
Optional faceTexture = params.faceTexture;
if (!faceTexture.isPresent())
return;
RenderType translucentType = RenderTypes.getOutlineTranslucent(faceTexture.get()
.getLocation(), true);
- IVertexBuilder builder = buffer.getBuffer(translucentType);
+ VertexConsumer builder = buffer.getBuffer(translucentType);
- Vector3d center = VecHelper.getCenterOf(pos);
- Vector3d offset = Vector3d.atLowerCornerOf(face.getNormal());
- Vector3d plane = VecHelper.axisAlingedPlaneOf(offset);
+ Vec3 center = VecHelper.getCenterOf(pos);
+ Vec3 offset = Vec3.atLowerCornerOf(face.getNormal());
+ Vec3 plane = VecHelper.axisAlingedPlaneOf(offset);
Axis axis = face.getAxis();
offset = offset.scale(1 / 2f + 1 / 64d);
@@ -67,13 +67,13 @@ protected void renderBlockFace(MatrixStack ms, IRenderTypeBuffer buffer, BlockPo
int deg = face.getAxisDirection()
.getStep() * 90;
- Vector3d a1 = plane.add(center);
+ Vec3 a1 = plane.add(center);
plane = VecHelper.rotate(plane, deg, axis);
- Vector3d a2 = plane.add(center);
+ Vec3 a2 = plane.add(center);
plane = VecHelper.rotate(plane, deg, axis);
- Vector3d a3 = plane.add(center);
+ Vec3 a3 = plane.add(center);
plane = VecHelper.rotate(plane, deg, axis);
- Vector3d a4 = plane.add(center);
+ Vec3 a4 = plane.add(center);
putQuad(ms, builder, a1, a2, a3, a4, face);
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/ChasingAABBOutline.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/ChasingAABBOutline.java
index 0c57f21..c08cb88 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/ChasingAABBOutline.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/ChasingAABBOutline.java
@@ -1,24 +1,24 @@
package com.simibubi.mightyarchitect.foundation.utility.outliner;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.MathHelper;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.util.Mth;
+import net.minecraft.world.phys.AABB;
public class ChasingAABBOutline extends AABBOutline {
- AxisAlignedBB targetBB;
- AxisAlignedBB prevBB;
+ AABB targetBB;
+ AABB prevBB;
- public ChasingAABBOutline(AxisAlignedBB bb) {
+ public ChasingAABBOutline(AABB bb) {
super(bb);
prevBB = bb.inflate(0);
targetBB = bb.inflate(0);
}
- public void target(AxisAlignedBB target) {
+ public void target(AABB target) {
targetBB = target;
}
@@ -29,16 +29,16 @@ public void tick() {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
renderBB(ms, buffer, interpolateBBs(prevBB, bb, Minecraft.getInstance()
.getFrameTime()));
}
- private static AxisAlignedBB interpolateBBs(AxisAlignedBB current, AxisAlignedBB target, float pt) {
- return new AxisAlignedBB(MathHelper.lerp(pt, current.minX, target.minX),
- MathHelper.lerp(pt, current.minY, target.minY), MathHelper.lerp(pt, current.minZ, target.minZ),
- MathHelper.lerp(pt, current.maxX, target.maxX), MathHelper.lerp(pt, current.maxY, target.maxY),
- MathHelper.lerp(pt, current.maxZ, target.maxZ));
+ private static AABB interpolateBBs(AABB current, AABB target, float pt) {
+ return new AABB(Mth.lerp(pt, current.minX, target.minX),
+ Mth.lerp(pt, current.minY, target.minY), Mth.lerp(pt, current.minZ, target.minZ),
+ Mth.lerp(pt, current.maxX, target.maxX), Mth.lerp(pt, current.maxY, target.maxY),
+ Mth.lerp(pt, current.maxZ, target.maxZ));
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/LineOutline.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/LineOutline.java
index 9ec5398..b4e3a8c 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/LineOutline.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/LineOutline.java
@@ -1,37 +1,37 @@
package com.simibubi.mightyarchitect.foundation.utility.outliner;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.foundation.utility.VecHelper;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.util.math.MathHelper;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.util.Mth;
+import net.minecraft.world.phys.Vec3;
public class LineOutline extends Outline {
- protected Vector3d start = Vector3d.ZERO;
- protected Vector3d end = Vector3d.ZERO;
+ protected Vec3 start = Vec3.ZERO;
+ protected Vec3 end = Vec3.ZERO;
- public LineOutline set(Vector3d start, Vector3d end) {
+ public LineOutline set(Vec3 start, Vec3 end) {
this.start = start;
this.end = end;
return this;
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
renderCuboidLine(ms, buffer, start, end);
}
public static class ChasingLineOutline extends LineOutline {
- protected Vector3d prevStart = Vector3d.ZERO;
- protected Vector3d prevEnd = Vector3d.ZERO;
- protected Vector3d targetStart = Vector3d.ZERO;
- protected Vector3d targetEnd = Vector3d.ZERO;
+ protected Vec3 prevStart = Vec3.ZERO;
+ protected Vec3 prevEnd = Vec3.ZERO;
+ protected Vec3 targetStart = Vec3.ZERO;
+ protected Vec3 targetEnd = Vec3.ZERO;
- public ChasingLineOutline target(Vector3d start, Vector3d end) {
+ public ChasingLineOutline target(Vec3 start, Vec3 end) {
if (end.distanceTo(targetStart) + start.distanceTo(targetEnd) < end.distanceTo(targetEnd)
+ start.distanceTo(targetStart)) {
this.targetEnd = start;
@@ -44,7 +44,7 @@ public ChasingLineOutline target(Vector3d start, Vector3d end) {
}
@Override
- public LineOutline set(Vector3d start, Vector3d end) {
+ public LineOutline set(Vec3 start, Vec3 end) {
prevEnd = end;
prevStart = start;
return super.set(start, end);
@@ -59,7 +59,7 @@ public void tick() {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
float pt = Minecraft.getInstance()
.getFrameTime();
renderCuboidLine(ms, buffer, VecHelper.lerp(prevStart, start, pt), VecHelper.lerp(prevEnd, end, pt));
@@ -82,18 +82,18 @@ public EndChasingLineOutline setProgress(float progress) {
}
@Override
- public LineOutline set(Vector3d start, Vector3d end) {
+ public LineOutline set(Vec3 start, Vec3 end) {
if (!end.equals(this.end))
super.set(start, end);
return this;
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
float pt = Minecraft.getInstance()
.getFrameTime();
- float distanceToTarget = 1 - MathHelper.lerp(pt, prevProgress, progress);
- Vector3d start = end.add(this.start.subtract(end)
+ float distanceToTarget = 1 - Mth.lerp(pt, prevProgress, progress);
+ Vec3 start = end.add(this.start.subtract(end)
.scale(distanceToTarget));
renderCuboidLine(ms, buffer, start, end);
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/Outline.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/Outline.java
index 7ea7311..1dd5145 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/Outline.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/Outline.java
@@ -4,9 +4,10 @@
import javax.annotation.Nullable;
-import com.mojang.blaze3d.matrix.MatrixStack;
-import com.mojang.blaze3d.matrix.MatrixStack.Entry;
-import com.mojang.blaze3d.vertex.IVertexBuilder;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.blaze3d.vertex.PoseStack.Pose;
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.math.Matrix3f;
import com.simibubi.mightyarchitect.AllSpecialTextures;
import com.simibubi.mightyarchitect.foundation.MatrixStacker;
import com.simibubi.mightyarchitect.foundation.RenderTypes;
@@ -14,13 +15,13 @@
import com.simibubi.mightyarchitect.foundation.utility.ColorHelper;
import com.simibubi.mightyarchitect.foundation.utility.VecHelper;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
+import net.minecraft.client.renderer.LightTexture;
+import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.texture.OverlayTexture;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.Axis;
-import net.minecraft.util.math.MathHelper;
-import net.minecraft.util.math.vector.Matrix3f;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.core.Direction;
+import net.minecraft.core.Direction.Axis;
+import net.minecraft.util.Mth;
+import net.minecraft.world.phys.Vec3;
public abstract class Outline {
@@ -31,38 +32,38 @@ public Outline() {
params = new OutlineParams();
}
- public abstract void render(MatrixStack ms, IRenderTypeBuffer buffer);
+ public abstract void render(PoseStack ms, MultiBufferSource buffer);
- public void renderCuboidLine(MatrixStack ms, IRenderTypeBuffer buffer, Vector3d start, Vector3d end) {
- Vector3d diff = end.subtract(start);
- float hAngle = AngleHelper.deg(MathHelper.atan2(diff.x, diff.z));
+ public void renderCuboidLine(PoseStack ms, MultiBufferSource buffer, Vec3 start, Vec3 end) {
+ Vec3 diff = end.subtract(start);
+ float hAngle = AngleHelper.deg(Mth.atan2(diff.x, diff.z));
float hDistance = (float) diff.multiply(1, 0, 1)
.length();
- float vAngle = AngleHelper.deg(MathHelper.atan2(hDistance, diff.y)) - 90;
+ float vAngle = AngleHelper.deg(Mth.atan2(hDistance, diff.y)) - 90;
ms.pushPose();
MatrixStacker.of(ms)
.translate(start)
.rotateY(hAngle)
.rotateX(vAngle);
- renderAACuboidLine(ms, buffer, Vector3d.ZERO, new Vector3d(0, 0, diff.length()));
+ renderAACuboidLine(ms, buffer, Vec3.ZERO, new Vec3(0, 0, diff.length()));
ms.popPose();
}
- public void renderAACuboidLine(MatrixStack ms, IRenderTypeBuffer buffer, Vector3d start, Vector3d end) {
- IVertexBuilder builder = buffer.getBuffer(RenderTypes.getOutlineSolid());
+ public void renderAACuboidLine(PoseStack ms, MultiBufferSource buffer, Vec3 start, Vec3 end) {
+ VertexConsumer builder = buffer.getBuffer(RenderTypes.getOutlineSolid(AllSpecialTextures.BLANK.getLocation()));//todo simplify
- Vector3d diff = end.subtract(start);
+ Vec3 diff = end.subtract(start);
if (diff.x + diff.y + diff.z < 0) {
- Vector3d temp = start;
+ Vec3 temp = start;
start = end;
end = temp;
diff = diff.scale(-1);
}
float lineWidth = params.getLineWidth();
- Vector3d extension = diff.normalize()
+ Vec3 extension = diff.normalize()
.scale(lineWidth / 2);
- Vector3d plane = VecHelper.axisAlingedPlaneOf(diff);
+ Vec3 plane = VecHelper.axisAlingedPlaneOf(diff);
Direction face = Direction.getNearest(diff.x, diff.y, diff.z);
Axis axis = face.getAxis();
@@ -70,17 +71,17 @@ public void renderAACuboidLine(MatrixStack ms, IRenderTypeBuffer buffer, Vector3
end = end.add(extension);
plane = plane.scale(lineWidth / 2);
- Vector3d a1 = plane.add(start);
- Vector3d b1 = plane.add(end);
+ Vec3 a1 = plane.add(start);
+ Vec3 b1 = plane.add(end);
plane = VecHelper.rotate(plane, -90, axis);
- Vector3d a2 = plane.add(start);
- Vector3d b2 = plane.add(end);
+ Vec3 a2 = plane.add(start);
+ Vec3 b2 = plane.add(end);
plane = VecHelper.rotate(plane, -90, axis);
- Vector3d a3 = plane.add(start);
- Vector3d b3 = plane.add(end);
+ Vec3 a3 = plane.add(start);
+ Vec3 b3 = plane.add(end);
plane = VecHelper.rotate(plane, -90, axis);
- Vector3d a4 = plane.add(start);
- Vector3d b4 = plane.add(end);
+ Vec3 a4 = plane.add(start);
+ Vec3 b4 = plane.add(end);
if (params.disableNormals) {
face = Direction.UP;
@@ -95,7 +96,7 @@ public void renderAACuboidLine(MatrixStack ms, IRenderTypeBuffer buffer, Vector3
putQuad(ms, builder, b4, b3, b2, b1, face);
putQuad(ms, builder, a1, a2, a3, a4, face.getOpposite());
- Vector3d vec = a1.subtract(a4);
+ Vec3 vec = a1.subtract(a4);
face = Direction.getNearest(vec.x, vec.y, vec.z);
putQuad(ms, builder, a1, b1, b2, a2, face);
vec = VecHelper.rotate(vec, -90, axis);
@@ -109,24 +110,21 @@ public void renderAACuboidLine(MatrixStack ms, IRenderTypeBuffer buffer, Vector3
putQuad(ms, builder, a4, b4, b1, a1, face);
}
- public void putQuad(MatrixStack ms, IVertexBuilder builder, Vector3d v1, Vector3d v2, Vector3d v3, Vector3d v4,
+ public void putQuad(PoseStack ms, VertexConsumer builder, Vec3 v1, Vec3 v2, Vec3 v3, Vec3 v4,
Direction normal) {
- putQuadUVColor(ms, builder, v1, v2, v3, v4, params.rgb, 0, 0, 1, 1, normal);
+ putQuadUV(ms, builder, v1, v2, v3, v4,0, 0, 1, 1, normal, false);
}
- public void putQuadUVColor(MatrixStack ms, IVertexBuilder builder, Vector3d v1, Vector3d v2, Vector3d v3, Vector3d v4, Vector3d rgb, float minU,
- float minV, float maxU, float maxV, Direction normal) {
- putVertex(ms, builder, v1, rgb, minU, minV, normal);
- putVertex(ms, builder, v2, rgb, maxU, minV, normal);
- putVertex(ms, builder, v3, rgb, maxU, maxV, normal);
- putVertex(ms, builder, v4, rgb, minU, maxV, normal);
+ public void putQuadUV(PoseStack ms, VertexConsumer builder, Vec3 v1, Vec3 v2, Vec3 v3, Vec3 v4, float minU,
+ float minV, float maxU, float maxV, Direction normal, boolean useFaceColors) {
+ putVertex(ms, builder, v1, minU, minV, normal, useFaceColors);
+ putVertex(ms, builder, v2, maxU, minV, normal, useFaceColors);
+ putVertex(ms, builder, v3, maxU, maxV, normal, useFaceColors);
+ putVertex(ms, builder, v4, minU, maxV, normal, useFaceColors);
}
- protected void putVertex(MatrixStack ms, IVertexBuilder builder, Vector3d pos, Vector3d rgb, float u, float v, Direction normal) {
- int i = 15 << 20 | 15 << 4;
- int j = i >> 16 & '\uffff';
- int k = i & '\uffff';
- Entry peek = ms.last();
+ protected void putVertex(PoseStack ms, VertexConsumer builder, Vec3 pos, float u, float v, Direction normal, boolean useFaceColor) {
+ Pose peek = ms.last();
if (transformNormals == null)
transformNormals = peek.normal();
@@ -140,11 +138,18 @@ protected void putVertex(MatrixStack ms, IVertexBuilder builder, Vector3d pos, V
zOffset = normal.getStepZ();
}
+ Vec3 color = params.rgb;
+ //LogManager.getLogger().info(color.toString());
+
+ if (useFaceColor && params.faceRgb != null)
+ color = params.faceRgb;
+
builder.vertex(peek.pose(), (float) pos.x, (float) pos.y, (float) pos.z)
- .color((float) rgb.x, (float) rgb.y, (float) rgb.z, params.alpha)
+ .color((float) color.x, (float) color.y, (float) color.z, params.alpha)
.uv(u, v)
.overlayCoords(OverlayTexture.NO_OVERLAY)
- .uv2(j, k)
+ .uv2(params.lightMap)
+ //.uv2(LightTexture.FULL_BRIGHT)
.normal(peek.normal(), xOffset, yOffset, zOffset)
.endVertex();
@@ -167,9 +172,9 @@ public static class OutlineParams {
protected boolean disableCull;
protected boolean disableNormals;
protected float alpha;
- protected int lightMapU, lightMapV;
- protected Vector3d rgb;
- protected Vector3d faceRgb;
+ protected int lightMap;
+ protected Vec3 rgb;
+ protected Vec3 faceRgb;
protected int color;
protected int fadeTicks;
private float lineWidth;
@@ -185,9 +190,7 @@ public OutlineParams() {
faceRgb = null;
fadeTicks = 8;
- int i = 15 << 20 | 15 << 4;
- lightMapU = i >> 16 & '\uffff';
- lightMapV = i & '\uffff';
+ lightMap = LightTexture.FULL_BRIGHT;
}
// builder
@@ -203,6 +206,11 @@ public OutlineParams coloredFaces(int color) {
return this;
}
+ public OutlineParams withAlpha(float alpha) {
+ this.alpha = alpha;
+ return this;
+ }
+
public OutlineParams lineWidth(float width) {
this.lineWidth = width;
return this;
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/OutlinedText.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/OutlinedText.java
index 99da42e..bfe735e 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/OutlinedText.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/OutlinedText.java
@@ -1,35 +1,33 @@
package com.simibubi.mightyarchitect.foundation.utility.outliner;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.foundation.RenderTypes;
import com.simibubi.mightyarchitect.foundation.utility.VecHelper;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.client.renderer.entity.EntityRendererManager;
-import net.minecraft.util.math.vector.Matrix4f;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
+import net.minecraft.world.phys.Vec3;
public class OutlinedText extends Outline {
private String text;
- Vector3d targetLocation;
- Vector3d location;
- Vector3d prevLocation;
+ Vec3 targetLocation;
+ Vec3 location;
+ Vec3 prevLocation;
public OutlinedText() {
setText("");
- targetLocation = Vector3d.ZERO;
- location = Vector3d.ZERO;
- prevLocation = Vector3d.ZERO;
+ targetLocation = Vec3.ZERO;
+ location = Vec3.ZERO;
+ prevLocation = Vec3.ZERO;
}
- public void set(Vector3d location) {
+ public void set(Vec3 location) {
prevLocation = this.location = location;
}
- public void target(Vector3d location) {
+ public void target(Vec3 location) {
targetLocation = location;
}
@@ -41,16 +39,15 @@ public void tick() {
}
@Override
- public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void render(PoseStack ms, MultiBufferSource buffer) {
if (text == null)
return;
Minecraft mc = Minecraft.getInstance();
float pt = mc.getFrameTime();
- Vector3d vec = VecHelper.lerp(prevLocation, location, pt);
- EntityRendererManager renderManager = mc.getEntityRenderDispatcher();
- FontRenderer fontrenderer = renderManager.getFont();
- float stringLength = fontrenderer.width(text);
+ Vec3 vec = VecHelper.lerp(prevLocation, location, pt);
+ EntityRenderDispatcher renderManager = mc.getEntityRenderDispatcher();
+ float stringLength = mc.font.width(text);
ms.pushPose();
ms.translate(vec.x, vec.y, vec.z);
@@ -65,20 +62,20 @@ public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
float scaleMod = 0.025F;
float f = -stringLength / 2;
- float h = fontrenderer.lineHeight;
+ float h = mc.font.lineHeight;
ms.pushPose();
- Vector3d v1 = new Vector3d(-f + 2, -scaleMod * (h - 1), 0);
- Vector3d v2 = new Vector3d(-f + 2, scaleMod, 0);
- Vector3d v3 = new Vector3d(f - 2, scaleMod, 0);
- Vector3d v4 = new Vector3d(f - 2, -scaleMod * (h - 1), 0);
+ Vec3 v1 = new Vec3(-f + 2, -scaleMod * (h - 1), 0);
+ Vec3 v2 = new Vec3(-f + 2, scaleMod, 0);
+ Vec3 v3 = new Vec3(f - 2, scaleMod, 0);
+ Vec3 v4 = new Vec3(f - 2, -scaleMod * (h - 1), 0);
ms.pushPose();
ms.scale(-scaleMod, 1, scaleMod);
ms.translate(0, 0, .5f);
- if (params.faceRgb != null)
- putQuadUVColor(ms, buffer.getBuffer(RenderTypes.getOutlineSolid()), v1, v2, v3, v4, params.faceRgb, 0, 0, 1,
- 1, null);
+
+ putQuadUV(ms, buffer.getBuffer(RenderTypes.getOutlineSolid()), v1, v2, v3, v4,0, 0, 1, 1, null, true);
+
ms.popPose();
ms.scale(scaleMod, 1, 1);
@@ -88,9 +85,8 @@ public void render(MatrixStack ms, IRenderTypeBuffer buffer) {
ms.pushPose();
ms.scale(-scaleMod, -scaleMod, scaleMod);
- Matrix4f matrix4f = ms.last()
- .pose();
- fontrenderer.drawInBatch(text, f, 0, params.color, false, matrix4f, buffer, true, 0, 0xF000F0);
+ //mc.font.drawInBatch(text, f, 0, params.color, false, matrix4f, buffer, true, 0, 0xF000F0);
+ mc.font.draw(ms, text, f, 0, params.color);
ms.popPose();
ms.popPose();
diff --git a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/Outliner.java b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/Outliner.java
index c2904aa..079fc19 100644
--- a/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/Outliner.java
+++ b/src/main/java/com/simibubi/mightyarchitect/foundation/utility/outliner/Outliner.java
@@ -6,17 +6,17 @@
import java.util.Optional;
import java.util.Set;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.foundation.utility.outliner.LineOutline.ChasingLineOutline;
import com.simibubi.mightyarchitect.foundation.utility.outliner.LineOutline.EndChasingLineOutline;
import com.simibubi.mightyarchitect.foundation.utility.outliner.Outline.OutlineParams;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.util.math.AxisAlignedBB;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.MathHelper;
-import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.client.renderer.MultiBufferSource;
+import net.minecraft.core.BlockPos;
+import net.minecraft.util.Mth;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.world.phys.Vec3;
public class Outliner {
@@ -24,7 +24,7 @@ public class Outliner {
// Facade
- public OutlineParams showLine(Object slot, Vector3d start, Vector3d end) {
+ public OutlineParams showLine(Object slot, Vec3 start, Vec3 end) {
if (!outlines.containsKey(slot)) {
LineOutline outline = new LineOutline();
outlines.put(slot, new OutlineEntry(outline));
@@ -35,7 +35,7 @@ public OutlineParams showLine(Object slot, Vector3d start, Vector3d end) {
return entry.outline.getParams();
}
- public OutlineParams chaseLine(Object slot, Vector3d start, Vector3d end) {
+ public OutlineParams chaseLine(Object slot, Vec3 start, Vec3 end) {
if (!outlines.containsKey(slot)) {
ChasingLineOutline outline = new ChasingLineOutline();
outline.set(start, end);
@@ -47,7 +47,7 @@ public OutlineParams chaseLine(Object slot, Vector3d start, Vector3d end) {
return entry.outline.getParams();
}
- public OutlineParams chaseText(Object slot, Vector3d location, String text) {
+ public OutlineParams chaseText(Object slot, Vec3 location, String text) {
if (!outlines.containsKey(slot)) {
OutlinedText outline = new OutlinedText();
outline.set(location);
@@ -61,7 +61,7 @@ public OutlineParams chaseText(Object slot, Vector3d location, String text) {
return entry.outline.getParams();
}
- public OutlineParams endChasingLine(Object slot, Vector3d start, Vector3d end, float chasingProgress) {
+ public OutlineParams endChasingLine(Object slot, Vec3 start, Vec3 end, float chasingProgress) {
if (!outlines.containsKey(slot)) {
EndChasingLineOutline outline = new EndChasingLineOutline();
outlines.put(slot, new OutlineEntry(outline));
@@ -73,14 +73,14 @@ public OutlineParams endChasingLine(Object slot, Vector3d start, Vector3d end, f
return entry.outline.getParams();
}
- public OutlineParams showAABB(Object slot, AxisAlignedBB bb) {
+ public OutlineParams showAABB(Object slot, AABB bb) {
createAABBOutlineIfMissing(slot, bb);
ChasingAABBOutline outline = getAndRefreshAABB(slot);
outline.prevBB = outline.targetBB = bb;
return outline.getParams();
}
- public OutlineParams chaseAABB(Object slot, AxisAlignedBB bb) {
+ public OutlineParams chaseAABB(Object slot, AABB bb) {
createAABBOutlineIfMissing(slot, bb);
ChasingAABBOutline outline = getAndRefreshAABB(slot);
outline.targetBB = bb;
@@ -123,7 +123,7 @@ public Optional edit(Object slot) {
// Utility
- private void createAABBOutlineIfMissing(Object slot, AxisAlignedBB bb) {
+ private void createAABBOutlineIfMissing(Object slot, AABB bb) {
if (!outlines.containsKey(slot)) {
ChasingAABBOutline outline = new ChasingAABBOutline(bb);
outlines.put(slot, new OutlineEntry(outline));
@@ -157,17 +157,17 @@ public void tickOutlines() {
toClear.forEach(outlines::remove);
}
- public void renderOutlines(MatrixStack ms, IRenderTypeBuffer buffer) {
+ public void renderOutlines(PoseStack ms, MultiBufferSource buffer) {
outlines.forEach((key, entry) -> {
Outline outline = entry.getOutline();
- outline.params.alpha = 1;
+ //outline.params.alpha = 1;
if (entry.ticksTillRemoval < 0) {
int prevTicks = entry.ticksTillRemoval + 1;
float fadeticks = (float) entry.outline.params.getFadeTicks();
float lastAlpha = prevTicks >= 0 ? 1 : 1 + (prevTicks / fadeticks);
float currentAlpha = 1 + (entry.ticksTillRemoval / fadeticks);
- float alpha = MathHelper.lerp(Minecraft.getInstance()
+ float alpha = Mth.lerp(Minecraft.getInstance()
.getFrameTime(), lastAlpha, currentAlpha);
outline.params.alpha = alpha * alpha * alpha;
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/AbstractSimiScreen.java b/src/main/java/com/simibubi/mightyarchitect/gui/AbstractSimiScreen.java
index 1fc94a1..c151d43 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/AbstractSimiScreen.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/AbstractSimiScreen.java
@@ -3,21 +3,21 @@
import java.util.ArrayList;
import java.util.List;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.gui.widgets.AbstractSimiWidget;
-import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.client.gui.widget.Widget;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.client.gui.components.AbstractWidget;
+import net.minecraft.client.gui.screens.Screen;
+import net.minecraft.network.chat.TextComponent;
public abstract class AbstractSimiScreen extends Screen {
protected int sWidth, sHeight;
protected int topLeftX, topLeftY;
- protected List widgets;
+ protected List widgets;
protected AbstractSimiScreen() {
- super(new StringTextComponent(""));
+ super(new TextComponent(""));
widgets = new ArrayList<>();
}
@@ -29,20 +29,20 @@ protected void setWindowSize(int width, int height) {
}
@Override
- public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
+ public void render(PoseStack ms, int mouseX, int mouseY, float partialTicks) {
renderBackground(ms);
renderWindow(ms, mouseX, mouseY, partialTicks);
- for (Widget widget : widgets)
+ for (AbstractWidget widget : widgets)
widget.render(ms, mouseX, mouseY, partialTicks);
renderWindowForeground(ms, mouseX, mouseY, partialTicks);
- for (Widget widget : widgets)
+ for (AbstractWidget widget : widgets)
widget.renderToolTip(ms, mouseX, mouseY);
}
@Override
public boolean mouseClicked(double x, double y, int button) {
boolean result = false;
- for (Widget widget : widgets) {
+ for (AbstractWidget widget : widgets) {
if (widget.mouseClicked(x, y, button))
result = true;
}
@@ -51,7 +51,7 @@ public boolean mouseClicked(double x, double y, int button) {
@Override
public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) {
- for (Widget widget : widgets) {
+ for (AbstractWidget widget : widgets) {
if (widget.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_))
return true;
}
@@ -60,7 +60,7 @@ public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) {
@Override
public boolean charTyped(char character, int code) {
- for (Widget widget : widgets) {
+ for (AbstractWidget widget : widgets) {
if (widget.charTyped(character, code))
return true;
}
@@ -71,7 +71,7 @@ public boolean charTyped(char character, int code) {
@Override
public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
- for (Widget widget : widgets) {
+ for (AbstractWidget widget : widgets) {
if (widget.mouseScrolled(mouseX, mouseY, delta))
return true;
}
@@ -88,11 +88,11 @@ public boolean isPauseScreen() {
return false;
}
- protected abstract void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks);
+ protected abstract void renderWindow(PoseStack ms, int mouseX, int mouseY, float partialTicks);
- protected void renderWindowForeground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
- for (Widget widget : widgets) {
- if (!widget.isHovered())
+ protected void renderWindowForeground(PoseStack ms, int mouseX, int mouseY, float partialTicks) {
+ for (AbstractWidget widget : widgets) {
+ if (!widget.isHoveredOrFocused())
continue;
if (widget instanceof AbstractSimiWidget && !((AbstractSimiWidget) widget).getToolTip()
.isEmpty())
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/ArchitectMenuScreen.java b/src/main/java/com/simibubi/mightyarchitect/gui/ArchitectMenuScreen.java
index 96877da..2569644 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/ArchitectMenuScreen.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/ArchitectMenuScreen.java
@@ -5,20 +5,22 @@
import org.lwjgl.glfw.GLFW;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.platform.Window;
import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.MightyClient;
import com.simibubi.mightyarchitect.control.ArchitectManager;
import com.simibubi.mightyarchitect.control.ArchitectMenu;
import com.simibubi.mightyarchitect.control.ArchitectMenu.KeyBindList;
import com.simibubi.mightyarchitect.control.phase.ArchitectPhases;
+import com.simibubi.mightyarchitect.foundation.utility.LerpedFloat;
+import com.simibubi.mightyarchitect.foundation.utility.LerpedFloat.Chaser;
-import net.minecraft.client.MainWindow;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.util.IReorderingProcessor;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.client.gui.Font;
+import net.minecraft.client.gui.screens.Screen;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.util.FormattedCharSequence;
public class ArchitectMenuScreen extends Screen {
@@ -31,18 +33,18 @@ public class ArchitectMenuScreen extends Screen {
private int menuWidth;
private int menuHeight;
- private int targetY;
- private float movingY;
+ private LerpedFloat animation;
public ArchitectMenuScreen() {
- super(new StringTextComponent("Architect Menu"));
+ super(new TextComponent("Architect Menu"));
keybinds = new KeyBindList();
tooltip = new ArrayList<>();
title = "";
focused = false;
visible = false;
- movingY = 0;
- targetY = 0;
+ animation = LerpedFloat.linear()
+ .startWithValue(0)
+ .chase(0, 0.2f, Chaser.EXP);
adjustTarget();
}
@@ -71,7 +73,7 @@ public void updateContents() {
}
@Override
- public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
+ public void render(PoseStack ms, int mouseX, int mouseY, float partialTicks) {
// FOCUSED
super.render(ms, mouseX, mouseY, partialTicks);
draw(ms, partialTicks);
@@ -82,7 +84,7 @@ public void drawPassive() {
return;
// NOT FOCUSED
- draw(new MatrixStack(), Minecraft.getInstance()
+ draw(new PoseStack(), Minecraft.getInstance()
.getFrameTime());
}
@@ -129,14 +131,16 @@ public boolean charTyped(char p_charTyped_1_, int p_charTyped_2_) {
return super.charTyped(p_charTyped_1_, p_charTyped_2_);
}
- private void draw(MatrixStack ms, float partialTicks) {
- MainWindow mainWindow = Minecraft.getInstance()
- .getWindow();
+ private void draw(PoseStack ms, float partialTicks) {
+ Minecraft mc = Minecraft.getInstance();
+ Window mainWindow = mc.getWindow();
+ partialTicks = mc.getFrameTime();
+
int x = mainWindow.getGuiScaledWidth() - menuWidth - 10;
int y = mainWindow.getGuiScaledHeight() - menuHeight;
- int mouseX = (int) (Minecraft.getInstance().mouseHandler.xpos() / mainWindow.getGuiScale());
- int mouseY = (int) (Minecraft.getInstance().mouseHandler.ypos() / mainWindow.getGuiScale());
+ int mouseX = (int) (mc.mouseHandler.xpos() / mainWindow.getGuiScale());
+ int mouseY = (int) (mc.mouseHandler.ypos() / mainWindow.getGuiScale());
boolean sideways = false;
if ((mainWindow.getGuiScaledWidth() - 182) / 2 < menuWidth + 20) {
@@ -144,29 +148,27 @@ private void draw(MatrixStack ms, float partialTicks) {
y -= 24;
}
- RenderSystem.pushMatrix();
- float shift = yShift(partialTicks);
+ ms.pushPose();
+ float shift = animation.getValue(partialTicks);
float sidewaysShift =
shift * ((float) menuWidth / (float) menuHeight) + (!focused ? 40 + menuHeight / 4f : 0) + 8;
- RenderSystem.translatef(sideways ? sidewaysShift : 0, sideways ? 0 : shift, 0);
+ ms.translate(sideways ? sidewaysShift : 0, sideways ? 0 : shift, 0);
mouseX -= sideways ? sidewaysShift : 0;
mouseY -= sideways ? 0 : shift;
ScreenResources gray = ScreenResources.GRAY;
RenderSystem.enableBlend();
- RenderSystem.color4f(1, 1, 1, 3 / 4f);
+ RenderSystem.setShaderColor(1, 1, 1, 3 / 4f);
- Minecraft.getInstance()
- .getTextureManager()
- .bind(gray.location);
+ RenderSystem.setShaderTexture(0, gray.location);
RenderSystem.enableTexture();
blit(ms, x, y, gray.startX, gray.startY, menuWidth, menuHeight, gray.width, gray.height);
- RenderSystem.color4f(1, 1, 1, 1);
+ RenderSystem.setShaderColor(1, 1, 1, 1);
int yPos = y + 4;
int xPos = x + 4;
- FontRenderer textRenderer = Minecraft.getInstance().font;
+ Font textRenderer = mc.font;
String compose = MightyClient.COMPOSE.getTranslatedKeyMessage()
.getString()
.toUpperCase();
@@ -175,19 +177,17 @@ private void draw(MatrixStack ms, float partialTicks) {
if (visible) {
String string = "Press " + compose.toUpperCase() + " for Menu";
textRenderer.drawShadow(ms, string,
- mainWindow.getGuiScaledWidth() - textRenderer.width(string) - 15 - sidewaysShift,
- yPos - 14, 0xEEEEEE);
+ mainWindow.getGuiScaledWidth() - textRenderer.width(string) - 15 - sidewaysShift, yPos - 14,
+ 0xEEEEEE);
}
} else {
- textRenderer.drawShadow(ms, "Press " + compose.toUpperCase() + " to focus", xPos, yPos - 14,
- 0xEEEEEE);
+ textRenderer.drawShadow(ms, "Press " + compose.toUpperCase() + " to focus", xPos, yPos - 14, 0xEEEEEE);
}
} else {
String string = "Press " + compose + " to close";
textRenderer.drawShadow(ms, string,
sideways
- ? Math.min(xPos,
- mainWindow.getGuiScaledWidth() - textRenderer.width(string) - 15 - sidewaysShift)
+ ? Math.min(xPos, mainWindow.getGuiScaledWidth() - textRenderer.width(string) - 15 - sidewaysShift)
: xPos,
yPos - 14, 0xDDDDDD);
}
@@ -212,16 +212,16 @@ private void draw(MatrixStack ms, float partialTicks) {
yPos += 4;
yPos += textRenderer.lineHeight;
for (String text : tooltip) {
- int height = Minecraft.getInstance().font.wordWrapHeight(text, menuWidth - 8);
+ int height = mc.font.wordWrapHeight(text, menuWidth - 8);
int lineY = yPos;
- for (IReorderingProcessor iro : textRenderer.split(new StringTextComponent(text), menuWidth - 8)) {
- textRenderer.draw(ms, iro, xPos, lineY, 0xEEEEEE);
+ for (FormattedCharSequence iro : textRenderer.split(new TextComponent(text), menuWidth - 8)) {
+ textRenderer.draw(ms, iro, xPos, lineY, 0xEEEEEE);
lineY += textRenderer.lineHeight;
}
yPos += height + 2;
}
- RenderSystem.popMatrix();
+ ms.popPose();
}
@Override
@@ -229,7 +229,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
if (button != 0 || !visible || !focused)
return super.mouseClicked(mouseX, mouseY, button);
- MainWindow mainWindow = Minecraft.getInstance()
+ Window mainWindow = Minecraft.getInstance()
.getWindow();
int x = mainWindow.getGuiScaledWidth() - menuWidth - 10;
int y = mainWindow.getGuiScaledHeight() - menuHeight;
@@ -240,7 +240,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
mouseY += 24;
}
- float shift = yShift(0);
+ float shift = animation.getValue();
mouseX -= sideways ? shift * 2 : 0;
mouseY -= sideways ? 0 : shift;
@@ -279,7 +279,7 @@ public void setFocused(boolean focused) {
}
protected void adjustTarget() {
- targetY = visible ? (focused ? 0 : menuHeight - 14) : menuHeight + 20;
+ animation.updateChaseTarget(visible ? (focused ? 0 : menuHeight - 14) : menuHeight + 20);
}
public void setVisible(boolean visible) {
@@ -293,14 +293,8 @@ public void removed() {
setFocused(false);
}
- private float yShift(float partialTicks) {
- return (movingY + (targetY - movingY) * 0.2f * partialTicks);
- }
-
public void onClientTick() {
- if (movingY != targetY) {
- movingY += (targetY - movingY) * 0.2;
- }
+ animation.tickChaser();
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/DesignExporterScreen.java b/src/main/java/com/simibubi/mightyarchitect/gui/DesignExporterScreen.java
index 2b4b1e8..81bff38 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/DesignExporterScreen.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/DesignExporterScreen.java
@@ -3,8 +3,9 @@
import java.util.ArrayList;
import java.util.List;
-import com.mojang.blaze3d.matrix.MatrixStack;
-import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.platform.Lighting;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.math.Vector3f;
import com.simibubi.mightyarchitect.control.design.DesignExporter;
import com.simibubi.mightyarchitect.control.design.DesignLayer;
import com.simibubi.mightyarchitect.control.design.DesignTheme;
@@ -232,17 +233,17 @@ public void tick() {
}
@Override
- protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
+ protected void renderWindow(PoseStack ms, int mouseX, int mouseY, float partialTicks) {
ScreenResources.EXPORTER.draw(ms, this, topLeftX, topLeftY);
- RenderSystem.pushMatrix();
- RenderSystem.translatef((this.width - this.sWidth) / 2 + 250, 220, 100);
- RenderSystem.rotatef(-30, .4f, 0, -.2f);
- RenderSystem.rotatef(90 + 0.2f * animationProgress, 0, 1, 0);
- RenderSystem.scalef(100, -100, 100);
+ ms.pushPose();
+ ms.translate(0, 0, -200);
+ ms.translate((this.width - this.sWidth) / 2 + 150, 120, 0);
+ ms.scale(10, 10, 10);
GuiGameElement.of(minecraft.player.getMainHandItem())
+ .rotate(-1, 0, 20)
.render(ms);
- RenderSystem.popMatrix();
+ ms.popPose();
int color = ScreenResources.FONT_COLOR;
font.draw(ms, "Export custom Designs", topLeftX + 10, topLeftY + 10, color);
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/GuiGameElement.java b/src/main/java/com/simibubi/mightyarchitect/gui/GuiGameElement.java
index 7f5c5e3..397a356 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/GuiGameElement.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/GuiGameElement.java
@@ -1,48 +1,42 @@
package com.simibubi.mightyarchitect.gui;
-import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.platform.GlStateManager.DestFactor;
import com.mojang.blaze3d.platform.GlStateManager.SourceFactor;
+import com.mojang.blaze3d.platform.Lighting;
import com.mojang.blaze3d.systems.RenderSystem;
-import com.mojang.blaze3d.vertex.IVertexBuilder;
-import com.simibubi.mightyarchitect.foundation.WrappedWorld;
-import com.simibubi.mightyarchitect.foundation.utility.AngleHelper;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.math.Vector3f;
import com.simibubi.mightyarchitect.foundation.utility.ColorHelper;
-import com.simibubi.mightyarchitect.foundation.utility.Iterate;
import com.simibubi.mightyarchitect.foundation.utility.VecHelper;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.Blocks;
-import net.minecraft.block.FireBlock;
-import net.minecraft.block.FlowingFluidBlock;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.Atlases;
-import net.minecraft.client.renderer.BlockRendererDispatcher;
-import net.minecraft.client.renderer.IRenderTypeBuffer;
-import net.minecraft.client.renderer.ItemRenderer;
-import net.minecraft.client.renderer.RenderHelper;
+import net.minecraft.client.renderer.ItemBlockRenderTypes;
+import net.minecraft.client.renderer.LightTexture;
+import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
-import net.minecraft.client.renderer.RenderTypeLookup;
-import net.minecraft.client.renderer.model.IBakedModel;
-import net.minecraft.client.renderer.model.ItemCameraTransforms;
+import net.minecraft.client.renderer.Sheets;
+import net.minecraft.client.renderer.block.BlockRenderDispatcher;
+import net.minecraft.client.renderer.block.model.ItemTransforms;
+import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.renderer.texture.OverlayTexture;
-import net.minecraft.client.world.ClientWorld;
-import net.minecraft.fluid.Fluid;
-import net.minecraft.inventory.container.PlayerContainer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.Direction;
-import net.minecraft.util.Direction.AxisDirection;
-import net.minecraft.util.IItemProvider;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.vector.Vector3d;
-import net.minecraft.util.math.vector.Vector3f;
-import net.minecraft.world.LightType;
-import net.minecraft.world.World;
+import net.minecraft.client.resources.model.BakedModel;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.inventory.InventoryMenu;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.ItemLike;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.FireBlock;
+import net.minecraft.world.level.block.LiquidBlock;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.phys.Vec3;
import net.minecraftforge.client.model.data.EmptyModelData;
+import net.minecraftforge.client.model.data.IModelData;
+import net.minecraftforge.client.model.data.ModelProperty;
public class GuiGameElement {
@@ -50,7 +44,7 @@ public static GuiRenderBuilder of(ItemStack stack) {
return new GuiItemRenderBuilder(stack);
}
- public static GuiRenderBuilder of(IItemProvider itemProvider) {
+ public static GuiRenderBuilder of(ItemLike itemProvider) {
return new GuiItemRenderBuilder(itemProvider);
}
@@ -61,7 +55,7 @@ public static GuiRenderBuilder of(BlockState state) {
public static GuiRenderBuilder of(Fluid fluid) {
return new GuiBlockStateRenderBuilder(fluid.defaultFluidState()
.createLegacyBlock()
- .setValue(FlowingFluidBlock.LEVEL, 0));
+ .setValue(LiquidBlock.LEVEL, 0));
}
public static abstract class GuiRenderBuilder {
@@ -70,7 +64,7 @@ public static abstract class GuiRenderBuilder {
double xRot, yRot, zRot;
double scale = 1;
int color = 0xFFFFFF;
- Vector3d rotationOffset = Vector3d.ZERO;
+ Vec3 rotationOffset = Vec3.ZERO;
public GuiRenderBuilder atLocal(double x, double y, double z) {
this.x = x;
@@ -114,28 +108,27 @@ public GuiRenderBuilder color(int color) {
return this;
}
- public GuiRenderBuilder withRotationOffset(Vector3d offset) {
+ public GuiRenderBuilder withRotationOffset(Vec3 offset) {
this.rotationOffset = offset;
return this;
}
- public abstract void render(MatrixStack matrixStack);
+ public abstract void render(PoseStack matrixStack);
@Deprecated
protected void prepare() {}
- protected void prepareMatrix(MatrixStack matrixStack) {
+ protected void prepareMatrix(PoseStack matrixStack) {
matrixStack.pushPose();
+ RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
+ RenderSystem.enableDepthTest();
RenderSystem.enableBlend();
- RenderSystem.enableRescaleNormal();
- RenderSystem.enableAlphaTest();
- RenderHelper.setupFor3DItems();
- RenderSystem.alphaFunc(516, 0.1F);
RenderSystem.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA);
- RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
+ //prepareLighting(matrixStack);
+ Lighting.setupFor3DItems();
}
- @Deprecated
+ /*@Deprecated
protected void transform() {
RenderSystem.translated(xBeforeScale, yBeforeScale, 0);
RenderSystem.scaled(scale, scale, scale);
@@ -146,9 +139,9 @@ protected void transform() {
RenderSystem.rotatef((float) xRot, 1, 0, 0);
RenderSystem.rotatef((float) yRot, 0, 1, 0);
RenderSystem.translated(-rotationOffset.x, -rotationOffset.y, -rotationOffset.z);
- }
+ }*/
- protected void transformMatrix(MatrixStack matrixStack) {
+ protected void transformMatrix(PoseStack matrixStack) {
matrixStack.translate(xBeforeScale, yBeforeScale, zBeforeScale);
matrixStack.scale((float) scale, (float) scale, (float) scale);
matrixStack.translate(x, y, z);
@@ -163,51 +156,50 @@ protected void transformMatrix(MatrixStack matrixStack) {
@Deprecated
protected void cleanUp() {}
- protected void cleanUpMatrix(MatrixStack matrixStack) {
+ protected void cleanUpMatrix(PoseStack matrixStack) {
matrixStack.popPose();
- RenderSystem.disableAlphaTest();
- RenderSystem.disableRescaleNormal();
}
}
private static class GuiBlockModelRenderBuilder extends GuiRenderBuilder {
- protected IBakedModel blockmodel;
+ protected BakedModel blockmodel;
protected BlockState blockState;
- public GuiBlockModelRenderBuilder(IBakedModel blockmodel, @Nullable BlockState blockState) {
+ public GuiBlockModelRenderBuilder(BakedModel blockmodel, @Nullable BlockState blockState) {
this.blockState = blockState == null ? Blocks.AIR.defaultBlockState() : blockState;
this.blockmodel = blockmodel;
}
@Override
- public void render(MatrixStack matrixStack) {
+ public void render(PoseStack matrixStack) {
prepareMatrix(matrixStack);
Minecraft mc = Minecraft.getInstance();
- BlockRendererDispatcher blockRenderer = mc.getBlockRenderer();
- IRenderTypeBuffer.Impl buffer = mc.renderBuffers()
+ BlockRenderDispatcher blockRenderer = mc.getBlockRenderer();
+ MultiBufferSource.BufferSource buffer = mc.renderBuffers()
.bufferSource();
- RenderType renderType = blockState.getBlock() == Blocks.AIR ? Atlases.translucentCullBlockSheet()
- : RenderTypeLookup.getRenderType(blockState, true);
- IVertexBuilder vb = buffer.getBuffer(renderType);
+ RenderType renderType = blockState.getBlock() == Blocks.AIR ? Sheets.translucentCullBlockSheet()
+ : ItemBlockRenderTypes.getRenderType(blockState, true);
+ VertexConsumer vb = buffer.getBuffer(renderType);
transformMatrix(matrixStack);
- mc.getTextureManager()
- .bind(PlayerContainer.BLOCK_ATLAS);
+ RenderSystem.setShaderTexture(0, InventoryMenu.BLOCK_ATLAS);
renderModel(blockRenderer, buffer, renderType, vb, matrixStack);
cleanUpMatrix(matrixStack);
}
- protected void renderModel(BlockRendererDispatcher blockRenderer, IRenderTypeBuffer.Impl buffer,
- RenderType renderType, IVertexBuilder vb, MatrixStack ms) {
- Vector3d rgb = ColorHelper.getRGB(color);
+ protected void renderModel(BlockRenderDispatcher blockRenderer, MultiBufferSource.BufferSource buffer,
+ RenderType renderType, VertexConsumer vb, PoseStack ms) {
+ Vec3 rgb = ColorHelper.getRGB(color);
+ Lighting.setupForFlatItems();
blockRenderer.getModelRenderer()
.renderModel(ms.last(), vb, blockState, blockmodel, (float) rgb.x, (float) rgb.y, (float) rgb.z,
0xF000F0, OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE);
buffer.endBatch();
+ Lighting.setupFor3DItems();
}
}
@@ -220,53 +212,26 @@ public GuiBlockStateRenderBuilder(BlockState blockstate) {
}
@Override
- protected void renderModel(BlockRendererDispatcher blockRenderer, IRenderTypeBuffer.Impl buffer,
- RenderType renderType, IVertexBuilder vb, MatrixStack ms) {
+ protected void renderModel(BlockRenderDispatcher blockRenderer, MultiBufferSource.BufferSource buffer,
+ RenderType renderType, VertexConsumer vb, PoseStack ms) {
if (blockState.getBlock() instanceof FireBlock) {
- RenderHelper.setupForFlatItems();
- blockRenderer.renderBlock(blockState, ms, buffer, 0xF000F0, OverlayTexture.NO_OVERLAY,
- EmptyModelData.INSTANCE);
- RenderHelper.turnBackOn();
+ Lighting.setupForFlatItems();
+ blockRenderer.renderSingleBlock(blockState, ms, buffer, LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY,
+ VirtualEmptyModelData.INSTANCE);
buffer.endBatch();
+ Lighting.setupFor3DItems();
return;
}
super.renderModel(blockRenderer, buffer, renderType, vb, ms);
if (blockState.getFluidState()
- .isEmpty())
+ .isEmpty())
return;
- for (RenderType type : RenderType.chunkBufferLayers()) {
- if (!RenderTypeLookup.canRenderInLayer(blockState.getFluidState(), type))
- continue;
-
- ms.pushPose();
- RenderHelper.turnOff();
-
- ClientWorld world = Minecraft.getInstance().level;
- if (renderWorld == null || renderWorld.getWorld() != world)
- renderWorld = new FluidRenderWorld(world);
-
- for (Direction d : Iterate.directions) {
- vb = buffer.getBuffer(type);
- if (d.getAxisDirection() == AxisDirection.POSITIVE)
- continue;
-
- ms.pushPose();
- ms.translate(.5, .5, .5);
- ms.mulPose(Vector3f.YP.rotationDegrees(AngleHelper.horizontalAngle(d)));
- ms.mulPose(Vector3f.ZP.rotationDegrees(AngleHelper.verticalAngle(d) - 90));
- ms.translate(-.5, -.5, -.5);
- blockRenderer.renderLiquid(new BlockPos(0, 1, 0), renderWorld, vb, blockState.getFluidState());
- buffer.endBatch(type);
- ms.popPose();
- }
-
- RenderHelper.turnBackOn();
- ms.popPose();
- break;
- }
+ //todo fluids..
+ //FluidRenderer.renderFluidBox(new FluidStack(blockState.getFluidState().getType(), 1000), 0, 0, 0, 1, 1, 1, buffer, ms, LightTexture.FULL_BRIGHT, false);
+ buffer.endBatch();
}
}
@@ -278,78 +243,68 @@ public GuiItemRenderBuilder(ItemStack stack) {
this.stack = stack;
}
- public GuiItemRenderBuilder(IItemProvider provider) {
+ public GuiItemRenderBuilder(ItemLike provider) {
this(new ItemStack(provider));
}
@Override
- public void render(MatrixStack matrixStack) {
+ public void render(PoseStack matrixStack) {
prepareMatrix(matrixStack);
// matrixStack.translate(0, 80, 0);
transformMatrix(matrixStack);
- renderItemIntoGUI(matrixStack, stack);
+ renderItemIntoGUI(matrixStack, stack, true);
cleanUpMatrix(matrixStack);
}
- public static void renderItemIntoGUI(MatrixStack matrixStack, ItemStack stack) {
- ItemRenderer renderer = Minecraft.getInstance()
- .getItemRenderer();
- IBakedModel bakedModel = renderer.getModel(stack, null, null);
- matrixStack.pushPose();
- Minecraft.getInstance().textureManager.bind(PlayerContainer.BLOCK_ATLAS);
- Minecraft.getInstance().textureManager.getTexture(PlayerContainer.BLOCK_ATLAS)
- .setFilter(false, false);
- RenderSystem.enableRescaleNormal();
- RenderSystem.enableAlphaTest();
- RenderSystem.defaultAlphaFunc();
+ public static void renderItemIntoGUI(PoseStack matrixStack, ItemStack stack, boolean useDefaultLighting) {
+ ItemRenderer renderer = Minecraft.getInstance().getItemRenderer();
+ BakedModel bakedModel = renderer.getModel(stack, null, null, 0);
+
+
+ renderer.textureManager.getTexture(InventoryMenu.BLOCK_ATLAS).setFilter(false, false);
+ RenderSystem.setShaderTexture(0, InventoryMenu.BLOCK_ATLAS);
RenderSystem.enableBlend();
- RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA,
- GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
- RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
- matrixStack.translate((float) 0, (float) 0, 100.0F + renderer.blitOffset);
- matrixStack.translate(8.0F, 8.0F, 0.0F);
+ RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
+ RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
+ matrixStack.pushPose();
+ matrixStack.translate(0, 0, 100.0F + renderer.blitOffset);
+ matrixStack.translate(8.0F, -8.0F, 0.0F);
matrixStack.scale(16.0F, 16.0F, 16.0F);
- IRenderTypeBuffer.Impl irendertypebuffer$impl = Minecraft.getInstance()
- .renderBuffers()
- .bufferSource();
- boolean flag = !bakedModel.usesBlockLight();
- if (flag) {
- RenderHelper.setupForFlatItems();
+ MultiBufferSource.BufferSource buffer = Minecraft.getInstance().renderBuffers().bufferSource();
+ boolean flatLighting = !bakedModel.usesBlockLight();
+ if (useDefaultLighting && flatLighting) {
+ Lighting.setupForFlatItems();
}
- renderer.render(stack, ItemCameraTransforms.TransformType.GUI, false, matrixStack,
- irendertypebuffer$impl, 15728880, OverlayTexture.NO_OVERLAY, bakedModel);
- irendertypebuffer$impl.endBatch();
+ renderer.render(stack, ItemTransforms.TransformType.GUI, false, matrixStack, buffer, LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY, bakedModel);
+ buffer.endBatch();
RenderSystem.enableDepthTest();
- if (flag) {
- RenderHelper.setupFor3DItems();
+ if (useDefaultLighting && flatLighting) {
+ Lighting.setupFor3DItems();
}
- RenderSystem.disableAlphaTest();
- RenderSystem.disableRescaleNormal();
- RenderSystem.enableCull();
matrixStack.popPose();
}
}
- private static FluidRenderWorld renderWorld;
+ public enum VirtualEmptyModelData implements IModelData {
- private static class FluidRenderWorld extends WrappedWorld {
+ INSTANCE;
- public FluidRenderWorld(World world) {
- super(world);
+ @Override
+ public boolean hasProperty(ModelProperty> prop) {
+ return false;
}
@Override
- public int getBrightness(@Nullable LightType p_226658_1_, @Nullable BlockPos p_226658_2_) {
- return 15;
+ public T getData(ModelProperty prop) {
+ return null;
}
@Override
- @Nonnull
- public BlockState getBlockState(BlockPos pos) {
- return Blocks.AIR.defaultBlockState();
+ public T setData(ModelProperty prop, T data) {
+ return null;
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/PalettePickerScreen.java b/src/main/java/com/simibubi/mightyarchitect/gui/PalettePickerScreen.java
index 9833f82..bf95130 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/PalettePickerScreen.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/PalettePickerScreen.java
@@ -2,8 +2,9 @@
import java.nio.file.Paths;
-import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.math.Vector3f;
import com.simibubi.mightyarchitect.MightyClient;
import com.simibubi.mightyarchitect.control.ArchitectManager;
import com.simibubi.mightyarchitect.control.design.DesignExporter;
@@ -13,13 +14,13 @@
import com.simibubi.mightyarchitect.foundation.utility.FilesHelper;
import com.simibubi.mightyarchitect.gui.widgets.IconButton;
+import net.minecraft.ChatFormatting;
+import net.minecraft.Util;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.client.gui.widget.Widget;
-import net.minecraft.util.Util;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.client.gui.components.AbstractWidget;
+import net.minecraft.client.gui.screens.Screen;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.chat.TextComponent;
public class PalettePickerScreen extends AbstractSimiScreen {
@@ -72,22 +73,22 @@ public void init() {
// create
if (!scanPicker) {
buttonAddPalette = new IconButton(x + (i % 5) * 23, y + (i / 5) * 23, ScreenResources.ICON_ADD);
- buttonAddPalette.setToolTip(new StringTextComponent("Create Palette"));
+ buttonAddPalette.setToolTip(new TextComponent("Create Palette"));
buttonAddPalette.getToolTip()
- .add(new StringTextComponent("Will use currently selected").withStyle(TextFormatting.GRAY));
+ .add(new TextComponent("Will use currently selected").withStyle(ChatFormatting.GRAY));
buttonAddPalette.getToolTip()
- .add(new StringTextComponent("Palette as the template.").withStyle(TextFormatting.GRAY));
+ .add(new TextComponent("Palette as the template.").withStyle(ChatFormatting.GRAY));
i++;
widgets.add(buttonAddPalette);
}
buttonOpenFolder = new IconButton(x + (i % 5) * 23, y + (i / 5) * 23, ScreenResources.ICON_FOLDER);
- buttonOpenFolder.setToolTip(new StringTextComponent("Open Palette Folder"));
+ buttonOpenFolder.setToolTip(new TextComponent("Open Palette Folder"));
widgets.add(buttonOpenFolder);
i++;
buttonRefresh = new IconButton(x + (i % 5) * 23, y + (i / 5) * 23, ScreenResources.ICON_REFRESH);
- buttonRefresh.setToolTip(new StringTextComponent("Refresh Imported Palettes"));
+ buttonRefresh.setToolTip(new TextComponent("Refresh Imported Palettes"));
widgets.add(buttonRefresh);
i++;
@@ -100,11 +101,11 @@ public void removed() {
if (scanPicker) {
if (primary.palette.hasDuplicates())
minecraft.player.displayClientMessage(
- new StringTextComponent(TextFormatting.RED + "Warning: Ambiguous Scanner Palette "
- + TextFormatting.WHITE + "( " + primary.palette.getDuplicates() + " )"),
+ new TextComponent(ChatFormatting.RED + "Warning: Ambiguous Scanner Palette "
+ + ChatFormatting.WHITE + "( " + primary.palette.getDuplicates() + " )"),
false);
- minecraft.player.displayClientMessage(new StringTextComponent("Updated Default Palette"), true);
+ minecraft.player.displayClientMessage(new TextComponent("Updated Default Palette"), true);
DesignExporter.theme.setDefaultPalette(primary.palette);
DesignExporter.theme.setDefaultSecondaryPalette(secondary.palette);
}
@@ -138,7 +139,7 @@ private void updateSelected() {
}
@Override
- public void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
+ public void renderWindow(PoseStack ms, int mouseX, int mouseY, float partialTicks) {
ScreenResources.PALETTES.draw(ms, this, topLeftX, topLeftY);
int color = ScreenResources.FONT_COLOR;
@@ -161,7 +162,7 @@ public void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTi
@Override
public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) {
for (int i = 0; i < this.widgets.size(); ++i) {
- Widget guibutton = this.widgets.get(i);
+ AbstractWidget guibutton = this.widgets.get(i);
if (guibutton.isMouseOver(mouseX, mouseY)) {
guibutton.playDownSound(this.minecraft.getSoundManager());
@@ -175,7 +176,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) {
return super.mouseClicked(mouseX, mouseY, mouseButton);
}
- protected void buttonClicked(Widget button) {
+ protected void buttonClicked(AbstractWidget button) {
if (button == buttonOpenFolder) {
FilesHelper.createFolderIfMissing("palettes");
Util.getPlatform()
@@ -208,7 +209,7 @@ protected void buttonClicked(Widget button) {
}
}
- protected void buttonRightClicked(Widget button) {
+ protected void buttonRightClicked(AbstractWidget button) {
if (scanPicker) {
if (button instanceof PaletteButton)
DesignExporter.theme.setDefaultSecondaryPalette(((PaletteButton) button).palette);
@@ -239,38 +240,39 @@ public PaletteButton(PaletteDefinition palette, Screen parent, int buttonId, int
active = true;
}
- private void preview(MatrixStack ms, Minecraft mc) {
- RenderSystem.pushMatrix();
- RenderSystem.translatef(x + 5, y + 9, 100);
- RenderSystem.rotatef(-35, 0, 1, 0);
+ private void preview(PoseStack ms, Minecraft mc) {
+ ms.pushPose();
+ ms.translate(x + 1, y + 9, 100);
+ ms.scale(1 + 1/64f, 1 + 1/64f, 1);
renderBlock(ms, mc, new BlockPos(0, 1, 0), Palette.INNER_PRIMARY);
renderBlock(ms, mc, new BlockPos(1, 1, 0), Palette.INNER_DETAIL);
renderBlock(ms, mc, new BlockPos(0, 0, 0), Palette.HEAVY_PRIMARY);
renderBlock(ms, mc, new BlockPos(1, 0, 0), Palette.ROOF_PRIMARY);
- RenderSystem.popMatrix();
+ ms.popPose();
}
- protected void renderBlock(MatrixStack ms, Minecraft mc, BlockPos pos, Palette key) {
- RenderSystem.pushMatrix();
+ protected void renderBlock(PoseStack ms, Minecraft mc, BlockPos pos, Palette key) {
+ ms.pushPose();
GuiGameElement.of(palette.get(key))
.atLocal(pos.getX(), pos.getY(), pos.getZ())
.scale(7.9f)
.render(ms);
- RenderSystem.popMatrix();
+
+ ms.popPose();
}
@Override
- public void renderButton(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
+ public void renderButton(PoseStack ms, int mouseX, int mouseY, float partialTicks) {
super.renderButton(ms, mouseX, mouseY, partialTicks);
preview(ms, minecraft);
}
@Override
- public void renderToolTip(MatrixStack ms, int mouseX, int mouseY) {
+ public void renderToolTip(PoseStack ms, int mouseX, int mouseY) {
if (isHovered) {
- renderTooltip(ms, new StringTextComponent(palette.getName()), mouseX, mouseY);
- RenderSystem.color4f(1, 1, 1, 1);
+ renderTooltip(ms, new TextComponent(palette.getName()), mouseX, mouseY);
+ RenderSystem.setShaderColor(1, 1, 1, 1);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/ScreenHelper.java b/src/main/java/com/simibubi/mightyarchitect/gui/ScreenHelper.java
index a64556c..d812e68 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/ScreenHelper.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/ScreenHelper.java
@@ -1,7 +1,7 @@
package com.simibubi.mightyarchitect.gui;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.client.gui.screens.Screen;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.event.TickEvent.ClientTickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/ScreenResources.java b/src/main/java/com/simibubi/mightyarchitect/gui/ScreenResources.java
index e350718..b01d902 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/ScreenResources.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/ScreenResources.java
@@ -1,11 +1,11 @@
package com.simibubi.mightyarchitect.gui;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.TheMightyArchitect;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.AbstractGui;
-import net.minecraft.util.ResourceLocation;
+import net.minecraft.client.gui.GuiComponent;
+import net.minecraft.resources.ResourceLocation;
public enum ScreenResources {
@@ -69,7 +69,7 @@ public enum ScreenResources {
ICON_FOLDER("icons.png", 0, 96, 16, 16),
ICON_REFRESH("icons.png", 16, 96, 16, 16);
- public static final int FONT_COLOR = 0x575F7A;
+ public static final int FONT_COLOR = 0x373F5A;
public final ResourceLocation location;
public int width, height;
@@ -85,13 +85,13 @@ private ScreenResources(String location, int startX, int startY, int width, int
this.startX = startX; this.startY = startY;
}
- public void draw(MatrixStack ms, AbstractGui screen, int i, int j) {
+ public void draw(PoseStack ms, GuiComponent screen, int i, int j) {
bind();
screen.blit(ms, i, j, startX, startY, width, height);
}
public void bind() {
- Minecraft.getInstance().getTextureManager().bind(location);
+ RenderSystem.setShaderTexture(0, location);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/TextInputPromptScreen.java b/src/main/java/com/simibubi/mightyarchitect/gui/TextInputPromptScreen.java
index f9509d2..f3c6f3b 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/TextInputPromptScreen.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/TextInputPromptScreen.java
@@ -4,25 +4,25 @@
import org.lwjgl.glfw.GLFW;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
-import net.minecraft.client.gui.widget.TextFieldWidget;
-import net.minecraft.client.gui.widget.button.Button;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.client.gui.components.Button;
+import net.minecraft.client.gui.components.EditBox;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
public class TextInputPromptScreen extends AbstractSimiScreen {
private Consumer callback;
private Consumer abortCallback;
- private TextFieldWidget nameField;
+ private EditBox nameField;
private Button confirm;
private Button abort;
- private ITextComponent buttonTextConfirm;
- private ITextComponent buttonTextAbort;
- private ITextComponent title;
+ private Component buttonTextConfirm;
+ private Component buttonTextAbort;
+ private Component title;
private boolean confirmed;
@@ -31,8 +31,8 @@ public TextInputPromptScreen(Consumer callBack, Consumer abortCa
this.callback = callBack;
this.abortCallback = abortCallback;
- buttonTextConfirm = new StringTextComponent("Confirm");
- buttonTextAbort = new StringTextComponent("Abort");
+ buttonTextConfirm = new TextComponent("Confirm");
+ buttonTextAbort = new TextComponent("Abort");
confirmed = false;
}
@@ -42,7 +42,7 @@ public void init() {
setWindowSize(ScreenResources.TEXT_INPUT.width, ScreenResources.TEXT_INPUT.height + 30);
this.nameField =
- new TextFieldWidget(font, topLeftX + 33, topLeftY + 26, 128, 8, new StringTextComponent(""));
+ new EditBox(font, topLeftX + 33, topLeftY + 26, 128, 8, new TextComponent(""));
this.nameField.setTextColor(-1);
this.nameField.setTextColorUneditable(-1);
this.nameField.setBordered(false);
@@ -65,7 +65,7 @@ public void init() {
}
@Override
- public void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
+ public void renderWindow(PoseStack ms, int mouseX, int mouseY, float partialTicks) {
ScreenResources.TEXT_INPUT.draw(ms, this, topLeftX, topLeftY);
font.draw(ms, title, topLeftX + (sWidth / 2) - (font.width(title) / 2), topLeftY + 11,
ScreenResources.FONT_COLOR);
@@ -79,15 +79,15 @@ public void removed() {
}
public void setButtonTextConfirm(String buttonTextConfirm) {
- this.buttonTextConfirm = new StringTextComponent(buttonTextConfirm);
+ this.buttonTextConfirm = new TextComponent(buttonTextConfirm);
}
public void setButtonTextAbort(String buttonTextAbort) {
- this.buttonTextAbort = new StringTextComponent(buttonTextAbort);
+ this.buttonTextAbort = new TextComponent(buttonTextAbort);
}
public void setTitle(String title) {
- this.title = new StringTextComponent(title);
+ this.title = new TextComponent(title);
}
@Override
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/ThemeSettingsScreen.java b/src/main/java/com/simibubi/mightyarchitect/gui/ThemeSettingsScreen.java
index 719675c..d7529d7 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/ThemeSettingsScreen.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/ThemeSettingsScreen.java
@@ -3,7 +3,7 @@
import java.util.ArrayList;
import java.util.List;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.control.ArchitectManager;
import com.simibubi.mightyarchitect.control.design.DesignExporter;
import com.simibubi.mightyarchitect.control.design.DesignLayer;
@@ -16,18 +16,18 @@
import com.simibubi.mightyarchitect.gui.widgets.Label;
import com.simibubi.mightyarchitect.gui.widgets.ScrollInput;
-import net.minecraft.client.gui.widget.TextFieldWidget;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.client.gui.components.EditBox;
+import net.minecraft.network.chat.TextComponent;
public class ThemeSettingsScreen extends AbstractSimiScreen {
private DesignTheme theme;
- private TextFieldWidget inputName;
- private TextFieldWidget inputAuthor;
+ private EditBox inputName;
+ private EditBox inputAuthor;
private List indicators;
- private List inputs;
+ private List inputs;
private List toggleButtons;
private IconButton confirm;
@@ -57,12 +57,12 @@ public void init() {
int y = topLeftY + 14;
int id = 0;
- inputName = new TextFieldWidget(font, x, y, 104, 8, new StringTextComponent(""));
+ inputName = new EditBox(font, x, y, 104, 8, new TextComponent(""));
inputName.setValue(theme.getDisplayName());
inputName.changeFocus(false);
inputs.add(inputName);
- inputAuthor = new TextFieldWidget(font, x, y + 20, 104, 8, new StringTextComponent(""));
+ inputAuthor = new EditBox(font, x, y + 20, 104, 8, new TextComponent(""));
inputAuthor.setValue(theme.getDesigner());
inputAuthor.changeFocus(false);
inputs.add(inputAuthor);
@@ -209,7 +209,7 @@ public boolean mouseClicked(double x, double y, int button) {
if (button == 0) {
for (IconButton button2 : toggleButtons) {
- if (button2.isHovered()) {
+ if (button2.isHoveredOrFocused()) {
buttonClicked(button2);
return true;
}
@@ -268,7 +268,7 @@ private boolean activated(int index) {
}
@Override
- public void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
+ public void renderWindow(PoseStack ms, int mouseX, int mouseY, float partialTicks) {
ScreenResources.THEME_EDITOR.draw(ms, this, topLeftX, topLeftY);
int x = topLeftX + 10;
@@ -332,7 +332,7 @@ public void removed() {
ThemeStorage.exportTheme(theme);
ThemeStorage.reloadExternal();
ArchitectManager.editTheme(theme);
- minecraft.player.displayClientMessage(new StringTextComponent("Theme settings have been updated."), true);
+ minecraft.player.displayClientMessage(new TextComponent("Theme settings have been updated."), true);
}
private boolean roofLayerExists() {
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/ToolSelectionScreen.java b/src/main/java/com/simibubi/mightyarchitect/gui/ToolSelectionScreen.java
index 6a04a25..0df9459 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/ToolSelectionScreen.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/ToolSelectionScreen.java
@@ -3,35 +3,41 @@
import java.util.List;
import java.util.function.Consumer;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.platform.Window;
import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.MightyClient;
import com.simibubi.mightyarchitect.control.compose.planner.Tools;
+import com.simibubi.mightyarchitect.foundation.utility.LerpedFloat;
+import com.simibubi.mightyarchitect.foundation.utility.LerpedFloat.Chaser;
-import net.minecraft.client.MainWindow;
+import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.client.gui.Font;
+import net.minecraft.client.gui.screens.Screen;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.util.Mth;
public class ToolSelectionScreen extends Screen {
protected List tools;
protected Consumer callback;
public boolean focused;
- private float yOffset;
+ private LerpedFloat yOffset;
protected int selection;
protected int w;
protected int h;
public ToolSelectionScreen(List tools, Consumer callback) {
- super(new StringTextComponent("Tool Selection"));
+ super(new TextComponent("Tool Selection"));
this.minecraft = Minecraft.getInstance();
this.tools = tools;
this.callback = callback;
focused = false;
- yOffset = 0;
+ yOffset = LerpedFloat.linear()
+ .startWithValue(0)
+ .chase(0, .1f, Chaser.EXP);
selection = 0;
w = tools.size() * 50 + 30;
@@ -43,25 +49,28 @@ public void cycle(int direction) {
selection = (selection + tools.size()) % tools.size();
}
- private void draw(MatrixStack ms, float partialTicks) {
- MainWindow mainWindow = Minecraft.getInstance()
+ public void select(int index) {
+ selection = Mth.clamp(index, 0, tools.size() - 1);
+ }
+
+ private void draw(PoseStack ms, float partialTicks) {
+ Window mainWindow = Minecraft.getInstance()
.getWindow();
- FontRenderer font = minecraft.font;
+ Font font = minecraft.font;
int x = (mainWindow.getGuiScaledWidth() - w) / 2 + 15;
int y = 15;
- RenderSystem.pushMatrix();
- RenderSystem.translatef(0, 0, focused ? 100 : 0);
+ ms.pushPose();
+ ms.translate(0, 0, focused ? 100 : 0);
ScreenResources gray = ScreenResources.GRAY;
RenderSystem.enableBlend();
+ RenderSystem.defaultBlendFunc();
RenderSystem.enableTexture();
- RenderSystem.color4f(1, 1, 1, focused ? 7 / 8f : 1 / 2f);
- Minecraft.getInstance()
- .getTextureManager()
- .bind(gray.location);
- float toolTipAlpha = yOffset / 10;
+ RenderSystem.setShaderColor(1, 1, 1, focused ? 7 / 8f : 1 / 2f);
+ RenderSystem.setShaderTexture(0, gray.location);
+ float toolTipAlpha = yOffset.getValue(partialTicks) / 10;
// render main box
blit(ms, x - 15, y, gray.startX, gray.startY, w, h, gray.width, gray.height);
@@ -72,12 +81,10 @@ private void draw(MatrixStack ms, float partialTicks) {
int stringAlphaComponent = ((int) (toolTipAlpha * 0xFF)) << 24;
if (toolTipAlpha > 0.25f) {
- Minecraft.getInstance()
- .getTextureManager()
- .bind(gray.location);
- RenderSystem.color4f(.7f, .7f, .8f, toolTipAlpha);
+ RenderSystem.setShaderTexture(0, gray.location);
+ RenderSystem.setShaderColor(.7f, .7f, .8f, toolTipAlpha);
blit(ms, x - 15, y + 30, gray.startX, gray.startY, w, h + 22, gray.width, gray.height);
- RenderSystem.color4f(1, 1, 1, 1);
+ RenderSystem.setShaderColor(1, 1, 1, 1);
if (toolTip.size() > 0)
font.draw(ms, toolTip.get(0), x - 10, y + 35, 0xEEEEEE + stringAlphaComponent);
@@ -89,7 +96,7 @@ private void draw(MatrixStack ms, float partialTicks) {
font.draw(ms, toolTip.get(3), x - 10, y + 69, 0xCCCCDD + stringAlphaComponent);
}
- RenderSystem.color4f(1, 1, 1, 1);
+ RenderSystem.setShaderColor(1, 1, 1, 1);
String translationKey = MightyClient.TOOL_MENU.getTranslatedKeyMessage()
.getString()
.toUpperCase();
@@ -102,38 +109,42 @@ private void draw(MatrixStack ms, float partialTicks) {
drawCenteredString(ms, minecraft.font, "[SCROLL] to Cycle", width / 2, y - 10, 0xCCDDFF);
for (int i = 0; i < tools.size(); i++) {
- RenderSystem.pushMatrix();
+ ms.pushPose();
float alpha = focused ? 1 : .2f;
if (i == selection) {
- RenderSystem.translatef(0, -10, 0);
+ ms.translate(0, -10, 0);
drawCenteredString(ms, minecraft.font, tools.get(i)
.getDisplayName(), x + i * 50 + 24, y + 28, 0xCCDDFF);
alpha = 1;
}
- RenderSystem.color4f(0, 0, 0, alpha);
+ RenderSystem.setShaderColor(0, 0, 0, alpha);
tools.get(i)
.getIcon()
.draw(ms, this, x + i * 50 + 16, y + 12);
- RenderSystem.color4f(1, 1, 1, alpha);
+ RenderSystem.setShaderColor(1, 1, 1, alpha);
tools.get(i)
.getIcon()
.draw(ms, this, x + i * 50 + 16, y + 11);
- RenderSystem.popMatrix();
+ if (focused && i != selection) {
+ KeyMapping keyMapping = minecraft.options.keyHotbarSlots[i];
+ drawCenteredString(ms, minecraft.font, "[" + keyMapping.getTranslatedKeyMessage()
+ .getString() + "]", x + i * 50 + 24, y + 3, 0xCCDDFF);
+ }
+
+ ms.popPose();
}
- RenderSystem.popMatrix();
+ ms.popPose();
}
public void update() {
- if (focused)
- yOffset += (10 - yOffset) * .1f;
- else
- yOffset *= .9f;
+ yOffset.updateChaseTarget(focused ? 10 : 0);
+ yOffset.tickChaser();
}
- public void renderPassive(MatrixStack ms, float partialTicks) {
+ public void renderPassive(PoseStack ms, float partialTicks) {
if (Minecraft.getInstance().screen != null)
return;
draw(ms, partialTicks);
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/AbstractSimiWidget.java b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/AbstractSimiWidget.java
index 6e3f200..e7ac316 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/AbstractSimiWidget.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/AbstractSimiWidget.java
@@ -3,27 +3,33 @@
import java.util.LinkedList;
import java.util.List;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
-import net.minecraft.client.gui.widget.Widget;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.client.gui.components.AbstractWidget;
+import net.minecraft.client.gui.narration.NarrationElementOutput;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
-public abstract class AbstractSimiWidget extends Widget {
+public abstract class AbstractSimiWidget extends AbstractWidget {
- protected List toolTip;
+ protected List toolTip;
public AbstractSimiWidget(int xIn, int yIn, int widthIn, int heightIn) {
- super(xIn, yIn, widthIn, heightIn, StringTextComponent.EMPTY);
+ super(xIn, yIn, widthIn, heightIn, TextComponent.EMPTY);
toolTip = new LinkedList<>();
}
- public List getToolTip() {
+ public List getToolTip() {
return toolTip;
}
@Override
- public void renderButton(MatrixStack matrixStack, int p_renderButton_1_, int p_renderButton_2_, float p_renderButton_3_) {
+ public void renderButton(PoseStack matrixStack, int p_renderButton_1_, int p_renderButton_2_, float p_renderButton_3_) {
+ }
+
+ @Override
+ public void updateNarration(NarrationElementOutput pNarrationElementOutput) {
+ defaultButtonNarrationText(pNarrationElementOutput);
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/IconButton.java b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/IconButton.java
index f2f7fd3..99db879 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/IconButton.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/IconButton.java
@@ -1,11 +1,11 @@
package com.simibubi.mightyarchitect.gui.widgets;
-import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.gui.ScreenResources;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
public class IconButton extends AbstractSimiWidget {
@@ -18,7 +18,7 @@ public IconButton(int x, int y, ScreenResources icon) {
}
@Override
- public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
+ public void renderButton(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks) {
if (this.visible) {
this.isHovered =
mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height;
@@ -26,7 +26,7 @@ public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float
ScreenResources button = (pressed || !active) ? button = ScreenResources.BUTTON_DOWN
: (isHovered) ? ScreenResources.BUTTON_HOVER : ScreenResources.BUTTON;
- RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
+ RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
ScreenResources.BUTTON.bind();
blit(matrixStack, x, y, button.startX, button.startY, button.width, button.height);
icon.draw(matrixStack, this, x + 1, y + 1);
@@ -46,10 +46,10 @@ public void onRelease(double p_onRelease_1_, double p_onRelease_3_) {
}
public void setToolTip(String text) {
- setToolTip(new StringTextComponent(text));
+ setToolTip(new TextComponent(text));
}
- public void setToolTip(ITextComponent text) {
+ public void setToolTip(Component text) {
toolTip.clear();
toolTip.add(text);
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/Indicator.java b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/Indicator.java
index 7596584..aa839a4 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/Indicator.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/Indicator.java
@@ -1,11 +1,11 @@
package com.simibubi.mightyarchitect.gui.widgets;
import com.google.common.collect.ImmutableList;
-import com.mojang.blaze3d.matrix.MatrixStack;
+import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.mightyarchitect.gui.ScreenResources;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
public class Indicator extends AbstractSimiWidget {
@@ -17,17 +17,17 @@ public enum State {
public State state;
public Indicator(int x, int y, String tooltip) {
- this(x, y, new StringTextComponent(tooltip));
+ this(x, y, new TextComponent(tooltip));
}
- public Indicator(int x, int y, ITextComponent tooltip) {
+ public Indicator(int x, int y, Component tooltip) {
super(x, y, ScreenResources.INDICATOR.width, ScreenResources.INDICATOR.height);
this.toolTip = ImmutableList.of(tooltip);
this.state = State.OFF;
}
@Override
- public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks ) {
+ public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks ) {
ScreenResources toDraw;
switch(state) {
case ON: toDraw = ScreenResources.INDICATOR_WHITE; break;
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/Label.java b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/Label.java
index f523574..fa41e49 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/Label.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/Label.java
@@ -1,30 +1,30 @@
package com.simibubi.mightyarchitect.gui.widgets;
-import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.util.text.IFormattableTextComponent;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.client.gui.Font;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.TextComponent;
public class Label extends AbstractSimiWidget {
- public ITextComponent text;
+ public Component text;
public String suffix;
protected boolean hasShadow;
protected int color;
- protected FontRenderer font;
+ protected Font font;
public Label(int x, int y, String tooltip) {
- this(x, y, new StringTextComponent(tooltip));
+ this(x, y, new TextComponent(tooltip));
}
- public Label(int x, int y, ITextComponent text) {
+ public Label(int x, int y, Component text) {
super(x, y, Minecraft.getInstance().font.width(text), 10);
font = Minecraft.getInstance().font;
- this.text = new StringTextComponent("Label");
+ this.text = new TextComponent("Label");
color = 0xFFFFFF;
hasShadow = false;
suffix = "";
@@ -46,11 +46,11 @@ public Label withSuffix(String s) {
}
public void setText(String text) {
- this.text = new StringTextComponent(text);
+ this.text = new TextComponent(text);
}
- public void setTextAndTrim(ITextComponent newText, boolean trimFront, int maxWidthPx) {
- FontRenderer fontRenderer = Minecraft.getInstance().font;
+ public void setTextAndTrim(Component newText, boolean trimFront, int maxWidthPx) {
+ Font fontRenderer = Minecraft.getInstance().font;
if (fontRenderer.width(newText) <= maxWidthPx) {
text = newText;
@@ -68,8 +68,8 @@ public void setTextAndTrim(ITextComponent newText, boolean trimFront, int maxWid
for (int i = startIndex; i != endIndex; i += step) {
String sub = builder.substring(trimFront ? i : startIndex, trimFront ? endIndex + 1 : i + 1);
- if (fontRenderer.width(new StringTextComponent(sub).setStyle(newText.getStyle())) + trimWidth <= maxWidthPx) {
- text = new StringTextComponent(trimFront ? trim + sub : sub + trim).setStyle(newText.getStyle());
+ if (fontRenderer.width(new TextComponent(sub).setStyle(newText.getStyle())) + trimWidth <= maxWidthPx) {
+ text = new TextComponent(trimFront ? trim + sub : sub + trim).setStyle(newText.getStyle());
return;
}
}
@@ -77,14 +77,14 @@ public void setTextAndTrim(ITextComponent newText, boolean trimFront, int maxWid
}
@Override
- public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
+ public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks) {
if (!visible)
return;
if (text == null || text.getString().isEmpty())
return;
- RenderSystem.color4f(1, 1, 1, 1);
- IFormattableTextComponent copy = text.plainCopy();
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ MutableComponent copy = text.plainCopy();
if (suffix != null && !suffix.isEmpty())
copy.append(suffix);
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/ScrollInput.java b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/ScrollInput.java
index 264cb4f..9d23103 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/ScrollInput.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/ScrollInput.java
@@ -2,18 +2,18 @@
import java.util.function.Consumer;
-import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
+import net.minecraft.client.gui.screens.Screen;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
public class ScrollInput extends AbstractSimiWidget {
protected Consumer onScroll;
protected int state;
protected Label displayLabel;
- protected ITextComponent title = new StringTextComponent("Choose an Option");
- protected ITextComponent scrollToModify = new StringTextComponent("Scroll to Modify");
+ protected Component title = new TextComponent("Choose an Option");
+ protected Component scrollToModify = new TextComponent("Scroll to Modify");
protected int min, max;
protected int shiftStep;
@@ -42,7 +42,7 @@ public ScrollInput removeCallback() {
}
public ScrollInput titled(String title) {
- this.title = new StringTextComponent(title);
+ this.title = new TextComponent(title);
updateTooltip();
return this;
}
@@ -108,15 +108,15 @@ public void onChanged() {
}
protected void writeToLabel() {
- displayLabel.text = new StringTextComponent(String.valueOf(state));
+ displayLabel.text = new TextComponent(String.valueOf(state));
}
protected void updateTooltip() {
toolTip.clear();
toolTip.add(title.plainCopy()
- .withStyle(TextFormatting.BLUE));
+ .withStyle(ChatFormatting.BLUE));
toolTip.add(scrollToModify.plainCopy()
- .withStyle(TextFormatting.ITALIC, TextFormatting.DARK_GRAY));
+ .withStyle(ChatFormatting.ITALIC, ChatFormatting.DARK_GRAY));
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/SelectionScrollInput.java b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/SelectionScrollInput.java
index 5318a02..dca8798 100644
--- a/src/main/java/com/simibubi/mightyarchitect/gui/widgets/SelectionScrollInput.java
+++ b/src/main/java/com/simibubi/mightyarchitect/gui/widgets/SelectionScrollInput.java
@@ -3,14 +3,14 @@
import java.util.ArrayList;
import java.util.List;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.util.text.TextFormatting;
+import net.minecraft.ChatFormatting;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
public class SelectionScrollInput extends ScrollInput {
protected List options;
- protected ITextComponent scrollToSelect = new StringTextComponent("Scroll to Select");
+ protected Component scrollToSelect = new TextComponent("Scroll to Select");
public SelectionScrollInput(int xIn, int yIn, int widthIn, int heightIn) {
super(xIn, yIn, widthIn, heightIn);
@@ -26,7 +26,7 @@ public ScrollInput forOptions(List options) {
@Override
protected void writeToLabel() {
- displayLabel.text = new StringTextComponent(options.get(state));
+ displayLabel.text = new TextComponent(options.get(state));
}
@Override
@@ -38,22 +38,22 @@ public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
protected void updateTooltip() {
toolTip.clear();
toolTip.add(title.plainCopy()
- .withStyle(TextFormatting.BLUE));
+ .withStyle(ChatFormatting.BLUE));
for (int i = min; i < max; i++) {
if (i == state)
- toolTip.add(StringTextComponent.EMPTY.plainCopy()
+ toolTip.add(TextComponent.EMPTY.plainCopy()
.append("-> ")
.append(options.get(i))
- .withStyle(TextFormatting.WHITE));
+ .withStyle(ChatFormatting.WHITE));
else
- toolTip.add(StringTextComponent.EMPTY.plainCopy()
+ toolTip.add(TextComponent.EMPTY.plainCopy()
.append("> ")
.append(options.get(i))
- .withStyle(TextFormatting.GRAY));
+ .withStyle(ChatFormatting.GRAY));
}
- toolTip.add(StringTextComponent.EMPTY.plainCopy()
+ toolTip.add(TextComponent.EMPTY.plainCopy()
.append(scrollToSelect)
- .withStyle(TextFormatting.ITALIC, TextFormatting.DARK_GRAY));
+ .withStyle(ChatFormatting.ITALIC, ChatFormatting.DARK_GRAY));
}
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/item/ArchitectWandItem.java b/src/main/java/com/simibubi/mightyarchitect/item/ArchitectWandItem.java
index a15b49f..364faca 100644
--- a/src/main/java/com/simibubi/mightyarchitect/item/ArchitectWandItem.java
+++ b/src/main/java/com/simibubi/mightyarchitect/item/ArchitectWandItem.java
@@ -8,54 +8,51 @@
import com.simibubi.mightyarchitect.gui.DesignExporterScreen;
import com.simibubi.mightyarchitect.gui.ScreenHelper;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.item.ItemUseContext;
-import net.minecraft.item.Rarity;
-import net.minecraft.util.ActionResult;
-import net.minecraft.util.ActionResultType;
-import net.minecraft.util.Hand;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.world.World;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.InteractionResultHolder;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Rarity;
+import net.minecraft.world.item.context.UseOnContext;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.DistExecutor;
-import net.minecraft.item.Item.Properties;
-
public class ArchitectWandItem extends Item {
public ArchitectWandItem(Properties properties) {
- super(properties.stacksTo(1).rarity(Rarity.RARE));
+ super(properties.stacksTo(1)
+ .rarity(Rarity.RARE));
}
@Override
- public ActionResultType useOn(ItemUseContext context) {
- PlayerEntity player = context.getPlayer();
- World world = context.getLevel();
+ public InteractionResult useOn(UseOnContext context) {
+ Player player = context.getPlayer();
+ Level world = context.getLevel();
if (!world.isClientSide)
- return ActionResultType.SUCCESS;
+ return InteractionResult.SUCCESS;
if (player.isShiftKeyDown()) {
- DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> {
- openGui();
- });
- return ActionResultType.SUCCESS;
+ DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> openGui());
+ return InteractionResult.SUCCESS;
}
BlockPos anchor = context.getClickedPos();
BlockState blockState = world.getBlockState(anchor);
- DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> {
- handleUseOnDesignAnchor(player, world, anchor, blockState);
- });
+ DistExecutor.unsafeRunWhenOn(Dist.CLIENT,
+ () -> () -> handleUseOnDesignAnchor(player, world, anchor, blockState));
- player.getCooldowns().addCooldown(this, 5);
- return ActionResultType.SUCCESS;
+ player.getCooldowns()
+ .addCooldown(this, 5);
+ return InteractionResult.SUCCESS;
}
@OnlyIn(value = Dist.CLIENT)
@@ -64,36 +61,35 @@ protected void resetVisualization() {
}
@OnlyIn(value = Dist.CLIENT)
- protected void handleUseOnDesignAnchor(PlayerEntity player, World world, BlockPos anchor, BlockState blockState) {
+ protected void handleUseOnDesignAnchor(Player player, Level world, BlockPos anchor, BlockState blockState) {
if (AllBlocks.DESIGN_ANCHOR.typeOf(blockState)) {
if (!ArchitectManager.inPhase(ArchitectPhases.EditingThemes))
return;
String name = DesignExporter.exportDesign(world, anchor);
if (!name.isEmpty()) {
- player.displayClientMessage(new StringTextComponent(name), true);
+ player.displayClientMessage(new TextComponent(name), true);
}
} else {
if (!ArchitectManager.inPhase(ArchitectPhases.EditingThemes))
return;
- DistExecutor.runWhenOn(Dist.CLIENT, () -> this::resetVisualization);
+ DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::resetVisualization);
}
}
@Override
- public ActionResult use(World worldIn, PlayerEntity playerIn, Hand handIn) {
+ public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) {
if (worldIn.isClientSide) {
- DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> {
- handleRightClick(worldIn, playerIn, handIn);
- });
- playerIn.getCooldowns().addCooldown(this, 5);
+ DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> handleRightClick(worldIn, playerIn, handIn));
+ playerIn.getCooldowns()
+ .addCooldown(this, 5);
}
return super.use(worldIn, playerIn, handIn);
}
@OnlyIn(value = Dist.CLIENT)
- protected void handleRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
+ protected void handleRightClick(Level worldIn, Player playerIn, InteractionHand handIn) {
if (!ArchitectManager.inPhase(ArchitectPhases.EditingThemes))
return;
@@ -104,7 +100,7 @@ protected void handleRightClick(World worldIn, PlayerEntity playerIn, Hand handI
resetVisualization();
}
}
-
+
@OnlyIn(value = Dist.CLIENT)
private void openGui() {
if (!ArchitectManager.inPhase(ArchitectPhases.EditingThemes))
diff --git a/src/main/java/com/simibubi/mightyarchitect/networking/InstantPrintPacket.java b/src/main/java/com/simibubi/mightyarchitect/networking/InstantPrintPacket.java
index 45d5c8e..fb70321 100644
--- a/src/main/java/com/simibubi/mightyarchitect/networking/InstantPrintPacket.java
+++ b/src/main/java/com/simibubi/mightyarchitect/networking/InstantPrintPacket.java
@@ -7,12 +7,12 @@
import java.util.Map;
import java.util.function.Supplier;
-import net.minecraft.block.BlockState;
-import net.minecraft.nbt.CompoundNBT;
-import net.minecraft.nbt.NBTUtil;
-import net.minecraft.network.PacketBuffer;
-import net.minecraft.util.math.BlockPos;
-import net.minecraftforge.fml.network.NetworkEvent.Context;
+import net.minecraft.core.BlockPos;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.NbtUtils;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraftforge.network.NetworkEvent;
public class InstantPrintPacket {
@@ -25,30 +25,29 @@ public InstantPrintPacket(BunchOfBlocks blocks) {
this.blocks = blocks;
}
- public InstantPrintPacket(PacketBuffer buf) {
+ public InstantPrintPacket(FriendlyByteBuf buf) {
Map blocks = new HashMap<>();
int size = buf.readInt();
for (int i = 0; i < size; i++) {
- CompoundNBT blockTag = buf.readNbt();
+ CompoundTag blockTag = buf.readNbt();
BlockPos pos = buf.readBlockPos();
- blocks.put(pos, NBTUtil.readBlockState(blockTag));
+ blocks.put(pos, NbtUtils.readBlockState(blockTag));
}
this.blocks = new BunchOfBlocks(blocks);
}
- public void toBytes(PacketBuffer buf) {
+ public void toBytes(FriendlyByteBuf buf) {
buf.writeInt(blocks.size);
blocks.blocks.forEach((pos, state) -> {
- buf.writeNbt(NBTUtil.writeBlockState(state));
+ buf.writeNbt(NbtUtils.writeBlockState(state));
buf.writeBlockPos(pos);
});
}
- public void handle(Supplier context) {
- Context ctx = context.get();
- ctx.enqueueWork(() -> {
+ public void handle(Supplier context) {
+ context.get().enqueueWork(() -> {
blocks.blocks.forEach((pos, state) -> {
- ctx.getSender().getCommandSenderWorld().setBlock(pos, state, 3);
+ context.get().getSender().getCommandSenderWorld().setBlock(pos, state, 3);
});
});
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/networking/PlaceSignPacket.java b/src/main/java/com/simibubi/mightyarchitect/networking/PlaceSignPacket.java
index 5fd476f..3b87573 100644
--- a/src/main/java/com/simibubi/mightyarchitect/networking/PlaceSignPacket.java
+++ b/src/main/java/com/simibubi/mightyarchitect/networking/PlaceSignPacket.java
@@ -2,13 +2,13 @@
import java.util.function.Supplier;
-import net.minecraft.block.Blocks;
-import net.minecraft.network.PacketBuffer;
-import net.minecraft.tileentity.SignTileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.StringTextComponent;
-import net.minecraft.world.World;
-import net.minecraftforge.fml.network.NetworkEvent.Context;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.entity.SignBlockEntity;
+import net.minecraftforge.network.NetworkEvent;
public class PlaceSignPacket {
@@ -25,23 +25,23 @@ public PlaceSignPacket(String textLine1, String textLine2, BlockPos position) {
this.position = position;
}
- public PlaceSignPacket(PacketBuffer buffer) {
+ public PlaceSignPacket(FriendlyByteBuf buffer) {
this(buffer.readUtf(128), buffer.readUtf(128), buffer.readBlockPos());
}
- public void toBytes(PacketBuffer buffer) {
+ public void toBytes(FriendlyByteBuf buffer) {
buffer.writeUtf(text1);
buffer.writeUtf(text2);
buffer.writeBlockPos(position);
}
- public void handle(Supplier context) {
+ public void handle(Supplier context) {
context.get().enqueueWork(() -> {
- World entityWorld = context.get().getSender().getCommandSenderWorld();
+ Level entityWorld = context.get().getSender().getCommandSenderWorld();
entityWorld.setBlockAndUpdate(position, Blocks.SPRUCE_SIGN.defaultBlockState());
- SignTileEntity sign = (SignTileEntity) entityWorld.getBlockEntity(position);
- sign.setMessage(0, new StringTextComponent(text1));
- sign.setMessage(1, new StringTextComponent(text2));
+ SignBlockEntity sign = (SignBlockEntity) entityWorld.getBlockEntity(position);
+ sign.setMessage(0, new TextComponent(text1));
+ sign.setMessage(1, new TextComponent(text2));
});
}
diff --git a/src/main/java/com/simibubi/mightyarchitect/networking/SetHotbarItemPacket.java b/src/main/java/com/simibubi/mightyarchitect/networking/SetHotbarItemPacket.java
index 762816f..8be2315 100644
--- a/src/main/java/com/simibubi/mightyarchitect/networking/SetHotbarItemPacket.java
+++ b/src/main/java/com/simibubi/mightyarchitect/networking/SetHotbarItemPacket.java
@@ -2,10 +2,10 @@
import java.util.function.Supplier;
-import net.minecraft.entity.player.ServerPlayerEntity;
-import net.minecraft.item.ItemStack;
-import net.minecraft.network.PacketBuffer;
-import net.minecraftforge.fml.network.NetworkEvent.Context;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.item.ItemStack;
+import net.minecraftforge.network.NetworkEvent;
public class SetHotbarItemPacket {
@@ -17,22 +17,23 @@ public SetHotbarItemPacket(int slot, ItemStack stack) {
this.stack = stack;
}
- public SetHotbarItemPacket(PacketBuffer buffer) {
+ public SetHotbarItemPacket(FriendlyByteBuf buffer) {
this(buffer.readInt(), buffer.readItem());
}
- public void toBytes(PacketBuffer buffer) {
+ public void toBytes(FriendlyByteBuf buffer) {
buffer.writeInt(slot);
buffer.writeItem(stack);
}
- public void handle(Supplier context) {
+ public void handle(Supplier context) {
context.get().enqueueWork(() -> {
- ServerPlayerEntity player = context.get().getSender();
+ ServerPlayer player = context.get().getSender();
if (!player.isCreative())
return;
-
- player.setSlot(slot, stack);
+
+ player.getInventory().setItem(slot, stack);
+ //player.setSlot(slot, stack);
player.inventoryMenu.broadcastChanges();
});
}
diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg
new file mode 100644
index 0000000..98406fe
--- /dev/null
+++ b/src/main/resources/META-INF/accesstransformer.cfg
@@ -0,0 +1 @@
+public net.minecraft.client.renderer.entity.ItemRenderer f_115096_ # textureManager
\ No newline at end of file
diff --git a/src/main/resources/assets/mightyarchitect/textures/gui/background.png b/src/main/resources/assets/mightyarchitect/textures/gui/background.png
index de5cde9..a87c6d8 100644
Binary files a/src/main/resources/assets/mightyarchitect/textures/gui/background.png and b/src/main/resources/assets/mightyarchitect/textures/gui/background.png differ