From 3bbecd6bf188fb695b28cc933340feb6ab39f03a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 22 Jun 2022 22:31:31 +0200 Subject: [PATCH] Port to 1.19 --- gradle.properties | 2 +- .../bbor/client/commands/CommandHelper.java | 5 ++-- .../bbor/client/gui/AbstractControl.java | 7 +++-- .../bbor/client/gui/IntSettingSlider.java | 5 ++-- .../irtimaled/bbor/client/gui/ListScreen.java | 11 ++++---- .../bbor/client/gui/LoadSavesScreen.java | 5 ++-- .../bbor/client/gui/SearchField.java | 7 +++-- .../bbor/client/gui/WorldSaveRow.java | 18 ++++-------- .../bbor/client/interop/ClientInterop.java | 28 ++++++++++--------- .../client/interop/FlowerForestHelper.java | 5 ++-- .../client/interop/NBTStructureLoader.java | 2 +- .../client/interop/SpawnableBlocksHelper.java | 11 +++++--- .../client/providers/SlimeChunkProvider.java | 4 +-- .../bbor/client/renderers/RenderBatch.java | 12 ++++---- .../bbor/common/interop/CommonInterop.java | 14 +++++----- .../irtimaled/bbor/mixin/access/IBiome.java | 13 --------- .../network/play/server/MixinSChatPacket.java | 4 +-- src/main/resources/bbor.mixins.json | 1 - 18 files changed, 72 insertions(+), 82 deletions(-) delete mode 100644 src/main/java/com/irtimaled/bbor/mixin/access/IBiome.java diff --git a/gradle.properties b/gradle.properties index 56d829f..c551278 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs=-Xmx4G name=bbor buildVersion=2.4 # leave a space to reduce merge conflicts on version change -mcVersion=1.18.2 +mcVersion=1.19 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 810fbe8..b20c711 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/CommandHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/CommandHelper.java @@ -5,11 +5,12 @@ import com.mojang.brigadier.context.ParsedCommandNode; import com.mojang.brigadier.tree.CommandNode; import com.mojang.brigadier.tree.LiteralCommandNode; import net.minecraft.server.command.ServerCommandSource; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.MutableText; +import net.minecraft.text.TranslatableTextContent; class CommandHelper { static void feedback(CommandContext context, String format, Object... values) { - context.getSource().sendFeedback(new TranslatableText(format, values), false); + context.getSource().sendFeedback(MutableText.of(new TranslatableTextContent(format, values)), false); } static boolean lastNodeIsLiteral(CommandContext context, String literal) { 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 3dc6996..d367a97 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/AbstractControl.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/AbstractControl.java @@ -3,7 +3,8 @@ package com.irtimaled.bbor.client.gui; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.LiteralText; +import net.minecraft.text.LiteralTextContent; +import net.minecraft.text.MutableText; import java.awt.*; @@ -12,7 +13,7 @@ abstract class AbstractControl extends ClickableWidget implements IControl { protected final MinecraftClient minecraft; AbstractControl(int x, int y, int width, String name) { - super(x, y, width, 20, new LiteralText(name)); + super(x, y, width, 20, MutableText.of(new LiteralTextContent(name))); this.minecraft = MinecraftClient.getInstance(); } @@ -51,7 +52,7 @@ abstract class AbstractControl extends ClickableWidget implements IControl { } public void filter(String lowerValue) { - String lowerString = this.getMessage().asString().toLowerCase(); + String lowerString = this.getMessage().asTruncatedString(256).toLowerCase(); this.visible = lowerValue.equals("") || lowerString.startsWith(lowerValue) || lowerString.contains(" " + lowerValue); 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 a681e6d..5c42a59 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java @@ -3,7 +3,8 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.config.Setting; import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; import net.minecraft.client.resource.language.I18n; -import net.minecraft.text.LiteralText; +import net.minecraft.text.LiteralTextContent; +import net.minecraft.text.MutableText; import java.util.HashMap; import java.util.Map; @@ -42,7 +43,7 @@ class IntSettingSlider extends AbstractSlider { private void updateText() { Integer value = setting.get(); - this.setMessage(new LiteralText(I18n.translate(format, displayValues.getOrDefault(value, value.toString())))); + this.setMessage(MutableText.of(new LiteralTextContent(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 447b9cb..f2e55c7 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java @@ -7,8 +7,9 @@ import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.LiteralText; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.LiteralTextContent; +import net.minecraft.text.MutableText; +import net.minecraft.text.TranslatableTextContent; import java.util.List; @@ -21,7 +22,7 @@ public abstract class ListScreen extends Screen { private SearchField searchField; ListScreen(Screen lastScreen) { - super(new LiteralText("Bounding Box Outline Reloaded")); + super(MutableText.of(new LiteralTextContent("Bounding Box Outline Reloaded"))); this.lastScreen = lastScreen; } @@ -37,7 +38,7 @@ public abstract class ListScreen extends Screen { protected void init() { this.controlList = this.buildList(48, this.height - 28); this.searchField = new SearchField(this.textRenderer, this.width / 2 - 100, 22, 200, 20, this.controlList); - this.doneButton = new ButtonWidget(this.width / 2 - 100, this.height - 24, 200, 20, new TranslatableText("gui.done"), buttonWidget -> onDoneClicked()); + this.doneButton = new ButtonWidget(this.width / 2 - 100, this.height - 24, 200, 20, MutableText.of(new TranslatableTextContent("gui.done")), buttonWidget -> onDoneClicked()); this.addDrawableChild(this.searchField); ((List) this.children()).add(this.controlList); @@ -56,7 +57,7 @@ public abstract class ListScreen extends Screen { this.renderBackground(matrixStack); this.controlList.render(matrixStack, mouseX, mouseY); - this.drawCenteredText(matrixStack, this.textRenderer, this.title.asString(), this.width / 2, 8, 16777215); + this.drawCenteredText(matrixStack, this.textRenderer, this.title.asTruncatedString(256), this.width / 2, 8, 16777215); this.searchField.render(matrixStack, mouseX, mouseY); this.doneButton.render(matrixStack, mouseX, mouseY, 0f); 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 ed3b5d1..4f16bf1 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java @@ -9,6 +9,7 @@ import net.minecraft.world.level.storage.LevelStorageException; import net.minecraft.world.level.storage.LevelSummary; import java.util.List; +import java.util.concurrent.ExecutionException; public class LoadSavesScreen extends ListScreen { private SelectableControlList controlList; @@ -26,10 +27,10 @@ public class LoadSavesScreen extends ListScreen { controlList = new SelectableControlList(this.width, this.height, top, bottom); try { final LevelStorage saveLoader = this.client.getLevelStorage(); - List saveList = saveLoader.getLevelList(); + List saveList = saveLoader.loadSummaries(saveLoader.getLevelList()).get(); saveList.sort(null); saveList.forEach(world -> controlList.add(new WorldSaveRow(world, saveLoader, controlList::setSelectedEntry))); - } catch (LevelStorageException e) { + } catch (LevelStorageException | InterruptedException | ExecutionException e) { e.printStackTrace(); } return controlList; 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 402bea9..b108120 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/SearchField.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/SearchField.java @@ -3,17 +3,18 @@ package com.irtimaled.bbor.client.gui; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.LiteralText; +import net.minecraft.text.LiteralTextContent; +import net.minecraft.text.MutableText; public class SearchField extends TextFieldWidget implements IControl { private final ControlList controlList; SearchField(TextRenderer fontRenderer, int left, int top, int width, int height, ControlList controlList) { - super(fontRenderer, left, top, width, height, new LiteralText("")); + super(fontRenderer, left, top, width, height, MutableText.of(new LiteralTextContent(""))); this.controlList = controlList; this.setChangedListener(text -> this.controlList.filter(removeLeadingSpaces(text.toLowerCase()))); - this.setRenderTextProvider((text, id) -> new LiteralText(removeLeadingSpaces(text)).asOrderedText()); + this.setRenderTextProvider((text, id) -> MutableText.of(new LiteralTextContent(removeLeadingSpaces(text))).asOrderedText()); this.setFocused(true); } 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 3c8aca2..d298e3c 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/WorldSaveRow.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/WorldSaveRow.java @@ -21,6 +21,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Path; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -38,7 +39,7 @@ public class WorldSaveRow extends ControlListEntry implements Comparable setSelectedEntry) { @@ -46,11 +47,8 @@ public class WorldSaveRow extends ControlListEntry implements Comparable= 0) { - MutableText suggestion = new LiteralText("") + MutableText suggestion = MutableText.of(new LiteralTextContent("")) .formatted(Formatting.GRAY) .styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, message))); int textLength = Math.min(exception.getInput().length(), exception.getCursor()); @@ -63,11 +63,11 @@ public class ClientInterop { suggestion.append(exception.getInput().substring(Math.max(0, textLength - 10), textLength)); if (textLength < exception.getInput().length()) { - suggestion.append(new LiteralText(exception.getInput().substring(textLength)) + suggestion.append(MutableText.of(new LiteralTextContent(exception.getInput().substring(textLength))) .formatted(Formatting.RED, Formatting.UNDERLINE)); } - suggestion.append(new TranslatableText("command.context.here") + suggestion.append(MutableText.of(new TranslatableTextContent("command.context.here")) .formatted(Formatting.RED, Formatting.ITALIC)); commandSource.sendError(suggestion); } @@ -83,18 +83,20 @@ public class ClientInterop { } public static int getRenderDistanceChunks() { - return MinecraftClient.getInstance().options.viewDistance; + return MinecraftClient.getInstance().options.getViewDistance().getValue(); } public static void handleSeedMessage(Text chatComponent) { - TypeHelper.doIfType(chatComponent, TranslatableText.class, message -> { - if (!message.getKey().equals("commands.seed.success")) return; + TypeHelper.doIfType(chatComponent, MutableText.class, message -> { + TypeHelper.doIfType(message.getContent(), TranslatableTextContent.class, content -> { + if (!content.getKey().equals("commands.seed.success")) return; - try { - long seed = Long.parseLong(message.getArgs()[0].toString()); - SlimeChunkProvider.setSeed(seed); - } catch (Exception ignored) { - } + try { + long seed = Long.parseLong(content.getArgs()[0].toString()); + SlimeChunkProvider.setSeed(seed); + } catch (Exception ignored) { + } + }); }); } 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 f15f4f9..e95fbeb 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/FlowerForestHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/FlowerForestHelper.java @@ -8,6 +8,8 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; +import net.minecraft.util.math.random.CheckedRandom; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeKeys; @@ -20,10 +22,9 @@ import net.minecraft.world.gen.stateprovider.BlockStateProvider; import java.util.HashMap; import java.util.Map; -import java.util.Random; public class FlowerForestHelper { - private static final Random random = new Random(); + private static final Random random = new CheckedRandom(new java.util.Random().nextLong()); private static final Map> flowerColorMap = new HashMap<>(); 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 d8c8143..47e049a 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/NBTStructureLoader.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/NBTStructureLoader.java @@ -14,6 +14,7 @@ import net.minecraft.structure.StructureStart; import net.minecraft.util.math.BlockBox; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; +import net.minecraft.util.math.random.Random; import net.minecraft.world.FeatureUpdater; import net.minecraft.world.PersistentStateManager; import net.minecraft.world.StructureWorldAccess; @@ -31,7 +32,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Random; import java.util.Set; import java.util.function.BiFunction; 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 6d44fcd..2b6818f 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/SpawnableBlocksHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/SpawnableBlocksHelper.java @@ -1,19 +1,21 @@ package com.irtimaled.bbor.client.interop; import com.irtimaled.bbor.common.models.Coords; -import com.irtimaled.bbor.mixin.access.IBiome; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnGroup; +import net.minecraft.tag.BiomeTags; import net.minecraft.tag.BlockTags; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.LightType; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeKeys; public class SpawnableBlocksHelper { private static final EntityType entityType = EntityType.Builder.create(SpawnGroup.MONSTER) @@ -50,9 +52,10 @@ public class SpawnableBlocksHelper { static boolean isSpawnable(World world, BlockPos pos, BlockState spawnBlockState, BlockState upperBlockState) { VoxelShape collisionShape = upperBlockState.getCollisionShape(world, pos); - Biome biome = world.getBiome(pos).value(); - boolean isNether = ((IBiome) biome).bbor$getCategory() == Biome.Category.NETHER; - return ((IBiome) biome).bbor$getCategory() != Biome.Category.MUSHROOM && + RegistryEntry entry = world.getBiome(pos); + Biome biome = entry.value(); + boolean isNether = entry.isIn(BiomeTags.IS_NETHER); + return entry == BiomeKeys.MUSHROOM_FIELDS && spawnBlockState.allowsSpawning(world, pos.down(), isNether ? EntityType.ZOMBIFIED_PIGLIN : entityType) && !Block.isFaceFullSquare(collisionShape, Direction.UP) && !upperBlockState.emitsRedstonePower() && 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 c22b462..8423416 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java @@ -10,7 +10,7 @@ import com.irtimaled.bbor.common.models.Coords; import com.irtimaled.bbor.common.models.DimensionId; import net.minecraft.client.MinecraftClient; import net.minecraft.client.world.ClientWorld; -import net.minecraft.world.gen.random.ChunkRandom; +import net.minecraft.util.math.random.ChunkRandom; import java.util.HashSet; import java.util.Set; @@ -44,7 +44,7 @@ public class SlimeChunkProvider implements IBoundingBoxProvider structures = new HashMap<>(); - final Registry> structureFeatureRegistry = chunk.getWorld().getRegistryManager().get(Registry.CONFIGURED_STRUCTURE_FEATURE_KEY); - for (Map.Entry, StructureStart> es : chunk.getStructureStarts().entrySet()) { - final Optional>> optional = structureFeatureRegistry.getKey(es.getKey()); + final Registry structureRegistry = chunk.getWorld().getRegistryManager().get(Registry.STRUCTURE_KEY); + for (Map.Entry es : chunk.getStructureStarts().entrySet()) { + final Optional> optional = structureRegistry.getKey(es.getKey()); optional.ifPresent(key -> structures.put(key.getValue().toString(), es.getValue())); } if (structures.size() > 0) EventBus.publish(new StructuresLoaded(structures, dimensionId)); @@ -57,9 +57,9 @@ public class CommonInterop { } public static void loadWorldStructures(World world) { - final Registry> structureFeatureRegistry = world.getRegistryManager().get(Registry.CONFIGURED_STRUCTURE_FEATURE_KEY); - System.out.println("Registring structures: " + Arrays.toString(structureFeatureRegistry.getEntrySet().stream().map(entry -> entry.getKey().getValue().toString()).distinct().toArray(String[]::new))); - for (var entry : structureFeatureRegistry.getEntrySet()) { + final Registry structureRegistry = world.getRegistryManager().get(Registry.STRUCTURE_KEY); + System.out.println("Registring structures: " + Arrays.toString(structureRegistry.getEntrySet().stream().map(entry -> entry.getKey().getValue().toString()).distinct().toArray(String[]::new))); + for (var entry : structureRegistry.getEntrySet()) { final Identifier value = entry.getKey().getValue(); final BoundingBoxType boundingBoxType = BoundingBoxType.register("structure:" + value); StructureProcessor.registerSupportedStructure(boundingBoxType); diff --git a/src/main/java/com/irtimaled/bbor/mixin/access/IBiome.java b/src/main/java/com/irtimaled/bbor/mixin/access/IBiome.java deleted file mode 100644 index 9493c63..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/access/IBiome.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.irtimaled.bbor.mixin.access; - -import net.minecraft.world.biome.Biome; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(Biome.class) -public interface IBiome { - - @Accessor("category") - Biome.Category bbor$getCategory(); - -} 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 b4ed03c..a684d3e 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 @@ -12,10 +12,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(GameMessageS2CPacket.class) public class MixinSChatPacket { @Shadow - private Text message; + private Text content; @Inject(method = "apply", at = @At("RETURN")) private void processPacket(CallbackInfo ci) { - ClientInterop.handleSeedMessage(this.message); + ClientInterop.handleSeedMessage(this.content); } } diff --git a/src/main/resources/bbor.mixins.json b/src/main/resources/bbor.mixins.json index 8aee692..865a8f1 100644 --- a/src/main/resources/bbor.mixins.json +++ b/src/main/resources/bbor.mixins.json @@ -6,7 +6,6 @@ "package": "com.irtimaled.bbor.mixin", "mixins": [ "access.IBeaconBlockEntity", - "access.IBiome", "access.IStructureStart", "client.renderer.MixinDebugHud", "client.renderer.MixinWorldRenderer", -- 2.44.0