From: Irtimaled Date: Sat, 6 Jun 2020 08:12:12 +0000 (-0700) Subject: Setup for 1.16.3 Fabric X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=be08d13127355375c18d879e3f941051d3ca5d51;p=BoundingBoxOutlineReloaded.git Setup for 1.16.3 Fabric --- diff --git a/build.gradle b/build.gradle index e8e912f..095cb59 100644 --- a/build.gradle +++ b/build.gradle @@ -24,8 +24,8 @@ targetCompatibility = 1.8 dependencies { minecraft 'com.mojang:minecraft:' + project.mcVersion - mappings 'net.fabricmc:yarn:' + project.mcVersion + '+build.9' - modCompile 'net.fabricmc:fabric-loader:0.8.3+build.196' + mappings 'net.fabricmc:yarn:' + project.mcVersion + '+build.27' + modCompile 'net.fabricmc:fabric-loader:0.9.3+build.207' } minecraft { diff --git a/gradle.properties b/gradle.properties index a6f2081..dc62e0b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ name=bbor buildVersion=2.4 # leave a space to reduce merge conflicts on version change -mcVersion=1.15.2 +mcVersion=1.16.3 diff --git a/src/main/java/com/irtimaled/bbor/client/Player.java b/src/main/java/com/irtimaled/bbor/client/Player.java index f468be0..3f55634 100644 --- a/src/main/java/com/irtimaled/bbor/client/Player.java +++ b/src/main/java/com/irtimaled/bbor/client/Player.java @@ -16,7 +16,7 @@ public class Player { x = player.prevX + (player.getX() - player.prevX) * partialTicks; y = player.prevY + (player.getY() - player.prevY) * partialTicks; z = player.prevZ + (player.getZ() - player.prevZ) * partialTicks; - dimensionId = DimensionId.from(player.dimension); + dimensionId = DimensionId.from(player.getEntityWorld().getRegistryKey()); } static void setActiveY() { 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 a130504..737b2ed 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java @@ -6,8 +6,8 @@ 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.arguments.BlockPosArgumentType; -import net.minecraft.command.arguments.Vec3ArgumentType; +import net.minecraft.command.argument.BlockPosArgumentType; +import net.minecraft.command.argument.Vec3ArgumentType; import net.minecraft.server.command.ServerCommandSource; import java.util.function.Supplier; 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 cca87cf..6927887 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/ConfigCommand.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/ConfigCommand.java @@ -8,8 +8,8 @@ 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.server.command.CommandManager; -import net.minecraft.server.command.CommandSource; import net.minecraft.server.command.ServerCommandSource; import java.util.function.Function; 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 4b1a137..59a9493 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.CommandSource; import net.minecraft.server.command.CommandManager; -import net.minecraft.server.command.CommandSource; public class CustomCommand { private static final String COMMAND = "bbor:custom"; 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 e2e56ac..f9b1350 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/SeedCommand.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/SeedCommand.java @@ -3,8 +3,8 @@ 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.CommandSource; import net.minecraft.server.command.CommandManager; -import net.minecraft.server.command.CommandSource; public class SeedCommand { private static final String COMMAND = "bbor:seed"; 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 8872595..cd7bfdd 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/SpawningSphereCommand.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/SpawningSphereCommand.java @@ -7,8 +7,8 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.client.MinecraftClient; +import net.minecraft.command.CommandSource; 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; 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 b6f795a..160253e 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/StructuresCommand.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/StructuresCommand.java @@ -4,8 +4,8 @@ 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.CommandSource; import net.minecraft.server.command.CommandManager; -import net.minecraft.server.command.CommandSource; public class StructuresCommand { private static final String COMMAND = "bbor:structures"; 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 da9de11..01db585 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/AbstractControl.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/AbstractControl.java @@ -2,6 +2,8 @@ package com.irtimaled.bbor.client.gui; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.widget.AbstractButtonWidget; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.LiteralText; import java.awt.*; @@ -10,13 +12,13 @@ abstract class AbstractControl extends AbstractButtonWidget implements IControl protected final MinecraftClient minecraft; AbstractControl(int x, int y, int width, String name) { - super(x, y, width, 20, name); + super(x, y, width, 20, new LiteralText(name)); this.minecraft = MinecraftClient.getInstance(); } @Override - public void render(int mouseX, int mouseY) { - super.render(mouseX, mouseY, 0f); + public void render(MatrixStack matrixStack, int mouseX, int mouseY) { + super.render(matrixStack, mouseX, mouseY, 0f); } public void setX(int x) { @@ -36,11 +38,11 @@ abstract class AbstractControl extends AbstractButtonWidget implements IControl } @Override - protected void renderBg(MinecraftClient minecraft, int mouseX, int mouseY) { - if (active) renderBackground(mouseX, mouseY); + protected void renderBg(MatrixStack matrixStack, MinecraftClient minecraft, int mouseX, int mouseY) { + if (active) renderBackground(matrixStack, mouseX, mouseY); } - protected void renderBackground(int mouseX, int mouseY) { + protected void renderBackground(MatrixStack matrixStack, int mouseX, int mouseY) { } @Override @@ -49,14 +51,14 @@ abstract class AbstractControl extends AbstractButtonWidget implements IControl } public void filter(String lowerValue) { - String lowerString = this.getMessage().toLowerCase(); + String lowerString = this.getMessage().asString().toLowerCase(); this.visible = lowerValue.equals("") || lowerString.startsWith(lowerValue) || lowerString.contains(" " + lowerValue); } - void drawRectangle(int left, int top, int right, int bottom, Color color) { - fill(left, top, right, bottom, color.getRGB()); + void drawRectangle(MatrixStack matrixStack, int left, int top, int right, int bottom, Color color) { + fill(matrixStack, left, top, right, bottom, color.getRGB()); } @Override 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 1ec236c..f527fef 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/AbstractSlider.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/AbstractSlider.java @@ -3,6 +3,7 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.common.MathHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.sound.SoundManager; +import net.minecraft.client.util.math.MatrixStack; abstract class AbstractSlider extends AbstractControl { private final int optionCount; @@ -16,11 +17,11 @@ abstract class AbstractSlider extends AbstractControl { } @Override - protected void renderBackground(int mouseX, int mouseY) { + protected void renderBackground(MatrixStack matrixStack, int mouseX, int mouseY) { this.minecraft.getTextureManager().bindTexture(WIDGETS_LOCATION); int hoverState = super.getYImage(this.isHovered()); - this.blit(this.x + (int) getProgressPercentage(), this.y, 0, 46 + hoverState * 20, 4, this.height); - this.blit(this.x + (int) getProgressPercentage() + 4, this.y, 196, 46 + hoverState * 20, 4, 20); + this.drawTexture(matrixStack, this.x + (int) getProgressPercentage(), this.y, 0, 46 + hoverState * 20, 4, this.height); + this.drawTexture(matrixStack, this.x + (int) getProgressPercentage() + 4, this.y, 196, 46 + hoverState * 20, 4, 20); } private double getProgressPercentage() { diff --git a/src/main/java/com/irtimaled/bbor/client/gui/BoolButton.java b/src/main/java/com/irtimaled/bbor/client/gui/BoolButton.java index f7a0ab1..edb1d87 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/BoolButton.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/BoolButton.java @@ -2,6 +2,7 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.config.ColorHelper; import com.irtimaled.bbor.client.config.ConfigManager; +import net.minecraft.client.util.math.MatrixStack; public abstract class BoolButton extends AbstractButton { BoolButton(int width, String label, boolean enabled) { @@ -15,13 +16,13 @@ public abstract class BoolButton extends AbstractButton { protected abstract boolean getValue(); @Override - protected void renderBackground(int mouseX, int mouseY) { + protected void renderBackground(MatrixStack matrixStack, int mouseX, int mouseY) { int left = this.x + 1; int top = this.y + 1; int right = left + this.width - 2; int bottom = top + this.height - 2; if (this.getValue()) { - drawRectangle(left, top, right, bottom, ColorHelper.getColor(ConfigManager.buttonOnOverlay)); + drawRectangle(matrixStack, left, top, right, bottom, ColorHelper.getColor(ConfigManager.buttonOnOverlay)); } } } diff --git a/src/main/java/com/irtimaled/bbor/client/gui/BoundingBoxTypeButton.java b/src/main/java/com/irtimaled/bbor/client/gui/BoundingBoxTypeButton.java index 8b08dd4..bcff9e2 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/BoundingBoxTypeButton.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/BoundingBoxTypeButton.java @@ -2,6 +2,7 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.config.BoundingBoxTypeHelper; import com.irtimaled.bbor.common.BoundingBoxType; +import net.minecraft.client.util.math.MatrixStack; import java.awt.*; @@ -14,8 +15,8 @@ public class BoundingBoxTypeButton extends BoolSettingButton { } @Override - protected void renderBackground(int mouseX, int mouseY) { - super.renderBackground(mouseX, mouseY); + protected void renderBackground(MatrixStack matrixStack, int mouseX, int mouseY) { + super.renderBackground(matrixStack, mouseX, mouseY); int left = x + 1; int top = y + 1; @@ -25,17 +26,17 @@ public class BoundingBoxTypeButton extends BoolSettingButton { Color color = BoundingBoxTypeHelper.getColor(type); // top & left - drawRectangle(left, top, right, top + 1, color); - drawRectangle(left, top, left + 1, bottom, color); + drawRectangle(matrixStack, left, top, right, top + 1, color); + drawRectangle(matrixStack, left, top, left + 1, bottom, color); Color darker = color.darker(); // bottom left & top right - drawRectangle(left, bottom - 2, left + 1, bottom, darker); - drawRectangle(right - 1, top, right, top + 1, darker); + drawRectangle(matrixStack, left, bottom - 2, left + 1, bottom, darker); + drawRectangle(matrixStack, right - 1, top, right, top + 1, darker); Color darkest = darker.darker(); // bottom & right - drawRectangle(left + 1, bottom - 2, right, bottom, darkest); - drawRectangle(right - 1, top + 1, right, bottom, darkest); + drawRectangle(matrixStack, left + 1, bottom - 2, right, bottom, darkest); + drawRectangle(matrixStack, right - 1, top + 1, right, bottom, darkest); } } 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 9331c63..80554db 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/ControlList.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/ControlList.java @@ -5,6 +5,7 @@ import com.irtimaled.bbor.client.renderers.Renderer; import com.irtimaled.bbor.common.MathHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.util.math.MatrixStack; import java.util.ArrayList; import java.util.List; @@ -152,7 +153,7 @@ public class ControlList extends DrawableHelper implements IControlSet { return true; } - public void render(int mouseX, int mouseY) { + public void render(MatrixStack matrixStack, int mouseX, int mouseY) { this.amountScrolled = MathHelper.clamp(this.amountScrolled, 0.0D, this.getMaxScroll()); RenderHelper.disableLighting(); @@ -161,11 +162,15 @@ public class ControlList extends DrawableHelper implements IControlSet { int listTop = this.top + PADDING - (int) this.amountScrolled; - drawEntries(mouseX, mouseY, listTop); + drawEntries(matrixStack, mouseX, mouseY, listTop); + + RenderHelper.enableDepthTest(); + RenderHelper.depthFuncAlways(); - RenderHelper.disableDepthTest(); this.overlayBackground(0, this.top); this.overlayBackground(this.bottom, this.height); + RenderHelper.depthFuncLessEqual(); + RenderHelper.disableDepthTest(); RenderHelper.enableBlend(); RenderHelper.blendFuncGui(); RenderHelper.disableAlphaTest(); @@ -185,7 +190,7 @@ public class ControlList extends DrawableHelper implements IControlSet { } private void drawListBackground() { - this.minecraft.getTextureManager().bindTexture(DrawableHelper.BACKGROUND_LOCATION); + this.minecraft.getTextureManager().bindTexture(DrawableHelper.OPTIONS_BACKGROUND_TEXTURE); Renderer.startTextured() .setColor(32, 32, 32) .setAlpha(255) @@ -196,7 +201,7 @@ public class ControlList extends DrawableHelper implements IControlSet { .render(); } - private void drawEntries(int mouseX, int mouseY, int top) { + private void drawEntries(MatrixStack matrixStack, int mouseX, int mouseY, int top) { for (ControlListEntry entry : this.entries) { if (!entry.isVisible()) continue; @@ -204,24 +209,27 @@ public class ControlList extends DrawableHelper implements IControlSet { entry.setY(top); int height = entry.getControlHeight(); - drawEntry(mouseX, mouseY, top, entry, height); - top += height; + int bottom = top + height; + if(top <= this.bottom && bottom >= this.top) { + drawEntry(matrixStack, mouseX, mouseY, top, entry, height); + } + top = bottom; } } - protected void drawEntry(int mouseX, int mouseY, int top, ControlListEntry entry, int height) { - entry.render(mouseX, mouseY); + protected void drawEntry(MatrixStack matrixStack, int mouseX, int mouseY, int top, ControlListEntry entry, int height) { + entry.render(matrixStack, mouseX, mouseY); } private void overlayBackground(int top, int bottom) { - this.minecraft.getTextureManager().bindTexture(DrawableHelper.BACKGROUND_LOCATION); + this.minecraft.getTextureManager().bindTexture(DrawableHelper.OPTIONS_BACKGROUND_TEXTURE); Renderer.startTextured() .setColor(64, 64, 64) .setAlpha(255) - .addPoint(0, bottom, 0.0D, 0.0D, (float) bottom / 32.0F) - .addPoint(this.width, bottom, 0.0D, (float) this.width / 32.0F, (float) bottom / 32.0F) - .addPoint(this.width, top, 0.0D, (float) this.width / 32.0F, (float) top / 32.0F) - .addPoint(0, top, 0.0D, 0.0D, (float) top / 32.0F) + .addPoint(0, bottom, -100.0D, 0.0D, (float) bottom / 32.0F) + .addPoint(this.width, bottom, -100.0D, (float) this.width / 32.0F, (float) bottom / 32.0F) + .addPoint(this.width, top, -100.0D, (float) this.width / 32.0F, (float) top / 32.0F) + .addPoint(0, top, -100.0D, 0.0D, (float) top / 32.0F) .render(); } 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 9e90ade..9cab24f 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,7 @@ package com.irtimaled.bbor.client.gui; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.util.math.MatrixStack; import java.util.ArrayList; import java.util.List; @@ -47,12 +48,12 @@ public class ControlListSection extends ControlListEntry implements IControlSet } @Override - public void render(int mouseX, int mouseY) { + public void render(MatrixStack matrixStack, int mouseX, int mouseY) { int x = this.getX(); int y = this.getY(); int top = y; if (this.title != null) { - this.minecraft.textRenderer.draw(this.title, x + 4, y + ((TITLE_HEIGHT - this.minecraft.textRenderer.fontHeight) / 1.5f), 16777215); + this.minecraft.textRenderer.draw(matrixStack, this.title, x + 4, y + ((TITLE_HEIGHT - this.minecraft.textRenderer.fontHeight) / 1.5f), 16777215); top += titleHeight; } @@ -63,7 +64,7 @@ public class ControlListSection extends ControlListEntry implements IControlSet control.setX(left + x); control.setY(top); - control.render(mouseX, mouseY); + control.render(matrixStack, mouseX, mouseY); if (left == 0) { height = control.getControlHeight(); } 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 dd9c8de..5cb40aa 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/IControl.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/IControl.java @@ -1,9 +1,10 @@ package com.irtimaled.bbor.client.gui; import net.minecraft.client.gui.Element; +import net.minecraft.client.util.math.MatrixStack; interface IControl extends IFocusableControl, Element { - void render(int mouseX, int mouseY); + void render(MatrixStack matrixStack, int mouseX, int mouseY); boolean isVisible(); } 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 36548cb..a5f73b5 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java @@ -2,6 +2,7 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.config.Setting; import net.minecraft.client.resource.language.I18n; +import net.minecraft.text.LiteralText; import java.util.HashMap; import java.util.Map; @@ -40,7 +41,7 @@ class IntSettingSlider extends AbstractSlider { private void updateText() { Integer value = setting.get(); - this.setMessage(I18n.translate(format, displayValues.getOrDefault(value, value.toString()))); + this.setMessage(new LiteralText(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 ea1ab20..9655563 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java @@ -5,6 +5,7 @@ import com.irtimaled.bbor.client.interop.ClientInterop; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.resource.language.I18n; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.LiteralText; public abstract class ListScreen extends Screen { @@ -31,7 +32,7 @@ public abstract class ListScreen extends Screen { @Override 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.searchField = new SearchField(this.textRenderer, this.width / 2 - 100, 22, 200, 20, this.controlList); this.doneButton = new AbstractButton(this.width / 2 - 100, this.height - 24, 200, I18n.translate("gui.done")) { @Override public void onPressed() { @@ -47,20 +48,20 @@ public abstract class ListScreen extends Screen { protected abstract ControlList buildList(int top, int bottom); @Override - public void render(int mouseX, int mouseY, float unknown) { - render(mouseX, mouseY); + public void render(MatrixStack matrixStack, int mouseX, int mouseY, float unknown) { + render(matrixStack, mouseX, mouseY); } - protected void render(int mouseX, int mouseY) { - this.controlList.render(mouseX, mouseY); + protected void render(MatrixStack matrixStack, int mouseX, int mouseY) { + this.controlList.render(matrixStack, mouseX, mouseY); - this.drawCenteredString(this.font, this.title.asString(), this.width / 2, 8, 16777215); - this.searchField.render(mouseX, mouseY); - this.doneButton.render(mouseX, mouseY); + this.drawCenteredString(matrixStack, this.textRenderer, this.title.asString(), this.width / 2, 8, 16777215); + this.searchField.render(matrixStack, mouseX, mouseY); + this.doneButton.render(matrixStack, mouseX, mouseY); - int left = this.width - this.font.getStringWidth(version) - 2; + int left = this.width - this.textRenderer.getWidth(version) - 2; int top = this.height - 10; - this.drawString(this.font, version, left, top, -10658467); + this.drawStringWithShadow(matrixStack, this.textRenderer, version, left, top, -10658467); } @Override 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 c44fd94..7198838 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/LoadSavesScreen.java @@ -1,6 +1,7 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.interop.ClientInterop; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.world.level.storage.LevelStorage; import net.minecraft.world.level.storage.LevelStorageException; import net.minecraft.world.level.storage.LevelSummary; @@ -18,7 +19,7 @@ public class LoadSavesScreen extends ListScreen { protected ControlList buildList(int top, int bottom) { controlList = new SelectableControlList(this.width, this.height, top, bottom); try { - final LevelStorage saveLoader = this.minecraft.getLevelStorage(); + final LevelStorage saveLoader = this.client.getLevelStorage(); List saveList = saveLoader.getLevelList(); saveList.sort(null); saveList.forEach(world -> controlList.add(new WorldSaveRow(world, saveLoader, controlList::setSelectedEntry))); @@ -34,10 +35,10 @@ public class LoadSavesScreen extends ListScreen { } @Override - public void render(int mouseX, int mouseY, float unknown) { + public void render(MatrixStack matrixStack, int mouseX, int mouseY, float unknown) { ControlListEntry selectedEntry = getSelectedEntry(); this.setCanExit(selectedEntry != null && selectedEntry.isVisible()); - super.render(mouseX, mouseY, unknown); + super.render(matrixStack, mouseX, mouseY, unknown); } private ControlListEntry getSelectedEntry() { 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 272e6dd..402bea9 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/SearchField.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/SearchField.java @@ -2,16 +2,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; 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, ""); + super(fontRenderer, left, top, width, height, new LiteralText("")); this.controlList = controlList; this.setChangedListener(text -> this.controlList.filter(removeLeadingSpaces(text.toLowerCase()))); - this.setRenderTextProvider((text, id) -> removeLeadingSpaces(text)); + this.setRenderTextProvider((text, id) -> new LiteralText(removeLeadingSpaces(text)).asOrderedText()); this.setFocused(true); } @@ -20,8 +22,8 @@ public class SearchField extends TextFieldWidget implements IControl { } @Override - public void render(int mouseX, int mouseY) { - this.render(mouseX, mouseY, 0f); + public void render(MatrixStack matrixStack, int mouseX, int mouseY) { + this.render(matrixStack, mouseX, mouseY, 0f); } @Override diff --git a/src/main/java/com/irtimaled/bbor/client/gui/SelectableControlList.java b/src/main/java/com/irtimaled/bbor/client/gui/SelectableControlList.java index c202c91..0b8fe01 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/SelectableControlList.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/SelectableControlList.java @@ -2,6 +2,7 @@ package com.irtimaled.bbor.client.gui; import com.irtimaled.bbor.client.renderers.RenderHelper; import com.irtimaled.bbor.client.renderers.Renderer; +import net.minecraft.client.util.math.MatrixStack; public class SelectableControlList extends ControlList { private final int listRight; @@ -79,7 +80,7 @@ public class SelectableControlList extends ControlList { } @Override - protected void drawEntry(int mouseX, int mouseY, int top, ControlListEntry entry, int height) { + protected void drawEntry(MatrixStack matrixStack, int mouseX, int mouseY, int top, ControlListEntry entry, int height) { if (this.selectedElement == entry.index) { RenderHelper.disableTexture(); int color = this.isFocused ? 255 : 128; @@ -98,7 +99,7 @@ public class SelectableControlList extends ControlList { .render(); RenderHelper.enableTexture(); } - super.drawEntry(mouseX, mouseY, top, entry, height); + super.drawEntry(matrixStack, mouseX, mouseY, top, entry, height); } @Override 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 958194c..27b7daf 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/SettingsScreen.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/SettingsScreen.java @@ -31,11 +31,11 @@ public class SettingsScreen extends ListScreen { protected ControlList buildList(int top, int bottom) { String version = SharedConstants.getGameVersion().getName(); ControlList controlList = new ControlList(this.width, this.height, top, bottom); - if (this.minecraft.world != null) controlList.setTransparentBackground(); + if (this.client.world != null) controlList.setTransparentBackground(); controlList .section(null, - width -> new BoolButton(width, I18n.translate("bbor.options.active"), this.minecraft.world != null) { + width -> new BoolButton(width, I18n.translate("bbor.options.active"), this.client.world != null) { @Override public void onPressed() { ClientRenderer.toggleActive(); 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 3d88ecc..3c8aca2 100644 --- a/src/main/java/com/irtimaled/bbor/client/gui/WorldSaveRow.java +++ b/src/main/java/com/irtimaled/bbor/client/gui/WorldSaveRow.java @@ -7,9 +7,11 @@ 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.client.util.math.MatrixStack; +import net.minecraft.nbt.NbtIo; import net.minecraft.util.Identifier; import net.minecraft.util.Util; -import net.minecraft.world.level.LevelProperties; +import net.minecraft.util.WorldSavePath; import net.minecraft.world.level.storage.LevelStorage; import net.minecraft.world.level.storage.LevelSummary; import org.apache.logging.log4j.LogManager; @@ -17,6 +19,7 @@ import org.apache.logging.log4j.Logger; import java.io.File; import java.io.FileInputStream; +import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -44,7 +47,7 @@ public class WorldSaveRow extends ControlListEntry implements Comparable= 0) { - Text suggestion = new LiteralText("") + MutableText suggestion = new LiteralText("") .formatted(Formatting.GRAY) - .styled(style -> style.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, message))); + .styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, message))); int textLength = Math.min(exception.getInput().length(), exception.getCursor()); if (textLength > 10) { suggestion.append("..."); 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 be5189b..8afa36e 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/FlowerForestHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/FlowerForestHelper.java @@ -8,8 +8,10 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; 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.util.registry.BuiltinRegistries; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeKeys; +import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.FeatureConfig; import net.minecraft.world.gen.feature.FlowerFeature; @@ -24,6 +26,8 @@ public class FlowerForestHelper { private static final FlowerFeature flowersFeature; private static final FeatureConfig flowersConfig; + public static final Biome BIOME = BuiltinRegistries.BIOME.get(BiomeKeys.FLOWER_FOREST); + static { flowerColorMap.put(Blocks.DANDELION.getDefaultState(), ConfigManager.colorFlowerForestDandelion); flowerColorMap.put(Blocks.POPPY.getDefaultState(), ConfigManager.colorFlowerForestPoppy); @@ -36,16 +40,15 @@ public class FlowerForestHelper { flowerColorMap.put(Blocks.OXEYE_DAISY.getDefaultState(), ConfigManager.colorFlowerForestOxeyeDaisy); flowerColorMap.put(Blocks.CORNFLOWER.getDefaultState(), ConfigManager.colorFlowerForestCornflower); flowerColorMap.put(Blocks.LILY_OF_THE_VALLEY.getDefaultState(), ConfigManager.colorFlowerForestLilyOfTheValley); - - DecoratedFeatureConfig config = (DecoratedFeatureConfig) Biomes.FLOWER_FOREST.getFlowerFeatures().get(0).config; - flowersFeature = (FlowerFeature) config.feature.feature; - flowersConfig = config.feature.config; + ConfiguredFeature config = BIOME.getGenerationSettings().getFlowerFeatures().get(0); + flowersFeature = (FlowerFeature) config.feature; + flowersConfig = config.config; } public static Setting getFlowerColorAtPos(Coords coords) { int x = coords.getX(); int z = coords.getZ(); - BlockState blockState = flowersFeature.getFlowerToPlace(random, new BlockPos(x, coords.getY(), z), flowersConfig); + BlockState blockState = flowersFeature.getFlowerState(random, new BlockPos(x, coords.getY(), z), flowersConfig); return flowerColorMap.get(blockState); } diff --git a/src/main/java/com/irtimaled/bbor/client/interop/ModPackFinder.java b/src/main/java/com/irtimaled/bbor/client/interop/ModPackFinder.java deleted file mode 100644 index f70c93c..0000000 --- a/src/main/java/com/irtimaled/bbor/client/interop/ModPackFinder.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.irtimaled.bbor.client.interop; - -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 ResourcePackProvider { - private static final String BBOR = "bbor"; - private final ResourcePack modPack; - - public ModPackFinder() { - modPack = new DefaultResourcePack(BBOR); - } - - @Override - public void register(Map map, ResourcePackProfile.Factory factory) { - T resourcePackInfo = ResourcePackProfile.of(BBOR, - true, - () -> this.modPack, - factory, - 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 e3cf56d..7591e51 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/NBTStructureLoader.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/NBTStructureLoader.java @@ -4,68 +4,79 @@ import com.irtimaled.bbor.common.EventBus; import com.irtimaled.bbor.common.ReflectionHelper; import com.irtimaled.bbor.common.events.StructuresLoaded; import com.irtimaled.bbor.common.models.DimensionId; +import net.minecraft.client.MinecraftClient; 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.BlockPos; import net.minecraft.util.math.ChunkPos; +import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.world.FeatureUpdater; -import net.minecraft.world.IWorld; import net.minecraft.world.PersistentStateManager; -import net.minecraft.world.WorldSaveHandler; +import net.minecraft.world.StructureWorldAccess; +import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.gen.StructureAccessor; import net.minecraft.world.gen.chunk.ChunkGenerator; +import net.minecraft.world.gen.feature.FeatureConfig; +import net.minecraft.world.level.storage.LevelStorage; import net.minecraft.world.storage.RegionBasedStorage; import java.io.File; import java.io.IOException; import java.util.*; -import java.util.function.Function; +import java.util.function.BiFunction; class NBTStructureLoader { private final DimensionId dimensionId; private final Set loadedChunks = new HashSet<>(); private FeatureUpdater legacyStructureDataUtil = null; - private WorldSaveHandler saveHandler = null; + private LevelStorage.Session saveHandler = null; private File chunkSaveLocation = null; private ChunkLoader chunkLoader; - NBTStructureLoader(DimensionId dimensionId, WorldSaveHandler saveHandler, File worldDirectory) { + NBTStructureLoader(DimensionId dimensionId, LevelStorage.Session saveHandler, File worldDirectory) { this.dimensionId = dimensionId; this.configure(saveHandler, worldDirectory); } void clear() { this.legacyStructureDataUtil = null; - this.saveHandler = null; this.chunkSaveLocation = null; this.loadedChunks.clear(); + close(this.saveHandler, this.chunkLoader); + this.saveHandler = null; + this.chunkLoader = null; + } - if (this.chunkLoader == null) return; - try { - this.chunkLoader.close(); - } catch (IOException ignored) { + private void close(AutoCloseable... closeables) { + for (AutoCloseable closeable : closeables) { + if(closeable == null) continue; + try { + closeable.close(); + } catch (Exception ignored) { + } } - this.chunkLoader = null; } - void configure(WorldSaveHandler saveHandler, File worldDirectory) { + void configure(LevelStorage.Session saveHandler, File worldDirectory) { this.saveHandler = saveHandler; if (worldDirectory != null) { - this.chunkSaveLocation = new File(dimensionId.getDimensionType().getSaveDirectory(worldDirectory), "region"); + this.chunkSaveLocation = new File(DimensionType.getSaveDirectory(this.dimensionId.getDimensionType(), worldDirectory), "region"); this.chunkLoader = new ChunkLoader(this.chunkSaveLocation); } } private FeatureUpdater getLegacyStructureDataUtil() { if (this.legacyStructureDataUtil == null) { - File dataFolder = new File(DimensionType.OVERWORLD.getSaveDirectory(this.saveHandler.getWorldDir()), "data"); + File dataFolder = new File(this.saveHandler.getWorldDirectory(World.OVERWORLD), "data"); this.legacyStructureDataUtil = FeatureUpdater.create(dimensionId.getDimensionType(), - new PersistentStateManager(dataFolder, this.saveHandler.getDataFixer())); + new PersistentStateManager(dataFolder, MinecraftClient.getInstance().getDataFixer())); } return this.legacyStructureDataUtil; } @@ -94,7 +105,7 @@ class NBTStructureLoader { CompoundTag structureStarts = loadStructureStarts(chunkX, chunkZ); if (structureStarts == null || structureStarts.getSize() == 0) return; - Map structureStartMap = new HashMap<>(); + Map> structureStartMap = new HashMap<>(); for (String key : structureStarts.getKeys()) { CompoundTag compound = structureStarts.getCompound(key); if (compound.contains("BB")) { @@ -105,7 +116,7 @@ class NBTStructureLoader { EventBus.publish(new StructuresLoaded(structureStartMap, dimensionId)); } - private static class SimpleStructureStart extends StructureStart { + private static class SimpleStructureStart extends StructureStart { SimpleStructureStart(CompoundTag compound) { super(null, 0, @@ -122,8 +133,7 @@ class NBTStructureLoader { } @Override - public void initialize(ChunkGenerator chunkGenerator, StructureManager structureManager, int i, int i1, Biome biome) { - + public void init(DynamicRegistryManager dynamicRegistryManager, ChunkGenerator chunkGenerator, StructureManager structureManager, int i, int j, Biome biome, FeatureConfig featureConfig) { } } @@ -138,19 +148,19 @@ class NBTStructureLoader { } @Override - public boolean generate(IWorld iWorld, ChunkGenerator chunkGenerator, Random random, BlockBox blockBox, ChunkPos chunkPos) { + public boolean generate(StructureWorldAccess structureWorldAccess, StructureAccessor structureAccessor, ChunkGenerator chunkGenerator, Random random, BlockBox blockBox, ChunkPos chunkPos, BlockPos blockPos) { return false; } } - private static class ChunkLoader { - private static final Function creator = - ReflectionHelper.getPrivateInstanceBuilder(RegionBasedStorage.class, File.class); + private static class ChunkLoader implements AutoCloseable { + private static final BiFunction creator = + ReflectionHelper.getPrivateInstanceBuilder(RegionBasedStorage.class, File.class, boolean.class); private final RegionBasedStorage regionFileCache; public ChunkLoader(File file) { - this.regionFileCache = creator.apply(file); + this.regionFileCache = creator.apply(file, false); } public CompoundTag readChunk(int chunkX, int chunkZ) 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 9f7f54e..998ab11 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/SaveGameStructureLoader.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/SaveGameStructureLoader.java @@ -3,22 +3,26 @@ package com.irtimaled.bbor.client.interop; import com.irtimaled.bbor.client.Player; import com.irtimaled.bbor.common.models.DimensionId; import net.minecraft.client.MinecraftClient; -import net.minecraft.world.WorldSaveHandler; import net.minecraft.world.level.storage.LevelStorage; import java.io.File; +import java.io.IOException; import java.util.HashMap; import java.util.Map; public class SaveGameStructureLoader { private static final Map nbtStructureLoaders = new HashMap<>(); - private static WorldSaveHandler saveHandler = null; + private static LevelStorage.Session saveHandler = null; private static File worldDirectory = null; static void loadSaveGame(String fileName) { MinecraftClient minecraft = MinecraftClient.getInstance(); LevelStorage saveLoader = minecraft.getLevelStorage(); - saveHandler = saveLoader.createSaveHandler(fileName, null); + try { + saveHandler = saveLoader.createSession(fileName); + } catch (IOException e) { + e.printStackTrace(); + } worldDirectory = saveLoader.getSavesDirectory().resolve(fileName).toFile(); for (DimensionId dimensionId : nbtStructureLoaders.keySet()) { 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 7672372..99d3371 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/SpawnableBlocksHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/SpawnableBlocksHelper.java @@ -4,8 +4,8 @@ import com.irtimaled.bbor.common.models.Coords; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; -import net.minecraft.entity.EntityCategory; import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnGroup; import net.minecraft.tag.BlockTags; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -15,7 +15,7 @@ import net.minecraft.world.World; import net.minecraft.world.biome.Biome; public class SpawnableBlocksHelper { - private static final EntityType entityType = EntityType.Builder.create(EntityCategory.MONSTER) + private static final EntityType entityType = EntityType.Builder.create(SpawnGroup.MONSTER) .setDimensions(0f, 0f).disableSaving().build(null); public static void findSpawnableBlocks(Coords coords, int width, int height, BlockProcessor blockProcessor) { @@ -34,8 +34,6 @@ public class SpawnableBlocksHelper { 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; - BlockState upperBlockState = world.getBlockState(new BlockPos(x, minY - 1, z)); for (int y = Math.max(1, minY); y < maxY; y++) { BlockState spawnBlockState = upperBlockState; @@ -49,20 +47,16 @@ public class SpawnableBlocksHelper { } } - static boolean isBiomeHostileSpawnProof(World world, BlockPos pos) { - Biome biome = world.getBiome(pos); - 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.allowsSpawning(world, pos.down(), isNether ? EntityType.ZOMBIE_PIGMAN : entityType) && + Biome biome = world.getBiome(pos); + boolean isNether = biome.getCategory() == Biome.Category.NETHER; + return biome.getCategory() != Biome.Category.MUSHROOM && + spawnBlockState.allowsSpawning(world, pos.down(), isNether ? EntityType.ZOMBIFIED_PIGLIN : entityType) && !Block.isFaceFullSquare(collisionShape, Direction.UP) && !upperBlockState.emitsRedstonePower() && - !upperBlockState.matches(BlockTags.RAILS) && - collisionShape.getMaximum(Direction.Axis.Y) <= 0 && + !upperBlockState.isIn(BlockTags.RAILS) && + collisionShape.getMax(Direction.Axis.Y) <= 0 && upperBlockState.getFluidState().isEmpty() && (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 706d38e..0abe2ae 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java @@ -30,8 +30,6 @@ public class SpawningSphereHelper { double distance = center.getDistance(new Point(closestX, center.getY(), closestZ)); if (distance > BoundingBoxSpawningSphere.SPAWN_RADIUS) continue; - if (SpawnableBlocksHelper.isBiomeHostileSpawnProof(world, new BlockPos(x, 1, z))) continue; - BlockState upperBlockState = world.getBlockState(new BlockPos(x, minY - 1, z)); for (int y = minY; y < maxY; y++) { BlockState spawnBlockState = upperBlockState; 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 ba13fcf..ffdb16f 100644 --- a/src/main/java/com/irtimaled/bbor/client/keyboard/CustomKeyBinding.java +++ b/src/main/java/com/irtimaled/bbor/client/keyboard/CustomKeyBinding.java @@ -12,9 +12,9 @@ class CustomKeyBinding extends KeyBinding { } @Override - public void setKeyCode(InputUtil.KeyCode input) { - super.setKeyCode(input); - int keyCode = input.getKeyCode(); + public void setBoundKey(InputUtil.Key input) { + super.setBoundKey(input); + int keyCode = input.getCode(); 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 6d6aefd..41d7a60 100644 --- a/src/main/java/com/irtimaled/bbor/client/keyboard/Key.java +++ b/src/main/java/com/irtimaled/bbor/client/keyboard/Key.java @@ -78,8 +78,8 @@ public class Key { } public Key register(String keyName) { - InputUtil.KeyCode input = InputUtil.fromName(keyName); - Key key = new Key(input.getKeyCode()); + InputUtil.Key input = InputUtil.fromTranslationKey(keyName); + Key key = new Key(input.getCode()); 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 021572c..0039d75 100644 --- a/src/main/java/com/irtimaled/bbor/client/keyboard/KeyListener.java +++ b/src/main/java/com/irtimaled/bbor/client/keyboard/KeyListener.java @@ -21,8 +21,8 @@ public class KeyListener { } public static Key register(String description, String keyName) { - InputUtil.KeyCode input = InputUtil.fromName(keyName); - CustomKeyBinding keyBinding = new CustomKeyBinding(description, input.getKeyCode()); + InputUtil.Key input = InputUtil.fromTranslationKey(keyName); + CustomKeyBinding keyBinding = new CustomKeyBinding(description, input.getCode()); keyBindings.add(keyBinding); Key key = keyBinding.getKey(); 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 e704d8d..1ca34ec 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/FlowerForestProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/FlowerForestProvider.java @@ -10,14 +10,13 @@ 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.registry.Registry; -import net.minecraft.world.biome.Biomes; +import net.minecraft.util.registry.BuiltinRegistries; import java.util.HashMap; import java.util.Map; public class FlowerForestProvider implements IBoundingBoxProvider, ICachingProvider { - public static final int FLOWER_FOREST_BIOME_ID = Registry.BIOME.getRawId(Biomes.FLOWER_FOREST); + public static final int FLOWER_FOREST_BIOME_ID = BuiltinRegistries.BIOME.getRawId(FlowerForestHelper.BIOME); 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/SlimeChunkProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java index ca4b5ca..032b1ee 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java @@ -23,7 +23,7 @@ public class SlimeChunkProvider implements IBoundingBoxProvider { void renderText(OffsetPoint offsetPoint, String... texts) { TextRenderer fontRenderer = MinecraftClient.getInstance().textRenderer; - RenderHelper.beforeRenderFont(offsetPoint); float top = -(fontRenderer.fontHeight * texts.length) / 2f; for (String text : texts) { - float left = fontRenderer.getStringWidth(text) / 2f; - fontRenderer.draw(text, -left, top, -1); + float left = fontRenderer.getWidth(text) / 2f; + fontRenderer.draw(new MatrixStack(), 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 c57de9a..f21183a 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/RenderHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/RenderHelper.java @@ -135,4 +135,12 @@ public class RenderHelper { public static void blendFuncGui() { GlStateManager.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ZERO, GL11.GL_ONE); } + + public static void depthFuncAlways() { + GlStateManager.depthFunc(GL11.GL_ALWAYS); + } + + public static void depthFuncLessEqual() { + GlStateManager.depthFunc(GL11.GL_LEQUAL); + } } diff --git a/src/main/java/com/irtimaled/bbor/common/BoundingBoxType.java b/src/main/java/com/irtimaled/bbor/common/BoundingBoxType.java index 05cca0a..38850f8 100644 --- a/src/main/java/com/irtimaled/bbor/common/BoundingBoxType.java +++ b/src/main/java/com/irtimaled/bbor/common/BoundingBoxType.java @@ -20,24 +20,24 @@ public class BoundingBoxType { public static final BoundingBoxType FlowerForest = register("Flower Forest"); public static final BoundingBoxType BedrockCeiling = register("Bedrock Ceiling"); - public static final BoundingBoxType JungleTemple = register("Jungle_Pyramid"); - public static final BoundingBoxType DesertTemple = register("Desert_Pyramid"); - public static final BoundingBoxType WitchHut = register("Swamp_Hut"); - public static final BoundingBoxType OceanMonument = register("Monument"); - public static final BoundingBoxType Shipwreck = register("Shipwreck"); - public static final BoundingBoxType OceanRuin = register("Ocean_Ruin"); - public static final BoundingBoxType BuriedTreasure = register("Buried_Treasure"); - public static final BoundingBoxType Stronghold = register("Stronghold"); - public static final BoundingBoxType MineShaft = register("Mineshaft"); - public static final BoundingBoxType NetherFortress = register("Fortress"); - public static final BoundingBoxType EndCity = register("EndCity"); - public static final BoundingBoxType Mansion = register("Mansion"); - public static final BoundingBoxType Igloo = register("Igloo"); - public static final BoundingBoxType PillagerOutpost = register("Pillager_Outpost"); - public static final BoundingBoxType Village = register("Village"); - public static final BoundingBoxType NetherFossil = register("Nether_Fossil"); - public static final BoundingBoxType BastionRemnant = register("Bastion_Remnant"); - public static final BoundingBoxType RuinedPortal = register("Ruined_Portal"); + public static final BoundingBoxType JungleTemple = register("jungle_pyramid"); + public static final BoundingBoxType DesertTemple = register("desert_pyramid"); + public static final BoundingBoxType WitchHut = register("swamp_hut"); + public static final BoundingBoxType OceanMonument = register("monument"); + public static final BoundingBoxType Shipwreck = register("shipwreck"); + public static final BoundingBoxType OceanRuin = register("ocean_ruin"); + public static final BoundingBoxType BuriedTreasure = register("buried_treasure"); + public static final BoundingBoxType Stronghold = register("stronghold"); + public static final BoundingBoxType MineShaft = register("mineshaft"); + public static final BoundingBoxType NetherFortress = register("fortress"); + public static final BoundingBoxType EndCity = register("endcity"); + public static final BoundingBoxType Mansion = register("mansion"); + public static final BoundingBoxType Igloo = register("igloo"); + public static final BoundingBoxType PillagerOutpost = register("pillager_outpost"); + public static final BoundingBoxType Village = register("village"); + public static final BoundingBoxType NetherFossil = register("nether_fossil"); + public static final BoundingBoxType BastionRemnant = register("bastion_remnant"); + public static final BoundingBoxType RuinedPortal = register("ruined_portal"); private static BoundingBoxType register(String name) { return structureTypeMap.computeIfAbsent(name.hashCode(), k -> new BoundingBoxType(name)); diff --git a/src/main/java/com/irtimaled/bbor/common/ReflectionHelper.java b/src/main/java/com/irtimaled/bbor/common/ReflectionHelper.java index a350d45..734ed67 100644 --- a/src/main/java/com/irtimaled/bbor/common/ReflectionHelper.java +++ b/src/main/java/com/irtimaled/bbor/common/ReflectionHelper.java @@ -4,11 +4,12 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.util.function.BiFunction; import java.util.function.Function; public class ReflectionHelper { public static Function getPrivateFieldGetter(Class clazz, Type fieldType, Type... genericTypeArguments) { - Field field = findField(clazz, fieldType, genericTypeArguments); + Field field = getGenericField(clazz, fieldType, genericTypeArguments); if (field == null) return obj -> null; field.setAccessible(true); @@ -21,6 +22,11 @@ public class ReflectionHelper { }; } + public static Field getGenericField(Class clazz, Type fieldType, Type[] genericTypeArguments) { + Field field = findField(clazz, fieldType, genericTypeArguments); + return field != null ? field : findField(clazz, fieldType, null); + } + private static Field findField(Class clazz, Type fieldType, Type[] genericTypeArguments) { for (Field field : clazz.getDeclaredFields()) { Type type = field.getGenericType(); @@ -33,6 +39,8 @@ public class ReflectionHelper { Type rawType = genericType.getRawType(); if (rawType != fieldType) continue; + if (genericTypeArguments == null) return field; + Type[] actualTypeArguments = genericType.getActualTypeArguments(); if (!typesMatch(genericTypeArguments, actualTypeArguments)) continue; @@ -52,14 +60,14 @@ public class ReflectionHelper { return true; } - public static Function getPrivateInstanceBuilder(Class clazz, Class parameter) { - Constructor constructor = findConstructor(clazz, parameter); - if (constructor == null) return obj -> null; + public static BiFunction getPrivateInstanceBuilder(Class clazz, Class parameter1, Class parameter2) { + Constructor constructor = findConstructor(clazz, parameter1, parameter2); + if (constructor == null) return (obj1, obj2) -> null; constructor.setAccessible(true); - return obj -> { + return (obj1, obj2) -> { try { - return (R) constructor.newInstance(obj); + return (S) constructor.newInstance(obj1, obj2); } catch (Exception ignored) { return null; } diff --git a/src/main/java/com/irtimaled/bbor/common/StructureProcessor.java b/src/main/java/com/irtimaled/bbor/common/StructureProcessor.java index b63e0eb..86c7dba 100644 --- a/src/main/java/com/irtimaled/bbor/common/StructureProcessor.java +++ b/src/main/java/com/irtimaled/bbor/common/StructureProcessor.java @@ -24,8 +24,7 @@ class StructureProcessor { private final BoundingBoxCache boundingBoxCache; - private void addStructures(BoundingBoxType type, Map structureMap) { - StructureStart structureStart = structureMap.get(type.getName()); + private void addStructures(BoundingBoxType type, StructureStart structureStart) { if (structureStart == null) return; BlockBox bb = structureStart.getBoundingBox(); @@ -47,9 +46,9 @@ class StructureProcessor { return BoundingBoxCuboid.from(min, max, type); } - void process(Map structures) { + void process(Map> structures) { if (structures.size() > 0) { - supportedStructures.forEach(type -> addStructures(type, structures)); + supportedStructures.forEach(type -> addStructures(type, structures.get(type.getName()))); } } } 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 1d03c50..32b5016 100644 --- a/src/main/java/com/irtimaled/bbor/common/events/StructuresLoaded.java +++ b/src/main/java/com/irtimaled/bbor/common/events/StructuresLoaded.java @@ -6,15 +6,15 @@ import net.minecraft.structure.StructureStart; import java.util.Map; public class StructuresLoaded { - private final Map structures; + private final Map> structures; private final DimensionId dimensionId; - public StructuresLoaded(Map structures, DimensionId dimensionId) { + public StructuresLoaded(Map> structures, DimensionId dimensionId) { this.structures = structures; this.dimensionId = dimensionId; } - public Map getStructures() { + public Map> getStructures() { return structures; } 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 f96d4d7..cb1a04a 100644 --- a/src/main/java/com/irtimaled/bbor/common/events/WorldLoaded.java +++ b/src/main/java/com/irtimaled/bbor/common/events/WorldLoaded.java @@ -2,7 +2,7 @@ package com.irtimaled.bbor.common.events; import com.irtimaled.bbor.common.models.DimensionId; import net.minecraft.server.world.ServerWorld; -import net.minecraft.world.level.LevelProperties; +import net.minecraft.world.WorldProperties; public class WorldLoaded { private final DimensionId dimensionId; @@ -11,9 +11,9 @@ public class WorldLoaded { private final int spawnZ; public WorldLoaded(ServerWorld world) { - LevelProperties info = world.getLevelProperties(); - this.dimensionId = DimensionId.from(world.getDimension().getType()); - this.seed = info.getSeed(); + WorldProperties info = world.getLevelProperties(); + this.dimensionId = DimensionId.from(world.getRegistryKey()); + this.seed = world.getSeed(); this.spawnX = info.getSpawnX(); this.spawnZ = info.getSpawnZ(); } 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 92ff557..21aebc1 100644 --- a/src/main/java/com/irtimaled/bbor/common/interop/CommonInterop.java +++ b/src/main/java/com/irtimaled/bbor/common/interop/CommonInterop.java @@ -12,12 +12,14 @@ import net.minecraft.structure.StructureStart; import net.minecraft.world.chunk.WorldChunk; import java.util.Collection; +import java.util.HashMap; import java.util.Map; public class CommonInterop { public static void chunkLoaded(WorldChunk chunk) { - DimensionId dimensionId = DimensionId.from(chunk.getWorld().getDimension().getType()); - Map structures = chunk.getStructureStarts(); + DimensionId dimensionId = DimensionId.from(chunk.getWorld().getRegistryKey()); + Map> structures = new HashMap<>(); + chunk.getStructureStarts().entrySet().forEach(es -> structures.put(es.getKey().getName(), es.getValue())); if (structures.size() > 0) EventBus.publish(new StructuresLoaded(structures, dimensionId)); } @@ -39,7 +41,7 @@ public class CommonInterop { ServerPlayNetworkHandler connection = player.networkHandler; if (connection == null) return; - ClientConnection networkManager = connection.client; + 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 2bf61c4..cc3759c 100644 --- a/src/main/java/com/irtimaled/bbor/common/messages/AddBoundingBox.java +++ b/src/main/java/com/irtimaled/bbor/common/messages/AddBoundingBox.java @@ -3,14 +3,12 @@ package com.irtimaled.bbor.common.messages; import com.irtimaled.bbor.client.events.AddBoundingBoxReceived; import com.irtimaled.bbor.common.models.AbstractBoundingBox; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.world.dimension.DimensionType; import java.util.HashSet; import java.util.Set; public class AddBoundingBox { public static final String NAME = "bbor:add_bounding_box_v2"; - public static final String LEGACY = "bbor:add_bounding_box"; public static PayloadBuilder getPayload(DimensionId dimensionId, AbstractBoundingBox key, Set boundingBoxes) { if (!BoundingBoxSerializer.canSerialize(key)) return null; @@ -26,8 +24,8 @@ public class AddBoundingBox { return builder; } - public static AddBoundingBoxReceived getEvent(PayloadReader reader, String name) { - DimensionId dimensionId = getDimensionId(reader, name); + public static AddBoundingBoxReceived getEvent(PayloadReader reader) { + DimensionId dimensionId = reader.readDimensionId(); AbstractBoundingBox key = BoundingBoxDeserializer.deserialize(reader); if (key == null) return null; @@ -40,12 +38,4 @@ public class AddBoundingBox { boundingBoxes.add(key); return new AddBoundingBoxReceived(dimensionId, key, boundingBoxes); } - - private static DimensionId getDimensionId(PayloadReader reader, String name) { - if (name.equals(NAME)) return reader.readDimensionId(); - - int dimensionRawId = reader.readVarInt(); - 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 8606a07..5c84b2c 100644 --- a/src/main/java/com/irtimaled/bbor/common/messages/PayloadBuilder.java +++ b/src/main/java/com/irtimaled/bbor/common/messages/PayloadBuilder.java @@ -3,11 +3,11 @@ 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.client.network.packet.CustomPayloadS2CPacket; import net.minecraft.network.Packet; -import net.minecraft.server.network.packet.CustomPayloadC2SPacket; +import net.minecraft.network.PacketByteBuf; +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; 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 22f3b70..a036a21 100644 --- a/src/main/java/com/irtimaled/bbor/common/messages/PayloadReader.java +++ b/src/main/java/com/irtimaled/bbor/common/messages/PayloadReader.java @@ -2,7 +2,7 @@ package com.irtimaled.bbor.common.messages; import com.irtimaled.bbor.common.models.Coords; import com.irtimaled.bbor.common.models.DimensionId; -import net.minecraft.util.PacketByteBuf; +import net.minecraft.network.PacketByteBuf; public class PayloadReader { private final PacketByteBuf buffer; 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 fb76702..01f89b2 100644 --- a/src/main/java/com/irtimaled/bbor/common/models/DimensionId.java +++ b/src/main/java/com/irtimaled/bbor/common/models/DimensionId.java @@ -1,24 +1,34 @@ package com.irtimaled.bbor.common.models; +import com.irtimaled.bbor.common.ReflectionHelper; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.World; import net.minecraft.world.dimension.DimensionType; import java.util.HashMap; import java.util.Map; +import java.util.Optional; +import java.util.function.Function; public class DimensionId { + private static final Function>> getRegistryKey = + ReflectionHelper.getPrivateFieldGetter(DimensionType.class, Optional.class); + private static final Map> typeMap = new HashMap<>(); private static final Map dimensionIdMap = new HashMap<>(); - public static DimensionId from(DimensionType dimensionType) { - return from(DimensionType.getId(dimensionType)); + public static DimensionId from(RegistryKey registryKey) { + Identifier value = registryKey.getValue(); + typeMap.put(value, registryKey); + return from(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); + public static DimensionId OVERWORLD = DimensionId.from(World.OVERWORLD); + public static DimensionId NETHER = DimensionId.from(World.NETHER); private final Identifier value; @@ -30,8 +40,8 @@ public class DimensionId { return value; } - public DimensionType getDimensionType() { - return DimensionType.byId(value); + public RegistryKey getDimensionType() { + return typeMap.get(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 6da6096..80ce70d 100644 --- a/src/main/java/com/irtimaled/bbor/common/models/ServerPlayer.java +++ b/src/main/java/com/irtimaled/bbor/common/models/ServerPlayer.java @@ -11,7 +11,7 @@ public class ServerPlayer { private final Consumer> packetConsumer; public ServerPlayer(ServerPlayerEntity player) { - this.dimensionId = DimensionId.from(player.dimension); + this.dimensionId = DimensionId.from(player.getEntityWorld().getRegistryKey()); this.packetConsumer = player.networkHandler::sendPacket; } 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 27c751d..5e30839 100644 --- a/src/main/java/com/irtimaled/bbor/mixin/client/MixinMinecraft.java +++ b/src/main/java/com/irtimaled/bbor/mixin/client/MixinMinecraft.java @@ -1,31 +1,18 @@ package com.irtimaled.bbor.mixin.client; import com.irtimaled.bbor.client.ClientProxy; -import com.irtimaled.bbor.client.interop.ModPackFinder; 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; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(MinecraftClient.class) -public class MixinMinecraft { - @Shadow - @Final - private ResourcePackManager resourcePackManager; - - @Inject(method = "", at = @At("RETURN")) +public abstract class MixinMinecraft { + @Inject(method = "", at = @At(value = "RETURN")) private void constructor(RunArgs configuration, CallbackInfo ci) { new ClientProxy().init(); } - @Inject(method = "startTimerHackThread", at = @At("RETURN")) - private void init(CallbackInfo ci) { - this.resourcePackManager.registerProvider(new ModPackFinder()); - } } 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 7bd6c52..bb03b7a 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 @@ -2,14 +2,14 @@ package com.irtimaled.bbor.mixin.client.gui.screen; import com.irtimaled.bbor.client.gui.SettingsScreenButton; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.SettingsScreen; +import net.minecraft.client.gui.screen.options.OptionsScreen; 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(SettingsScreen.class) +@Mixin(OptionsScreen.class) public class MixinOptionsScreen extends Screen { private MixinOptionsScreen() { super(null); 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 b58b9a5..291d16c 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 @@ -6,8 +6,8 @@ import net.minecraft.client.render.Camera; import net.minecraft.client.render.GameRenderer; import net.minecraft.client.render.LightmapTextureManager; import net.minecraft.client.render.WorldRenderer; -import net.minecraft.client.util.math.Matrix4f; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.Matrix4f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; 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 b76ad0f..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 @@ -3,8 +3,8 @@ 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.listener.ServerPlayPacketListener; +import net.minecraft.network.packet.c2s.play.CustomPayloadC2SPacket; import net.minecraft.server.network.ServerPlayNetworkHandler; -import net.minecraft.server.network.packet.CustomPayloadC2SPacket; import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -16,7 +16,7 @@ public class MixinCCustomPayloadPacket { @Shadow private Identifier channel; - @Redirect(method = "apply", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/listener/ServerPlayPacketListener;onCustomPayload(Lnet/minecraft/server/network/packet/CustomPayloadC2SPacket;)V")) + @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(((ServerPlayNetworkHandler) netHandlerPlayServer).player); 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 f98d52b..b4ed03c 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,7 +1,7 @@ package com.irtimaled.bbor.mixin.network.play.server; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.network.packet.ChatMessageS2CPacket; +import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket; import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ChatMessageS2CPacket.class) +@Mixin(GameMessageS2CPacket.class) public class MixinSChatPacket { @Shadow private Text 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 0527682..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,8 +1,8 @@ package com.irtimaled.bbor.mixin.network.play.server; import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.network.packet.ChunkDataS2CPacket; 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; 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 1a4f8d1..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 @@ -3,8 +3,8 @@ 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.ClientPlayNetworkHandler; -import net.minecraft.client.network.packet.CommandTreeS2CPacket; 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; 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 2bccd1c..3ac6988 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 @@ -6,10 +6,10 @@ 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.ClientPlayNetworkHandler; -import net.minecraft.client.network.packet.CustomPayloadS2CPacket; +import net.minecraft.network.PacketByteBuf; 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; @@ -20,7 +20,7 @@ public abstract class MixinSCustomPayloadPlayPacket { @Shadow private Identifier channel; - @Redirect(method = "apply", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/listener/ClientPlayPacketListener;onCustomPayload(Lnet/minecraft/client/network/packet/CustomPayloadS2CPacket;)V")) + @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:")) { @@ -34,9 +34,8 @@ public abstract class MixinSCustomPayloadPlayPacket { ((ClientPlayNetworkHandler) netHandlerPlayClient).sendPacket(SubscribeToServer.getPayload().build()); break; } - case AddBoundingBox.NAME: - case AddBoundingBox.LEGACY: { - EventBus.publish(AddBoundingBox.getEvent(reader, channelName)); + case AddBoundingBox.NAME: { + EventBus.publish(AddBoundingBox.getEvent(reader)); break; } } 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 ac684e5..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.client.network.packet.PlayerSpawnPositionS2CPacket; +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; diff --git a/src/main/java/com/irtimaled/bbor/mixin/resource/MixinResourcePackManager.java b/src/main/java/com/irtimaled/bbor/mixin/resource/MixinResourcePackManager.java new file mode 100644 index 0000000..cc99033 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/resource/MixinResourcePackManager.java @@ -0,0 +1,42 @@ +package com.irtimaled.bbor.mixin.resource; + +import com.google.common.collect.ImmutableMap; +import net.minecraft.resource.DefaultResourcePack; +import net.minecraft.resource.ResourcePackManager; +import net.minecraft.resource.ResourcePackProfile; +import net.minecraft.resource.ResourcePackSource; +import org.spongepowered.asm.mixin.Final; +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.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Map; + +@Mixin(ResourcePackManager.class) +public class MixinResourcePackManager { + private static final String BBOR = "bbor"; + @Shadow + @Final + private ResourcePackProfile.Factory profileFactory; + private ResourcePackProfile resourcePackProfile; + + @Inject(method = "(Lnet/minecraft/resource/ResourcePackProfile$Factory;[Lnet/minecraft/resource/ResourcePackProvider;)V", + at = @At("RETURN")) + private void afterConstructor(CallbackInfo ci) { + resourcePackProfile = ResourcePackProfile.of(BBOR, + true, + () -> new DefaultResourcePack(BBOR), + this.profileFactory, + ResourcePackProfile.InsertionPosition.BOTTOM, + ResourcePackSource.PACK_SOURCE_BUILTIN); + } + + @Redirect(method = "providePackProfiles", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableMap;copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap;")) + private ImmutableMap beforeReturn(Map map) { + map.put(BBOR, resourcePackProfile); + return ImmutableMap.copyOf(map); + } +} diff --git a/src/main/resources/mixins.bbor.json b/src/main/resources/mixins.bbor.json index 4a469cb..340651a 100644 --- a/src/main/resources/mixins.bbor.json +++ b/src/main/resources/mixins.bbor.json @@ -20,13 +20,14 @@ "client.network.login.MixinClientLoginNetHandler", "client.network.play.MixinClientPlayNetHandler", "client.renderer.MixinGameRenderer", - "client.world.MixinClientWorld", "client.settings.MixinKeyBinding", + "client.world.MixinClientWorld", "network.play.server.MixinSChatPacket", "network.play.server.MixinSChunkDataPacket", "network.play.server.MixinSCommandListPacket", "network.play.server.MixinSCustomPayloadPlayPacket", - "network.play.server.MixinSSpawnPositionPacket" + "network.play.server.MixinSSpawnPositionPacket", + "resource.MixinResourcePackManager" ], "server": [ "server.dedicated.MixinDedicatedServer"