From 8c3ab1c47201370d505b8086403822f35e222478 Mon Sep 17 00:00:00 2001 From: Irtimaled Date: Mon, 5 Aug 2019 22:16:12 -0700 Subject: [PATCH] Setup for 1.14.4-Fabric --- build.gradle | 67 +++-------- gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 19 ++- src/main/java/com/irtimaled/bbor/Main.java | 17 --- .../com/irtimaled/bbor/client/Camera.java | 4 +- .../com/irtimaled/bbor/client/Player.java | 8 +- .../bbor/client/commands/Arguments.java | 34 +++--- .../client/commands/BeaconCommandBuilder.java | 22 ++-- .../client/commands/BoxCommandBuilder.java | 22 ++-- .../bbor/client/commands/CommandHelper.java | 12 +- .../bbor/client/commands/ConfigCommand.java | 40 +++---- .../bbor/client/commands/CustomCommand.java | 11 +- .../client/commands/LineCommandBuilder.java | 24 ++-- .../bbor/client/commands/SeedCommand.java | 10 +- .../commands/SpawningSphereCommand.java | 26 ++--- .../client/commands/SphereCommandBuilder.java | 24 ++-- .../client/commands/StructuresCommand.java | 12 +- .../bbor/client/gui/AbstractButton.java | 4 +- .../bbor/client/gui/AbstractControl.java | 12 +- .../bbor/client/gui/AbstractSlider.java | 8 +- .../bbor/client/gui/ControlList.java | 14 +-- .../bbor/client/gui/ControlListSection.java | 8 +- .../irtimaled/bbor/client/gui/IControl.java | 4 +- .../bbor/client/gui/IControlSet.java | 4 +- .../bbor/client/gui/IntSettingSlider.java | 4 +- .../irtimaled/bbor/client/gui/ListScreen.java | 16 +-- .../bbor/client/gui/LoadSavesScreen.java | 12 +- .../bbor/client/gui/MaxYSettingSlider.java | 10 +- .../bbor/client/gui/SearchField.java | 10 +- .../bbor/client/gui/SettingsScreen.java | 110 +++++++++--------- .../bbor/client/gui/WorldSaveRow.java | 64 +++++----- .../client/interop/BedrockCeilingHelper.java | 12 +- .../client/interop/BiomeBorderHelper.java | 6 +- .../bbor/client/interop/ClientInterop.java | 58 ++++----- .../client/interop/FlowerForestHelper.java | 14 +-- .../bbor/client/interop/ModPackFinder.java | 20 ++-- .../client/interop/NBTStructureLoader.java | 80 ++++++------- .../interop/SaveGameStructureLoader.java | 16 +-- .../client/interop/SpawnableBlocksHelper.java | 32 ++--- .../client/interop/SpawningSphereHelper.java | 4 +- .../client/interop/TileEntitiesHelper.java | 10 +- .../client/keyboard/CustomKeyBinding.java | 8 +- .../irtimaled/bbor/client/keyboard/Key.java | 4 +- .../bbor/client/keyboard/KeyListener.java | 16 +-- .../bbor/client/providers/BeaconProvider.java | 7 +- .../client/providers/ConduitProvider.java | 8 +- .../providers/FlowerForestProvider.java | 2 +- .../client/providers/MobSpawnerProvider.java | 4 +- .../client/providers/SlimeChunkProvider.java | 4 +- .../providers/SpawnableBlocksProvider.java | 6 +- .../providers/SpawningSphereProvider.java | 6 +- .../client/renderers/AbstractRenderer.java | 12 +- .../bbor/client/renderers/RenderHelper.java | 4 +- .../bbor/client/renderers/Renderer.java | 26 ++--- .../renderers/SpawningSphereRenderer.java | 6 +- .../bbor/common/StructureProcessor.java | 12 +- .../bbor/common/events/StructuresLoaded.java | 2 +- .../bbor/common/events/WorldLoaded.java | 6 +- .../bbor/common/interop/CommonInterop.java | 20 ++-- .../bbor/common/messages/AddBoundingBox.java | 2 +- .../bbor/common/messages/PayloadBuilder.java | 32 ++--- .../bbor/common/messages/PayloadReader.java | 8 +- .../bbor/common/models/DimensionId.java | 16 +-- .../bbor/common/models/ServerPlayer.java | 8 +- .../com/irtimaled/bbor/install/Installer.java | 104 ----------------- .../irtimaled/bbor/launch/ClientTweaker.java | 35 ------ .../irtimaled/bbor/launch/ServerTweaker.java | 13 --- .../com/irtimaled/bbor/launch/Tweaker.java | 46 -------- .../bbor/mixin/client/MixinGameSettings.java | 20 ++-- .../bbor/mixin/client/MixinMinecraft.java | 16 +-- .../player/MixinClientPlayerEntity.java | 2 +- .../client/gui/screen/MixinChatScreen.java | 6 +- .../client/gui/screen/MixinOptionsScreen.java | 9 +- .../login/MixinClientLoginNetHandler.java | 4 +- .../play/MixinClientPlayNetHandler.java | 4 +- .../client/renderer/MixinGameRenderer.java | 10 +- .../client/settings/MixinKeyBinding.java | 6 +- .../mixin/client/world/MixinClientWorld.java | 2 +- .../client/MixinCCustomPayloadPacket.java | 20 ++-- .../network/play/server/MixinSChatPacket.java | 12 +- .../play/server/MixinSChunkDataPacket.java | 10 +- .../play/server/MixinSCommandListPacket.java | 14 +-- .../server/MixinSCustomPayloadPlayPacket.java | 26 ++--- .../server/MixinSSpawnPositionPacket.java | 10 +- .../mixin/server/MixinMinecraftServer.java | 4 +- .../dedicated/MixinDedicatedServer.java | 6 +- .../server/management/MixinPlayerList.java | 14 +-- .../bbor/mixin/world/chunk/MixinChunk.java | 8 +- .../irtimaled/bbor/server/ServerRunner.java | 81 ------------- .../bbor/server/ThrowableConsumer.java | 18 --- src/main/resources/fabric.mod.json | 13 +++ src/main/resources/profile.json | 47 -------- 92 files changed, 637 insertions(+), 1030 deletions(-) delete mode 100644 src/main/java/com/irtimaled/bbor/Main.java delete mode 100644 src/main/java/com/irtimaled/bbor/install/Installer.java delete mode 100644 src/main/java/com/irtimaled/bbor/launch/ClientTweaker.java delete mode 100644 src/main/java/com/irtimaled/bbor/launch/ServerTweaker.java delete mode 100644 src/main/java/com/irtimaled/bbor/launch/Tweaker.java delete mode 100644 src/main/java/com/irtimaled/bbor/server/ServerRunner.java delete mode 100644 src/main/java/com/irtimaled/bbor/server/ThrowableConsumer.java create mode 100644 src/main/resources/fabric.mod.json delete mode 100644 src/main/resources/profile.json diff --git a/build.gradle b/build.gradle index 712bd6b..0b9a651 100644 --- a/build.gradle +++ b/build.gradle @@ -1,19 +1,19 @@ buildscript { repositories { jcenter() - maven { url 'https://repo.spongepowered.org/maven' } - maven { url 'https://jitpack.io' } - maven { url 'https://files.minecraftforge.net/maven' } + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } } dependencies { - classpath 'com.github.Irtimaled:ForgeGradle:2.6-SNAPSHOT' - classpath 'org.spongepowered:mixingradle:0.6-SNAPSHOT' + classpath "net.fabricmc:fabric-loom:0.2.7-SNAPSHOT" } } -apply plugin: 'net.minecraftforge.gradle.tweaker-client' +apply plugin: 'fabric-loom' apply plugin: 'java' -apply plugin: 'org.spongepowered.mixin' +apply plugin: 'idea' group 'com.irtimaled' version project.buildVersion + '-' + project.mcVersion @@ -22,58 +22,23 @@ archivesBaseName = 'BBOutlineReloaded' sourceCompatibility = 1.8 targetCompatibility = 1.8 -repositories { - mavenCentral() - maven { url 'https://libraries.minecraft.net/' } - maven { url 'https://repo.spongepowered.org/maven/' } - maven { url 'https://jitpack.io' } -} - dependencies { - implementation('org.spongepowered:mixin:0.8') { transitive = false } - implementation('net.minecraft:launchwrapper:1.12') { transitive = false } - implementation 'org.ow2.asm:asm-tree:6.2' - implementation 'org.ow2.asm:asm-commons:6.2' - implementation "org.ow2.asm:asm-util:6.2" + minecraft 'com.mojang:minecraft:' + project.mcVersion + mappings 'net.fabricmc:yarn:' + project.mcVersion + '+build.16' + modCompile 'net.fabricmc:fabric-loader:0.8.3+build.196' } minecraft { - version = project.mcVersion - mappings = 'snapshot_20200119' - runDir = 'run' - tweakClass = 'com.irtimaled.bbor.launch.ClientTweaker' - makeObfSourceJar = false - clientJvmArgs = ['-XstartOnFirstThread'] -} - -mixin { - defaultObfuscationEnv notch - add sourceSets.main, 'mixins.bbor.refmap.json' -} - -sourceSets { - main - debug { - compileClasspath += main.compileClasspath - } + refmapName = 'mixins.bbor.refmap.json' } processResources { - filesMatching('profile.json') { - expand([ - 'version' : project.version, - 'mcVersion' : project.mcVersion, - 'tweakClass' : project.minecraft.tweakClass, - 'formattedTime': new Date().format("yyyy-MM-dd'T'HH:mm:ss'-08:00'") - ]) + filesMatching('fabric.mod.json') { + expand version: project.version } - - inputs.property "version", project.version - inputs.property "mcVersion", project.mcVersion } jar { - finalizedBy reobfJar manifest { attributes([ "Main-Class": "com.irtimaled.bbor.Main", @@ -86,10 +51,8 @@ jar { "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } - - classifier = 'vanilla' } -artifacts { - archives jar +afterEvaluate { + remapJar.classifier = 'fabric' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f2fe5ed..f78ba29 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ -#Sun May 24 16:37:33 PDT 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip +#Tue May 26 09:16:06 PDT 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index cccdd3d..a2fe5d5 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash ############################################################################## ## @@ -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/src/main/java/com/irtimaled/bbor/Main.java b/src/main/java/com/irtimaled/bbor/Main.java deleted file mode 100644 index c9e09a3..0000000 --- a/src/main/java/com/irtimaled/bbor/Main.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.irtimaled.bbor; - -import com.irtimaled.bbor.install.Installer; -import com.irtimaled.bbor.server.ServerRunner; - -import java.io.IOException; -import java.util.Arrays; - -public class Main { - public static void main(String... args) throws IOException { - if (args.length > 0 && args[0].equals("--server")) { - ServerRunner.run(Arrays.asList(args).subList(1, args.length)); - } else { - Installer.install(); - } - } -} diff --git a/src/main/java/com/irtimaled/bbor/client/Camera.java b/src/main/java/com/irtimaled/bbor/client/Camera.java index 78ac439..fefec57 100644 --- a/src/main/java/com/irtimaled/bbor/client/Camera.java +++ b/src/main/java/com/irtimaled/bbor/client/Camera.java @@ -1,11 +1,11 @@ package com.irtimaled.bbor.client; -import net.minecraft.client.Minecraft; +import net.minecraft.client.MinecraftClient; import net.minecraft.util.math.Vec3d; public class Camera { private static Vec3d getPos() { - return Minecraft.getInstance().gameRenderer.getActiveRenderInfo().getProjectedView(); + return MinecraftClient.getInstance().gameRenderer.getCamera().getPos(); } public static double getX() { diff --git a/src/main/java/com/irtimaled/bbor/client/Player.java b/src/main/java/com/irtimaled/bbor/client/Player.java index 4b36029..f6db9a2 100644 --- a/src/main/java/com/irtimaled/bbor/client/Player.java +++ b/src/main/java/com/irtimaled/bbor/client/Player.java @@ -3,7 +3,7 @@ package com.irtimaled.bbor.client; import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.models.Coords; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.client.entity.player.ClientPlayerEntity; +import net.minecraft.client.network.ClientPlayerEntity; public class Player { private static double x; @@ -13,9 +13,9 @@ public class Player { private static DimensionId dimensionId; public static void setPosition(double partialTicks, ClientPlayerEntity player) { - x = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks; - y = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks; - z = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks; + x = player.prevX + (player.x - player.prevX) * partialTicks; + y = player.prevY + (player.y - player.prevY) * partialTicks; + z = player.prevZ + (player.z - player.prevZ) * partialTicks; dimensionId = DimensionId.from(player.dimension); } diff --git a/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java b/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java index a0f0dc5..a130504 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java @@ -6,19 +6,19 @@ import com.irtimaled.bbor.common.models.Coords; import com.mojang.brigadier.arguments.*; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.CommandSource; -import net.minecraft.command.arguments.BlockPosArgument; -import net.minecraft.command.arguments.Vec3Argument; +import net.minecraft.command.arguments.BlockPosArgumentType; +import net.minecraft.command.arguments.Vec3ArgumentType; +import net.minecraft.server.command.ServerCommandSource; import java.util.function.Supplier; public class Arguments { - public static BlockPosArgument coords() { - return BlockPosArgument.blockPos(); + public static BlockPosArgumentType coords() { + return BlockPosArgumentType.blockPos(); } - public static Vec3Argument point() { - return Vec3Argument.vec3(); + public static Vec3ArgumentType point() { + return Vec3ArgumentType.vec3(); } public static IntegerArgumentType integer() { @@ -45,31 +45,31 @@ public class Arguments { return new HexColorArgument(); } - public static Coords getCoords(CommandContext context, String name) throws CommandSyntaxException { - return new Coords(getArgumentValueOrDefault(context, name, Vec3Argument::getVec3, () -> context.getSource().getPos())); + public static Coords getCoords(CommandContext context, String name) throws CommandSyntaxException { + return new Coords(getArgumentValueOrDefault(context, name, Vec3ArgumentType::getVec3, () -> context.getSource().getPosition())); } - public static Point getPoint(CommandContext context, String name) throws CommandSyntaxException { - return new Point(getArgumentValueOrDefault(context, name, Vec3Argument::getVec3, () -> context.getSource().getPos())); + public static Point getPoint(CommandContext context, String name) throws CommandSyntaxException { + return new Point(getArgumentValueOrDefault(context, name, Vec3ArgumentType::getVec3, () -> context.getSource().getPosition())); } - public static int getInteger(CommandContext context, String name) throws CommandSyntaxException { + public static int getInteger(CommandContext context, String name) throws CommandSyntaxException { return getArgumentValueOrDefault(context, name, IntegerArgumentType::getInteger, () -> 0); } - public static double getDouble(CommandContext context, String name) throws CommandSyntaxException { + public static double getDouble(CommandContext context, String name) throws CommandSyntaxException { return getArgumentValueOrDefault(context, name, DoubleArgumentType::getDouble, () -> 0.0D); } - public static String getString(CommandContext context, String name) throws CommandSyntaxException { + public static String getString(CommandContext context, String name) throws CommandSyntaxException { return getArgumentValueOrDefault(context, name, StringArgumentType::getString, () -> ""); } - public static boolean getBool(CommandContext context, String name) throws CommandSyntaxException { + public static boolean getBool(CommandContext context, String name) throws CommandSyntaxException { return getArgumentValueOrDefault(context, name, BoolArgumentType::getBool, () -> false); } - private static T getArgumentValueOrDefault(CommandContext context, + private static T getArgumentValueOrDefault(CommandContext context, String name, ArgumentFetcher getValue, Supplier defaultValue) throws CommandSyntaxException { @@ -82,6 +82,6 @@ public class Arguments { @FunctionalInterface private interface ArgumentFetcher { - T get(CommandContext context, String name) throws CommandSyntaxException; + T get(CommandContext context, String name) throws CommandSyntaxException; } } diff --git a/src/main/java/com/irtimaled/bbor/client/commands/BeaconCommandBuilder.java b/src/main/java/com/irtimaled/bbor/client/commands/BeaconCommandBuilder.java index fa3b55b..00818b2 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/BeaconCommandBuilder.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/BeaconCommandBuilder.java @@ -5,28 +5,28 @@ import com.irtimaled.bbor.common.models.Coords; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.ServerCommandSource; class BeaconCommandBuilder { private static final String LEVEL = "level"; - static LiteralArgumentBuilder build(String command) { - return Commands.literal(command) - .then(Commands.literal(ArgumentNames.ADD) - .then(Commands.argument(ArgumentNames.POS, Arguments.coords()) - .then(Commands.argument(LEVEL, Arguments.integer(1, 4)) + static LiteralArgumentBuilder build(String command) { + return CommandManager.literal(command) + .then(CommandManager.literal(ArgumentNames.ADD) + .then(CommandManager.argument(ArgumentNames.POS, Arguments.coords()) + .then(CommandManager.argument(LEVEL, Arguments.integer(1, 4)) .executes(BeaconCommandBuilder::addBeacon))) - .then(Commands.argument(LEVEL, Arguments.integer(1, 4)) + .then(CommandManager.argument(LEVEL, Arguments.integer(1, 4)) .executes(BeaconCommandBuilder::addBeacon))) - .then(Commands.literal(ArgumentNames.CLEAR) + .then(CommandManager.literal(ArgumentNames.CLEAR) .executes(context -> { CustomBeaconProvider.clear(); CommandHelper.feedback(context, "bbor.commands.beacon.cleared.all"); return 0; }) - .then(Commands.argument(ArgumentNames.POS, Arguments.coords()) + .then(CommandManager.argument(ArgumentNames.POS, Arguments.coords()) .executes(context -> { Coords coords = Arguments.getCoords(context, ArgumentNames.POS); boolean removed = CustomBeaconProvider.remove(coords); @@ -37,7 +37,7 @@ class BeaconCommandBuilder { }))); } - private static int addBeacon(CommandContext context) throws CommandSyntaxException { + private static int addBeacon(CommandContext context) throws CommandSyntaxException { Coords coords = Arguments.getCoords(context, ArgumentNames.POS); int level = Arguments.getInteger(context, LEVEL); diff --git a/src/main/java/com/irtimaled/bbor/client/commands/BoxCommandBuilder.java b/src/main/java/com/irtimaled/bbor/client/commands/BoxCommandBuilder.java index 7670bbc..e8530ad 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/BoxCommandBuilder.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/BoxCommandBuilder.java @@ -5,25 +5,25 @@ import com.irtimaled.bbor.common.models.Coords; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.ServerCommandSource; class BoxCommandBuilder { - static LiteralArgumentBuilder build(String command) { - return Commands.literal(command) - .then(Commands.literal(ArgumentNames.ADD) - .then(Commands.argument(ArgumentNames.FROM, Arguments.coords()) - .then(Commands.argument(ArgumentNames.TO, Arguments.coords()) + static LiteralArgumentBuilder build(String command) { + return CommandManager.literal(command) + .then(CommandManager.literal(ArgumentNames.ADD) + .then(CommandManager.argument(ArgumentNames.FROM, Arguments.coords()) + .then(CommandManager.argument(ArgumentNames.TO, Arguments.coords()) .executes(BoxCommandBuilder::addBox)))) - .then(Commands.literal(ArgumentNames.CLEAR) + .then(CommandManager.literal(ArgumentNames.CLEAR) .executes(context -> { CustomBoxProvider.clear(); CommandHelper.feedback(context, "bbor.commands.box.cleared.all"); return 0; }) - .then(Commands.argument(ArgumentNames.FROM, Arguments.coords()) - .then(Commands.argument(ArgumentNames.TO, Arguments.coords()) + .then(CommandManager.argument(ArgumentNames.FROM, Arguments.coords()) + .then(CommandManager.argument(ArgumentNames.TO, Arguments.coords()) .executes(context -> { Coords from = Arguments.getCoords(context, ArgumentNames.FROM); Coords to = Arguments.getCoords(context, ArgumentNames.TO); @@ -39,7 +39,7 @@ class BoxCommandBuilder { })))); } - private static int addBox(CommandContext context) throws CommandSyntaxException { + private static int addBox(CommandContext context) throws CommandSyntaxException { Coords from = Arguments.getCoords(context, ArgumentNames.FROM); Coords to = Arguments.getCoords(context, ArgumentNames.TO); Coords minCoords = getMinCoords(from, to); diff --git a/src/main/java/com/irtimaled/bbor/client/commands/CommandHelper.java b/src/main/java/com/irtimaled/bbor/client/commands/CommandHelper.java index bd432de..810fbe8 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/CommandHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/CommandHelper.java @@ -4,15 +4,15 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.ParsedCommandNode; import com.mojang.brigadier.tree.CommandNode; import com.mojang.brigadier.tree.LiteralCommandNode; -import net.minecraft.command.CommandSource; -import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.text.TranslatableText; class CommandHelper { - static void feedback(CommandContext context, String format, Object... values) { - context.getSource().sendFeedback(new TranslationTextComponent(format, values), false); + static void feedback(CommandContext context, String format, Object... values) { + context.getSource().sendFeedback(new TranslatableText(format, values), false); } - static boolean lastNodeIsLiteral(CommandContext context, String literal) { + static boolean lastNodeIsLiteral(CommandContext context, String literal) { CommandNode lastNode = getLastNode(context); if (lastNode instanceof LiteralCommandNode) { LiteralCommandNode literalCommandNode = (LiteralCommandNode) lastNode; @@ -21,7 +21,7 @@ class CommandHelper { return false; } - private static CommandNode getLastNode(CommandContext context) { + private static CommandNode getLastNode(CommandContext context) { ParsedCommandNode[] nodes = context.getNodes().toArray(new ParsedCommandNode[0]); if (nodes.length == 0) return null; return nodes[nodes.length - 1].getNode(); diff --git a/src/main/java/com/irtimaled/bbor/client/commands/ConfigCommand.java b/src/main/java/com/irtimaled/bbor/client/commands/ConfigCommand.java index c652c93..cca87cf 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/ConfigCommand.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/ConfigCommand.java @@ -8,9 +8,9 @@ import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.ArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.ISuggestionProvider; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.CommandSource; +import net.minecraft.server.command.ServerCommandSource; import java.util.function.Function; @@ -22,8 +22,8 @@ public class ConfigCommand { private static final String VALUE = "value"; private static final String RESET = "reset"; - public static void register(CommandDispatcher commandDispatcher) { - LiteralArgumentBuilder command = Commands.literal(COMMAND) + public static void register(CommandDispatcher commandDispatcher) { + LiteralArgumentBuilder command = CommandManager.literal(COMMAND) .then(buildCommands(GET, ConfigCommand::getCommandForSetting)) .then(buildCommands(ArgumentNames.SET, ConfigCommand::setCommandForSetting)) .then(buildCommands(RESET, ConfigCommand::resetCommandForSetting) @@ -32,12 +32,12 @@ public class ConfigCommand { ConfigManager.saveConfig(); return 0; })) - .then(Commands.literal(SAVE) + .then(CommandManager.literal(SAVE) .executes(context -> { ConfigManager.saveConfig(); return 0; })) - .then(Commands.literal(SHOW_GUI) + .then(CommandManager.literal(SHOW_GUI) .executes(context -> { SettingsScreen.show(); return 0; @@ -46,8 +46,8 @@ public class ConfigCommand { commandDispatcher.register(command); } - private static LiteralArgumentBuilder resetCommandForSetting(Setting setting) { - return Commands.literal(setting.getName()) + private static LiteralArgumentBuilder resetCommandForSetting(Setting setting) { + return CommandManager.literal(setting.getName()) .executes(context -> { setting.reset(); ConfigManager.saveConfig(); @@ -55,27 +55,27 @@ public class ConfigCommand { }); } - private interface CommandBuilder extends Function, LiteralArgumentBuilder> { + private interface CommandBuilder extends Function, LiteralArgumentBuilder> { } - private static LiteralArgumentBuilder buildCommands(String commandName, CommandBuilder commandBuilder) { - LiteralArgumentBuilder command = Commands.literal(commandName); + private static LiteralArgumentBuilder buildCommands(String commandName, CommandBuilder commandBuilder) { + LiteralArgumentBuilder command = CommandManager.literal(commandName); for (Setting setting : ConfigManager.getSettings()) { command.then(commandBuilder.apply(setting)); } return command; } - private static LiteralArgumentBuilder getCommandForSetting(Setting setting) { - return Commands.literal(setting.getName()) + private static LiteralArgumentBuilder getCommandForSetting(Setting setting) { + return CommandManager.literal(setting.getName()) .executes(context -> { CommandHelper.feedback(context, "%s: %s", setting.getName(), setting.get()); return 0; }); } - private static LiteralArgumentBuilder setCommandForSetting(Setting setting) { - LiteralArgumentBuilder command = Commands.literal(setting.getName()); + private static LiteralArgumentBuilder setCommandForSetting(Setting setting) { + LiteralArgumentBuilder command = CommandManager.literal(setting.getName()); switch (setting.getType()) { case 'B': buildSetSettingCommand(command, (Setting) setting, Arguments.bool(), Boolean.class); @@ -93,18 +93,18 @@ public class ConfigCommand { return command; } - private static void buildSetSettingCommand(LiteralArgumentBuilder command, + private static void buildSetSettingCommand(LiteralArgumentBuilder command, Setting setting, ArgumentType argument, Class clazz) { - Command setSettingCommand = context -> { + Command setSettingCommand = context -> { setting.set(context.getArgument(VALUE, clazz)); if (CommandHelper.lastNodeIsLiteral(context, SAVE)) { ConfigManager.saveConfig(); } return 0; }; - command.then(Commands.argument(VALUE, argument) + command.then(CommandManager.argument(VALUE, argument) .executes(setSettingCommand) - .then(Commands.literal(SAVE) + .then(CommandManager.literal(SAVE) .executes(setSettingCommand))); } } diff --git a/src/main/java/com/irtimaled/bbor/client/commands/CustomCommand.java b/src/main/java/com/irtimaled/bbor/client/commands/CustomCommand.java index 56620ed..4b1a137 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/CustomCommand.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/CustomCommand.java @@ -6,8 +6,8 @@ import com.irtimaled.bbor.client.providers.CustomLineProvider; import com.irtimaled.bbor.client.providers.CustomSphereProvider; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import net.minecraft.command.Commands; -import net.minecraft.command.ISuggestionProvider; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.CommandSource; public class CustomCommand { private static final String COMMAND = "bbor:custom"; @@ -16,13 +16,13 @@ public class CustomCommand { private static final String LINE = "line"; private static final String SPHERE = "sphere"; - public static void register(CommandDispatcher commandDispatcher) { - LiteralArgumentBuilder command = Commands.literal(COMMAND) + public static void register(CommandDispatcher commandDispatcher) { + LiteralArgumentBuilder command = CommandManager.literal(COMMAND) .then(BoxCommandBuilder.build(BOX)) .then(BeaconCommandBuilder.build(BEACON)) .then(LineCommandBuilder.build(LINE)) .then(SphereCommandBuilder.build(SPHERE)) - .then(Commands.literal(ArgumentNames.CLEAR) + .then(CommandManager.literal(ArgumentNames.CLEAR) .executes(context -> { CustomBoxProvider.clear(); CustomBeaconProvider.clear(); @@ -35,4 +35,3 @@ public class CustomCommand { commandDispatcher.register(command); } } - diff --git a/src/main/java/com/irtimaled/bbor/client/commands/LineCommandBuilder.java b/src/main/java/com/irtimaled/bbor/client/commands/LineCommandBuilder.java index 411f59a..49ccd33 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/LineCommandBuilder.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/LineCommandBuilder.java @@ -5,29 +5,29 @@ import com.irtimaled.bbor.client.providers.CustomLineProvider; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.ServerCommandSource; class LineCommandBuilder { private static final String WIDTH = "width"; - static LiteralArgumentBuilder build(String command) { - return Commands.literal(command) - .then(Commands.literal(ArgumentNames.ADD) - .then(Commands.argument(ArgumentNames.FROM, Arguments.point()) - .then(Commands.argument(ArgumentNames.TO, Arguments.point()) + static LiteralArgumentBuilder build(String command) { + return CommandManager.literal(command) + .then(CommandManager.literal(ArgumentNames.ADD) + .then(CommandManager.argument(ArgumentNames.FROM, Arguments.point()) + .then(CommandManager.argument(ArgumentNames.TO, Arguments.point()) .executes(LineCommandBuilder::addLine) - .then(Commands.argument(WIDTH, Arguments.doubleArg()) + .then(CommandManager.argument(WIDTH, Arguments.doubleArg()) .executes(LineCommandBuilder::addLine))))) - .then(Commands.literal(ArgumentNames.CLEAR) + .then(CommandManager.literal(ArgumentNames.CLEAR) .executes(context -> { CustomLineProvider.clear(); CommandHelper.feedback(context, "bbor.commands.line.cleared.all"); return 0; }) - .then(Commands.argument(ArgumentNames.FROM, Arguments.coords()) - .then(Commands.argument(ArgumentNames.TO, Arguments.coords()) + .then(CommandManager.argument(ArgumentNames.FROM, Arguments.coords()) + .then(CommandManager.argument(ArgumentNames.TO, Arguments.coords()) .executes(context -> { Point from = Arguments.getPoint(context, ArgumentNames.FROM).snapXZ(0.5d); Point to = Arguments.getPoint(context, ArgumentNames.TO).snapXZ(0.5d); @@ -41,7 +41,7 @@ class LineCommandBuilder { })))); } - private static int addLine(CommandContext context) throws CommandSyntaxException { + private static int addLine(CommandContext context) throws CommandSyntaxException { Point from = Arguments.getPoint(context, ArgumentNames.FROM).snapXZ(0.5d); Point to = Arguments.getPoint(context, ArgumentNames.TO).snapXZ(0.5d); Double width = Arguments.getDouble(context, WIDTH); diff --git a/src/main/java/com/irtimaled/bbor/client/commands/SeedCommand.java b/src/main/java/com/irtimaled/bbor/client/commands/SeedCommand.java index 879f1b9..e2e56ac 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/SeedCommand.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/SeedCommand.java @@ -3,16 +3,16 @@ package com.irtimaled.bbor.client.commands; import com.irtimaled.bbor.client.providers.SlimeChunkProvider; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import net.minecraft.command.Commands; -import net.minecraft.command.ISuggestionProvider; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.CommandSource; public class SeedCommand { private static final String COMMAND = "bbor:seed"; private static final String SEED = "seed"; - public static void register(CommandDispatcher commandDispatcher) { - LiteralArgumentBuilder command = Commands.literal(COMMAND) - .then(Commands.argument(SEED, Arguments.string()) + public static void register(CommandDispatcher commandDispatcher) { + LiteralArgumentBuilder command = CommandManager.literal(COMMAND) + .then(CommandManager.argument(SEED, Arguments.string()) .executes(context -> { String argument = Arguments.getString(context, SEED); handleSeedCommand(argument); diff --git a/src/main/java/com/irtimaled/bbor/client/commands/SpawningSphereCommand.java b/src/main/java/com/irtimaled/bbor/client/commands/SpawningSphereCommand.java index 8ab9f1b..8872595 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/SpawningSphereCommand.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/SpawningSphereCommand.java @@ -6,10 +6,10 @@ import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.client.Minecraft; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.ISuggestionProvider; +import net.minecraft.client.MinecraftClient; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.CommandSource; +import net.minecraft.server.command.ServerCommandSource; import net.minecraft.world.LightType; import net.minecraft.world.World; @@ -17,13 +17,13 @@ public class SpawningSphereCommand { private static final String COMMAND = "bbor:spawningSphere"; private static final String CALCULATE_SPAWNABLE = "calculateSpawnable"; - public static void register(CommandDispatcher commandDispatcher) { - LiteralArgumentBuilder command = Commands.literal(COMMAND) - .then(Commands.literal(ArgumentNames.SET) - .then(Commands.argument(ArgumentNames.POS, Arguments.point()) + public static void register(CommandDispatcher commandDispatcher) { + LiteralArgumentBuilder command = CommandManager.literal(COMMAND) + .then(CommandManager.literal(ArgumentNames.SET) + .then(CommandManager.argument(ArgumentNames.POS, Arguments.point()) .executes(SpawningSphereCommand::setSphere)) .executes(SpawningSphereCommand::setSphere)) - .then(Commands.literal(ArgumentNames.CLEAR) + .then(CommandManager.literal(ArgumentNames.CLEAR) .executes(context -> { boolean cleared = SpawningSphereProvider.clearSphere(); @@ -31,7 +31,7 @@ public class SpawningSphereCommand { CommandHelper.feedback(context, format); return 0; })) - .then(Commands.literal(CALCULATE_SPAWNABLE) + .then(CommandManager.literal(CALCULATE_SPAWNABLE) .executes(context -> { if (!SpawningSphereProvider.hasSpawningSphereInDimension(Player.getDimensionId())) { CommandHelper.feedback(context, "bbor.commands.spawningSphere.notSet"); @@ -39,10 +39,10 @@ public class SpawningSphereCommand { } Counts counts = new Counts(); - World world = Minecraft.getInstance().world; + World world = MinecraftClient.getInstance().world; SpawningSphereProvider.calculateSpawnableSpacesCount(pos -> { counts.spawnable++; - if (world.getLightFor(LightType.SKY, pos) > 7) + if (world.getLightLevel(LightType.SKY, pos) > 7) counts.nightSpawnable++; }); SpawningSphereProvider.setSpawnableSpacesCount(counts.spawnable); @@ -55,7 +55,7 @@ public class SpawningSphereCommand { commandDispatcher.register(command); } - public static int setSphere(CommandContext context) throws CommandSyntaxException { + public static int setSphere(CommandContext context) throws CommandSyntaxException { SpawningSphereProvider.setSphere(Arguments.getPoint(context, ArgumentNames.POS).snapXZ(0.5d)); CommandHelper.feedback(context, "bbor.commands.spawningSphere.set"); diff --git a/src/main/java/com/irtimaled/bbor/client/commands/SphereCommandBuilder.java b/src/main/java/com/irtimaled/bbor/client/commands/SphereCommandBuilder.java index 1a8d2b2..5d838bb 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/SphereCommandBuilder.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/SphereCommandBuilder.java @@ -5,29 +5,29 @@ import com.irtimaled.bbor.client.providers.CustomSphereProvider; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.ServerCommandSource; class SphereCommandBuilder { public static final String RADIUS = "radius"; - static LiteralArgumentBuilder build(String command) { - return Commands.literal(command) - .then(Commands.literal(ArgumentNames.ADD) - .then(Commands.argument(ArgumentNames.POS, Arguments.point()) - .then(Commands.argument(RADIUS, Arguments.integer()) + static LiteralArgumentBuilder build(String command) { + return CommandManager.literal(command) + .then(CommandManager.literal(ArgumentNames.ADD) + .then(CommandManager.argument(ArgumentNames.POS, Arguments.point()) + .then(CommandManager.argument(RADIUS, Arguments.integer()) .executes(SphereCommandBuilder::addSphere))) - .then(Commands.argument(RADIUS, Arguments.integer()) + .then(CommandManager.argument(RADIUS, Arguments.integer()) .executes(SphereCommandBuilder::addSphere))) - .then(Commands.literal(ArgumentNames.CLEAR) + .then(CommandManager.literal(ArgumentNames.CLEAR) .executes(context -> { CustomSphereProvider.clear(); CommandHelper.feedback(context, "bbor.commands.sphere.cleared.all"); return 0; }) - .then(Commands.argument(ArgumentNames.FROM, Arguments.coords()) - .then(Commands.argument(ArgumentNames.TO, Arguments.coords()) + .then(CommandManager.argument(ArgumentNames.FROM, Arguments.coords()) + .then(CommandManager.argument(ArgumentNames.TO, Arguments.coords()) .executes(context -> { Point pos = Arguments.getPoint(context, ArgumentNames.POS).snapXZ(0.5d); boolean removed = CustomSphereProvider.remove(pos); @@ -39,7 +39,7 @@ class SphereCommandBuilder { })))); } - private static int addSphere(CommandContext context) throws CommandSyntaxException { + private static int addSphere(CommandContext context) throws CommandSyntaxException { Point pos = Arguments.getPoint(context, ArgumentNames.POS).snapXZ(0.5d); int radius = Arguments.getInteger(context, RADIUS); CustomSphereProvider.add(pos, radius); diff --git a/src/main/java/com/irtimaled/bbor/client/commands/StructuresCommand.java b/src/main/java/com/irtimaled/bbor/client/commands/StructuresCommand.java index 6b950d4..b6f795a 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/StructuresCommand.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/StructuresCommand.java @@ -4,21 +4,21 @@ import com.irtimaled.bbor.client.gui.LoadSavesScreen; import com.irtimaled.bbor.client.interop.ClientInterop; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import net.minecraft.command.Commands; -import net.minecraft.command.ISuggestionProvider; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.CommandSource; public class StructuresCommand { private static final String COMMAND = "bbor:structures"; private static final String LOAD = "load"; - public static void register(CommandDispatcher commandDispatcher) { - LiteralArgumentBuilder command = Commands.literal(COMMAND) - .then(Commands.literal(LOAD) + public static void register(CommandDispatcher commandDispatcher) { + LiteralArgumentBuilder command = CommandManager.literal(COMMAND) + .then(CommandManager.literal(LOAD) .executes(context -> { LoadSavesScreen.show(); return 0; })) - .then(Commands.literal(ArgumentNames.CLEAR) + .then(CommandManager.literal(ArgumentNames.CLEAR) .executes(context -> { ClientInterop.clearStructures(); return 0; diff --git a/src/main/java/com/irtimaled/bbor/client/gui/AbstractButton.java b/src/main/java/com/irtimaled/bbor/client/gui/AbstractButton.java index 5fd816a..7ccf4ba 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/AbstractButton.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/AbstractButton.java @@ -1,6 +1,6 @@ package com.irtimaled.bbor.client.gui; -import net.minecraft.client.Minecraft; +import net.minecraft.client.MinecraftClient; abstract class AbstractButton extends AbstractControl { AbstractButton(int x, int y, int width, String name) { @@ -24,7 +24,7 @@ abstract class AbstractButton extends AbstractControl { if (key != 257 && key != 32 && key != 335) { return false; } else { - this.playDownSound(Minecraft.getInstance().getSoundHandler()); + this.playDownSound(MinecraftClient.getInstance().getSoundManager()); this.onPressed(); return true; } diff --git a/src/main/java/com/irtimaled/bbor/client/gui/AbstractControl.java b/src/main/java/com/irtimaled/bbor/client/gui/AbstractControl.java index 6201d6f..da9de11 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/AbstractControl.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/AbstractControl.java @@ -1,17 +1,17 @@ package com.irtimaled.bbor.client.gui; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.widget.Widget; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.widget.AbstractButtonWidget; import java.awt.*; -abstract class AbstractControl extends Widget implements IControl { +abstract class AbstractControl extends AbstractButtonWidget implements IControl { private static final int PADDING = 4; - protected final Minecraft minecraft; + protected final MinecraftClient minecraft; AbstractControl(int x, int y, int width, String name) { super(x, y, width, 20, name); - this.minecraft = Minecraft.getInstance(); + this.minecraft = MinecraftClient.getInstance(); } @Override @@ -36,7 +36,7 @@ abstract class AbstractControl extends Widget implements IControl { } @Override - protected void renderBg(Minecraft minecraft, int mouseX, int mouseY) { + protected void renderBg(MinecraftClient minecraft, int mouseX, int mouseY) { if (active) renderBackground(mouseX, mouseY); } diff --git a/src/main/java/com/irtimaled/bbor/client/gui/AbstractSlider.java b/src/main/java/com/irtimaled/bbor/client/gui/AbstractSlider.java index db1431c..1ec236c 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/AbstractSlider.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/AbstractSlider.java @@ -1,8 +1,8 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.common.MathHelper; -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.SoundHandler; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.sound.SoundManager; abstract class AbstractSlider extends AbstractControl { private final int optionCount; @@ -70,11 +70,11 @@ abstract class AbstractSlider extends AbstractControl { } @Override - public void playDownSound(SoundHandler soundHandler) { + public void playDownSound(SoundManager soundHandler) { } @Override public void onRelease(double mouseX, double mouseY) { - super.playDownSound(Minecraft.getInstance().getSoundHandler()); + super.playDownSound(MinecraftClient.getInstance().getSoundManager()); } } diff --git a/src/main/java/com/irtimaled/bbor/client/gui/ControlList.java b/src/main/java/com/irtimaled/bbor/client/gui/ControlList.java index 21db328..9331c63 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/ControlList.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/ControlList.java @@ -3,13 +3,13 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.renderers.RenderHelper; import com.irtimaled.bbor.client.renderers.Renderer; import com.irtimaled.bbor.common.MathHelper; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.AbstractGui; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawableHelper; import java.util.ArrayList; import java.util.List; -public class ControlList extends AbstractGui implements IControlSet { +public class ControlList extends DrawableHelper implements IControlSet { public static final int CONTROLS_WIDTH = 310; protected static final int PADDING = 8; @@ -17,7 +17,7 @@ public class ControlList extends AbstractGui implements IControlSet { protected final List entries = new ArrayList<>(); private final int scrollBarLeft; private final int listHeight; - private final Minecraft minecraft; + private final MinecraftClient minecraft; private final int width; private final int height; private final int top; @@ -31,7 +31,7 @@ public class ControlList extends AbstractGui implements IControlSet { private boolean isDragging; ControlList(int width, int height, int top, int bottom) { - this.minecraft = Minecraft.getInstance(); + this.minecraft = MinecraftClient.getInstance(); this.width = width; this.scrollBarLeft = width - 6; this.height = height; @@ -185,7 +185,7 @@ public class ControlList extends AbstractGui implements IControlSet { } private void drawListBackground() { - this.minecraft.getTextureManager().bindTexture(AbstractGui.BACKGROUND_LOCATION); + this.minecraft.getTextureManager().bindTexture(DrawableHelper.BACKGROUND_LOCATION); Renderer.startTextured() .setColor(32, 32, 32) .setAlpha(255) @@ -214,7 +214,7 @@ public class ControlList extends AbstractGui implements IControlSet { } private void overlayBackground(int top, int bottom) { - this.minecraft.getTextureManager().bindTexture(AbstractGui.BACKGROUND_LOCATION); + this.minecraft.getTextureManager().bindTexture(DrawableHelper.BACKGROUND_LOCATION); Renderer.startTextured() .setColor(64, 64, 64) .setAlpha(255) diff --git a/src/main/java/com/irtimaled/bbor/client/gui/ControlListSection.java b/src/main/java/com/irtimaled/bbor/client/gui/ControlListSection.java index dba872b..9e90ade 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/ControlListSection.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/ControlListSection.java @@ -1,6 +1,6 @@ package com.irtimaled.bbor.client.gui; -import net.minecraft.client.Minecraft; +import net.minecraft.client.MinecraftClient; import java.util.ArrayList; import java.util.List; @@ -9,7 +9,7 @@ public class ControlListSection extends ControlListEntry implements IControlSet private static final int TITLE_HEIGHT = 16; private final String title; private final List controls = new ArrayList<>(); - private final Minecraft minecraft = Minecraft.getInstance(); + private final MinecraftClient minecraft = MinecraftClient.getInstance(); private final int titleHeight; private int height; private IControl focused; @@ -37,7 +37,7 @@ public class ControlListSection extends ControlListEntry implements IControlSet } private int columnCount() { - switch (minecraft.getLanguageManager().getCurrentLanguage().getCode()) { + switch (minecraft.getLanguageManager().getLanguage().getCode()) { case "en_au": case "en_us": case "en_gb": @@ -52,7 +52,7 @@ public class ControlListSection extends ControlListEntry implements IControlSet int y = this.getY(); int top = y; if (this.title != null) { - this.minecraft.fontRenderer.drawString(this.title, x + 4, y + ((TITLE_HEIGHT - this.minecraft.fontRenderer.FONT_HEIGHT) / 1.5f), 16777215); + this.minecraft.textRenderer.draw(this.title, x + 4, y + ((TITLE_HEIGHT - this.minecraft.textRenderer.fontHeight) / 1.5f), 16777215); top += titleHeight; } diff --git a/src/main/java/com/irtimaled/bbor/client/gui/IControl.java b/src/main/java/com/irtimaled/bbor/client/gui/IControl.java index 871db38..dd9c8de 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/IControl.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/IControl.java @@ -1,8 +1,8 @@ package com.irtimaled.bbor.client.gui; -import net.minecraft.client.gui.IGuiEventListener; +import net.minecraft.client.gui.Element; -interface IControl extends IFocusableControl, IGuiEventListener { +interface IControl extends IFocusableControl, Element { void render(int mouseX, int mouseY); boolean isVisible(); diff --git a/src/main/java/com/irtimaled/bbor/client/gui/IControlSet.java b/src/main/java/com/irtimaled/bbor/client/gui/IControlSet.java index 86a9b37..aa92431 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/IControlSet.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/IControlSet.java @@ -1,10 +1,10 @@ package com.irtimaled.bbor.client.gui; -import net.minecraft.client.gui.IGuiEventListener; +import net.minecraft.client.gui.Element; import java.util.List; -public interface IControlSet extends IFocusableControl, IGuiEventListener { +public interface IControlSet extends IFocusableControl, Element { List controls(); IControl getFocused(); diff --git a/src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java b/src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java index e94cdeb..36548cb 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.config.Setting; -import net.minecraft.client.resources.I18n; +import net.minecraft.client.resource.language.I18n; import java.util.HashMap; import java.util.Map; @@ -40,7 +40,7 @@ class IntSettingSlider extends AbstractSlider { private void updateText() { Integer value = setting.get(); - this.setMessage(I18n.format(format, displayValues.getOrDefault(value, value.toString()))); + this.setMessage(I18n.translate(format, displayValues.getOrDefault(value, value.toString()))); } @Override diff --git a/src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java b/src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java index 7e6e9bb..ea1ab20 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java @@ -2,10 +2,10 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.Versions; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.gui.IGuiEventListener; +import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.resources.I18n; -import net.minecraft.util.text.StringTextComponent; +import net.minecraft.client.resource.language.I18n; +import net.minecraft.text.LiteralText; public abstract class ListScreen extends Screen { private final Screen lastScreen; @@ -16,7 +16,7 @@ public abstract class ListScreen extends Screen { private SearchField searchField; ListScreen(Screen lastScreen) { - super(new StringTextComponent("Bounding Box Outline Reloaded")); + super(new LiteralText("Bounding Box Outline Reloaded")); this.lastScreen = lastScreen; } @@ -32,7 +32,7 @@ public abstract class ListScreen extends Screen { protected void init() { this.controlList = this.buildList(48, this.height - 28); this.searchField = new SearchField(this.font, this.width / 2 - 100, 22, 200, 20, this.controlList); - this.doneButton = new AbstractButton(this.width / 2 - 100, this.height - 24, 200, I18n.format("gui.done")) { + this.doneButton = new AbstractButton(this.width / 2 - 100, this.height - 24, 200, I18n.translate("gui.done")) { @Override public void onPressed() { onDoneClicked(); @@ -54,7 +54,7 @@ public abstract class ListScreen extends Screen { protected void render(int mouseX, int mouseY) { this.controlList.render(mouseX, mouseY); - this.drawCenteredString(this.font, this.title.getUnformattedComponentText(), this.width / 2, 8, 16777215); + this.drawCenteredString(this.font, this.title.asString(), this.width / 2, 8, 16777215); this.searchField.render(mouseX, mouseY); this.doneButton.render(mouseX, mouseY); @@ -94,9 +94,9 @@ public abstract class ListScreen extends Screen { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - for (IGuiEventListener control : this.children()) { + for (Element control : this.children()) { if (control.mouseClicked(mouseX, mouseY, button)) { - IGuiEventListener focused = getFocused(); + Element focused = getFocused(); if (focused instanceof IFocusableControl && focused != control) { ((IFocusableControl) focused).clearFocus(); } diff --git a/src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java b/src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java index 90a4a01..c44fd94 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java @@ -1,9 +1,9 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.AnvilConverterException; -import net.minecraft.world.storage.SaveFormat; -import net.minecraft.world.storage.WorldSummary; +import net.minecraft.world.level.storage.LevelStorage; +import net.minecraft.world.level.storage.LevelStorageException; +import net.minecraft.world.level.storage.LevelSummary; import java.util.List; @@ -18,11 +18,11 @@ public class LoadSavesScreen extends ListScreen { protected ControlList buildList(int top, int bottom) { controlList = new SelectableControlList(this.width, this.height, top, bottom); try { - final SaveFormat saveLoader = this.minecraft.getSaveLoader(); - List saveList = saveLoader.getSaveList(); + final LevelStorage saveLoader = this.minecraft.getLevelStorage(); + List saveList = saveLoader.getLevelList(); saveList.sort(null); saveList.forEach(world -> controlList.add(new WorldSaveRow(world, saveLoader, controlList::setSelectedEntry))); - } catch (AnvilConverterException e) { + } catch (LevelStorageException e) { e.printStackTrace(); } return controlList; diff --git a/src/main/java/com/irtimaled/bbor/client/gui/MaxYSettingSlider.java b/src/main/java/com/irtimaled/bbor/client/gui/MaxYSettingSlider.java index 4e3651a..e9e71b3 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/MaxYSettingSlider.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/MaxYSettingSlider.java @@ -1,18 +1,18 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.config.Setting; -import net.minecraft.client.resources.I18n; +import net.minecraft.client.resource.language.I18n; class MaxYSettingSlider extends IntSettingSlider { private final int actualMinValue; MaxYSettingSlider(int width, int minValue, Setting setting) { - super(width, minValue - 2, 127, I18n.format("bbor.options.maxY", "%s"), setting); + super(width, minValue - 2, 127, I18n.translate("bbor.options.maxY", "%s"), setting); this.actualMinValue = minValue; this.setInitialPosition(); - this.addDisplayValue(-1, I18n.format("bbor.options.maxY.activated")); - this.addDisplayValue(0, I18n.format("bbor.options.maxY.player")); - this.addDisplayValue(63, I18n.format("bbor.options.maxY.seaLevel")); + this.addDisplayValue(-1, I18n.translate("bbor.options.maxY.activated")); + this.addDisplayValue(0, I18n.translate("bbor.options.maxY.player")); + this.addDisplayValue(63, I18n.translate("bbor.options.maxY.seaLevel")); } @Override diff --git a/src/main/java/com/irtimaled/bbor/client/gui/SearchField.java b/src/main/java/com/irtimaled/bbor/client/gui/SearchField.java index a0577f5..272e6dd 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/SearchField.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/SearchField.java @@ -1,17 +1,17 @@ package com.irtimaled.bbor.client.gui; -import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.widget.TextFieldWidget; public class SearchField extends TextFieldWidget implements IControl { private final ControlList controlList; - SearchField(FontRenderer fontRenderer, int left, int top, int width, int height, ControlList controlList) { + SearchField(TextRenderer fontRenderer, int left, int top, int width, int height, ControlList controlList) { super(fontRenderer, left, top, width, height, ""); this.controlList = controlList; - this.setResponder(text -> this.controlList.filter(removeLeadingSpaces(text.toLowerCase()))); - this.setTextFormatter((text, id) -> removeLeadingSpaces(text)); + this.setChangedListener(text -> this.controlList.filter(removeLeadingSpaces(text.toLowerCase()))); + this.setRenderTextProvider((text, id) -> removeLeadingSpaces(text)); this.setFocused(true); } @@ -26,6 +26,6 @@ public class SearchField extends TextFieldWidget implements IControl { @Override public boolean isVisible() { - return super.getVisible(); + return super.isVisible(); } } diff --git a/src/main/java/com/irtimaled/bbor/client/gui/SettingsScreen.java b/src/main/java/com/irtimaled/bbor/client/gui/SettingsScreen.java index bd037e7..958194c 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/SettingsScreen.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/SettingsScreen.java @@ -4,9 +4,9 @@ import com.irtimaled.bbor.client.ClientRenderer; import com.irtimaled.bbor.client.config.ConfigManager; import com.irtimaled.bbor.client.interop.ClientInterop; import com.irtimaled.bbor.common.BoundingBoxType; +import net.minecraft.SharedConstants; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.resources.I18n; -import net.minecraft.util.SharedConstants; +import net.minecraft.client.resource.language.I18n; public class SettingsScreen extends ListScreen { private static final String pillagerOutpostVersionPattern = "(?:1\\.1[4-9]|1\\.[2-9][0-9]|18w(?:4[7-9]|5[0-9])|19w|2[0-9]w).*"; @@ -29,13 +29,13 @@ public class SettingsScreen extends ListScreen { @Override protected ControlList buildList(int top, int bottom) { - String version = SharedConstants.getVersion().getName(); + String version = SharedConstants.getGameVersion().getName(); ControlList controlList = new ControlList(this.width, this.height, top, bottom); if (this.minecraft.world != null) controlList.setTransparentBackground(); controlList .section(null, - width -> new BoolButton(width, I18n.format("bbor.options.active"), this.minecraft.world != null) { + width -> new BoolButton(width, I18n.translate("bbor.options.active"), this.minecraft.world != null) { @Override public void onPressed() { ClientRenderer.toggleActive(); @@ -46,40 +46,40 @@ public class SettingsScreen extends ListScreen { return ClientRenderer.getActive(); } }, - width -> new BoolSettingButton(width, I18n.format("bbor.options.outerBoxOnly"), ConfigManager.outerBoxesOnly), - width -> new BoolSettingButton(width, I18n.format("bbor.options.fill"), ConfigManager.fill)) - .section(I18n.format("bbor.features.spawnChunks"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.spawnChunks"), BoundingBoxType.WorldSpawn), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.lazyChunks"), BoundingBoxType.LazySpawnChunks), + width -> new BoolSettingButton(width, I18n.translate("bbor.options.outerBoxOnly"), ConfigManager.outerBoxesOnly), + width -> new BoolSettingButton(width, I18n.translate("bbor.options.fill"), ConfigManager.fill)) + .section(I18n.translate("bbor.features.spawnChunks"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.spawnChunks"), BoundingBoxType.WorldSpawn), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.lazyChunks"), BoundingBoxType.LazySpawnChunks), width -> new MaxYSettingSlider(width, 39, ConfigManager.worldSpawnMaxY)) - .section(I18n.format("bbor.features.slimeChunks"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.slimeChunks"), BoundingBoxType.SlimeChunks), + .section(I18n.translate("bbor.features.slimeChunks"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.slimeChunks"), BoundingBoxType.SlimeChunks), width -> new MaxYSettingSlider(width, 39, ConfigManager.slimeChunkMaxY)) - .section(I18n.format("bbor.features.biomeBorders"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.biomeBorders"), BoundingBoxType.BiomeBorder), + .section(I18n.translate("bbor.features.biomeBorders"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.biomeBorders"), BoundingBoxType.BiomeBorder), width -> new MaxYSettingSlider(width, 1, ConfigManager.biomeBordersMaxY), width -> new IntSettingSlider(width, 1, 3, "bbor.options.distance", ConfigManager.biomeBordersRenderDistance) - .addDisplayValue(1, I18n.format("bbor.options.distance.nearest")) - .addDisplayValue(2, I18n.format("bbor.options.distance.nearer")) - .addDisplayValue(3, I18n.format("bbor.options.distance.normal"))) - .section(I18n.format("bbor.features.flowerForests"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.flowerForests"), BoundingBoxType.FlowerForest), + .addDisplayValue(1, I18n.translate("bbor.options.distance.nearest")) + .addDisplayValue(2, I18n.translate("bbor.options.distance.nearer")) + .addDisplayValue(3, I18n.translate("bbor.options.distance.normal"))) + .section(I18n.translate("bbor.features.flowerForests"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.flowerForests"), BoundingBoxType.FlowerForest), width -> new IntSettingSlider(width, 1, 3, "bbor.options.distance", ConfigManager.flowerForestsRenderDistance) - .addDisplayValue(1, I18n.format("bbor.options.distance.nearest")) - .addDisplayValue(2, I18n.format("bbor.options.distance.nearer")) - .addDisplayValue(3, I18n.format("bbor.options.distance.normal"))) - .section(I18n.format("bbor.features.bedrockCeilingBlocks"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.bedrockCeilingBlocks"), BoundingBoxType.BedrockCeiling)) - .section(I18n.format("bbor.features.mobSpawners"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.mobSpawners"), BoundingBoxType.MobSpawner), - width -> new BoolSettingButton(width, I18n.format("bbor.features.mobSpawners.spawnArea"), ConfigManager.renderMobSpawnerSpawnArea), - width -> new BoolSettingButton(width, I18n.format("bbor.features.mobSpawners.activationLines"), ConfigManager.renderMobSpawnerActivationLines)) - .section(I18n.format("bbor.sections.beaconsAndConduits"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.beacons"), BoundingBoxType.Beacon), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.conduits"), BoundingBoxType.Conduit), - width -> new BoolSettingButton(width, I18n.format("bbor.features.conduits.mobHarmArea"), ConfigManager.renderConduitMobHarmArea)) - .section(I18n.format("bbor.features.spawnableBlocks"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.spawnableBlocks"), BoundingBoxType.SpawnableBlocks), + .addDisplayValue(1, I18n.translate("bbor.options.distance.nearest")) + .addDisplayValue(2, I18n.translate("bbor.options.distance.nearer")) + .addDisplayValue(3, I18n.translate("bbor.options.distance.normal"))) + .section(I18n.translate("bbor.features.bedrockCeilingBlocks"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.bedrockCeilingBlocks"), BoundingBoxType.BedrockCeiling)) + .section(I18n.translate("bbor.features.mobSpawners"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.mobSpawners"), BoundingBoxType.MobSpawner), + width -> new BoolSettingButton(width, I18n.translate("bbor.features.mobSpawners.spawnArea"), ConfigManager.renderMobSpawnerSpawnArea), + width -> new BoolSettingButton(width, I18n.translate("bbor.features.mobSpawners.activationLines"), ConfigManager.renderMobSpawnerActivationLines)) + .section(I18n.translate("bbor.sections.beaconsAndConduits"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.beacons"), BoundingBoxType.Beacon), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.conduits"), BoundingBoxType.Conduit), + width -> new BoolSettingButton(width, I18n.translate("bbor.features.conduits.mobHarmArea"), ConfigManager.renderConduitMobHarmArea)) + .section(I18n.translate("bbor.features.spawnableBlocks"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.spawnableBlocks"), BoundingBoxType.SpawnableBlocks), width -> new IntSettingSlider(width, 1, 3, "bbor.options.distance.y", ConfigManager.spawnableBlocksRenderHeight) .addDisplayValue(1, "2") .addDisplayValue(2, "4") @@ -88,28 +88,28 @@ public class SettingsScreen extends ListScreen { .addDisplayValue(1, "8") .addDisplayValue(2, "16") .addDisplayValue(3, "32")) - .section(I18n.format("bbor.features.spawningSpheres"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.features.spawningSpheres"), BoundingBoxType.AFKSphere), - width -> new BoolSettingButton(width, I18n.format("bbor.features.spawnableBlocks"), ConfigManager.renderAFKSpawnableBlocks)) - .section(I18n.format("bbor.tabs.structures"), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.desertTemples"), BoundingBoxType.DesertTemple), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.jungleTemples"), BoundingBoxType.JungleTemple), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.witchHuts"), BoundingBoxType.WitchHut), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.mansions"), BoundingBoxType.Mansion), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.monuments"), BoundingBoxType.OceanMonument), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.igloos"), BoundingBoxType.Igloo), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.oceanRuins"), BoundingBoxType.OceanRuin), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.buriedTreasure"), BoundingBoxType.BuriedTreasure), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.shipwrecks"), BoundingBoxType.Shipwreck), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.strongholds"), BoundingBoxType.Stronghold), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.mineshafts"), BoundingBoxType.MineShaft), - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.villages"), BoundingBoxType.Village), - width -> version.matches(pillagerOutpostVersionPattern) ? new BoundingBoxTypeButton(width, I18n.format("bbor.structures.pillagerOutposts"), BoundingBoxType.PillagerOutpost) : null, - width -> version.matches(bastionRemnantVersionPattern) ? new BoundingBoxTypeButton(width, I18n.format("bbor.structures.ruinedPortal"), BoundingBoxType.RuinedPortal) : null, - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.fortresses"), BoundingBoxType.NetherFortress), - width -> version.matches(netherFossilVersionPattern) ? new BoundingBoxTypeButton(width, I18n.format("bbor.structures.netherFossils"), BoundingBoxType.NetherFossil) : null, - width -> version.matches(bastionRemnantVersionPattern) ? new BoundingBoxTypeButton(width, I18n.format("bbor.structures.bastionRemnants"), BoundingBoxType.BastionRemnant) : null, - width -> new BoundingBoxTypeButton(width, I18n.format("bbor.structures.endCities"), BoundingBoxType.EndCity)); + .section(I18n.translate("bbor.features.spawningSpheres"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.features.spawningSpheres"), BoundingBoxType.AFKSphere), + width -> new BoolSettingButton(width, I18n.translate("bbor.features.spawnableBlocks"), ConfigManager.renderAFKSpawnableBlocks)) + .section(I18n.translate("bbor.tabs.structures"), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.desertTemples"), BoundingBoxType.DesertTemple), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.jungleTemples"), BoundingBoxType.JungleTemple), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.witchHuts"), BoundingBoxType.WitchHut), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.mansions"), BoundingBoxType.Mansion), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.monuments"), BoundingBoxType.OceanMonument), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.igloos"), BoundingBoxType.Igloo), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.oceanRuins"), BoundingBoxType.OceanRuin), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.buriedTreasure"), BoundingBoxType.BuriedTreasure), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.shipwrecks"), BoundingBoxType.Shipwreck), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.strongholds"), BoundingBoxType.Stronghold), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.mineshafts"), BoundingBoxType.MineShaft), + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.villages"), BoundingBoxType.Village), + width -> version.matches(pillagerOutpostVersionPattern) ? new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.pillagerOutposts"), BoundingBoxType.PillagerOutpost) : null, + width -> version.matches(bastionRemnantVersionPattern) ? new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.ruinedPortal"), BoundingBoxType.RuinedPortal) : null, + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.fortresses"), BoundingBoxType.NetherFortress), + width -> version.matches(netherFossilVersionPattern) ? new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.netherFossils"), BoundingBoxType.NetherFossil) : null, + width -> version.matches(bastionRemnantVersionPattern) ? new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.bastionRemnants"), BoundingBoxType.BastionRemnant) : null, + width -> new BoundingBoxTypeButton(width, I18n.translate("bbor.structures.endCities"), BoundingBoxType.EndCity)); return controlList; } } diff --git a/src/main/java/com/irtimaled/bbor/client/gui/WorldSaveRow.java b/src/main/java/com/irtimaled/bbor/client/gui/WorldSaveRow.java index 037dc5f..3d88ecc 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/WorldSaveRow.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/WorldSaveRow.java @@ -3,15 +3,15 @@ package com.irtimaled.bbor.client.gui; import com.google.common.hash.Hashing; import com.irtimaled.bbor.client.interop.ClientInterop; import com.irtimaled.bbor.client.renderers.RenderHelper; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.AbstractGui; -import net.minecraft.client.renderer.texture.DynamicTexture; -import net.minecraft.client.renderer.texture.NativeImage; -import net.minecraft.util.ResourceLocation; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.texture.NativeImageBackedTexture; +import net.minecraft.util.Identifier; import net.minecraft.util.Util; -import net.minecraft.world.storage.SaveFormat; -import net.minecraft.world.storage.WorldInfo; -import net.minecraft.world.storage.WorldSummary; +import net.minecraft.world.level.LevelProperties; +import net.minecraft.world.level.storage.LevelStorage; +import net.minecraft.world.level.storage.LevelSummary; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -26,25 +26,25 @@ import java.util.function.Consumer; public class WorldSaveRow extends ControlListEntry implements Comparable { private static final Logger LOGGER = LogManager.getLogger(); private static final DateFormat DATE_FORMAT = new SimpleDateFormat(); - private static final ResourceLocation ICON_MISSING = new ResourceLocation("textures/misc/unknown_server.png"); + private static final Identifier ICON_MISSING = new Identifier("textures/misc/unknown_server.png"); private static final int ICON_SIZE = 20; - private final Minecraft client; - private final WorldSummary worldSummary; - private final SaveFormat saveLoader; + private final MinecraftClient client; + private final LevelSummary worldSummary; + private final LevelStorage saveLoader; private final Consumer setSelectedEntry; - private final ResourceLocation iconLocation; - private final DynamicTexture icon; + private final Identifier iconLocation; + private final NativeImageBackedTexture icon; private File iconFile; private long lastClickTime; - WorldSaveRow(WorldSummary worldSummary, SaveFormat saveLoader, Consumer setSelectedEntry) { + WorldSaveRow(LevelSummary worldSummary, LevelStorage saveLoader, Consumer setSelectedEntry) { this.worldSummary = worldSummary; this.saveLoader = saveLoader; this.setSelectedEntry = setSelectedEntry; - this.client = Minecraft.getInstance(); - this.iconLocation = new ResourceLocation("worlds/" + Hashing.sha1().hashUnencodedChars(worldSummary.getFileName()) + "/icon"); - this.iconFile = saveLoader.getFile(worldSummary.getFileName(), "icon.png"); + this.client = MinecraftClient.getInstance(); + this.iconLocation = new Identifier("worlds/" + Hashing.sha1().hashUnencodedChars(worldSummary.getName()) + "/icon"); + this.iconFile = saveLoader.resolveFile(worldSummary.getName(), "icon.png"); if (!this.iconFile.isFile()) { this.iconFile = null; } @@ -65,34 +65,34 @@ public class WorldSaveRow extends ControlListEntry implements Comparable commandDispatcher = connection.getCommandDispatcher(); - CommandSource commandSource = Minecraft.getInstance().player.getCommandSource(); + CommandDispatcher commandDispatcher = connection.getCommandDispatcher(); + ServerCommandSource commandSource = MinecraftClient.getInstance().player.getCommandSource(); try { commandDispatcher.execute(message.substring(1), commandSource); } catch (CommandSyntaxException exception) { - commandSource.sendErrorMessage(TextComponentUtils.toTextComponent(exception.getRawMessage())); + commandSource.sendError(Texts.toText(exception.getRawMessage())); if (exception.getInput() != null && exception.getCursor() >= 0) { - ITextComponent suggestion = new StringTextComponent("") - .applyTextStyle(TextFormatting.GRAY) - .applyTextStyle(style -> style.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, message))); + Text suggestion = new LiteralText("") + .formatted(Formatting.GRAY) + .styled(style -> style.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, message))); int textLength = Math.min(exception.getInput().length(), exception.getCursor()); if (textLength > 10) { - suggestion.appendText("..."); + suggestion.append("..."); } - suggestion.appendText(exception.getInput().substring(Math.max(0, textLength - 10), textLength)); + suggestion.append(exception.getInput().substring(Math.max(0, textLength - 10), textLength)); if (textLength < exception.getInput().length()) { - suggestion.appendSibling(new StringTextComponent(exception.getInput().substring(textLength)) - .applyTextStyles(TextFormatting.RED, TextFormatting.UNDERLINE)); + suggestion.append(new LiteralText(exception.getInput().substring(textLength)) + .formatted(Formatting.RED, Formatting.UNDERLINE)); } - suggestion.appendSibling(new TranslationTextComponent("command.context.here") - .applyTextStyles(TextFormatting.RED, TextFormatting.ITALIC)); - commandSource.sendErrorMessage(suggestion); + suggestion.append(new TranslatableText("command.context.here") + .formatted(Formatting.RED, Formatting.ITALIC)); + commandSource.sendError(suggestion); } } } @@ -74,22 +74,22 @@ public class ClientInterop { } public static int getRenderDistanceChunks() { - return Minecraft.getInstance().gameSettings.renderDistanceChunks; + return MinecraftClient.getInstance().options.viewDistance; } - public static void handleSeedMessage(ITextComponent chatComponent) { - TypeHelper.doIfType(chatComponent, TranslationTextComponent.class, message -> { + public static void handleSeedMessage(Text chatComponent) { + TypeHelper.doIfType(chatComponent, TranslatableText.class, message -> { if (!message.getKey().equals("commands.seed.success")) return; try { - long seed = Long.parseLong(message.getFormatArgs()[0].toString()); + long seed = Long.parseLong(message.getArgs()[0].toString()); SlimeChunkProvider.setSeed(seed); } catch (Exception ignored) { } }); } - public static void registerClientCommands(CommandDispatcher commandDispatcher) { + public static void registerClientCommands(CommandDispatcher commandDispatcher) { SeedCommand.register(commandDispatcher); SpawningSphereCommand.register(commandDispatcher); CustomCommand.register(commandDispatcher); @@ -103,7 +103,7 @@ public class ClientInterop { public static void saveLoaded(String fileName, long seed) { displayScreen(null); - Minecraft.getInstance().mouseHelper.grabMouse(); + MinecraftClient.getInstance().mouse.lockCursor(); clearStructures(); @@ -117,10 +117,10 @@ public class ClientInterop { } public static void displayScreen(Screen screen) { - Minecraft.getInstance().displayGuiScreen(screen); + MinecraftClient.getInstance().openScreen(screen); } public static long getGameTime() { - return Minecraft.getInstance().world.getGameTime(); + return MinecraftClient.getInstance().world.getTime(); } } diff --git a/src/main/java/com/irtimaled/bbor/client/interop/FlowerForestHelper.java b/src/main/java/com/irtimaled/bbor/client/interop/FlowerForestHelper.java index 1d64707..270a29c 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/FlowerForestHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/FlowerForestHelper.java @@ -6,11 +6,11 @@ import com.irtimaled.bbor.client.config.Setting; import com.irtimaled.bbor.common.models.Coords; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; +import net.minecraft.client.MinecraftClient; import net.minecraft.util.math.BlockPos; import net.minecraft.world.biome.Biomes; import net.minecraft.world.gen.feature.DecoratedFeatureConfig; -import net.minecraft.world.gen.feature.FlowersFeature; +import net.minecraft.world.gen.feature.FlowerFeature; import java.util.HashMap; import java.util.Map; @@ -20,7 +20,7 @@ public class FlowerForestHelper { private static final Random random = new Random(); private static final Map> flowerColorMap = new HashMap<>(); - private static final FlowersFeature flowersFeature; + private static final FlowerFeature flowersFeature; static { flowerColorMap.put(Blocks.DANDELION.getDefaultState(), ConfigManager.colorFlowerForestDandelion); @@ -35,14 +35,14 @@ public class FlowerForestHelper { flowerColorMap.put(Blocks.CORNFLOWER.getDefaultState(), ConfigManager.colorFlowerForestCornflower); flowerColorMap.put(Blocks.LILY_OF_THE_VALLEY.getDefaultState(), ConfigManager.colorFlowerForestLilyOfTheValley); - DecoratedFeatureConfig config = (DecoratedFeatureConfig) Biomes.FLOWER_FOREST.getFlowers().get(0).config; - flowersFeature = (FlowersFeature) config.feature.feature; + DecoratedFeatureConfig config = (DecoratedFeatureConfig) Biomes.FLOWER_FOREST.getFlowerFeatures().get(0).config; + flowersFeature = (FlowerFeature) config.feature.feature; } public static Setting getFlowerColorAtPos(Coords coords) { int x = coords.getX(); int z = coords.getZ(); - BlockState blockState = flowersFeature.getRandomFlower(random, new BlockPos(x, coords.getY(), z)); + BlockState blockState = flowersFeature.getFlowerToPlace(random, new BlockPos(x, coords.getY(), z)); return flowerColorMap.get(blockState); } @@ -51,6 +51,6 @@ public class FlowerForestHelper { } public static boolean canGrowFlower(int x, int y, int z) { - return Minecraft.getInstance().world.getBlockState(new BlockPos(x, y, z)).getBlock() == Blocks.GRASS_BLOCK; + return MinecraftClient.getInstance().world.getBlockState(new BlockPos(x, y, z)).getBlock() == Blocks.GRASS_BLOCK; } } diff --git a/src/main/java/com/irtimaled/bbor/client/interop/ModPackFinder.java b/src/main/java/com/irtimaled/bbor/client/interop/ModPackFinder.java index 3b737e3..f70c93c 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/ModPackFinder.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/ModPackFinder.java @@ -1,27 +1,27 @@ package com.irtimaled.bbor.client.interop; -import net.minecraft.resources.IPackFinder; -import net.minecraft.resources.IResourcePack; -import net.minecraft.resources.ResourcePackInfo; -import net.minecraft.resources.VanillaPack; +import net.minecraft.resource.DefaultResourcePack; +import net.minecraft.resource.ResourcePack; +import net.minecraft.resource.ResourcePackProfile; +import net.minecraft.resource.ResourcePackProvider; import java.util.Map; -public class ModPackFinder implements IPackFinder { +public class ModPackFinder implements ResourcePackProvider { private static final String BBOR = "bbor"; - private final IResourcePack modPack; + private final ResourcePack modPack; public ModPackFinder() { - modPack = new VanillaPack(BBOR); + modPack = new DefaultResourcePack(BBOR); } @Override - public void addPackInfosToMap(Map map, ResourcePackInfo.IFactory factory) { - T resourcePackInfo = ResourcePackInfo.createResourcePack(BBOR, + public void register(Map map, ResourcePackProfile.Factory factory) { + T resourcePackInfo = ResourcePackProfile.of(BBOR, true, () -> this.modPack, factory, - ResourcePackInfo.Priority.BOTTOM); + ResourcePackProfile.InsertionPosition.BOTTOM); if (resourcePackInfo != null) { map.put(BBOR, resourcePackInfo); } diff --git a/src/main/java/com/irtimaled/bbor/client/interop/NBTStructureLoader.java b/src/main/java/com/irtimaled/bbor/client/interop/NBTStructureLoader.java index f7ab2f3..d067a0b 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/NBTStructureLoader.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/NBTStructureLoader.java @@ -3,21 +3,21 @@ package com.irtimaled.bbor.client.interop; import com.irtimaled.bbor.common.EventBus; import com.irtimaled.bbor.common.events.StructuresLoaded; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.structure.StructureManager; +import net.minecraft.structure.StructurePiece; +import net.minecraft.structure.StructureStart; +import net.minecraft.util.math.BlockBox; import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.FeatureUpdater; import net.minecraft.world.IWorld; +import net.minecraft.world.PersistentStateManager; +import net.minecraft.world.WorldSaveHandler; import net.minecraft.world.biome.Biome; -import net.minecraft.world.chunk.storage.RegionFileCache; import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.gen.ChunkGenerator; -import net.minecraft.world.gen.feature.structure.LegacyStructureDataUtil; -import net.minecraft.world.gen.feature.structure.StructurePiece; -import net.minecraft.world.gen.feature.structure.StructureStart; -import net.minecraft.world.gen.feature.template.TemplateManager; -import net.minecraft.world.storage.DimensionSavedDataManager; -import net.minecraft.world.storage.SaveHandler; +import net.minecraft.world.gen.chunk.ChunkGenerator; +import net.minecraft.world.storage.RegionBasedStorage; import java.io.File; import java.io.IOException; @@ -27,12 +27,12 @@ class NBTStructureLoader { private final DimensionId dimensionId; private final Set loadedChunks = new HashSet<>(); - private LegacyStructureDataUtil legacyStructureDataUtil = null; - private SaveHandler saveHandler = null; + private FeatureUpdater legacyStructureDataUtil = null; + private WorldSaveHandler saveHandler = null; private File chunkSaveLocation = null; private ChunkLoader chunkLoader; - NBTStructureLoader(DimensionId dimensionId, SaveHandler saveHandler, File worldDirectory) { + NBTStructureLoader(DimensionId dimensionId, WorldSaveHandler saveHandler, File worldDirectory) { this.dimensionId = dimensionId; this.configure(saveHandler, worldDirectory); } @@ -51,31 +51,31 @@ class NBTStructureLoader { this.chunkLoader = null; } - void configure(SaveHandler saveHandler, File worldDirectory) { + void configure(WorldSaveHandler saveHandler, File worldDirectory) { this.saveHandler = saveHandler; if (worldDirectory != null) { - this.chunkSaveLocation = new File(dimensionId.getDimensionType().getDirectory(worldDirectory), "region"); + this.chunkSaveLocation = new File(dimensionId.getDimensionType().getSaveDirectory(worldDirectory), "region"); this.chunkLoader = new ChunkLoader(this.chunkSaveLocation); } } - private LegacyStructureDataUtil getLegacyStructureDataUtil() { + private FeatureUpdater getLegacyStructureDataUtil() { if (this.legacyStructureDataUtil == null) { - File dataFolder = new File(DimensionType.OVERWORLD.getDirectory(this.saveHandler.getWorldDirectory()), "data"); - this.legacyStructureDataUtil = LegacyStructureDataUtil.func_215130_a(dimensionId.getDimensionType(), - new DimensionSavedDataManager(dataFolder, this.saveHandler.getFixer())); + File dataFolder = new File(DimensionType.OVERWORLD.getSaveDirectory(this.saveHandler.getWorldDir()), "data"); + this.legacyStructureDataUtil = FeatureUpdater.create(dimensionId.getDimensionType(), + new PersistentStateManager(dataFolder, this.saveHandler.getDataFixer())); } return this.legacyStructureDataUtil; } - private CompoundNBT loadStructureStarts(int chunkX, int chunkZ) { + private CompoundTag loadStructureStarts(int chunkX, int chunkZ) { try { - CompoundNBT compound = this.chunkLoader.readChunk(chunkX, chunkZ); + CompoundTag compound = this.chunkLoader.readChunk(chunkX, chunkZ); if (compound == null) return null; int dataVersion = compound.contains("DataVersion", 99) ? compound.getInt("DataVersion") : -1; if (dataVersion < 1493) { if (compound.getCompound("Level").getBoolean("hasLegacyStructureData")) { - compound = getLegacyStructureDataUtil().func_212181_a(compound); + compound = getLegacyStructureDataUtil().getUpdatedReferences(compound); } } return compound.getCompound("Level").getCompound("Structures").getCompound("Starts"); @@ -89,12 +89,12 @@ class NBTStructureLoader { if (!loadedChunks.add(String.format("%s,%s", chunkX, chunkZ))) return; - CompoundNBT structureStarts = loadStructureStarts(chunkX, chunkZ); - if (structureStarts == null || structureStarts.size() == 0) return; + CompoundTag structureStarts = loadStructureStarts(chunkX, chunkZ); + if (structureStarts == null || structureStarts.getSize() == 0) return; Map structureStartMap = new HashMap<>(); - for (String key : structureStarts.keySet()) { - CompoundNBT compound = structureStarts.getCompound(key); + for (String key : structureStarts.getKeys()) { + CompoundTag compound = structureStarts.getCompound(key); if (compound.contains("BB")) { structureStartMap.put(key, new SimpleStructureStart(compound)); } @@ -104,54 +104,54 @@ class NBTStructureLoader { } private static class SimpleStructureStart extends StructureStart { - SimpleStructureStart(CompoundNBT compound) { + SimpleStructureStart(CompoundTag compound) { super(null, 0, 0, null, - new MutableBoundingBox(compound.getIntArray("BB")), + new BlockBox(compound.getIntArray("BB")), 0, 0); - ListNBT children = compound.getList("Children", 10); + ListTag children = compound.getList("Children", 10); for (int index = 0; index < children.size(); ++index) { - CompoundNBT child = children.getCompound(index); - if (child.contains("BB")) this.components.add(new SimpleStructurePiece(child)); + CompoundTag child = children.getCompound(index); + if (child.contains("BB")) this.children.add(new SimpleStructurePiece(child)); } } @Override - public void init(ChunkGenerator chunkGenerator, TemplateManager templateManager, int i, int i1, Biome biome) { + public void initialize(ChunkGenerator chunkGenerator, StructureManager structureManager, int i, int i1, Biome biome) { } } private static class SimpleStructurePiece extends StructurePiece { - SimpleStructurePiece(CompoundNBT compound) { + SimpleStructurePiece(CompoundTag compound) { super(null, compound); } @Override - protected void readAdditional(CompoundNBT compoundNBT) { + protected void toNbt(CompoundTag compoundTag) { } @Override - public boolean addComponentParts(IWorld iWorld, Random random, MutableBoundingBox mutableBoundingBox, ChunkPos chunkPos) { + public boolean generate(IWorld iWorld, Random random, BlockBox blockBox, ChunkPos chunkPos) { return false; } } private static class ChunkLoader { - private final RegionFileCache regionFileCache; + private final RegionBasedStorage regionFileCache; public ChunkLoader(File file) { - this.regionFileCache = new RegionFileCache(file) { + this.regionFileCache = new RegionBasedStorage(file) { }; } - public CompoundNBT readChunk(int chunkX, int chunkZ) throws IOException { - return regionFileCache.readChunk(new ChunkPos(chunkX, chunkZ)); + public CompoundTag readChunk(int chunkX, int chunkZ) throws IOException { + return regionFileCache.getTagAt(new ChunkPos(chunkX, chunkZ)); } public void close() throws IOException { diff --git a/src/main/java/com/irtimaled/bbor/client/interop/SaveGameStructureLoader.java b/src/main/java/com/irtimaled/bbor/client/interop/SaveGameStructureLoader.java index fd392ae..9f7f54e 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/SaveGameStructureLoader.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/SaveGameStructureLoader.java @@ -2,9 +2,9 @@ package com.irtimaled.bbor.client.interop; import com.irtimaled.bbor.client.Player; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.client.Minecraft; -import net.minecraft.world.storage.SaveFormat; -import net.minecraft.world.storage.SaveHandler; +import net.minecraft.client.MinecraftClient; +import net.minecraft.world.WorldSaveHandler; +import net.minecraft.world.level.storage.LevelStorage; import java.io.File; import java.util.HashMap; @@ -12,14 +12,14 @@ import java.util.Map; public class SaveGameStructureLoader { private static final Map nbtStructureLoaders = new HashMap<>(); - private static SaveHandler saveHandler = null; + private static WorldSaveHandler saveHandler = null; private static File worldDirectory = null; static void loadSaveGame(String fileName) { - Minecraft minecraft = Minecraft.getInstance(); - SaveFormat saveLoader = minecraft.getSaveLoader(); - saveHandler = saveLoader.getSaveLoader(fileName, null); - worldDirectory = saveLoader.func_215781_c().resolve(fileName).toFile(); + MinecraftClient minecraft = MinecraftClient.getInstance(); + LevelStorage saveLoader = minecraft.getLevelStorage(); + saveHandler = saveLoader.createSaveHandler(fileName, null); + worldDirectory = saveLoader.getSavesDirectory().resolve(fileName).toFile(); for (DimensionId dimensionId : nbtStructureLoaders.keySet()) { NBTStructureLoader dimensionProcessor = getNBTStructureLoader(dimensionId); diff --git a/src/main/java/com/irtimaled/bbor/client/interop/SpawnableBlocksHelper.java b/src/main/java/com/irtimaled/bbor/client/interop/SpawnableBlocksHelper.java index 016d5c3..7672372 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/SpawnableBlocksHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/SpawnableBlocksHelper.java @@ -3,20 +3,20 @@ package com.irtimaled.bbor.client.interop; import com.irtimaled.bbor.common.models.Coords; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.EntityClassification; +import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.EntityCategory; import net.minecraft.entity.EntityType; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.Direction; +import net.minecraft.tag.BlockTags; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.LightType; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; public class SpawnableBlocksHelper { - private static final EntityType entityType = EntityType.Builder.create(EntityClassification.MONSTER) - .size(0f, 0f).disableSerialization().build(null); + private static final EntityType entityType = EntityType.Builder.create(EntityCategory.MONSTER) + .setDimensions(0f, 0f).disableSaving().build(null); public static void findSpawnableBlocks(Coords coords, int width, int height, BlockProcessor blockProcessor) { int blockX = coords.getX(); @@ -31,7 +31,7 @@ public class SpawnableBlocksHelper { int minY = Math.max(1, blockY - height); int maxY = Math.min(255, blockY + height); - World world = Minecraft.getInstance().world; + World world = MinecraftClient.getInstance().world; for (int x = minX; x < maxX; x++) { for (int z = minZ; z < maxZ; z++) { if (isBiomeHostileSpawnProof(world, new BlockPos(x, 1, z))) continue; @@ -51,19 +51,19 @@ public class SpawnableBlocksHelper { static boolean isBiomeHostileSpawnProof(World world, BlockPos pos) { Biome biome = world.getBiome(pos); - return biome.getSpawningChance() == 0 || - biome.getSpawns(EntityClassification.MONSTER).isEmpty(); + return biome.getMaxSpawnLimit() == 0 || + biome.getEntitySpawnList(EntityCategory.MONSTER).isEmpty(); } static boolean isSpawnable(World world, BlockPos pos, BlockState spawnBlockState, BlockState upperBlockState) { VoxelShape collisionShape = upperBlockState.getCollisionShape(world, pos); boolean isNether = world.dimension.isNether(); - return spawnBlockState.canEntitySpawn(world, pos.down(), isNether ? EntityType.ZOMBIE_PIGMAN : entityType) && - !Block.doesSideFillSquare(collisionShape, Direction.UP) && - !upperBlockState.canProvidePower() && - !upperBlockState.isIn(BlockTags.RAILS) && - collisionShape.getEnd(Direction.Axis.Y) <= 0 && + return spawnBlockState.allowsSpawning(world, pos.down(), isNether ? EntityType.ZOMBIE_PIGMAN : entityType) && + !Block.isFaceFullSquare(collisionShape, Direction.UP) && + !upperBlockState.emitsRedstonePower() && + !upperBlockState.matches(BlockTags.RAILS) && + collisionShape.getMaximum(Direction.Axis.Y) <= 0 && upperBlockState.getFluidState().isEmpty() && - (isNether || world.getLightFor(LightType.BLOCK, pos) <= 7); + (isNether || world.getLightLevel(LightType.BLOCK, pos) <= 7); } } diff --git a/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java b/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java index 856e4b8..706d38e 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java @@ -4,7 +4,7 @@ import com.irtimaled.bbor.client.models.BoundingBoxSpawningSphere; import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.models.Coords; import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; +import net.minecraft.client.MinecraftClient; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -22,7 +22,7 @@ public class SpawningSphereHelper { int minY = Math.max(1, blockY - height); int maxY = Math.min(255, blockY + height); - World world = Minecraft.getInstance().world; + World world = MinecraftClient.getInstance().world; for (int x = minX; x < maxX; x++) { for (int z = minZ; z < maxZ; z++) { double closestX = x + 0.5D; diff --git a/src/main/java/com/irtimaled/bbor/client/interop/TileEntitiesHelper.java b/src/main/java/com/irtimaled/bbor/client/interop/TileEntitiesHelper.java index 75d7fc0..f778d31 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/TileEntitiesHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/TileEntitiesHelper.java @@ -2,8 +2,8 @@ package com.irtimaled.bbor.client.interop; import com.irtimaled.bbor.common.TypeHelper; import com.irtimaled.bbor.common.models.AbstractBoundingBox; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.MinecraftClient; import java.util.Collection; import java.util.HashSet; @@ -11,11 +11,11 @@ import java.util.Set; import java.util.function.Function; public class TileEntitiesHelper { - public static Iterable map(Class clazz, Function map) { - Collection tileEntities = Minecraft.getInstance().world.loadedTileEntityList; + public static Iterable map(Class clazz, Function map) { + Collection tileEntities = MinecraftClient.getInstance().world.blockEntities; Set results = new HashSet<>(); - for (TileEntity tileEntity : tileEntities) { + for (BlockEntity tileEntity : tileEntities) { T typed = TypeHelper.as(tileEntity, clazz); if (typed == null) { continue; diff --git a/src/main/java/com/irtimaled/bbor/client/keyboard/CustomKeyBinding.java b/src/main/java/com/irtimaled/bbor/client/keyboard/CustomKeyBinding.java index 4900807..ba13fcf 100644 --- a/src/main/java/com/irtimaled/bbor/client/keyboard/CustomKeyBinding.java +++ b/src/main/java/com/irtimaled/bbor/client/keyboard/CustomKeyBinding.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.client.keyboard; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.client.util.InputMappings; +import net.minecraft.client.options.KeyBinding; +import net.minecraft.client.util.InputUtil; class CustomKeyBinding extends KeyBinding { private final Key key; @@ -12,8 +12,8 @@ class CustomKeyBinding extends KeyBinding { } @Override - public void bind(InputMappings.Input input) { - super.bind(input); + public void setKeyCode(InputUtil.KeyCode input) { + super.setKeyCode(input); int keyCode = input.getKeyCode(); key.updateKeyCode(keyCode); } diff --git a/src/main/java/com/irtimaled/bbor/client/keyboard/Key.java b/src/main/java/com/irtimaled/bbor/client/keyboard/Key.java index cdcec3d..6d6aefd 100644 --- a/src/main/java/com/irtimaled/bbor/client/keyboard/Key.java +++ b/src/main/java/com/irtimaled/bbor/client/keyboard/Key.java @@ -1,6 +1,6 @@ package com.irtimaled.bbor.client.keyboard; -import net.minecraft.client.util.InputMappings; +import net.minecraft.client.util.InputUtil; import java.util.HashSet; import java.util.Set; @@ -78,7 +78,7 @@ public class Key { } public Key register(String keyName) { - InputMappings.Input input = InputMappings.getInputByName(keyName); + InputUtil.KeyCode input = InputUtil.fromName(keyName); Key key = new Key(input.getKeyCode()); subKeys.add(key); return key; diff --git a/src/main/java/com/irtimaled/bbor/client/keyboard/KeyListener.java b/src/main/java/com/irtimaled/bbor/client/keyboard/KeyListener.java index 52b3f83..2e7d30d 100644 --- a/src/main/java/com/irtimaled/bbor/client/keyboard/KeyListener.java +++ b/src/main/java/com/irtimaled/bbor/client/keyboard/KeyListener.java @@ -1,27 +1,27 @@ package com.irtimaled.bbor.client.keyboard; -import net.minecraft.client.Minecraft; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.client.util.InputMappings; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.options.KeyBinding; +import net.minecraft.client.util.InputUtil; import org.lwjgl.glfw.GLFW; import java.util.HashSet; import java.util.Set; public class KeyListener { - private static final Minecraft minecraft = Minecraft.getInstance(); + private static final MinecraftClient minecraft = MinecraftClient.getInstance(); private static long mainWindowHandle; private static final Set keys = new HashSet<>(); private static final Set keyBindings = new HashSet<>(); public static final String Category = "Bounding Box Outline Reloaded"; public static void init() { - mainWindowHandle = minecraft.mainWindow.getHandle(); + mainWindowHandle = minecraft.window.getHandle(); GLFW.glfwSetKeyCallback(mainWindowHandle, KeyListener::onKeyEvent); } public static Key register(String description, String keyName) { - InputMappings.Input input = InputMappings.getInputByName(keyName); + InputUtil.KeyCode input = InputUtil.fromName(keyName); CustomKeyBinding keyBinding = new CustomKeyBinding(description, input.getKeyCode()); keyBindings.add(keyBinding); @@ -35,10 +35,10 @@ public class KeyListener { if (windowHandle == mainWindowHandle && minecraft.currentScreen == null && keyCode != -1 && - !InputMappings.isKeyDown(mainWindowHandle, 292) && + !InputUtil.isKeyPressed(mainWindowHandle, 292) && handleKeyEvent(keyCode, isPressed)) return; - minecraft.keyboardListener.onKeyEvent(windowHandle, keyCode, scanCode, action, modifiers); + minecraft.keyboard.onKey(windowHandle, keyCode, scanCode, action, modifiers); } private static boolean handleKeyEvent(int keyCode, boolean isPressed) { diff --git a/src/main/java/com/irtimaled/bbor/client/providers/BeaconProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/BeaconProvider.java index f031496..8b8cb0e 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/BeaconProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/BeaconProvider.java @@ -6,7 +6,8 @@ import com.irtimaled.bbor.client.models.BoundingBoxBeacon; import com.irtimaled.bbor.common.BoundingBoxType; import com.irtimaled.bbor.common.models.Coords; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.tileentity.BeaconTileEntity; +import net.minecraft.block.entity.BeaconBlockEntity; + public class BeaconProvider implements IBoundingBoxProvider { @Override @@ -16,8 +17,8 @@ public class BeaconProvider implements IBoundingBoxProvider { @Override public Iterable get(DimensionId dimensionId) { - return TileEntitiesHelper.map(BeaconTileEntity.class, beacon -> { - int levels = beacon.getLevels(); + return TileEntitiesHelper.map(BeaconBlockEntity.class, beacon -> { + int levels = beacon.getLevel(); Coords coords = new Coords(beacon.getPos()); return BoundingBoxBeacon.from(coords, levels); }); diff --git a/src/main/java/com/irtimaled/bbor/client/providers/ConduitProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/ConduitProvider.java index 38de01f..c15e0e2 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/ConduitProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/ConduitProvider.java @@ -7,15 +7,15 @@ import com.irtimaled.bbor.common.BoundingBoxType; import com.irtimaled.bbor.common.ReflectionHelper; import com.irtimaled.bbor.common.models.Coords; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.tileentity.ConduitTileEntity; +import net.minecraft.block.entity.ConduitBlockEntity; import net.minecraft.util.math.BlockPos; import java.util.List; import java.util.function.Function; public class ConduitProvider implements IBoundingBoxProvider { - private static final Function> blocksFetcher = - ReflectionHelper.getPrivateFieldGetter(ConduitTileEntity.class, List.class, BlockPos.class); + private static final Function> blocksFetcher = + ReflectionHelper.getPrivateFieldGetter(ConduitBlockEntity.class, List.class, BlockPos.class); @Override public boolean canProvide(DimensionId dimensionId) { @@ -24,7 +24,7 @@ public class ConduitProvider implements IBoundingBoxProvider @Override public Iterable get(DimensionId dimensionId) { - return TileEntitiesHelper.map(ConduitTileEntity.class, conduit -> { + return TileEntitiesHelper.map(ConduitBlockEntity.class, conduit -> { List blocks = blocksFetcher.apply(conduit); if (blocks == null) return null; diff --git a/src/main/java/com/irtimaled/bbor/client/providers/FlowerForestProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/FlowerForestProvider.java index 3bc7bdc..e704d8d 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/FlowerForestProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/FlowerForestProvider.java @@ -17,7 +17,7 @@ import java.util.HashMap; import java.util.Map; public class FlowerForestProvider implements IBoundingBoxProvider, ICachingProvider { - public static final int FLOWER_FOREST_BIOME_ID = Registry.BIOME.getId(Biomes.FLOWER_FOREST); + public static final int FLOWER_FOREST_BIOME_ID = Registry.BIOME.getRawId(Biomes.FLOWER_FOREST); private static Coords lastPlayerCoords = null; private static Integer lastRenderDistance = null; private static Map lastBoundingBoxes = new HashMap<>(); diff --git a/src/main/java/com/irtimaled/bbor/client/providers/MobSpawnerProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/MobSpawnerProvider.java index 12eef54..5079aa0 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/MobSpawnerProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/MobSpawnerProvider.java @@ -6,7 +6,7 @@ import com.irtimaled.bbor.client.models.BoundingBoxMobSpawner; import com.irtimaled.bbor.common.BoundingBoxType; import com.irtimaled.bbor.common.models.Coords; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.tileentity.MobSpawnerTileEntity; +import net.minecraft.block.entity.MobSpawnerBlockEntity; public class MobSpawnerProvider implements IBoundingBoxProvider { @Override @@ -16,7 +16,7 @@ public class MobSpawnerProvider implements IBoundingBoxProvider get(DimensionId dimensionId) { - return TileEntitiesHelper.map(MobSpawnerTileEntity.class, spawner -> { + return TileEntitiesHelper.map(MobSpawnerBlockEntity.class, spawner -> { Coords coords = new Coords(spawner.getPos()); return BoundingBoxMobSpawner.from(coords); }); diff --git a/src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java index a8d0302..ca4b5ca 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java @@ -8,7 +8,7 @@ import com.irtimaled.bbor.common.BoundingBoxType; import com.irtimaled.bbor.common.MathHelper; import com.irtimaled.bbor.common.models.Coords; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.util.SharedSeedRandom; +import net.minecraft.world.gen.ChunkRandom; import java.util.HashSet; import java.util.Set; @@ -23,7 +23,7 @@ public class SlimeChunkProvider implements IBoundingBoxProvider, ICachingProvider { - public static final Minecraft minecraft = Minecraft.getInstance(); + public static final MinecraftClient minecraft = MinecraftClient.getInstance(); private static Long lastGameTime = null; private static Set lastBoundingBox = null; @@ -38,7 +38,7 @@ public class SpawnableBlocksProvider implements IBoundingBoxProvider get(DimensionId dimensionId) { - long gameTime = minecraft.world.getGameTime(); + long gameTime = minecraft.world.getTime(); if (lastBoundingBox == null || (!((Long) gameTime).equals(lastGameTime) && gameTime % 2L == 0L)) { lastGameTime = gameTime; lastBoundingBox = getSpawnableBlocks(); diff --git a/src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java index d9782fa..ec0ee30 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java @@ -10,13 +10,13 @@ import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.BoundingBoxType; import com.irtimaled.bbor.common.MathHelper; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.client.Minecraft; +import net.minecraft.client.MinecraftClient; import java.util.HashSet; import java.util.Set; public class SpawningSphereProvider implements IBoundingBoxProvider, ICachingProvider { - public static final Minecraft minecraft = Minecraft.getInstance(); + public static final MinecraftClient minecraft = MinecraftClient.getInstance(); private static Long lastGameTime = null; private static Set lastBoundingBox = null; @@ -74,7 +74,7 @@ public class SpawningSphereProvider implements IBoundingBoxProvider get(DimensionId dimensionId) { - long gameTime = minecraft.world.getGameTime(); + long gameTime = minecraft.world.getTime(); if (lastBoundingBox == null || (!((Long) gameTime).equals(lastGameTime) && gameTime % 2L == 0L)) { lastGameTime = gameTime; lastBoundingBox = getSpawningSphere(); diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/AbstractRenderer.java b/src/main/java/com/irtimaled/bbor/client/renderers/AbstractRenderer.java index 26f2279..907c0a9 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/AbstractRenderer.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/AbstractRenderer.java @@ -4,8 +4,8 @@ import com.irtimaled.bbor.client.config.ConfigManager; import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.MathHelper; import com.irtimaled.bbor.common.models.AbstractBoundingBox; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; import java.awt.*; import java.util.function.Supplier; @@ -121,14 +121,14 @@ public abstract class AbstractRenderer { } void renderText(OffsetPoint offsetPoint, String... texts) { - FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; + TextRenderer fontRenderer = MinecraftClient.getInstance().textRenderer; RenderHelper.beforeRenderFont(offsetPoint); - float top = -(fontRenderer.FONT_HEIGHT * texts.length) / 2f; + float top = -(fontRenderer.fontHeight * texts.length) / 2f; for (String text : texts) { float left = fontRenderer.getStringWidth(text) / 2f; - fontRenderer.drawString(text, -left, top, -1); - top += fontRenderer.FONT_HEIGHT; + fontRenderer.draw(text, -left, top, -1); + top += fontRenderer.fontHeight; } RenderHelper.afterRenderFont(); } diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/RenderHelper.java b/src/main/java/com/irtimaled/bbor/client/renderers/RenderHelper.java index 8425226..c57de9a 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/RenderHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/RenderHelper.java @@ -2,7 +2,7 @@ package com.irtimaled.bbor.client.renderers; import com.irtimaled.bbor.client.config.ConfigManager; import com.mojang.blaze3d.platform.GlStateManager; -import net.minecraft.client.Minecraft; +import net.minecraft.client.MinecraftClient; import org.lwjgl.opengl.GL11; public class RenderHelper { @@ -20,7 +20,7 @@ public class RenderHelper { enableDepthTest(); if (ConfigManager.alwaysVisible.get()) { - GlStateManager.clear(GL11.GL_DEPTH_BUFFER_BIT, Minecraft.IS_RUNNING_ON_MAC); + GlStateManager.clear(GL11.GL_DEPTH_BUFFER_BIT, MinecraftClient.IS_SYSTEM_MAC); } } diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/Renderer.java b/src/main/java/com/irtimaled/bbor/client/renderers/Renderer.java index eb470b6..806731a 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/Renderer.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/Renderer.java @@ -1,10 +1,10 @@ package com.irtimaled.bbor.client.renderers; import com.irtimaled.bbor.client.Camera; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraft.client.render.BufferBuilder; +import net.minecraft.client.render.Tessellator; +import net.minecraft.client.render.VertexFormat; +import net.minecraft.client.render.VertexFormats; import java.awt.*; @@ -12,23 +12,23 @@ public class Renderer { private final int glMode; static Renderer startLines() { - return new Renderer(RenderHelper.LINES, DefaultVertexFormats.POSITION_COLOR); + return new Renderer(RenderHelper.LINES, VertexFormats.POSITION_COLOR); } static Renderer startLineLoop() { - return new Renderer(RenderHelper.LINE_LOOP, DefaultVertexFormats.POSITION_COLOR); + return new Renderer(RenderHelper.LINE_LOOP, VertexFormats.POSITION_COLOR); } static Renderer startQuads() { - return new Renderer(RenderHelper.QUADS, DefaultVertexFormats.POSITION_COLOR); + return new Renderer(RenderHelper.QUADS, VertexFormats.POSITION_COLOR); } static Renderer startPoints() { - return new Renderer(RenderHelper.POINTS, DefaultVertexFormats.POSITION_COLOR); + return new Renderer(RenderHelper.POINTS, VertexFormats.POSITION_COLOR); } public static Renderer startTextured() { - return new Renderer(RenderHelper.QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); + return new Renderer(RenderHelper.QUADS, VertexFormats.POSITION_TEXTURE_COLOR); } private static final Tessellator tessellator = new Tessellator(2097152); @@ -90,17 +90,17 @@ public class Renderer { public void render() { if (glMode == RenderHelper.QUADS) { - bufferBuilder.sortVertexData((float) Camera.getX(), (float) Camera.getY(), (float) Camera.getZ()); + bufferBuilder.sortQuads((float) Camera.getX(), (float) Camera.getY(), (float) Camera.getZ()); } tessellator.draw(); } private void pos(double x, double y, double z) { - bufferBuilder.pos(x, y, z); + bufferBuilder.vertex(x, y, z); } private void tex(double u, double v) { - bufferBuilder.tex(u, v); + bufferBuilder.texture(u, v); } private void color() { @@ -108,6 +108,6 @@ public class Renderer { } private void end() { - bufferBuilder.endVertex(); + bufferBuilder.next(); } } diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/SpawningSphereRenderer.java b/src/main/java/com/irtimaled/bbor/client/renderers/SpawningSphereRenderer.java index 1b9e555..1c07bbc 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/SpawningSphereRenderer.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/SpawningSphereRenderer.java @@ -7,7 +7,7 @@ import com.irtimaled.bbor.client.config.ConfigManager; import com.irtimaled.bbor.client.models.BoundingBoxSpawningSphere; import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.BoundingBoxType; -import net.minecraft.client.resources.I18n; +import net.minecraft.client.resource.language.I18n; import java.awt.*; @@ -27,9 +27,9 @@ public class SpawningSphereRenderer extends AbstractRenderer structureBoundingBoxes = new HashSet<>(); - for (StructurePiece structureComponent : structureStart.getComponents()) { + for (StructurePiece structureComponent : structureStart.getChildren()) { structureBoundingBoxes.add(buildStructure(structureComponent.getBoundingBox(), type)); } boundingBoxCache.addBoundingBoxes(boundingBox, structureBoundingBoxes); } - private AbstractBoundingBox buildStructure(MutableBoundingBox bb, BoundingBoxType type) { + private AbstractBoundingBox buildStructure(BlockBox bb, BoundingBoxType type) { Coords min = new Coords(bb.minX, bb.minY, bb.minZ); Coords max = new Coords(bb.maxX, bb.maxY, bb.maxZ); return BoundingBoxCuboid.from(min, max, type); diff --git a/src/main/java/com/irtimaled/bbor/common/events/StructuresLoaded.java b/src/main/java/com/irtimaled/bbor/common/events/StructuresLoaded.java index 05a5b21..1d03c50 100644 --- a/src/main/java/com/irtimaled/bbor/common/events/StructuresLoaded.java +++ b/src/main/java/com/irtimaled/bbor/common/events/StructuresLoaded.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.common.events; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.world.gen.feature.structure.StructureStart; +import net.minecraft.structure.StructureStart; import java.util.Map; diff --git a/src/main/java/com/irtimaled/bbor/common/events/WorldLoaded.java b/src/main/java/com/irtimaled/bbor/common/events/WorldLoaded.java index 6a84aa8..f96d4d7 100644 --- a/src/main/java/com/irtimaled/bbor/common/events/WorldLoaded.java +++ b/src/main/java/com/irtimaled/bbor/common/events/WorldLoaded.java @@ -1,8 +1,8 @@ package com.irtimaled.bbor.common.events; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.world.server.ServerWorld; -import net.minecraft.world.storage.WorldInfo; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.level.LevelProperties; public class WorldLoaded { private final DimensionId dimensionId; @@ -11,7 +11,7 @@ public class WorldLoaded { private final int spawnZ; public WorldLoaded(ServerWorld world) { - WorldInfo info = world.getWorldInfo(); + LevelProperties info = world.getLevelProperties(); this.dimensionId = DimensionId.from(world.getDimension().getType()); this.seed = info.getSeed(); this.spawnX = info.getSpawnX(); diff --git a/src/main/java/com/irtimaled/bbor/common/interop/CommonInterop.java b/src/main/java/com/irtimaled/bbor/common/interop/CommonInterop.java index b5c1eab..879eba1 100644 --- a/src/main/java/com/irtimaled/bbor/common/interop/CommonInterop.java +++ b/src/main/java/com/irtimaled/bbor/common/interop/CommonInterop.java @@ -4,18 +4,18 @@ import com.irtimaled.bbor.common.EventBus; import com.irtimaled.bbor.common.events.*; import com.irtimaled.bbor.common.models.DimensionId; import com.irtimaled.bbor.common.models.ServerPlayer; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.ServerPlayNetHandler; -import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.gen.feature.structure.StructureStart; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.network.ClientConnection; +import net.minecraft.server.network.ServerPlayNetworkHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.structure.StructureStart; +import net.minecraft.world.chunk.WorldChunk; import java.util.Collection; import java.util.Map; public class CommonInterop { - public static void chunkLoaded(Chunk chunk) { + public static void chunkLoaded(WorldChunk chunk) { DimensionId dimensionId = DimensionId.from(chunk.getWorld().getDimension().getType()); Map structures = chunk.getStructureStarts(); if (structures.size() > 0) EventBus.publish(new StructuresLoaded(structures, dimensionId)); @@ -36,11 +36,11 @@ public class CommonInterop { } public static void playerLoggedIn(ServerPlayerEntity player) { - ServerPlayNetHandler connection = player.connection; + ServerPlayNetworkHandler connection = player.networkHandler; if (connection == null) return; - NetworkManager networkManager = connection.netManager; - if (networkManager.isLocalChannel()) return; + ClientConnection networkManager = connection.connection; + if (networkManager.isLocal()) return; EventBus.publish(new PlayerLoggedIn(new ServerPlayer(player))); } diff --git a/src/main/java/com/irtimaled/bbor/common/messages/AddBoundingBox.java b/src/main/java/com/irtimaled/bbor/common/messages/AddBoundingBox.java index a34b704..2bf61c4 100644 --- a/src/main/java/com/irtimaled/bbor/common/messages/AddBoundingBox.java +++ b/src/main/java/com/irtimaled/bbor/common/messages/AddBoundingBox.java @@ -45,7 +45,7 @@ public class AddBoundingBox { if (name.equals(NAME)) return reader.readDimensionId(); int dimensionRawId = reader.readVarInt(); - DimensionType dimensionType = DimensionType.getById(dimensionRawId); + DimensionType dimensionType = DimensionType.byRawId(dimensionRawId); return DimensionId.from(dimensionType); } } diff --git a/src/main/java/com/irtimaled/bbor/common/messages/PayloadBuilder.java b/src/main/java/com/irtimaled/bbor/common/messages/PayloadBuilder.java index c94b315..831676c 100644 --- a/src/main/java/com/irtimaled/bbor/common/messages/PayloadBuilder.java +++ b/src/main/java/com/irtimaled/bbor/common/messages/PayloadBuilder.java @@ -3,40 +3,40 @@ package com.irtimaled.bbor.common.messages; import com.irtimaled.bbor.common.models.Coords; import com.irtimaled.bbor.common.models.DimensionId; import io.netty.buffer.Unpooled; -import net.minecraft.network.IPacket; -import net.minecraft.network.PacketBuffer; -import net.minecraft.network.play.client.CCustomPayloadPacket; -import net.minecraft.network.play.server.SCustomPayloadPlayPacket; -import net.minecraft.util.ResourceLocation; +import net.minecraft.network.Packet; +import net.minecraft.network.packet.c2s.play.CustomPayloadC2SPacket; +import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; +import net.minecraft.util.Identifier; +import net.minecraft.util.PacketByteBuf; import java.util.HashMap; import java.util.Map; import java.util.function.BiFunction; public class PayloadBuilder { - private static final Map packetNames = new HashMap<>(); + private static final Map packetNames = new HashMap<>(); static PayloadBuilder clientBound(String name) { - return new PayloadBuilder(packetNames.computeIfAbsent(name, ResourceLocation::new), SCustomPayloadPlayPacket::new); + return new PayloadBuilder(packetNames.computeIfAbsent(name, Identifier::new), CustomPayloadS2CPacket::new); } static PayloadBuilder serverBound(String name) { - return new PayloadBuilder(packetNames.computeIfAbsent(name, ResourceLocation::new), CCustomPayloadPacket::new); + return new PayloadBuilder(packetNames.computeIfAbsent(name, Identifier::new), CustomPayloadC2SPacket::new); } - private final ResourceLocation name; - private final BiFunction> packetBuilder; - private final PacketBuffer buffer; + private final Identifier name; + private final BiFunction> packetBuilder; + private final PacketByteBuf buffer; - private PayloadBuilder(ResourceLocation name, BiFunction> packetBuilder) { + private PayloadBuilder(Identifier name, BiFunction> packetBuilder) { this.name = name; - this.buffer = new PacketBuffer(Unpooled.buffer()); + this.buffer = new PacketByteBuf(Unpooled.buffer()); this.packetBuilder = packetBuilder; } - private IPacket packet; + private Packet packet; - public IPacket build() { + public Packet build() { if (packet == null) packet = packetBuilder.apply(name, buffer); return packet; @@ -73,7 +73,7 @@ public class PayloadBuilder { } public PayloadBuilder writeDimensionId(DimensionId dimensionId) { - buffer.writeResourceLocation(dimensionId.getValue()); + buffer.writeIdentifier(dimensionId.getValue()); packet = null; return this; } diff --git a/src/main/java/com/irtimaled/bbor/common/messages/PayloadReader.java b/src/main/java/com/irtimaled/bbor/common/messages/PayloadReader.java index 22974b7..22f3b70 100644 --- a/src/main/java/com/irtimaled/bbor/common/messages/PayloadReader.java +++ b/src/main/java/com/irtimaled/bbor/common/messages/PayloadReader.java @@ -2,12 +2,12 @@ package com.irtimaled.bbor.common.messages; import com.irtimaled.bbor.common.models.Coords; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.network.PacketBuffer; +import net.minecraft.util.PacketByteBuf; public class PayloadReader { - private final PacketBuffer buffer; + private final PacketByteBuf buffer; - public PayloadReader(PacketBuffer buffer) { + public PayloadReader(PacketByteBuf buffer) { this.buffer = buffer; } @@ -43,6 +43,6 @@ public class PayloadReader { } DimensionId readDimensionId() { - return DimensionId.from(buffer.readResourceLocation()); + return DimensionId.from(buffer.readIdentifier()); } } diff --git a/src/main/java/com/irtimaled/bbor/common/models/DimensionId.java b/src/main/java/com/irtimaled/bbor/common/models/DimensionId.java index fd81a22..fb76702 100644 --- a/src/main/java/com/irtimaled/bbor/common/models/DimensionId.java +++ b/src/main/java/com/irtimaled/bbor/common/models/DimensionId.java @@ -1,37 +1,37 @@ package com.irtimaled.bbor.common.models; -import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Identifier; import net.minecraft.world.dimension.DimensionType; import java.util.HashMap; import java.util.Map; public class DimensionId { - private static final Map dimensionIdMap = new HashMap<>(); + private static final Map dimensionIdMap = new HashMap<>(); public static DimensionId from(DimensionType dimensionType) { - return from(DimensionType.getKey(dimensionType)); + return from(DimensionType.getId(dimensionType)); } - public static DimensionId from(ResourceLocation value) { + public static DimensionId from(Identifier value) { return dimensionIdMap.computeIfAbsent(value, DimensionId::new); } public static DimensionId OVERWORLD = DimensionId.from(DimensionType.OVERWORLD); public static DimensionId NETHER = DimensionId.from(DimensionType.THE_NETHER); - private final ResourceLocation value; + private final Identifier value; - public DimensionId(ResourceLocation value) { + public DimensionId(Identifier value) { this.value = value; } - public ResourceLocation getValue() { + public Identifier getValue() { return value; } public DimensionType getDimensionType() { - return DimensionType.byName(value); + return DimensionType.byId(value); } @Override diff --git a/src/main/java/com/irtimaled/bbor/common/models/ServerPlayer.java b/src/main/java/com/irtimaled/bbor/common/models/ServerPlayer.java index ab3854c..6da6096 100644 --- a/src/main/java/com/irtimaled/bbor/common/models/ServerPlayer.java +++ b/src/main/java/com/irtimaled/bbor/common/models/ServerPlayer.java @@ -1,18 +1,18 @@ package com.irtimaled.bbor.common.models; import com.irtimaled.bbor.common.messages.PayloadBuilder; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.IPacket; +import net.minecraft.network.Packet; +import net.minecraft.server.network.ServerPlayerEntity; import java.util.function.Consumer; public class ServerPlayer { private final DimensionId dimensionId; - private final Consumer> packetConsumer; + private final Consumer> packetConsumer; public ServerPlayer(ServerPlayerEntity player) { this.dimensionId = DimensionId.from(player.dimension); - this.packetConsumer = player.connection::sendPacket; + this.packetConsumer = player.networkHandler::sendPacket; } public DimensionId getDimensionId() { diff --git a/src/main/java/com/irtimaled/bbor/install/Installer.java b/src/main/java/com/irtimaled/bbor/install/Installer.java deleted file mode 100644 index dcec4d4..0000000 --- a/src/main/java/com/irtimaled/bbor/install/Installer.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.irtimaled.bbor.install; - -import com.irtimaled.bbor.Versions; - -import javax.swing.*; -import java.io.File; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -public class Installer { - public static void install() { - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch (Throwable t) { - t.printStackTrace(); - } - - try { - String osName = getOsName(); - File minecraftFolder = getMinecraftFolder(osName); - String version = "BBOR-" + Versions.minecraft; - File versionFolder = new File(minecraftFolder, "versions/" + version + "/"); - versionFolder.mkdirs(); - - File versionJson = new File(versionFolder, version + ".json"); - Files.copy(Installer.class.getResourceAsStream("/profile.json"), versionJson.toPath(), StandardCopyOption.REPLACE_EXISTING); - - try { - File profilesJson = new File(minecraftFolder, "launcher_profiles.json"); - if (profilesJson.exists()) { - String identifier = "\"" + version.toLowerCase() + "\""; - String contents = new String(Files.readAllBytes(profilesJson.toPath())); - if (contents.contains(identifier)) { - contents = contents.replaceAll(",\n?\\s*" + identifier + "\\s*:\\s*\\{[^}]*},", ","); - contents = contents.replaceAll(",?\n?\\s*" + identifier + "\\s*:\\s*\\{[^}]*},?", ""); - } - - String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); - - contents = contents.replaceAll("([}],\n?\\s*\"profiles\"\\s*:\\s*[{]\n?)", "$1" + - " " + identifier + ": {\n" + - " \"name\": \"Bounding Box Outline Reloaded\",\n" + - " \"type\": \"custom\",\n" + - " \"created\": \"" + date + "T00:00:00.000Z\",\n" + - " \"lastUsed\": \"2100-01-01T00:00:00.000Z\",\n" + - " \"lastVersionId\": \"" + version + "\"\n" + - " },\n"); - - Files.write(profilesJson.toPath(), contents.getBytes()); - } - } catch (Throwable t) { - t.printStackTrace(); - } - - try { - String source = Installer.class.getProtectionDomain().getCodeSource().getLocation().getPath(); - if (source.startsWith("/") && osName.contains("win")) { - source = source.substring(1); - } - File mainJar = new File(minecraftFolder, "libraries/com/irtimaled/bbor/" + Versions.minecraft + "/" + version.toLowerCase() + ".jar"); - mainJar.getParentFile().mkdirs(); - Files.copy(Paths.get(source), mainJar.toPath(), StandardCopyOption.REPLACE_EXISTING); - } catch (Throwable t) { - t.printStackTrace(); - } - - JOptionPane.showMessageDialog(null, - "Bounding Box Outline Reloaded " + Versions.build + " for " + Versions.minecraft + " has been successfully installed!\n" + - "\n" + - "Re-open the Minecraft Launcher to see it in the dropdown.", - "Bounding Box Outline Reloaded Installer", JOptionPane.INFORMATION_MESSAGE); - } catch (Throwable t) { - StringWriter w = new StringWriter(); - t.printStackTrace(new PrintWriter(w)); - JOptionPane.showMessageDialog(null, - "An error occured while installing Bounding Box Outline Reloaded, please report this to the issue\n" + - "tracker (https://github.com/irtimaled/BoundingBoxOutlineReloaded/issues):\n" + - "\n" + - w.toString().replace("\t", " "), "Bounding Box Outline Reloaded Installer", JOptionPane.ERROR_MESSAGE); - } - } - - private static File getMinecraftFolder(String osName) { - File minecraftFolder; - if (osName.contains("win")) { - minecraftFolder = new File(System.getenv("APPDATA") + "/.minecraft"); - } else if (osName.contains("mac")) { - minecraftFolder = new File(System.getProperty("user.home") + "/Library/Application Support/minecraft"); - } else { - minecraftFolder = new File(System.getProperty("user.home") + "/.minecraft"); - } - return minecraftFolder; - } - - private static String getOsName() { - return System.getProperty("os.name").toLowerCase(Locale.ROOT); - } -} diff --git a/src/main/java/com/irtimaled/bbor/launch/ClientTweaker.java b/src/main/java/com/irtimaled/bbor/launch/ClientTweaker.java deleted file mode 100644 index 1d833ea..0000000 --- a/src/main/java/com/irtimaled/bbor/launch/ClientTweaker.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.irtimaled.bbor.launch; - -import java.io.File; -import java.util.List; - -public class ClientTweaker extends Tweaker { - @Override - protected void addOptions(List args, File gameDir, File assetsDir, String profile) { - if (!isOptifineLoaded()) { - super.addOptions(args, gameDir, assetsDir, profile); - addArg("--gameDir", gameDir != null ? gameDir.getAbsolutePath() : null); - addArg("--assetsDir", assetsDir != null ? assetsDir.getPath() : null); - addArg("--version", profile); - } - } - - private boolean isOptifineLoaded() { - try { - Class cls = Class.forName("optifine.OptiFineTweaker"); - return cls != null; - } catch (Throwable e) { - return false; - } - } - - @Override - public String getLaunchTarget() { - return "net.minecraft.client.main.Main"; - } - - @Override - protected boolean isClient() { - return true; - } -} diff --git a/src/main/java/com/irtimaled/bbor/launch/ServerTweaker.java b/src/main/java/com/irtimaled/bbor/launch/ServerTweaker.java deleted file mode 100644 index f214d0d..0000000 --- a/src/main/java/com/irtimaled/bbor/launch/ServerTweaker.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.irtimaled.bbor.launch; - -public class ServerTweaker extends Tweaker { - @Override - protected boolean isClient() { - return false; - } - - @Override - public String getLaunchTarget() { - return "net.minecraft.server.MinecraftServer"; - } -} diff --git a/src/main/java/com/irtimaled/bbor/launch/Tweaker.java b/src/main/java/com/irtimaled/bbor/launch/Tweaker.java deleted file mode 100644 index b7707d4..0000000 --- a/src/main/java/com/irtimaled/bbor/launch/Tweaker.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.irtimaled.bbor.launch; - -import net.minecraft.launchwrapper.ITweaker; -import net.minecraft.launchwrapper.LaunchClassLoader; -import org.spongepowered.asm.launch.MixinBootstrap; -import org.spongepowered.asm.mixin.MixinEnvironment; -import org.spongepowered.asm.mixin.Mixins; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -public abstract class Tweaker implements ITweaker { - private List args; - - @Override - public void acceptOptions(List args, File gameDir, File assetsDir, String profile) { - this.args = new ArrayList<>(); - addOptions(args, gameDir, assetsDir, profile); - } - - void addArg(String name, String value) { - if (value != null) { - args.add(name); - args.add(value); - } - } - - protected void addOptions(List args, File gameDir, File assetsDir, String profile) { - this.args.addAll(args); - } - - @Override - public void injectIntoClassLoader(LaunchClassLoader classLoader) { - MixinBootstrap.init(); - MixinEnvironment.getDefaultEnvironment().setSide(isClient() ? MixinEnvironment.Side.CLIENT : MixinEnvironment.Side.SERVER); - Mixins.addConfiguration("mixins.bbor.json"); - } - - protected abstract boolean isClient(); - - @Override - public String[] getLaunchArguments() { - return args.toArray(new String[0]); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/MixinGameSettings.java b/src/main/java/com/irtimaled/bbor/mixin/client/MixinGameSettings.java index 678a16b..96b81d2 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/MixinGameSettings.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/MixinGameSettings.java @@ -2,9 +2,8 @@ package com.irtimaled.bbor.mixin.client; import com.irtimaled.bbor.client.ClientProxy; import com.irtimaled.bbor.client.keyboard.KeyListener; -import net.minecraft.client.GameSettings; -import net.minecraft.client.Minecraft; -import net.minecraft.client.settings.KeyBinding; +import net.minecraft.client.options.GameOptions; +import net.minecraft.client.options.KeyBinding; import org.apache.commons.lang3.ArrayUtils; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -14,23 +13,20 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.io.File; - -@Mixin(GameSettings.class) +@Mixin(GameOptions.class) public abstract class MixinGameSettings { @Mutable @Final @Shadow - public KeyBinding[] keyBindings; + public KeyBinding[] keysAll; @Shadow - public abstract void loadOptions(); + public abstract void load(); @Inject(method = "", at = @At("RETURN")) - private void init(Minecraft minecraft, File file, CallbackInfo ci) { + private void init(CallbackInfo ci) { ClientProxy.registerKeyBindings(); - keyBindings = ArrayUtils.addAll(keyBindings, KeyListener.keyBindings()); - this.loadOptions(); + keysAll = ArrayUtils.addAll(keysAll, KeyListener.keyBindings()); + this.load(); } - } diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/MixinMinecraft.java b/src/main/java/com/irtimaled/bbor/mixin/client/MixinMinecraft.java index da293f8..ef0643c 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/MixinMinecraft.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/MixinMinecraft.java @@ -2,10 +2,10 @@ package com.irtimaled.bbor.mixin.client; import com.irtimaled.bbor.client.ClientProxy; import com.irtimaled.bbor.client.interop.ModPackFinder; -import net.minecraft.client.GameConfiguration; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.ClientResourcePackInfo; -import net.minecraft.resources.ResourcePackList; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.RunArgs; +import net.minecraft.client.resource.ClientResourcePackProfile; +import net.minecraft.resource.ResourcePackManager; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -13,17 +13,17 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(Minecraft.class) +@Mixin(MinecraftClient.class) public class MixinMinecraft { @Shadow @Final - private ResourcePackList resourcePackRepository; + private ResourcePackManager resourcePackManager; private ClientProxy clientProxy; @Inject(method = "", at = @At("RETURN")) - private void constructor(GameConfiguration configuration, CallbackInfo ci) { + private void constructor(RunArgs configuration, CallbackInfo ci) { clientProxy = new ClientProxy(); - this.resourcePackRepository.addPackFinder(new ModPackFinder()); + this.resourcePackManager.registerProvider(new ModPackFinder()); } @Inject(method = "init", at = @At("RETURN")) diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/entity/player/MixinClientPlayerEntity.java b/src/main/java/com/irtimaled/bbor/mixin/client/entity/player/MixinClientPlayerEntity.java index ad0aa28..dbf755f 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/entity/player/MixinClientPlayerEntity.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/entity/player/MixinClientPlayerEntity.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.mixin.client.entity.player; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.entity.player.ClientPlayerEntity; +import net.minecraft.client.network.ClientPlayerEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinChatScreen.java b/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinChatScreen.java index a348566..7bb80a0 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinChatScreen.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinChatScreen.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.mixin.client.gui.screen; import com.irtimaled.bbor.client.gui.ListScreen; -import net.minecraft.client.Minecraft; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ChatScreen; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -10,9 +10,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ChatScreen.class) public class MixinChatScreen { - @Inject(method = "keyPressed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;displayGuiScreen(Lnet/minecraft/client/gui/screen/Screen;)V", shift = At.Shift.BEFORE), cancellable = true) + @Inject(method = "keyPressed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;openScreen(Lnet/minecraft/client/gui/screen/Screen;)V", shift = At.Shift.BEFORE), cancellable = true) private void keyPressed(CallbackInfoReturnable cir) { - if (Minecraft.getInstance().currentScreen instanceof ListScreen) { + if (MinecraftClient.getInstance().currentScreen instanceof ListScreen) { cir.setReturnValue(true); cir.cancel(); } diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinOptionsScreen.java b/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinOptionsScreen.java index 39e07f2..7bd6c52 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinOptionsScreen.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinOptionsScreen.java @@ -1,15 +1,15 @@ package com.irtimaled.bbor.mixin.client.gui.screen; import com.irtimaled.bbor.client.gui.SettingsScreenButton; -import net.minecraft.client.gui.screen.OptionsScreen; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.Widget; +import net.minecraft.client.gui.screen.SettingsScreen; +import net.minecraft.client.gui.widget.AbstractButtonWidget; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(OptionsScreen.class) +@Mixin(SettingsScreen.class) public class MixinOptionsScreen extends Screen { private MixinOptionsScreen() { super(null); @@ -20,8 +20,7 @@ public class MixinOptionsScreen extends Screen { //shuffle middle buttons up by 12 px to make space int top = this.height / 6 + 42; int bottom = this.height / 6 + 168; - - for (Widget button : buttons) { + for (AbstractButtonWidget button : buttons) { if (button.y >= top && button.y < bottom) button.y -= 12; } diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/network/login/MixinClientLoginNetHandler.java b/src/main/java/com/irtimaled/bbor/mixin/client/network/login/MixinClientLoginNetHandler.java index 69fc156..b3b6739 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/network/login/MixinClientLoginNetHandler.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/network/login/MixinClientLoginNetHandler.java @@ -1,13 +1,13 @@ package com.irtimaled.bbor.mixin.client.network.login; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.network.login.ClientLoginNetHandler; +import net.minecraft.client.network.ClientLoginNetworkHandler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ClientLoginNetHandler.class) +@Mixin(ClientLoginNetworkHandler.class) public class MixinClientLoginNetHandler { @Inject(method = "onDisconnect", at = @At("HEAD")) private void onDisconnect(CallbackInfo ci) { diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/network/play/MixinClientPlayNetHandler.java b/src/main/java/com/irtimaled/bbor/mixin/client/network/play/MixinClientPlayNetHandler.java index 64232ba..6000c6c 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/network/play/MixinClientPlayNetHandler.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/network/play/MixinClientPlayNetHandler.java @@ -1,13 +1,13 @@ package com.irtimaled.bbor.mixin.client.network.play; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.network.play.ClientPlayNetHandler; +import net.minecraft.client.network.ClientPlayNetworkHandler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ClientPlayNetHandler.class) +@Mixin(ClientPlayNetworkHandler.class) public class MixinClientPlayNetHandler { @Inject(method = "onDisconnect", at = @At("HEAD")) private void onDisconnect(CallbackInfo ci) { diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinGameRenderer.java b/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinGameRenderer.java index 815bfe4..9ab3ffc 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinGameRenderer.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinGameRenderer.java @@ -1,8 +1,8 @@ package com.irtimaled.bbor.mixin.client.renderer; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.GameRenderer; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -14,10 +14,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public class MixinGameRenderer { @Shadow @Final - private Minecraft mc; + private MinecraftClient client; - @Inject(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/profiler/IProfiler;endStartSection(Ljava/lang/String;)V", args = "ldc=hand", shift = At.Shift.BEFORE)) + @Inject(method = "renderCenter(FJ)V", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", args = "ldc=hand", shift = At.Shift.BEFORE)) private void render(float partialTicks, long ignored, CallbackInfo ci) { - ClientInterop.render(partialTicks, this.mc.player); + ClientInterop.render(partialTicks, this.client.player); } } diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/settings/MixinKeyBinding.java b/src/main/java/com/irtimaled/bbor/mixin/client/settings/MixinKeyBinding.java index f03d0f5..c539332 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/settings/MixinKeyBinding.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/settings/MixinKeyBinding.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.mixin.client.settings; import com.irtimaled.bbor.client.keyboard.KeyListener; -import net.minecraft.client.settings.KeyBinding; +import net.minecraft.client.options.KeyBinding; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -12,9 +12,9 @@ import java.util.Map; public class MixinKeyBinding { @Final @Shadow - private static Map CATEGORY_ORDER; + private static Map categoryOrderMap; static { - CATEGORY_ORDER.put(KeyListener.Category, 0); + categoryOrderMap.put(KeyListener.Category, 0); } } diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/world/MixinClientWorld.java b/src/main/java/com/irtimaled/bbor/mixin/client/world/MixinClientWorld.java index caa8be7..a87dd75 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/world/MixinClientWorld.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/world/MixinClientWorld.java @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ClientWorld.class) public class MixinClientWorld { - @Inject(method = "sendQuittingDisconnectingPacket", at = @At("RETURN")) + @Inject(method = "disconnect", at = @At("RETURN")) private void sendQuittingDisconnectingPacket(CallbackInfo ci) { ClientInterop.disconnectedFromRemoteServer(); } diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCCustomPayloadPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCCustomPayloadPacket.java index ab8bf76..5f595c3 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCCustomPayloadPacket.java +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCCustomPayloadPacket.java @@ -2,26 +2,26 @@ package com.irtimaled.bbor.mixin.network.play.client; import com.irtimaled.bbor.common.interop.CommonInterop; import com.irtimaled.bbor.common.messages.SubscribeToServer; -import net.minecraft.network.play.IServerPlayNetHandler; -import net.minecraft.network.play.ServerPlayNetHandler; -import net.minecraft.network.play.client.CCustomPayloadPacket; -import net.minecraft.util.ResourceLocation; +import net.minecraft.network.listener.ServerPlayPacketListener; +import net.minecraft.network.packet.c2s.play.CustomPayloadC2SPacket; +import net.minecraft.server.network.ServerPlayNetworkHandler; +import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(CCustomPayloadPacket.class) +@Mixin(CustomPayloadC2SPacket.class) public class MixinCCustomPayloadPacket { @Shadow - private ResourceLocation channel; + private Identifier channel; - @Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/IServerPlayNetHandler;processCustomPayload(Lnet/minecraft/network/play/client/CCustomPayloadPacket;)V")) - private void processPacket(IServerPlayNetHandler netHandlerPlayServer, CCustomPayloadPacket packet) { + @Redirect(method = "apply", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/listener/ServerPlayPacketListener;onCustomPayload(Lnet/minecraft/network/packet/c2s/play/CustomPayloadC2SPacket;)V")) + private void processPacket(ServerPlayPacketListener netHandlerPlayServer, CustomPayloadC2SPacket packet) { if (this.channel.toString().equals(SubscribeToServer.NAME)) { - CommonInterop.playerSubscribed(((ServerPlayNetHandler) netHandlerPlayServer).player); + CommonInterop.playerSubscribed(((ServerPlayNetworkHandler) netHandlerPlayServer).player); } else { - netHandlerPlayServer.processCustomPayload(packet); + netHandlerPlayServer.onCustomPayload(packet); } } } diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChatPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChatPacket.java index 70b279e..ec61484 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChatPacket.java +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChatPacket.java @@ -1,21 +1,21 @@ package com.irtimaled.bbor.mixin.network.play.server; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.network.play.server.SChatPacket; -import net.minecraft.util.text.ITextComponent; +import net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket; +import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(SChatPacket.class) +@Mixin(ChatMessageS2CPacket.class) public class MixinSChatPacket { @Shadow - private ITextComponent chatComponent; + private Text message; - @Inject(method = "processPacket", at = @At("RETURN")) + @Inject(method = "apply", at = @At("RETURN")) private void processPacket(CallbackInfo ci) { - ClientInterop.handleSeedMessage(this.chatComponent); + ClientInterop.handleSeedMessage(this.message); } } diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChunkDataPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChunkDataPacket.java index ef2525f..703e23e 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChunkDataPacket.java +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChunkDataPacket.java @@ -1,15 +1,15 @@ package com.irtimaled.bbor.mixin.network.play.server; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.network.play.IClientPlayNetHandler; -import net.minecraft.network.play.server.SChunkDataPacket; +import net.minecraft.network.listener.ClientPlayPacketListener; +import net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(SChunkDataPacket.class) +@Mixin(ChunkDataS2CPacket.class) public class MixinSChunkDataPacket { @Shadow private int chunkX; @@ -17,8 +17,8 @@ public class MixinSChunkDataPacket { @Shadow private int chunkZ; - @Inject(method = "processPacket", at = @At("RETURN")) - private void processPacket(IClientPlayNetHandler netHandlerPlayClient, CallbackInfo ci) { + @Inject(method = "apply", at = @At("RETURN")) + private void processPacket(ClientPlayPacketListener netHandlerPlayClient, CallbackInfo ci) { ClientInterop.receivedChunk(this.chunkX, this.chunkZ); } } diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCommandListPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCommandListPacket.java index 6fbb58b..8496150 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCommandListPacket.java +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCommandListPacket.java @@ -2,19 +2,19 @@ package com.irtimaled.bbor.mixin.network.play.server; import com.irtimaled.bbor.client.interop.ClientInterop; import com.irtimaled.bbor.common.TypeHelper; -import net.minecraft.client.network.play.ClientPlayNetHandler; -import net.minecraft.client.network.play.IClientPlayNetHandler; -import net.minecraft.network.play.server.SCommandListPacket; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.network.listener.ClientPlayPacketListener; +import net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(SCommandListPacket.class) +@Mixin(CommandTreeS2CPacket.class) public class MixinSCommandListPacket { - @Inject(method = "processPacket", at = @At("RETURN")) - private void processPacket(IClientPlayNetHandler netHandlerPlayClient, CallbackInfo ci) { - TypeHelper.doIfType(netHandlerPlayClient, ClientPlayNetHandler.class, handler -> + @Inject(method = "apply", at = @At("RETURN")) + private void processPacket(ClientPlayPacketListener netHandlerPlayClient, CallbackInfo ci) { + TypeHelper.doIfType(netHandlerPlayClient, ClientPlayNetworkHandler.class, handler -> ClientInterop.registerClientCommands(handler.getCommandDispatcher()) ); } diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCustomPayloadPlayPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCustomPayloadPlayPacket.java index 137dba1..2ed87c3 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCustomPayloadPlayPacket.java +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCustomPayloadPlayPacket.java @@ -5,33 +5,33 @@ import com.irtimaled.bbor.common.messages.AddBoundingBox; import com.irtimaled.bbor.common.messages.InitializeClient; import com.irtimaled.bbor.common.messages.PayloadReader; import com.irtimaled.bbor.common.messages.SubscribeToServer; -import net.minecraft.client.network.play.ClientPlayNetHandler; -import net.minecraft.client.network.play.IClientPlayNetHandler; -import net.minecraft.network.PacketBuffer; -import net.minecraft.network.play.server.SCustomPayloadPlayPacket; -import net.minecraft.util.ResourceLocation; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.network.listener.ClientPlayPacketListener; +import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; +import net.minecraft.util.Identifier; +import net.minecraft.util.PacketByteBuf; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(SCustomPayloadPlayPacket.class) +@Mixin(CustomPayloadS2CPacket.class) public abstract class MixinSCustomPayloadPlayPacket { @Shadow - private ResourceLocation channel; + private Identifier channel; - @Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/play/IClientPlayNetHandler;handleCustomPayload(Lnet/minecraft/network/play/server/SCustomPayloadPlayPacket;)V")) - private void processPacket(IClientPlayNetHandler netHandlerPlayClient, SCustomPayloadPlayPacket packet) { + @Redirect(method = "apply", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/listener/ClientPlayPacketListener;onCustomPayload(Lnet/minecraft/network/packet/s2c/play/CustomPayloadS2CPacket;)V")) + private void processPacket(ClientPlayPacketListener netHandlerPlayClient, CustomPayloadS2CPacket packet) { String channelName = channel.toString(); if (channelName.startsWith("bbor:")) { - PacketBuffer data = null; + PacketByteBuf data = null; try { - data = packet.getBufferData(); + data = packet.getData(); PayloadReader reader = new PayloadReader(data); switch (channelName) { case InitializeClient.NAME: { EventBus.publish(InitializeClient.getEvent(reader)); - ((ClientPlayNetHandler) netHandlerPlayClient).sendPacket(SubscribeToServer.getPayload().build()); + ((ClientPlayNetworkHandler) netHandlerPlayClient).sendPacket(SubscribeToServer.getPayload().build()); break; } case AddBoundingBox.NAME: @@ -45,7 +45,7 @@ public abstract class MixinSCustomPayloadPlayPacket { data.release(); } } else { - netHandlerPlayClient.handleCustomPayload(packet); + netHandlerPlayClient.onCustomPayload(packet); } } } diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSSpawnPositionPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSSpawnPositionPacket.java index fb8ae64..36afaa9 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSSpawnPositionPacket.java +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSSpawnPositionPacket.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.mixin.network.play.server; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.network.play.server.SSpawnPositionPacket; +import net.minecraft.network.packet.s2c.play.PlayerSpawnPositionS2CPacket; import net.minecraft.util.math.BlockPos; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -9,13 +9,13 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(SSpawnPositionPacket.class) +@Mixin(PlayerSpawnPositionS2CPacket.class) public abstract class MixinSSpawnPositionPacket { @Shadow - private BlockPos spawnBlockPos; + private BlockPos pos; - @Inject(method = "processPacket", at = @At("RETURN")) + @Inject(method = "apply", at = @At("RETURN")) private void afterProcessPacket(CallbackInfo ci) { - ClientInterop.updateWorldSpawnReceived(spawnBlockPos); + ClientInterop.updateWorldSpawnReceived(pos); } } diff --git a/src/main/java/com/irtimaled/bbor/mixin/server/MixinMinecraftServer.java b/src/main/java/com/irtimaled/bbor/mixin/server/MixinMinecraftServer.java index b669222..257aed8 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/server/MixinMinecraftServer.java +++ b/src/main/java/com/irtimaled/bbor/mixin/server/MixinMinecraftServer.java @@ -2,8 +2,8 @@ package com.irtimaled.bbor.mixin.server; import com.irtimaled.bbor.common.interop.CommonInterop; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.server.ServerWorld; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -19,7 +19,7 @@ public class MixinMinecraftServer { @Final private Map worlds; - @Inject(method = "loadInitialChunks", at = @At("HEAD")) + @Inject(method = "prepareStartRegion", at = @At("HEAD")) private void initialWorldChunkLoad(CallbackInfo ci) { CommonInterop.loadWorlds(worlds.values()); } diff --git a/src/main/java/com/irtimaled/bbor/mixin/server/dedicated/MixinDedicatedServer.java b/src/main/java/com/irtimaled/bbor/mixin/server/dedicated/MixinDedicatedServer.java index 193bb81..4a4ad20 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/server/dedicated/MixinDedicatedServer.java +++ b/src/main/java/com/irtimaled/bbor/mixin/server/dedicated/MixinDedicatedServer.java @@ -1,15 +1,15 @@ package com.irtimaled.bbor.mixin.server.dedicated; import com.irtimaled.bbor.common.CommonProxy; -import net.minecraft.server.dedicated.DedicatedServer; +import net.minecraft.server.dedicated.MinecraftDedicatedServer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(DedicatedServer.class) +@Mixin(MinecraftDedicatedServer.class) public class MixinDedicatedServer { - @Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/dedicated/DedicatedServer;loadAllWorlds(Ljava/lang/String;Ljava/lang/String;JLnet/minecraft/world/WorldType;Lcom/google/gson/JsonElement;)V")) + @Inject(method = "setupServer", at = @At(value = "NEW", target = "net/minecraft/server/dedicated/DedicatedPlayerManager")) private void init(CallbackInfoReturnable cir) { new CommonProxy().init(); } diff --git a/src/main/java/com/irtimaled/bbor/mixin/server/management/MixinPlayerList.java b/src/main/java/com/irtimaled/bbor/mixin/server/management/MixinPlayerList.java index e296394..ef43ff8 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/server/management/MixinPlayerList.java +++ b/src/main/java/com/irtimaled/bbor/mixin/server/management/MixinPlayerList.java @@ -1,22 +1,22 @@ package com.irtimaled.bbor.mixin.server.management; import com.irtimaled.bbor.common.interop.CommonInterop; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.NetworkManager; -import net.minecraft.server.management.PlayerList; +import net.minecraft.network.ClientConnection; +import net.minecraft.server.PlayerManager; +import net.minecraft.server.network.ServerPlayerEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(PlayerList.class) +@Mixin(PlayerManager.class) public class MixinPlayerList { - @Inject(method = "initializeConnectionToPlayer", at = @At("RETURN")) - private void playerLoggedIn(NetworkManager networkManager, ServerPlayerEntity player, CallbackInfo ci) { + @Inject(method = "onPlayerConnect", at = @At("RETURN")) + private void playerLoggedIn(ClientConnection netManager, ServerPlayerEntity player, CallbackInfo ci) { CommonInterop.playerLoggedIn(player); } - @Inject(method = "playerLoggedOut", at = @At("HEAD")) + @Inject(method = "remove", at = @At("HEAD")) private void playerLoggedOut(ServerPlayerEntity player, CallbackInfo ci) { CommonInterop.playerLoggedOut(player); } diff --git a/src/main/java/com/irtimaled/bbor/mixin/world/chunk/MixinChunk.java b/src/main/java/com/irtimaled/bbor/mixin/world/chunk/MixinChunk.java index dc5f146..5906a33 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/world/chunk/MixinChunk.java +++ b/src/main/java/com/irtimaled/bbor/mixin/world/chunk/MixinChunk.java @@ -1,16 +1,16 @@ package com.irtimaled.bbor.mixin.world.chunk; import com.irtimaled.bbor.common.interop.CommonInterop; -import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.WorldChunk; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(Chunk.class) +@Mixin(WorldChunk.class) public class MixinChunk { - @Inject(method = "func_217318_w", at = @At("RETURN")) + @Inject(method = "loadToWorld", at = @At("RETURN")) private void onLoad(CallbackInfo ci) { - CommonInterop.chunkLoaded((Chunk) (Object) this); + CommonInterop.chunkLoaded((WorldChunk) (Object) this); } } diff --git a/src/main/java/com/irtimaled/bbor/server/ServerRunner.java b/src/main/java/com/irtimaled/bbor/server/ServerRunner.java deleted file mode 100644 index 79aa871..0000000 --- a/src/main/java/com/irtimaled/bbor/server/ServerRunner.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.irtimaled.bbor.server; - -import com.irtimaled.bbor.Versions; -import net.minecraft.launchwrapper.Launch; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.nio.channels.Channels; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class ServerRunner { - private static final Map VANILLA_SERVER_JARS = new HashMap<>(); - - private static final String[] LIBRARIES = { - "https://github.com/irtimaled/Mixin/releases/download/org/spongepowered/mixin/0.7.11-SNAPSHOT/mixin-0.7.11-SNAPSHOT.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm/6.2/asm-6.2.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/6.2/asm-commons-6.2.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/6.2/asm-tree-6.2.jar", - "https://libraries.minecraft.net/net/minecraft/launchwrapper/1.12/launchwrapper-1.12.jar" - }; - - private static final ThrowableConsumer addURL; - - static { - VANILLA_SERVER_JARS.put("1.14.4", "https://launcher.mojang.com/v1/objects/3dc3d84a581f14691199cf6831b71ed1296a9fdf/server.jar"); - VANILLA_SERVER_JARS.put("1.14.2", "https://launcher.mojang.com/v1/objects/808be3869e2ca6b62378f9f4b33c946621620019/server.jar"); - VANILLA_SERVER_JARS.put("1.13.2", "https://launcher.mojang.com/v1/objects/3737db93722a9e39eeada7c27e7aca28b144ffa7/server.jar"); - - try { - Method method = URLClassLoader.class - .getDeclaredMethod("addURL", URL.class); - method.setAccessible(true); - addURL = url -> method.invoke(ClassLoader.getSystemClassLoader(), url); - } catch (ReflectiveOperationException e) { - throw new AssertionError(e); - } - } - - private static void addURLToClasspath(File file) throws MalformedURLException { - addURL.accept(file.toURI().toURL()); - } - - public static void run(List args) throws IOException { - String serverJarUrl = VANILLA_SERVER_JARS.get(Versions.minecraft); - - addURLToClasspath(getOrDownload(new File("."), serverJarUrl)); - for (String url : LIBRARIES) { - addURLToClasspath(getOrDownload(new File("libs"), url)); - } - - args = new ArrayList<>(args); - args.add("--tweakClass"); - args.add("com.irtimaled.bbor.launch.ServerTweaker"); - - System.out.println("Launching server..."); - Launch.main(args.toArray(new String[0])); - } - - private static File getOrDownload(File directory, String url) throws IOException { - String fileName = url.substring(url.lastIndexOf('/') + 1); - File target = new File(directory, fileName); - if (target.isFile()) { - return target; - } - target.getParentFile().mkdirs(); - - System.out.println("Downloading library: " + url); - new FileOutputStream(target).getChannel() - .transferFrom(Channels.newChannel(new URL(url).openStream()), 0, Long.MAX_VALUE); - - return target; - } -} diff --git a/src/main/java/com/irtimaled/bbor/server/ThrowableConsumer.java b/src/main/java/com/irtimaled/bbor/server/ThrowableConsumer.java deleted file mode 100644 index 77c0324..0000000 --- a/src/main/java/com/irtimaled/bbor/server/ThrowableConsumer.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.irtimaled.bbor.server; - -import com.irtimaled.bbor.common.TypeHelper; - -import java.util.function.Consumer; - -public interface ThrowableConsumer extends Consumer { - @Override - default void accept(final T elem) { - try { - acceptThrows(elem); - } catch (final Throwable t) { - throw TypeHelper.as(t, RuntimeException.class, () -> new RuntimeException(t)); - } - } - - void acceptThrows(T elem) throws Throwable; -} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..b9d605b --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,13 @@ +{ + "schemaVersion": 1, + "id": "bbor", + "name": "BoundingBoxOutlineReloaded", + "description": "Shows the bounding boxes of structures and features.", + "authors": [ + "Irtimaled" + ], + "version": "$version", + "mixins": [ + "mixins.bbor.json" + ] +} diff --git a/src/main/resources/profile.json b/src/main/resources/profile.json deleted file mode 100644 index 536f1e9..0000000 --- a/src/main/resources/profile.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "inheritsFrom": "${mcVersion}", - "id": "BBOR-${mcVersion}", - "jar": "${mcVersion}", - "time": "${formattedTime}", - "type": "release", - "arguments": { - "game": [ - "--tweakClass", - "${tweakClass}" - ] - }, - "mainClass": "net.minecraft.launchwrapper.Launch", - "libraries": [ - { - "name": "com.irtimaled:bbor:${mcVersion}", - "url": "https://github.com/irtimaled/maven/releases/download/" - }, - { - "name": "org.spongepowered:mixin:0.8", - "url": "https://github.com/irtimaled/maven/releases/download/" - }, - { - "name": "org.ow2.asm:asm:6.2", - "url": "https://repo1.maven.org/maven2/" - }, - { - "name": "org.ow2.asm:asm-tree:6.2", - "url": "https://repo1.maven.org/maven2/" - }, - { - "name": "org.ow2.asm:asm-commons:6.2", - "url": "https://repo1.maven.org/maven2/" - }, - { - "name": "org.ow2.asm:asm-util:6.2", - "url": "https://repo1.maven.org/maven2/" - }, - { - "name": "org.ow2.asm:asm-analysis:6.2", - "url": "https://repo1.maven.org/maven2/" - }, - { - "name": "net.minecraft:launchwrapper:1.12" - } - ] -} \ No newline at end of file -- 2.44.0