From fee12aa0885da204ec874cd5ada371c42501c873 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 31 Dec 2018 13:12:25 +0800 Subject: packetadder wip --- README.md | 4 + build.gradle | 57 +++---- gradle/wrapper/gradle-wrapper.jar | Bin 54413 -> 52818 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 23 ++- gradlew.bat | 168 ++++++++++----------- settings.gradle | 12 +- src/main/java/me/shedaniel/ClientListener.java | 26 ++-- src/main/java/me/shedaniel/Core.java | 47 +++++- src/main/java/me/shedaniel/api/IREIPlugin.java | 4 +- src/main/java/me/shedaniel/gui/GuiItemList.java | 98 ++++++------ .../java/me/shedaniel/gui/REIRenderHelper.java | 63 ++++---- .../java/me/shedaniel/gui/RecipeContainer.java | 7 +- src/main/java/me/shedaniel/gui/RecipeGui.java | 99 ++++++------ src/main/java/me/shedaniel/gui/widget/Button.java | 33 ++-- src/main/java/me/shedaniel/gui/widget/Control.java | 50 +++--- src/main/java/me/shedaniel/gui/widget/REISlot.java | 57 ++++--- src/main/java/me/shedaniel/gui/widget/Tab.java | 17 +-- src/main/java/me/shedaniel/gui/widget/TextBox.java | 8 +- .../java/me/shedaniel/gui/widget/WidgetArrow.java | 22 ++- .../java/me/shedaniel/impl/REIRecipeManager.java | 22 +-- .../java/me/shedaniel/library/KeyBindManager.java | 10 +- .../shedaniel/listenerdefinitions/CharInput.java | 2 +- .../listenerdefinitions/ClientTickable.java | 5 + .../shedaniel/listenerdefinitions/DoneLoading.java | 2 +- .../listenerdefinitions/DrawContainer.java | 6 +- .../listenerdefinitions/GuiCickListener.java | 2 +- .../shedaniel/listenerdefinitions/GuiKeyDown.java | 2 +- .../me/shedaniel/listenerdefinitions/IEvent.java | 4 + .../listenerdefinitions/IMixinContainerGui.java | 14 ++ .../listenerdefinitions/IMixinGuiContainer.java | 14 -- .../listenerdefinitions/KeybindHandler.java | 7 + .../listenerdefinitions/MinecraftResize.java | 2 +- .../listenerdefinitions/MouseScrollListener.java | 2 +- .../shedaniel/listenerdefinitions/PacketAdder.java | 21 +++ .../listenerdefinitions/PotionCraftingAdder.java | 6 +- .../listenerdefinitions/PreLoadOptions.java | 2 +- .../listenerdefinitions/RecipeLoadListener.java | 4 +- .../shedaniel/listeners/DrawContainerListener.java | 40 ++--- .../java/me/shedaniel/listeners/InitListener.java | 21 --- .../mixins/MixinBrewingRecipeRegistry.java | 22 +++ .../java/me/shedaniel/mixins/MixinDoneLoading.java | 11 +- .../me/shedaniel/mixins/MixinGuiContainer.java | 46 +++--- .../mixins/MixinGuiContainerCreative.java | 77 +++++----- .../me/shedaniel/mixins/MixinKeyboardListener.java | 10 +- .../me/shedaniel/mixins/MixinMinecraftClient.java | 40 +++++ .../me/shedaniel/mixins/MixinMinecraftResize.java | 19 ++- .../me/shedaniel/mixins/MixinPotionBrewing.java | 21 --- .../me/shedaniel/mixins/MixinRecipeManager.java | 16 +- .../java/me/shedaniel/mixins/SettingsMixin.java | 14 +- .../java/me/shedaniel/network/CheatPacket.java | 30 ++-- .../java/me/shedaniel/network/DeletePacket.java | 31 ++-- .../java/me/shedaniel/plugin/RandomRecipe.java | 6 +- .../me/shedaniel/plugin/TestRandomCategory.java | 3 - .../java/me/shedaniel/plugin/VanillaPlugin.java | 59 +++++--- .../plugin/crafting/VanillaCraftingCategory.java | 17 +-- .../crafting/VanillaShapedCraftingRecipe.java | 10 +- .../crafting/VanillaShapelessCraftingRecipe.java | 14 +- .../plugin/furnace/VanillaFurnaceCategory.java | 16 +- .../plugin/furnace/VanillaFurnaceRecipe.java | 14 +- .../plugin/potion/VanillaPotionCategory.java | 32 ++-- .../plugin/potion/VanillaPotionRecipe.java | 2 +- .../plugin/smoker/VanillaSmokerCategory.java | 89 +++++++++++ .../plugin/smoker/VanillaSmokerRecipe.java | 43 ++++++ .../assets/almostenoughitems/.modassetroot | 0 .../assets/almostenoughitems/lang/en_us.json | 16 -- .../assets/almostenoughitems/lang/fr_fr.json | 8 - .../textures/gui/recipecontainer.png | Bin 3577 -> 0 bytes .../assets/roughlyenoughitems/.modassetroot | 0 .../assets/roughlyenoughitems/lang/en_us.json | 17 +++ .../assets/roughlyenoughitems/lang/fr_fr.json | 8 + .../textures/gui/recipecontainer.png | Bin 0 -> 3577 bytes src/main/resources/fabric.mod.json | 19 +++ src/main/resources/mixins.roughlyenoughitems.json | 19 --- src/main/resources/roughlyenoughitems.client.json | 18 +++ 75 files changed, 993 insertions(+), 741 deletions(-) mode change 100644 => 100755 build.gradle mode change 100644 => 100755 gradle/wrapper/gradle-wrapper.jar mode change 100644 => 100755 gradle/wrapper/gradle-wrapper.properties mode change 100644 => 100755 gradlew.bat mode change 100644 => 100755 settings.gradle create mode 100644 src/main/java/me/shedaniel/listenerdefinitions/ClientTickable.java create mode 100644 src/main/java/me/shedaniel/listenerdefinitions/IEvent.java create mode 100755 src/main/java/me/shedaniel/listenerdefinitions/IMixinContainerGui.java delete mode 100755 src/main/java/me/shedaniel/listenerdefinitions/IMixinGuiContainer.java create mode 100644 src/main/java/me/shedaniel/listenerdefinitions/KeybindHandler.java create mode 100644 src/main/java/me/shedaniel/listenerdefinitions/PacketAdder.java delete mode 100755 src/main/java/me/shedaniel/listeners/InitListener.java create mode 100644 src/main/java/me/shedaniel/mixins/MixinBrewingRecipeRegistry.java create mode 100644 src/main/java/me/shedaniel/mixins/MixinMinecraftClient.java delete mode 100644 src/main/java/me/shedaniel/mixins/MixinPotionBrewing.java create mode 100755 src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java create mode 100755 src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerRecipe.java delete mode 100755 src/main/resources/assets/almostenoughitems/.modassetroot delete mode 100755 src/main/resources/assets/almostenoughitems/lang/en_us.json delete mode 100755 src/main/resources/assets/almostenoughitems/lang/fr_fr.json delete mode 100755 src/main/resources/assets/almostenoughitems/textures/gui/recipecontainer.png create mode 100755 src/main/resources/assets/roughlyenoughitems/.modassetroot create mode 100755 src/main/resources/assets/roughlyenoughitems/lang/en_us.json create mode 100755 src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json create mode 100755 src/main/resources/assets/roughlyenoughitems/textures/gui/recipecontainer.png create mode 100755 src/main/resources/fabric.mod.json delete mode 100644 src/main/resources/mixins.roughlyenoughitems.json create mode 100755 src/main/resources/roughlyenoughitems.client.json diff --git a/README.md b/README.md index d0ce90d23..922c40d9d 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,10 @@ A project to make (AEI) [https://minecraft.curseforge.com/projects/almost-enough - Fixed Scrolling (by a bit) - One page now shows 2 recipe +### 1.14 Port +- Not Called Listeners + - PacketAdder + ### Features that I will work on in the future - Hide Gui with Control / Command + O diff --git a/build.gradle b/build.gradle old mode 100644 new mode 100755 index d2bb2d756..7b686ef8a --- a/build.gradle +++ b/build.gradle @@ -1,50 +1,29 @@ -buildscript { - repositories { - jcenter() - maven { url 'https://www.jitpack.io' } - maven { url 'http://repo.spongepowered.org/maven' } - maven { url 'http://files.minecraftforge.net/maven' } - } - dependencies { - classpath 'com.github.Chocohead:ForgeGradle:moderniser-SNAPSHOT' - classpath 'org.spongepowered:mixingradle:0.6-SNAPSHOT' - } +plugins { + id 'fabric-loom' version '0.2.0-SNAPSHOT' } -apply plugin: 'net.minecraftforge.gradle.tweaker-client' -apply plugin: 'org.spongepowered.mixin' -apply plugin: 'java' - -group 'me.shedaniel' -version '1.0b-1' -archivesBaseName = 'RoughlyEnoughItems' - sourceCompatibility = 1.8 targetCompatibility = 1.8 -repositories { - mavenCentral() - maven { url 'https://www.dimdev.org/maven/' } - maven { url 'https://repo.spongepowered.org/maven/' } - maven { url 'https://www.jitpack.io' } - maven { url "http://repo.strezz.org/artifactory/list/Strezz-Central" } -} +archivesBaseName = "RoughlyEnoughItems" +version = "1.0-1" +minecraft { +} +dependencies { + minecraft "com.mojang:minecraft:18w50a" + mappings "net.fabricmc:yarn:18w50a.83" + modCompile "net.fabricmc:fabric-loader:0.3.1.82" -mixin { - defaultObfuscationEnv notch - add sourceSets.main, 'mixins.roughlyenoughitems.refmap.json' + // Fabric API. This is technically optional, but you probably want it anyway. + modCompile "net.fabricmc:fabric:0.1.2.63" } -minecraft { - version = '1.13.2' - mappings = 'snapshot_20181130' - runDir = 'run' - tweakClass = 'org.dimdev.riftloader.launch.RiftLoaderClientTweaker' +// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task +// if it is present. +// If you remove this task, sources will not be generated. +task sourcesJar(type: Jar, dependsOn: classes) { + classifier = 'sources' + from sourceSets.main.allSource } - -dependencies { - implementation 'com.github.Chocohead:Rift:f76cf44d887d290782590c99770876393c924333:dev' - implementation 'com.google.code.gson:gson:2.8.5' -} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar old mode 100644 new mode 100755 index 1948b9074..deedc7fa5 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 old mode 100644 new mode 100755 index acb49a1b1..60f855974 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Dec 21 19:34:34 HKT 2018 +#Sun Dec 30 21:50:18 HKT 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip diff --git a/gradlew b/gradlew index cccdd3d51..9aa616c27 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash ############################################################################## ## @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn () { +warn ( ) { echo "$*" } -die () { +die ( ) { echo echo "$*" echo @@ -154,19 +154,16 @@ if $cygwin ; then esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") } -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" +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" # 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 +if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then cd "$(dirname "$0")" fi -exec "$JAVACMD" "$@" +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat old mode 100644 new mode 100755 index e95643d6a..f9553162f --- a/gradlew.bat +++ b/gradlew.bat @@ -1,84 +1,84 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@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= - -@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 - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -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% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@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= + +@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 + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +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% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle old mode 100644 new mode 100755 index cc5cba83c..5b60df3d2 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,10 @@ -rootProject.name = 'RoughlyEnoughItems' - +pluginManagement { + repositories { + jcenter() + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} diff --git a/src/main/java/me/shedaniel/ClientListener.java b/src/main/java/me/shedaniel/ClientListener.java index d6c4017c7..7d7d2f65b 100755 --- a/src/main/java/me/shedaniel/ClientListener.java +++ b/src/main/java/me/shedaniel/ClientListener.java @@ -9,12 +9,12 @@ import me.shedaniel.listenerdefinitions.RecipeLoadListener; import net.minecraft.client.settings.KeyBinding; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.init.Items; import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraft.util.registry.IRegistry; +import net.minecraft.item.Items; +import net.minecraft.recipe.RecipeManager; +import net.minecraft.util.DefaultedList; +import net.minecraft.util.registry.Registry; import java.awt.event.KeyEvent; import java.util.ArrayList; @@ -43,24 +43,24 @@ public class ClientListener implements DoneLoading, RecipeLoadListener { } private void buildItemList() { - if (!IRegistry.ITEM.isEmpty()) - IRegistry.ITEM.forEach(this::processItem); - if (!IRegistry.ENCHANTMENT.isEmpty()) - IRegistry.ENCHANTMENT.forEach(enchantment -> { - for(int i = enchantment.getMinLevel(); i < enchantment.getMaxLevel(); i++) { + if (!Registry.ITEM.isEmpty()) + Registry.ITEM.forEach(this::processItem); + if (Registry.ENCHANTMENT.stream().count() > 0) + Registry.ENCHANTMENT.forEach(enchantment -> { + for(int i = enchantment.getMinimumLevel(); i < enchantment.getMaximumLevel(); i++) { ItemStack stack = new ItemStack(Items.ENCHANTED_BOOK); Map map = new HashMap<>(); map.put(enchantment, i); - EnchantmentHelper.setEnchantments(map, stack); + EnchantmentHelper.set(map, stack); processItemStack(stack); } }); } private void processItem(Item item) { - NonNullList items = NonNullList.create(); + DefaultedList items = DefaultedList.create(); try { - item.fillItemGroup(item.getGroup(), items); + item.addStacksForDisplay(item.getItemGroup(), items); items.forEach(stackList::add); } catch (NullPointerException e) { // if (item == Items.ENCHANTED_BOOK) { @@ -75,7 +75,7 @@ public class ClientListener implements DoneLoading, RecipeLoadListener { } @Override - public void recipesLoaded(net.minecraft.item.crafting.RecipeManager recipeManager) { + public void recipesLoaded(RecipeManager recipeManager) { REIRecipeManager.instance().RecipesLoaded(recipeManager); } } diff --git a/src/main/java/me/shedaniel/Core.java b/src/main/java/me/shedaniel/Core.java index 61f985db1..b5c28f61b 100755 --- a/src/main/java/me/shedaniel/Core.java +++ b/src/main/java/me/shedaniel/Core.java @@ -1,22 +1,32 @@ package me.shedaniel; +import me.shedaniel.library.KeyBindManager; +import me.shedaniel.listenerdefinitions.IEvent; +import me.shedaniel.listenerdefinitions.PacketAdder; +import me.shedaniel.listeners.DrawContainerListener; +import me.shedaniel.listeners.ResizeListener; import me.shedaniel.network.CheatPacket; import me.shedaniel.network.DeletePacket; -import net.minecraft.network.EnumPacketDirection; -import org.dimdev.rift.listener.PacketAdder; +import me.shedaniel.plugin.VanillaPlugin; +import net.fabricmc.api.ModInitializer; +import net.minecraft.network.NetworkSide; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; /** * Created by James on 7/27/2018. */ -public class Core implements PacketAdder { +public class Core implements ModInitializer, PacketAdder { @Override public void registerHandshakingPackets(PacketRegistrationReceiver receiver) { } @Override public void registerPlayPackets(PacketRegistrationReceiver receiver) { - receiver.registerPacket(EnumPacketDirection.SERVERBOUND, CheatPacket.class); - receiver.registerPacket(EnumPacketDirection.SERVERBOUND, DeletePacket.class); + receiver.registerPacket(NetworkSide.SERVER, CheatPacket.class); + receiver.registerPacket(NetworkSide.SERVER, DeletePacket.class); } @Override @@ -29,5 +39,32 @@ public class Core implements PacketAdder { } + private static List events = new LinkedList<>(); + + @Override + public void onInitialize() { + registerEvents(); + } + + private void registerEvents() { + registerEvent(new DrawContainerListener()); + registerEvent(new ResizeListener()); + registerEvent(new KeyBindManager()); + registerEvent(new VanillaPlugin()); + registerEvent(new ClientListener()); + } + + public static void registerEvent(IEvent event) { + events.add(event); + } + + public static List getListeners(Class listenerInterface) { + List list = new ArrayList<>(); + events.forEach(iEvent -> { + if (listenerInterface.isAssignableFrom(iEvent.getClass())) + list.add(listenerInterface.cast(iEvent)); + }); + return list; + } } diff --git a/src/main/java/me/shedaniel/api/IREIPlugin.java b/src/main/java/me/shedaniel/api/IREIPlugin.java index 98060163d..bc80f40c9 100755 --- a/src/main/java/me/shedaniel/api/IREIPlugin.java +++ b/src/main/java/me/shedaniel/api/IREIPlugin.java @@ -1,9 +1,11 @@ package me.shedaniel.api; +import me.shedaniel.listenerdefinitions.IEvent; + /** * Created by James on 7/27/2018. */ -public interface IREIPlugin { +public interface IREIPlugin extends IEvent { public void register(); } diff --git a/src/main/java/me/shedaniel/gui/GuiItemList.java b/src/main/java/me/shedaniel/gui/GuiItemList.java index f23ab9f85..b4f913c7c 100755 --- a/src/main/java/me/shedaniel/gui/GuiItemList.java +++ b/src/main/java/me/shedaniel/gui/GuiItemList.java @@ -1,21 +1,23 @@ package me.shedaniel.gui; +import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.ClientListener; +import me.shedaniel.Core; import me.shedaniel.gui.widget.Button; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.REISlot; import me.shedaniel.gui.widget.TextBox; -import me.shedaniel.listenerdefinitions.IMixinGuiContainer; -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.entity.player.EntityPlayer; +import me.shedaniel.listenerdefinitions.IMixinContainerGui; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.util.Window; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; +import net.minecraft.text.TextComponent; +import net.minecraft.text.TranslatableTextComponent; +import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; -import net.minecraft.util.registry.IRegistry; -import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.util.registry.Registry; import java.awt.*; import java.util.ArrayList; @@ -27,7 +29,7 @@ import java.util.stream.Stream; public class GuiItemList extends Drawable { public static final int FOOTERSIZE = 44; - private GuiContainer overlayedGui; + private ContainerGui overlayedGui; private static int page = 0; private ArrayList displaySlots; protected ArrayList controls; @@ -42,7 +44,7 @@ public class GuiItemList extends Drawable { private int oldGuiLeft = 0; private boolean cheatMode = false; - public GuiItemList(GuiContainer overlayedGui) { + public GuiItemList(ContainerGui overlayedGui) { super(calculateRect(overlayedGui)); displaySlots = new ArrayList<>(); controls = new ArrayList<>(); @@ -52,9 +54,9 @@ public class GuiItemList extends Drawable { } public boolean canCheat() { - EntityPlayer player = Minecraft.getInstance().player; + ClientPlayerEntity player = MinecraftClient.getInstance().player; if (cheatMode) { - if (!player.hasPermissionLevel(1)) { + if (!player.allowsPermissionLevel(1)) { cheatClicked(0); return false; } @@ -63,26 +65,25 @@ public class GuiItemList extends Drawable { return false; } - private static Rectangle calculateRect(GuiContainer overlayedGui) { - MainWindow res = REIRenderHelper.getResolution(); - int startX = (((IMixinGuiContainer) overlayedGui).getGuiLeft() + ((IMixinGuiContainer) overlayedGui).getXSize()) + 10; + private static Rectangle calculateRect(ContainerGui overlayedGui) { + Window res = REIRenderHelper.getResolution(); + int startX = (((IMixinContainerGui) overlayedGui).getGuiLeft() + ((IMixinContainerGui) overlayedGui).getXSize()) + 10; int width = res.getScaledWidth() - startX; return new Rectangle(startX, 0, width, res.getScaledHeight()); } protected void resize() { - MainWindow res = REIRenderHelper.getResolution(); + Window res = REIRenderHelper.getResolution(); - if (overlayedGui != Minecraft.getInstance().currentScreen) { - if (Minecraft.getInstance().currentScreen instanceof GuiContainer) { - overlayedGui = (GuiContainer) Minecraft.getInstance().currentScreen; - + if (overlayedGui != MinecraftClient.getInstance().currentGui) { + if (MinecraftClient.getInstance().currentGui instanceof ContainerGui) { + overlayedGui = (ContainerGui) MinecraftClient.getInstance().currentGui; } else { needsResize = true; return; } } - oldGuiLeft = ((IMixinGuiContainer) overlayedGui).getGuiLeft(); + oldGuiLeft = ((IMixinContainerGui) overlayedGui).getGuiLeft(); rect = calculateRect(overlayedGui); page = 0; buttonLeft = new Button(rect.x, rect.y + 3, 16, 20, "<"); @@ -122,7 +123,7 @@ public class GuiItemList extends Drawable { private void calculateSlots() { int x = rect.x, y = rect.y + 20; - MainWindow res = REIRenderHelper.getResolution(); + Window res = REIRenderHelper.getResolution(); displaySlots.clear(); int xOffset = 0, yOffset = 0, row = 0, perRow = 0, currentX = 0, currentY = 0; while (true) { @@ -165,13 +166,13 @@ public class GuiItemList extends Drawable { return; if (needsResize == true) resize(); - if (oldGuiLeft != ((IMixinGuiContainer) overlayedGui).getGuiLeft()) + if (oldGuiLeft != ((IMixinContainerGui) overlayedGui).getGuiLeft()) resize(); GlStateManager.pushMatrix(); updateButtons(); controls.forEach(Control::draw); String header = String.format("%s/%s", page + 1, ((int) Math.floor(view.size() / displaySlots.size())) + 1); - Minecraft.getInstance().fontRenderer.drawStringWithShadow(header, rect.x + (rect.width / 2) - (Minecraft.getInstance().fontRenderer.getStringWidth(header) / 2), rect.y + 10, -1); + MinecraftClient.getInstance().fontRenderer.drawWithShadow(header, rect.x + (rect.width / 2) - (MinecraftClient.getInstance().fontRenderer.getStringWidth(header) / 2), rect.y + 10, -1); GlStateManager.popMatrix(); } @@ -217,10 +218,10 @@ public class GuiItemList extends Drawable { private String getCheatModeText() { if (cheatMode) { - TextComponentTranslation cheat = new TextComponentTranslation("text.rei.cheat", new Object[]{null}); + TextComponent cheat = new TranslatableTextComponent("text.rei.cheat", new Object[]{null}); return cheat.getFormattedText(); } - TextComponentTranslation noCheat = new TextComponentTranslation("text.rei.nocheat", new Object[]{null}); + TextComponent noCheat = new TranslatableTextComponent("text.rei.nocheat", new Object[]{null}); return noCheat.getFormattedText(); } @@ -228,24 +229,27 @@ public class GuiItemList extends Drawable { String searchText = searchBox.getText(); view.clear(); List stacks = new ArrayList<>(); - Arrays.stream(searchText.split("\\|")).forEachOrdered(s -> { - List arguments = new ArrayList<>(); - while (s.startsWith(" ")) s = s.substring(1); - while (s.endsWith(" ")) s = s.substring(0, s.length()); - if (s.startsWith("@-") || s.startsWith("-@")) - arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s.substring(2), false)); - else if (s.startsWith("@")) - arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s.substring(1), true)); - else if (s.startsWith("#-") || s.startsWith("-#")) - arguments.add(new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s.substring(2), false)); - else if (s.startsWith("#")) - arguments.add(new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s.substring(1), true)); - else if (s.startsWith("-")) - arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s.substring(1), false)); - else - arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s, true)); - ClientListener.stackList.stream().filter(itemStack -> filterItem(itemStack, arguments)).forEachOrdered(stacks::add); - }); + if (ClientListener.stackList == null && !Registry.ITEM.isEmpty()) + Core.getListeners(ClientListener.class).forEach(ClientListener::onDoneLoading); + if (ClientListener.stackList != null) + Arrays.stream(searchText.split("\\|")).forEachOrdered(s -> { + List arguments = new ArrayList<>(); + while (s.startsWith(" ")) s = s.substring(1); + while (s.endsWith(" ")) s = s.substring(0, s.length()); + if (s.startsWith("@-") || s.startsWith("-@")) + arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s.substring(2), false)); + else if (s.startsWith("@")) + arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s.substring(1), true)); + else if (s.startsWith("#-") || s.startsWith("-#")) + arguments.add(new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s.substring(2), false)); + else if (s.startsWith("#")) + arguments.add(new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s.substring(1), true)); + else if (s.startsWith("-")) + arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s.substring(1), false)); + else + arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s, true)); + ClientListener.stackList.stream().filter(itemStack -> filterItem(itemStack, arguments)).forEachOrdered(stacks::add); + }); view.addAll(stacks.stream().distinct().collect(Collectors.toList())); page = 0; fillSlots(); @@ -253,7 +257,7 @@ public class GuiItemList extends Drawable { private boolean filterItem(ItemStack itemStack, List arguments) { String mod = getMod(itemStack); - List toolTipsList = REIRenderHelper.getOverlayedGui().getItemToolTip(itemStack); + List toolTipsList = REIRenderHelper.getOverlayedGui().getStackTooltip(itemStack); String toolTipsMixed = toolTipsList.stream().skip(1).collect(Collectors.joining()).toLowerCase(); String allMixed = Stream.of(itemStack.getDisplayName().getString(), toolTipsMixed).collect(Collectors.joining()).toLowerCase(); for(SearchArgument searchArgument : arguments.stream().filter(searchArgument -> !searchArgument.isInclude()).collect(Collectors.toList())) { @@ -295,7 +299,7 @@ public class GuiItemList extends Drawable { private String getMod(ItemStack stack) { if (stack != null && !stack.isEmpty()) { - ResourceLocation location = IRegistry.ITEM.getKey(stack.getItem()); + Identifier location = Registry.ITEM.getId(stack.getItem()); return location.getNamespace(); } return ""; diff --git a/src/main/java/me/shedaniel/gui/REIRenderHelper.java b/src/main/java/me/shedaniel/gui/REIRenderHelper.java index 74f8c1b02..f706a4c56 100755 --- a/src/main/java/me/shedaniel/gui/REIRenderHelper.java +++ b/src/main/java/me/shedaniel/gui/REIRenderHelper.java @@ -1,19 +1,19 @@ package me.shedaniel.gui; +import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.IFocusable; import me.shedaniel.gui.widget.REISlot; import me.shedaniel.impl.REIRecipeManager; import me.shedaniel.library.KeyBindManager; -import me.shedaniel.listenerdefinitions.IMixinGuiContainer; -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.ItemRenderer; +import me.shedaniel.listenerdefinitions.IMixinContainerGui; +import net.fabricmc.loader.FabricLoader; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.FontRenderer; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.util.Window; import net.minecraft.item.ItemStack; -import org.dimdev.riftloader.RiftLoader; import java.awt.*; import java.util.ArrayList; @@ -27,7 +27,7 @@ import java.util.Optional; public class REIRenderHelper { static Point mouseLoc; static public GuiItemList reiGui; - static GuiContainer overlayedGui; + static ContainerGui overlayedGui; static List tooltipsToRender = new ArrayList<>(); public static void setMouseLoc(int x, int y) { @@ -40,23 +40,26 @@ public class REIRenderHelper { return mouseLoc; } - public static MainWindow getResolution() { - return Minecraft.getInstance().mainWindow; + public static Window getResolution() { + return MinecraftClient.getInstance().window; } public static String tryGettingModName(String modid) { if (modid.equalsIgnoreCase("minecraft")) return "Minecraft"; - return RiftLoader.instance.getMods().stream() - .filter(modInfo -> modInfo.id.equals(modid) || (modInfo.name != null && modInfo.name.equals(modid))) + return FabricLoader.INSTANCE.getModContainers().stream() + .map(modContainer -> { + return modContainer.getInfo(); + }) + .filter(modInfo -> modInfo.getId().equals(modid) || (modInfo.getName() != null && modInfo.getName().equals(modid))) .findFirst().map(modInfo -> { - if (modInfo.name != null) - return modInfo.name; + if (modInfo.getName() != null) + return modInfo.getName(); return modid; }).orElse(modid); } - public static void drawREI(GuiContainer overlayedGui) { + public static void drawREI(ContainerGui overlayedGui) { REIRenderHelper.overlayedGui = overlayedGui; if (reiGui == null) { reiGui = new GuiItemList(overlayedGui); @@ -70,20 +73,20 @@ public class REIRenderHelper { reiGui.resize(); } if (overlayedGui instanceof RecipeGui) { - overlayedGui.onResize(Minecraft.getInstance(), scaledWidth, scaledHeight); + overlayedGui.onScaleChanged(MinecraftClient.getInstance(), scaledWidth, scaledHeight); } } public static ItemRenderer getItemRender() { - return Minecraft.getInstance().getItemRenderer(); + return MinecraftClient.getInstance().getItemRenderer(); } public static FontRenderer getFontRenderer() { - return Minecraft.getInstance().fontRenderer; + return MinecraftClient.getInstance().fontRenderer; } - public static GuiContainer getOverlayedGui() { - if (overlayedGui instanceof GuiContainer) + public static ContainerGui getOverlayedGui() { + if (overlayedGui instanceof ContainerGui) return overlayedGui; return null; } @@ -97,7 +100,7 @@ public class REIRenderHelper { GlStateManager.pushMatrix(); GlStateManager.enableLighting(); for(TooltipData tooltipData : tooltipsToRender) { - getOverlayedGui().drawHoveringText(tooltipData.text, tooltipData.x, tooltipData.y); + getOverlayedGui().drawTooltip(tooltipData.text, tooltipData.x, tooltipData.y); } GlStateManager.disableLighting(); tooltipsToRender.clear(); @@ -203,12 +206,12 @@ public class REIRenderHelper { } public static void tick() { - if (reiGui != null && Minecraft.getInstance().currentScreen == overlayedGui) + if (reiGui != null && MinecraftClient.getInstance().currentGui == overlayedGui) reiGui.tick(); } public static void recipeKeybind() { - if (!(Minecraft.getInstance().currentScreen instanceof GuiContainer)) + if (!(MinecraftClient.getInstance().currentGui instanceof ContainerGui)) return; Control control = reiGui.getLastHovered(); if (control != null && control.isHighlighted() && control instanceof REISlot) { @@ -216,15 +219,15 @@ public class REIRenderHelper { REIRecipeManager.instance().displayRecipesFor(slot.getStack()); return; } - if (((IMixinGuiContainer) overlayedGui).getHoveredSlot() != null) { - ItemStack stack = ((IMixinGuiContainer) overlayedGui).getHoveredSlot().getStack(); + if (((IMixinContainerGui) overlayedGui).getHoveredSlot() != null) { + ItemStack stack = ((IMixinContainerGui) overlayedGui).getHoveredSlot().getStack(); REIRecipeManager.instance().displayRecipesFor(stack); } } public static void useKeybind() { - if (!(Minecraft.getInstance().currentScreen instanceof GuiContainer)) + if (!(MinecraftClient.getInstance().currentGui instanceof ContainerGui)) return; Control control = reiGui.getLastHovered(); if (control != null && control.isHighlighted() && control instanceof REISlot) { @@ -232,15 +235,15 @@ public class REIRenderHelper { REIRecipeManager.instance().displayUsesFor(slot.getStack()); return; } - if (((IMixinGuiContainer) overlayedGui).getHoveredSlot() != null) { - ItemStack stack = ((IMixinGuiContainer) overlayedGui).getHoveredSlot().getStack(); + if (((IMixinContainerGui) overlayedGui).getHoveredSlot() != null) { + ItemStack stack = ((IMixinContainerGui) overlayedGui).getHoveredSlot().getStack(); REIRecipeManager.instance().displayUsesFor(stack); } } public static void hideKeybind() { - if (Minecraft.getInstance().currentScreen == overlayedGui && reiGui != null) { + if (MinecraftClient.getInstance().currentGui == overlayedGui && reiGui != null) { reiGui.visible = !reiGui.visible; } } diff --git a/src/main/java/me/shedaniel/gui/RecipeContainer.java b/src/main/java/me/shedaniel/gui/RecipeContainer.java index f8605a45c..4477a10db 100755 --- a/src/main/java/me/shedaniel/gui/RecipeContainer.java +++ b/src/main/java/me/shedaniel/gui/RecipeContainer.java @@ -1,13 +1,14 @@ package me.shedaniel.gui; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; +import net.minecraft.container.Container; +import net.minecraft.entity.player.PlayerEntity; public class RecipeContainer extends Container { @Override - public boolean canInteractWith(EntityPlayer entityPlayer) { + public boolean canUse(PlayerEntity playerEntity) { return true; } + } diff --git a/src/main/java/me/shedaniel/gui/RecipeGui.java b/src/main/java/me/shedaniel/gui/RecipeGui.java index 43cb8333d..d4f3db8f0 100755 --- a/src/main/java/me/shedaniel/gui/RecipeGui.java +++ b/src/main/java/me/shedaniel/gui/RecipeGui.java @@ -1,5 +1,6 @@ package me.shedaniel.gui; +import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.api.IDisplayCategory; import me.shedaniel.api.IRecipe; import me.shedaniel.gui.widget.Button; @@ -7,14 +8,13 @@ import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.REISlot; import me.shedaniel.gui.widget.Tab; import me.shedaniel.impl.REIRecipeManager; -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.inventory.Container; -import net.minecraft.util.ResourceLocation; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.render.GuiLighting; +import net.minecraft.client.util.Window; +import net.minecraft.container.Container; +import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import java.util.ArrayList; @@ -22,13 +22,13 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -public class RecipeGui extends GuiContainer { +public class RecipeGui extends ContainerGui { - private static final ResourceLocation CREATIVE_INVENTORY_TABS = new ResourceLocation("textures/gui/container/creative_inventory/tabs.png"); - private static final ResourceLocation CHEST_GUI_TEXTURE = new ResourceLocation("almostenoughitems", "textures/gui/recipecontainer.png"); - private final MainWindow mainWindow; + private static final Identifier CREATIVE_INVENTORY_TABS = new Identifier("textures/gui/container/creative_inventory/tabs.png"); + private static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); + private final Window mainWindow; private final Container container; - private final GuiScreen prevScreen; + private final Gui prevScreen; private final Map> recipes; private int guiWidth = 176; private int guiHeight = 222; @@ -43,15 +43,15 @@ public class RecipeGui extends GuiContainer { private List tabs; private boolean tabsEnabled = false; - public RecipeGui(Container p_i1072_1_, GuiScreen prevScreen, Map> recipes) { + public RecipeGui(Container p_i1072_1_, Gui prevScreen, Map> recipes) { super(new RecipeContainer()); this.container = p_i1072_1_; this.prevScreen = prevScreen; this.recipes = recipes; - this.mc = Minecraft.getInstance(); - this.itemRender = mc.getItemRenderer(); - this.fontRenderer = mc.fontRenderer; - this.mainWindow = Minecraft.getInstance().mainWindow; + this.client = MinecraftClient.getInstance(); + this.itemRenderer = client.getItemRenderer(); + this.fontRenderer = client.fontRenderer; + this.mainWindow = client.window; setupCategories(); } @@ -71,13 +71,12 @@ public class RecipeGui extends GuiContainer { updateRecipe(); } - @Override - public void render(int mouseX, int mouseY, float partialTicks) { - super.render(mouseX, mouseY, partialTicks); + public void draw(int mouseX, int mouseY, float partialTicks) { + super.draw(mouseX, mouseY, partialTicks); int y = (int) ((mainWindow.getScaledHeight() / 2 - this.guiHeight / 2)); - drawCenteredString(this.fontRenderer, selectedCategory.getDisplayName(), guiLeft + guiWidth / 2, y + 11, -1); - drawCenteredString(this.fontRenderer, String.format("%d/%d", 1 + getCurrentPage(), getTotalPages()), guiLeft + guiWidth / 2, y + 34, -1); + drawStringCentered(this.fontRenderer, selectedCategory.getDisplayName(), left + guiWidth / 2, y + 11, -1); + drawStringCentered(this.fontRenderer, String.format("%d/%d", 1 + getCurrentPage(), getTotalPages()), left + guiWidth / 2, y + 34, -1); controls.forEach(Control::draw); } @@ -86,16 +85,15 @@ public class RecipeGui extends GuiContainer { } @Override - public void tick() { - super.tick(); + public void update() { + super.update(); slots.forEach(REISlot::tick); controls.forEach(Control::tick); } - @Override - public void onResize(Minecraft p_onResize_1_, int p_onResize_2_, int p_onResize_3_) { - super.onResize(p_onResize_1_, p_onResize_2_, p_onResize_3_); + public void onScaleChanged(MinecraftClient p_onResize_1_, int p_onResize_2_, int p_onResize_3_) { + super.onScaleChanged(p_onResize_1_, p_onResize_2_, p_onResize_3_); updateRecipe(); } @@ -111,18 +109,18 @@ public class RecipeGui extends GuiContainer { slots.addAll(categories.get(categoryPointer).setupDisplay(1)); } - guiLeft = (int) ((mainWindow.getScaledWidth() / 2 - this.guiWidth / 2)); - guiTop = (int) ((mainWindow.getScaledHeight() / 2 - this.guiHeight / 2)); + left = (int) ((mainWindow.getScaledWidth() / 2 - this.guiWidth / 2)); + top = (int) ((mainWindow.getScaledHeight() / 2 - this.guiHeight / 2)); - slots.forEach(reiSlot -> reiSlot.move(guiLeft, guiTop)); + slots.forEach(reiSlot -> reiSlot.move(left, top)); - Button btnCategoryLeft = new Button(guiLeft + 10, guiTop + 5, 15, 20, "<"); - Button btnCategoryRight = new Button(guiLeft + guiWidth - 25, guiTop + 5, 15, 20, ">"); + Button btnCategoryLeft = new Button(left + 10, top + 5, 15, 20, "<"); + Button btnCategoryRight = new Button(left + guiWidth - 25, top + 5, 15, 20, ">"); btnCategoryRight.onClick = this::btnCategoryRight; btnCategoryLeft.onClick = this::btnCategoryLeft; - Button btnRecipeLeft = new Button(guiLeft + 10, guiTop + 28, 15, 20, "<"); - Button btnRecipeRight = new Button(guiLeft + guiWidth - 25, guiTop + 28, 15, 20, ">"); + Button btnRecipeLeft = new Button(left + 10, top + 28, 15, 20, "<"); + Button btnRecipeRight = new Button(left + guiWidth - 25, top + 28, 15, 20, ">"); btnRecipeLeft.setEnabled(recipes.get(categories.get(categoryPointer)).size() > 1 && recipePointer > 0); btnRecipeRight.setEnabled(recipes.get(categories.get(categoryPointer)).size() > 1 && getCurrentPage() + 1 < getTotalPages()); btnRecipeRight.onClick = this::btnRecipeRight; @@ -148,16 +146,16 @@ public class RecipeGui extends GuiContainer { categories.get(categoryPointer).addWidget(newControls, 0); if (recipes.get(categories.get(categoryPointer)).size() >= categoryPointer + 2) categories.get(categoryPointer).addWidget(newControls, 1); - newControls.forEach(f -> f.move(guiLeft, guiTop)); + newControls.forEach(f -> f.move(left, top)); controls.addAll(newControls); updateTabs(); } private void updateTabs() { - tabsEnabled = guiTop - 28 > 4; + tabsEnabled = top - 28 > 4; if (tabsEnabled) { - tabs.forEach(tab -> tab.moveTo(guiLeft + 4, guiLeft + 2 + tabs.indexOf(tab) * 28, guiTop - 28)); + tabs.forEach(tab -> tab.moveTo(left + 4, left + 2 + tabs.indexOf(tab) * 28, top - 28)); for(int i = 0; i < tabs.size(); i++) { int ref = i + categoryTabPage * 6; if (categories.size() > ref) { @@ -169,38 +167,38 @@ public class RecipeGui extends GuiContainer { } private boolean onClickTab(int index) { - System.out.println(index); if (index + categoryTabPage * 6 == categories.indexOf(selectedCategory)) return false; selectedCategory = categories.get(index + categoryTabPage * 6); + updateRecipe(); return false; } @Override - protected void drawGuiContainerBackgroundLayer(float v, int i, int i1) { + protected void drawBackground(float v, int i, int i1) { //Tabs if (tabsEnabled) { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - RenderHelper.enableGUIStandardItemLighting(); - this.mc.getTextureManager().bindTexture(CREATIVE_INVENTORY_TABS); + GuiLighting.enableForItems(); + this.client.getTextureManager().bindTexture(CREATIVE_INVENTORY_TABS); tabs.stream().filter(tab -> tab.getId() + categoryTabPage * 6 == categories.indexOf(selectedCategory)).forEach(Tab::drawTab); } - drawDefaultBackground(); + drawBackground(); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.getTextureManager().bindTexture(CHEST_GUI_TEXTURE); + this.client.getTextureManager().bindTexture(CHEST_GUI_TEXTURE); int lvt_4_1_ = (int) ((mainWindow.getScaledWidth() / 2 - this.guiWidth / 2)); int lvt_5_1_ = (int) ((mainWindow.getScaledHeight() / 2 - this.guiHeight / 2)); - this.drawTexturedModalRect(lvt_4_1_, lvt_5_1_, 0, 0, this.guiWidth, this.guiHeight); + this.drawTexturedRect(lvt_4_1_, lvt_5_1_, 0, 0, this.guiWidth, this.guiHeight); slots.forEach(REISlot::draw); if (tabsEnabled) tabs.stream().filter(tab -> tab.getId() + categoryTabPage * 6 != categories.indexOf(selectedCategory)).forEach(tab -> { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - RenderHelper.enableGUIStandardItemLighting(); - this.mc.getTextureManager().bindTexture(CREATIVE_INVENTORY_TABS); + GuiLighting.enableForItems(); + this.client.getTextureManager().bindTexture(CREATIVE_INVENTORY_TABS); tab.drawTab(); }); } @@ -208,18 +206,13 @@ public class RecipeGui extends GuiContainer { @Override public boolean keyPressed(int p_keyPressed_1_, int p_keyPressed_2_, int p_keyPressed_3_) { if (p_keyPressed_1_ == 259 && prevScreen != null && REIRenderHelper.focusedControl == null) { - Minecraft.getInstance().displayGuiScreen(prevScreen); + this.client.openGui(prevScreen); return true; } return super.keyPressed(p_keyPressed_1_, p_keyPressed_2_, p_keyPressed_3_); } - @Override - public void onGuiClosed() { - super.onGuiClosed(); - } - private boolean btnCategoryLeft(int button) { recipePointer = 0; int categoryPointer = categories.indexOf(selectedCategory); diff --git a/src/main/java/me/shedaniel/gui/widget/Button.java b/src/main/java/me/shedaniel/gui/widget/Button.java index df43893ff..0c23a91db 100755 --- a/src/main/java/me/shedaniel/gui/widget/Button.java +++ b/src/main/java/me/shedaniel/gui/widget/Button.java @@ -1,11 +1,11 @@ package me.shedaniel.gui.widget; +import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.gui.REIRenderHelper; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.util.ResourceLocation; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.FontRenderer; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.util.Identifier; import java.awt.*; @@ -14,7 +14,7 @@ import java.awt.*; */ public class Button extends Control { private String buttonText; - protected static final ResourceLocation BUTTON_TEXTURES = new ResourceLocation("textures/gui/widgets.png"); + protected static final Identifier BUTTON_TEXTURES = new Identifier("textures/gui/widgets.png"); public Button(int x, int y, int width, int height, String buttonText) { @@ -36,8 +36,8 @@ public class Button extends Control { public void draw() { GlStateManager.pushMatrix(); GlStateManager.disableLighting(); - GuiContainer gui = REIRenderHelper.getOverlayedGui(); - Minecraft lvt_4_1_ = Minecraft.getInstance(); + ContainerGui gui = REIRenderHelper.getOverlayedGui(); + MinecraftClient lvt_4_1_ = MinecraftClient.getInstance(); FontRenderer lvt_5_1_ = lvt_4_1_.fontRenderer; lvt_4_1_.getTextureManager().bindTexture(BUTTON_TEXTURES); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); @@ -50,20 +50,13 @@ public class Button extends Control { } GlStateManager.enableBlend(); - GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - gui.drawTexturedModalRect(rect.x, rect.y, 0, 46 + hoverState * 20, rect.width / 2, rect.height); - gui.drawTexturedModalRect(rect.x + rect.width / 2, rect.y, 200 - rect.width / 2, 46 + hoverState * 20, rect.width / 2, rect.height); - //this.mouseDragged(lvt_4_1_, p_194828_1_, p_194828_2_); + GlStateManager.blendFuncSeparate(GlStateManager.SrcBlendFactor.SRC_ALPHA, GlStateManager.DstBlendFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SrcBlendFactor.ONE, GlStateManager.DstBlendFactor.ZERO); + GlStateManager.blendFunc(GlStateManager.SrcBlendFactor.SRC_ALPHA, GlStateManager.DstBlendFactor.ONE_MINUS_SRC_ALPHA); + gui.drawTexturedRect(rect.x, rect.y, 0, 46 + hoverState * 20, rect.width / 2, rect.height); + gui.drawTexturedRect(rect.x + rect.width / 2, rect.y, 200 - rect.width / 2, 46 + hoverState * 20, rect.width / 2, rect.height); int lvt_7_1_ = 14737632; -// if(!this.enabled) { -// lvt_7_1_ = 10526880; -// } else if(this.hovered) { -// lvt_7_1_ = 16777120; -// } - - gui.drawCenteredString(lvt_5_1_, this.buttonText, rect.x + rect.width / 2, rect.y + (rect.height - 8) / 2, lvt_7_1_); + gui.drawStringCentered(lvt_5_1_, this.buttonText, rect.x + rect.width / 2, rect.y + (rect.height - 8) / 2, lvt_7_1_); GlStateManager.enableLighting(); GlStateManager.popMatrix(); } diff --git a/src/main/java/me/shedaniel/gui/widget/Control.java b/src/main/java/me/shedaniel/gui/widget/Control.java index dd674e605..9be17a0c2 100755 --- a/src/main/java/me/shedaniel/gui/widget/Control.java +++ b/src/main/java/me/shedaniel/gui/widget/Control.java @@ -1,11 +1,11 @@ package me.shedaniel.gui.widget; +import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.api.TriBooleanProducer; import me.shedaniel.gui.Drawable; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.render.BufferBuilder; +import net.minecraft.client.render.Tessellator; +import net.minecraft.client.render.VertexFormats; import java.awt.*; import java.util.function.BiConsumer; @@ -61,19 +61,19 @@ public abstract class Control extends Drawable { float lvt_7_1_ = (float) (p_drawRect_4_ >> 8 & 255) / 255.0F; float lvt_8_1_ = (float) (p_drawRect_4_ & 255) / 255.0F; Tessellator lvt_9_1_ = Tessellator.getInstance(); - BufferBuilder lvt_10_1_ = lvt_9_1_.getBuffer(); + BufferBuilder lvt_10_1_ = lvt_9_1_.getBufferBuilder(); GlStateManager.enableAlphaTest(); GlStateManager.enableBlend(); - GlStateManager.disableTexture2D(); - GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + GlStateManager.disableTexture(); + GlStateManager.blendFuncSeparate(GlStateManager.SrcBlendFactor.SRC_ALPHA, GlStateManager.DstBlendFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SrcBlendFactor.ONE, GlStateManager.DstBlendFactor.ZERO); GlStateManager.color4f(lvt_6_1_, lvt_7_1_, lvt_8_1_, lvt_5_3_1); - lvt_10_1_.begin(7, DefaultVertexFormats.POSITION); - lvt_10_1_.pos((double) p_drawRect_0_, (double) p_drawRect_3_, 0.0D).endVertex(); - lvt_10_1_.pos((double) p_drawRect_2_, (double) p_drawRect_3_, 0.0D).endVertex(); - lvt_10_1_.pos((double) p_drawRect_2_, (double) p_drawRect_1_, 0.0D).endVertex(); - lvt_10_1_.pos((double) p_drawRect_0_, (double) p_drawRect_1_, 0.0D).endVertex(); + lvt_10_1_.begin(7, VertexFormats.POSITION); + lvt_10_1_.vertex((double) p_drawRect_0_, (double) p_drawRect_3_, 0.0D).next(); + lvt_10_1_.vertex((double) p_drawRect_2_, (double) p_drawRect_3_, 0.0D).next(); + lvt_10_1_.vertex((double) p_drawRect_2_, (double) p_drawRect_1_, 0.0D).next(); + lvt_10_1_.vertex((double) p_drawRect_0_, (double) p_drawRect_1_, 0.0D).next(); lvt_9_1_.draw(); - GlStateManager.enableTexture2D(); + GlStateManager.enableTexture(); GlStateManager.disableBlend(); GlStateManager.disableAlphaTest(); } @@ -82,12 +82,12 @@ public abstract class Control extends Drawable { float lvt_7_1_ = 0.00390625F; float lvt_8_1_ = 0.00390625F; Tessellator lvt_9_1_ = Tessellator.getInstance(); - BufferBuilder lvt_10_1_ = lvt_9_1_.getBuffer(); - lvt_10_1_.begin(7, DefaultVertexFormats.POSITION_TEX); - lvt_10_1_.pos((double) (x + 0), (double) (y + height), (double) 200).tex((double) ((float) (u + 0) * 0.00390625F), (double) ((float) (v + height) * 0.00390625F)).endVertex(); - lvt_10_1_.pos((double) (x + width), (double) (y + height), (double) 200).tex((double) ((float) (u + width) * 0.00390625F), (double) ((float) (v + height) * 0.00390625F)).endVertex(); - lvt_10_1_.pos((double) (x + width), (double) (y + 0), (double) 200).tex((double) ((float) (u + width) * 0.00390625F), (double) ((float) (v + 0) * 0.00390625F)).endVertex(); - lvt_10_1_.pos((double) (x + 0), (double) (y + 0), (double) 200).tex((double) ((float) (u + 0) * 0.00390625F), (double) ((float) (v + 0) * 0.00390625F)).endVertex(); + BufferBuilder lvt_10_1_ = lvt_9_1_.getBufferBuilder(); + lvt_10_1_.begin(7, VertexFormats.POSITION_UV); + lvt_10_1_.vertex((double) (x + 0), (double) (y + height), (double) 200).texture((double) ((float) (u + 0) * 0.00390625F), (double) ((float) (v + height) * 0.00390625F)).next(); + lvt_10_1_.vertex((double) (x + width), (double) (y + height), (double) 200).texture((double) ((float) (u + width) * 0.00390625F), (double) ((float) (v + height) * 0.00390625F)).next(); + lvt_10_1_.vertex((double) (x + width), (double) (y + 0), (double) 200).texture((double) ((float) (u + width) * 0.00390625F), (double) ((float) (v + 0) * 0.00390625F)).next(); + lvt_10_1_.vertex((double) (x + 0), (double) (y + 0), (double) 200).texture((double) ((float) (u + 0) * 0.00390625F), (double) ((float) (v + 0) * 0.00390625F)).next(); lvt_9_1_.draw(); } @@ -95,12 +95,12 @@ public abstract class Control extends Drawable { float lvt_7_1_ = 0.00390625F; float lvt_8_1_ = 0.00390625F; Tessellator lvt_9_1_ = Tessellator.getInstance(); - BufferBuilder lvt_10_1_ = lvt_9_1_.getBuffer(); - lvt_10_1_.begin(7, DefaultVertexFormats.POSITION_TEX); - lvt_10_1_.pos((double) (x + 0), (double) (y + height), zLevel).tex((double) ((float) (u + 0) * 0.00390625F), (double) ((float) (v + height) * 0.00390625F)).endVertex(); - lvt_10_1_.pos((double) (x + width), (double) (y + height), zLevel).tex((double) ((float) (u + width) * 0.00390625F), (double) ((float) (v + height) * 0.00390625F)).endVertex(); - lvt_10_1_.pos((double) (x + width), (double) (y + 0), zLevel).tex((double) ((float) (u + width) * 0.00390625F), (double) ((float) (v + 0) * 0.00390625F)).endVertex(); - lvt_10_1_.pos((double) (x + 0), (double) (y + 0), zLevel).tex((double) ((float) (u + 0) * 0.00390625F), (double) ((float) (v + 0) * 0.00390625F)).endVertex(); + BufferBuilder lvt_10_1_ = lvt_9_1_.getBufferBuilder(); + lvt_10_1_.begin(7, VertexFormats.POSITION_UV); + lvt_10_1_.vertex((double) (x + 0), (double) (y + height), zLevel).texture((double) ((float) (u + 0) * 0.00390625F), (double) ((float) (v + height) * 0.00390625F)).next(); + lvt_10_1_.vertex((double) (x + width), (double) (y + height), zLevel).texture((double) ((float) (u + width) * 0.00390625F), (double) ((float) (v + height) * 0.00390625F)).next(); + lvt_10_1_.vertex((double) (x + width), (double) (y + 0), zLevel).texture((double) ((float) (u + width) * 0.00390625F), (double) ((float) (v + 0) * 0.00390625F)).next(); + lvt_10_1_.vertex((double) (x + 0), (double) (y + 0), zLevel).texture((double) ((float) (u + 0) * 0.00390625F), (double) ((float) (v + 0) * 0.00390625F)).next(); lvt_9_1_.draw(); } diff --git a/src/main/java/me/shedaniel/gui/widget/REISlot.java b/src/main/java/me/shedaniel/gui/widget/REISlot.java index 2a2c65569..5ed1fe0aa 100755 --- a/src/main/java/me/shedaniel/gui/widget/REISlot.java +++ b/src/main/java/me/shedaniel/gui/widget/REISlot.java @@ -2,17 +2,16 @@ package me.shedaniel.gui.widget; import com.google.common.collect.Lists; import me.shedaniel.gui.REIRenderHelper; -import me.shedaniel.impl.REIRecipeManager; -import me.shedaniel.listenerdefinitions.IMixinGuiContainer; +import me.shedaniel.listenerdefinitions.IMixinContainerGui; import me.shedaniel.network.CheatPacket; import me.shedaniel.network.DeletePacket; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.render.GuiLighting; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.IRegistry; +i