diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 25ace19..8b9d4e0 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -13,11 +13,11 @@ jobs: build: strategy: matrix: - java: [ 21 ] + java: [ 25 ] gradle: [ wrapper, current] os: [ ubuntu-latest, macos-latest, windows-latest ] include: - - java: 21 + - java: 25 gradle: wrapper os: ubuntu-latest upload: true diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 76bef53..ded0408 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,7 +20,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: "temurin" - java-version: 21 + java-version: 25 - name: Gradle Build uses: gradle/gradle-build-action@v2 diff --git a/Versionfiles b/Versionfiles index 0ac611a..e642c1a 160000 --- a/Versionfiles +++ b/Versionfiles @@ -1 +1 @@ -Subproject commit 0ac611a8fad858045438cb4b11b899fcbb49149d +Subproject commit e642c1ae39d419b88561e395e8c7fb8b07b562d2 diff --git a/build.gradle b/build.gradle index 0f5f33c..b15792a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,43 +1,16 @@ plugins { - id 'net.fabricmc.fabric-loom-remap' version "1.14-SNAPSHOT" - // id "org.ajoberstar.grgit" version "3.1.1" + id "net.fabricmc.fabric-loom" version "${loom_version}" } repositories { - maven { url = "https://maven.fabricmc.net/" } - maven { url = "https://minecraft.guntram.de/maven/" } - maven { url = "file:///tmp/mymavenrepo/" } maven { url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" } - maven { url = "https://jitpack.io" } maven { url = "https://maven.shedaniel.me/" } maven { url = "https://maven.terraformersmc.com/" } - maven { url = 'https://masa.dy.fi/maven' } } -ext.Version = new Properties() -Version.load(file("version.properties").newReader()) +ext.projectVersion = mod_version -ext.projectVersion = Version['modVersion'] - -ext.Versions = new Properties() -Versions.load(file("Versionfiles/${Version['minecraftVersion']}.properties").newReader()) - - -version = "${project.projectVersion}-${Version['minecraftVersion']}" - -def getBranch() { - if (System.getenv().GIT_BRANCH) { - def branch = System.getenv().GIT_BRANCH - return branch.substring(branch.lastIndexOf("/") + 1) - } - - if (grgit == null) { - return "unknown" - } - - def branch = grgit.branch.current().name - return branch.substring(branch.lastIndexOf("/") + 1) -} +version = "${mod_version}-${minecraft_version}" loom { mixin.defaultRefmapName = "blockmeter-refmap.json"; @@ -45,11 +18,11 @@ loom { processResources { duplicatesStrategy "warn" - inputs.property "version", project.projectVersion + inputs.property "version", mod_version from(sourceSets.main.resources.srcDirs) { include "fabric.mod.json" - expand "version": project.projectVersion + expand "version": mod_version } from(sourceSets.main.resources.srcDirs) { @@ -58,7 +31,7 @@ processResources { } dependencies { - modImplementation("org.bukkit:bukkit:1.15.2-R0.1-SNAPSHOT") { + compileOnly("org.bukkit:bukkit:1.15.2-R0.1-SNAPSHOT") { // This is to fix the error: // com.google.*:*:* has more than one client module definitions // in gradle > 4 @@ -66,17 +39,15 @@ dependencies { exclude group: "com.google.code.gson", module: "gson" } - minecraft "com.mojang:minecraft:${Versions['minecraft_version']}" - mappings "net.fabricmc:yarn:${Versions['yarn_mappings']}:v2" - modImplementation "net.fabricmc:fabric-loader:${Versions['loader_version']}" - modImplementation "net.fabricmc.fabric-api:fabric-api:${Versions['fabric_api']}" + minecraft "com.mojang:minecraft:${minecraft_version}" + implementation "net.fabricmc:fabric-loader:${loader_version}" + implementation "net.fabricmc.fabric-api:fabric-api:${fabric_api_version}" - modImplementation "com.terraformersmc:modmenu:${Versions['modmenu']}" - modApi("me.shedaniel.cloth:cloth-config-fabric:${Versions['cloth_config']}") { + implementation "com.terraformersmc:modmenu:${modmenu_version}" + implementation("me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}") { exclude(group: "net.fabricmc.fabric-api") } - include "me.shedaniel.cloth:cloth-config-fabric:${Versions['cloth_config']}" -// modImplementation "fi.dy.masa.malilib:malilib-fabric-${Versions['minecraft_version']}:${Versions['malilib']}" + include "me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}" // Testing testImplementation "org.junit.jupiter:junit-jupiter:5.+" @@ -84,12 +55,23 @@ dependencies { testImplementation "org.mockito:mockito-inline:3.+" } -// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task -// if it is present. -// If you remove this task, sources will not be generated. -task sourcesJar(type: Jar, dependsOn: classes) { - archiveClassifier = "sources" - from sourceSets.main.allSource +processResources { + duplicatesStrategy "warn" + inputs.property "version", project.version + + filesMatching("fabric.mod.json") { + expand "version": inputs.properties.version + } +} + +tasks.withType(JavaCompile).configureEach { + options.release = 25 +} + +java { + withSourcesJar() + sourceCompatibility = JavaVersion.VERSION_25 + targetCompatibility = JavaVersion.VERSION_25 } jar { diff --git a/gradle.properties b/gradle.properties index e86a276..e3064fd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1,13 @@ -org.gradle.jvmargs=-Xms128m -Xmx1024m +org.gradle.jvmargs=-Xmx2G +org.gradle.parallel=true +org.gradle.configuration-cache=false + +mod_version = 1.19 +loom_version=1.16-SNAPSHOT + +minecraft_version=26.1 +loader_version=0.19.2 +fabric_api_version=0.146.1+26.1.2 +modmenu_version=18.0.0-alpha.8 +cloth_config_version=26.1.154 + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f8e1ee3..d997cfc 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bad7c24..c61a118 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index adff685..f640dbc 100755 --- a/gradlew +++ b/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob//platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/src/main/java/win/baruna/blockmeter/BlockMeterClient.java b/src/main/java/win/baruna/blockmeter/BlockMeterClient.java index 8453bf5..e0562b8 100644 --- a/src/main/java/win/baruna/blockmeter/BlockMeterClient.java +++ b/src/main/java/win/baruna/blockmeter/BlockMeterClient.java @@ -3,31 +3,31 @@ import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.autoconfig.ConfigManager; import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer; +import com.mojang.blaze3d.platform.InputConstants; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; -import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.fabricmc.fabric.api.client.rendering.v1.world.WorldRenderContext; -import net.fabricmc.fabric.api.client.rendering.v1.world.WorldRenderEvents; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents; import net.fabricmc.fabric.api.event.player.AttackBlockCallback; import net.fabricmc.fabric.api.event.player.UseBlockCallback; import net.fabricmc.fabric.api.event.player.UseItemCallback; import net.fabricmc.fabric.api.networking.v1.PacketSender; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.option.KeyBinding; -import net.minecraft.client.util.InputUtil; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.text.Text; -import net.minecraft.util.ActionResult; -import net.minecraft.util.DyeColor; -import net.minecraft.util.Identifier; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.HitResult; -import net.minecraft.util.math.BlockPos; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.glfw.GLFW; import win.baruna.blockmeter.gui.EditBoxGui; @@ -74,8 +74,8 @@ public static BlockMeterClient getInstance() { return instance; } - private static ClientPlayerEntity getPlayer() { - return Objects.requireNonNull(MinecraftClient.getInstance().player); + private static LocalPlayer getPlayer() { + return Objects.requireNonNull(Minecraft.getInstance().player); } /// Accessor for the ModConfigManager @@ -150,8 +150,8 @@ public boolean undo() { return true; } - public void renderOverlay(WorldRenderContext context) { - final Identifier currentDimension = getPlayer().getEntityWorld().getRegistryKey().getValue(); + public void renderOverlay(LevelRenderContext context) { + final Identifier currentDimension = getPlayer().level().dimension().identifier(); final ModConfig cfg = AutoConfig.getConfigHolder(ModConfig.class).getConfig(); @@ -164,7 +164,7 @@ public void renderOverlay(WorldRenderContext context) { }); } if (!cfg.sendBoxes) this.boxes.forEach(box -> { - if (box.isFinished()) box.render(context, currentDimension, getPlayer().getDisplayName().getLiteralString()); + if (box.isFinished()) box.render(context, currentDimension, getPlayer().getDisplayName().tryCollapseToString()); else box.render(context, currentDimension); }); } else this.boxes.forEach(box -> box.render(context, currentDimension)); @@ -175,14 +175,14 @@ public void renderOverlay(WorldRenderContext context) { /** * Gets Triggered when the Player disconnects from the Server */ - public void onDisconnected(ClientPlayNetworkHandler clientPlayNetworkHandler, MinecraftClient minecraftClient) { + public void onDisconnected(ClientPacketListener clientPlayNetworkHandler, Minecraft minecraftClient) { reset(); } /** * Gets Triggered when the Player connects to the Server */ - private void onConnected(ClientPlayNetworkHandler clientPlayNetworkHandler, PacketSender packetSender, MinecraftClient minecraftClient) { + private void onConnected(ClientPacketListener clientPlayNetworkHandler, PacketSender packetSender, Minecraft minecraftClient) { sendBoxList(); // to make the server send other user's boxes } @@ -197,17 +197,17 @@ public ClientMeasureBox getCurrentBox() { @Override public void onInitializeClient() { - var category = KeyBinding.Category.create(Identifier.of("category.blockmeter.key")); - final KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding("key.blockmeter.assign", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_M, category)); - final KeyBinding keyBindingMenu = new KeyBinding("key.blockmeter.menu", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_LEFT_ALT, category); - KeyBindingHelper.registerKeyBinding(keyBindingMenu); + var category = KeyMapping.Category.register(Identifier.parse("category.blockmeter.key")); + final KeyMapping keyBinding = KeyMappingHelper.registerKeyMapping(new KeyMapping("key.blockmeter.assign", InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_M, category)); + final KeyMapping keyBindingMenu = new KeyMapping("key.blockmeter.menu", InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_LEFT_ALT, category); + KeyMappingHelper.registerKeyMapping(keyBindingMenu); - final KeyBinding keyBindingMeasureWithItem = new KeyBinding("key.blockmeter.useItem", -1, category); - KeyBindingHelper.registerKeyBinding(keyBindingMeasureWithItem); - final KeyBinding keyBindingMeasure = new KeyBinding("key.blockmeter.measure", InputUtil.Type.MOUSE, GLFW.GLFW_MOUSE_BUTTON_4, category); - KeyBindingHelper.registerKeyBinding(keyBindingMeasure); + final KeyMapping keyBindingMeasureWithItem = new KeyMapping("key.blockmeter.useItem", -1, category); + KeyMappingHelper.registerKeyMapping(keyBindingMeasureWithItem); + final KeyMapping keyBindingMeasure = new KeyMapping("key.blockmeter.measure", InputConstants.Type.MOUSE, GLFW.GLFW_MOUSE_BUTTON_4, category); + KeyMappingHelper.registerKeyMapping(keyBindingMeasure); - WorldRenderEvents.BEFORE_DEBUG_RENDER.register(this::renderOverlay); + LevelRenderEvents.BEFORE_GIZMOS.register(this::renderOverlay); ClientPlayConnectionEvents.DISCONNECT.register(this::onDisconnected); ClientPlayConnectionEvents.JOIN.register(this::onConnected); @@ -219,27 +219,27 @@ public void onInitializeClient() { // (Issue in AutoConfig https://github.com/shedaniel/AutoConfig/issues/13) confMgr = (ConfigManager) AutoConfig.register(ModConfig.class, Toml4jConfigSerializer::new); ClientTickEvents.START_CLIENT_TICK.register(e -> { - if (keyBinding.wasPressed()) { + if (keyBinding.consumeClick()) { if (isShift()) { - if (undo()) getPlayer().sendMessage(Text.translatable("blockmeter.clearLast"), true); + if (undo()) getPlayer().sendOverlayMessage(Component.translatable("blockmeter.clearLast")); } else if (isCtrl()) { - if (clear()) getPlayer().sendMessage(Text.translatable("blockmeter.clearAll"), true); + if (clear()) getPlayer().sendOverlayMessage(Component.translatable("blockmeter.clearAll")); } else if (this.active) { disable(); - getPlayer().sendMessage(Text.translatable("blockmeter.toggle.off"), true); + getPlayer().sendOverlayMessage(Component.translatable("blockmeter.toggle.off")); } else { active = true; - ItemStack itemStack = getPlayer().getMainHandStack(); + ItemStack itemStack = getPlayer().getMainHandItem(); currentItem = itemStack.getItem(); - getPlayer().sendMessage(Text.translatable("blockmeter.toggle.on", itemStack.getItemName()), true); + getPlayer().sendOverlayMessage(Component.translatable("blockmeter.toggle.on", itemStack.getItemName())); } } - if (keyBindingMenu.wasPressed() && active) { - MinecraftClient.getInstance().setScreen(this.quickMenu); + if (keyBindingMenu.consumeClick() && active) { + Minecraft.getInstance().setScreen(this.quickMenu); } - if (keyBindingMeasure.wasPressed()) { + if (keyBindingMeasure.consumeClick()) { this.active = true; raycastBlock().ifPresent(this::onBlockMeterClick); } @@ -253,22 +253,22 @@ public void onInitializeClient() { } if (this.active) { - var key = KeyBindingHelper.getBoundKeyOf(keyBindingMeasureWithItem); + var key = KeyMappingHelper.getBoundKeyOf(keyBindingMeasureWithItem); var pressed = false; - if (key.getCode() == -1) { - pressed = GLFW.glfwGetMouseButton(MinecraftClient.getInstance().getWindow().getHandle(), 1) == 1; + if (key.getValue() == -1) { + pressed = GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().handle(), 1) == 1; } else { - switch (key.getCategory()) { + switch (key.getType()) { case KEYSYM, SCANCODE -> - pressed = GLFW.glfwGetKey(MinecraftClient.getInstance().getWindow().getHandle(), key.getCode()) == 1; + pressed = GLFW.glfwGetKey(Minecraft.getInstance().getWindow().handle(), key.getValue()) == 1; case MOUSE -> - pressed = GLFW.glfwGetMouseButton(MinecraftClient.getInstance().getWindow().getHandle(), key.getCode()) == 1; + pressed = GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().handle(), key.getValue()) == 1; } } if (pressed) { if (!measureWithItemDown.get()) { measureWithItemDown.set(true); - if (getPlayer().getMainHandStack().getItem().equals(this.currentItem)) { + if (getPlayer().getMainHandItem().getItem().equals(this.currentItem)) { raycastBlock().ifPresent(this::onBlockMeterClick); } } @@ -279,34 +279,34 @@ public void onInitializeClient() { }); UseItemCallback.EVENT.register((playerEntity, world, _hand) -> { - if (this.active && playerEntity.getMainHandStack().getItem().equals(this.currentItem)) { - return ActionResult.FAIL; + if (this.active && playerEntity.getMainHandItem().getItem().equals(this.currentItem)) { + return InteractionResult.FAIL; } - return ActionResult.PASS; + return InteractionResult.PASS; }); UseBlockCallback.EVENT.register((playerEntity, world, _hand, _block) -> { - if (this.active && playerEntity.getMainHandStack().getItem().equals(this.currentItem)) { - return ActionResult.FAIL; + if (this.active && playerEntity.getMainHandItem().getItem().equals(this.currentItem)) { + return InteractionResult.FAIL; } - return ActionResult.PASS; + return InteractionResult.PASS; }); AttackBlockCallback.EVENT.register(((player, world, hand, pos, direction) -> { var inside = this.boxes.stream().filter(box -> box.miningRestriction == ClientMeasureBox.MiningRestriction.Inside).anyMatch(box -> !box.contains(pos)); var outside = this.boxes.stream().filter(box -> box.miningRestriction == ClientMeasureBox.MiningRestriction.Outside).anyMatch(box -> box.contains(pos)); if (!isShift() && (inside || outside)) { - return ActionResult.FAIL; + return InteractionResult.FAIL; } else { - return ActionResult.PASS; + return InteractionResult.PASS; } })); } private Optional raycastBlock() { - var camera = MinecraftClient.getInstance().getCameraEntity(); + var camera = Minecraft.getInstance().getCameraEntity(); if (camera == null) { return Optional.empty(); } - final HitResult rayHit = camera.raycast(BlockMeterClient.getConfig().reach, 0.0f, false); + final HitResult rayHit = camera.pick(BlockMeterClient.getConfig().reach, 0.0f, false); if (rayHit.getType() == HitResult.Type.BLOCK) { final BlockHitResult blockHitResult = (BlockHitResult) rayHit; return Optional.of(blockHitResult.getBlockPos()); @@ -317,7 +317,7 @@ private Optional raycastBlock() { public void editBox(ClientMeasureBox box, BlockPos block) { this.editBoxGui.setBox(box); this.editBoxGui.setBlock(block); - MinecraftClient.getInstance().setScreen(this.editBoxGui); + Minecraft.getInstance().setScreen(this.editBoxGui); } /** @@ -338,11 +338,11 @@ private void onBlockMeterClick(final BlockPos block) { default: this.selectBoxGui.setBoxes(boxes); this.selectBoxGui.setBlock(block); - MinecraftClient.getInstance().setScreen(this.selectBoxGui); + Minecraft.getInstance().setScreen(this.selectBoxGui); break; } } else { - final ClientMeasureBox box = ClientMeasureBox.getBox(block, getPlayer().getEntityWorld().getRegistryKey().getValue()); + final ClientMeasureBox box = ClientMeasureBox.getBox(block, getPlayer().level().dimension().identifier()); this.boxes.add(box); } } else { @@ -374,7 +374,9 @@ private void sendBoxList() { * handles the BoxList of other Players */ private void handleServerBoxList(BoxPayload payload, ClientPlayNetworking.Context context) { - context.client().executeTask(() -> otherUsersBoxes = payload.receivedBoxes().entrySet().stream().map(entry -> Pair.of(entry.getKey(), entry.getValue().stream().map(ClientMeasureBox::new).toList())).collect(Collectors.toMap(Pair::getKey, Pair::getValue))); + context.client().execute(() -> otherUsersBoxes = payload.receivedBoxes().entrySet().stream() + .map(entry -> Pair.of(entry.getKey(), entry.getValue().stream().map(ClientMeasureBox::new).toList())) + .collect(Collectors.toMap(Pair::getKey, Pair::getValue))); } } diff --git a/src/main/java/win/baruna/blockmeter/BlockMeterServer.java b/src/main/java/win/baruna/blockmeter/BlockMeterServer.java index 293219b..e7d35fd 100644 --- a/src/main/java/win/baruna/blockmeter/BlockMeterServer.java +++ b/src/main/java/win/baruna/blockmeter/BlockMeterServer.java @@ -6,7 +6,7 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.level.ServerPlayer; import win.baruna.blockmeter.measurebox.MeasureBox; import java.util.HashMap; @@ -24,12 +24,12 @@ public class BlockMeterServer implements ModInitializer { public void onInitialize() { instance = this; - PayloadTypeRegistry.playS2C().register(BoxPayload.ID, BoxPayload.CODEC); - PayloadTypeRegistry.playC2S().register(BoxPayload.ID, BoxPayload.CODEC); + PayloadTypeRegistry.clientboundPlay().register(BoxPayload.ID, BoxPayload.CODEC); + PayloadTypeRegistry.serverboundPlay().register(BoxPayload.ID, BoxPayload.CODEC); ServerPlayNetworking.registerGlobalReceiver(BoxPayload.ID, this::processClientPacket); ServerLifecycleEvents.SERVER_STARTED.register(this::onStartServer); ServerPlayConnectionEvents.DISCONNECT.register((b, a) -> { - System.out.printf("DISCONNECTD %s%n", b.player.getUuid()); + System.out.printf("DISCONNECTD %s%n", b.player.getUUID()); }); } @@ -38,10 +38,10 @@ public void onInitialize() { * * @param player Player to be removed */ - public static void removePlayer(ServerPlayerEntity player) { + public static void removePlayer(ServerPlayer player) { if (instance != null) { - if (instance.playerBoxes.containsKey(player.getUuid())) { - instance.playerBoxes.remove(player.getUuid()); + if (instance.playerBoxes.containsKey(player.getUUID())) { + instance.playerBoxes.remove(player.getUUID()); instance.informAllPlayers(); } } @@ -62,11 +62,11 @@ private void processClientPacket(BoxPayload payload, ServerPlayNetworking.Contex try { var boxes = payload.receivedBoxes().values().stream().findFirst().orElse(List.of()); synchronized (playerBoxes) { - playerBoxes.put(context.player().getUuid(), boxes); + playerBoxes.put(context.player().getUUID(), boxes); } } catch (IllegalArgumentException ex) { synchronized (playerBoxes) { - playerBoxes.remove(context.player().getUuid()); + playerBoxes.remove(context.player().getUUID()); } } @@ -78,7 +78,7 @@ private void processClientPacket(BoxPayload payload, ServerPlayNetworking.Contex */ private void informAllPlayers() { BoxPayload data = buildS2CPacket(); - for (ServerPlayerEntity player : server.getPlayerManager().getPlayerList()) { + for (ServerPlayer player : server.getPlayerList().getPlayers()) { ServerPlayNetworking.send(player, data); } } @@ -92,9 +92,9 @@ private BoxPayload buildS2CPacket() { var data = new HashMap>(); synchronized (playerBoxes) { for (var playerBoxEntry : playerBoxes.entrySet()) { - ServerPlayerEntity player = server.getPlayerManager().getPlayer(playerBoxEntry.getKey()); + ServerPlayer player = server.getPlayerList().getPlayer(playerBoxEntry.getKey()); if (player != null) { - data.put(player.getNameForScoreboard(), playerBoxEntry.getValue()); + data.put(player.getScoreboardName(), playerBoxEntry.getValue()); } } } diff --git a/src/main/java/win/baruna/blockmeter/BoxPayload.java b/src/main/java/win/baruna/blockmeter/BoxPayload.java index 1de9fa1..de6a4d1 100644 --- a/src/main/java/win/baruna/blockmeter/BoxPayload.java +++ b/src/main/java/win/baruna/blockmeter/BoxPayload.java @@ -1,24 +1,24 @@ package win.baruna.blockmeter; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import win.baruna.blockmeter.measurebox.MeasureBox; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.Identifier; -public record BoxPayload(Map> receivedBoxes) implements CustomPayload { - public static final PacketCodec CODEC = - CustomPayload.codecOf(BoxPayload::write, BoxPayload::new); +public record BoxPayload(Map> receivedBoxes) implements CustomPacketPayload { + public static final StreamCodec CODEC = + CustomPacketPayload.codec(BoxPayload::write, BoxPayload::new); - private void write(PacketByteBuf data) { + private void write(FriendlyByteBuf data) { data.writeInt(receivedBoxes.size()); for (var player : receivedBoxes.entrySet()) { - data.writeString(player.getKey()); + data.writeUtf(player.getKey()); data.writeInt(player.getValue().size()); for (int i = 0; i < player.getValue().size(); i++) { player.getValue().get(i).writePacketBuf(data); @@ -26,14 +26,14 @@ private void write(PacketByteBuf data) { } } - public static final Id ID = new Id<>(Identifier.of(BlockMeter.MOD_ID, "boxes")); + public static final Type ID = new Type<>(Identifier.fromNamespaceAndPath(BlockMeter.MOD_ID, "boxes")); - public BoxPayload(PacketByteBuf data) { + public BoxPayload(FriendlyByteBuf data) { this(new HashMap<>()); var playerCount = data.readInt(); for (var i = 0; i < playerCount; i++) { - var playerName = data.readString(); + var playerName = data.readUtf(); int boxCount = data.readInt(); var boxes = new ArrayList(boxCount); for (var j = 0; j < boxCount; j++) { @@ -44,7 +44,7 @@ public BoxPayload(PacketByteBuf data) { } @Override - public Id getId() { + public Type type() { return ID; } } diff --git a/src/main/java/win/baruna/blockmeter/InputUtils.java b/src/main/java/win/baruna/blockmeter/InputUtils.java index 7b307c6..f78032f 100644 --- a/src/main/java/win/baruna/blockmeter/InputUtils.java +++ b/src/main/java/win/baruna/blockmeter/InputUtils.java @@ -1,26 +1,25 @@ package win.baruna.blockmeter; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.util.InputUtil; -import net.minecraft.client.util.Window; - +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.Window; import java.util.function.Function; import java.util.function.Supplier; +import net.minecraft.client.Minecraft; public interface InputUtils { default Window window() { - return MinecraftClient.getInstance().getWindow(); + return Minecraft.getInstance().getWindow(); } default boolean isKey(int key) { - return InputUtil.isKeyPressed(window(), key); + return InputConstants.isKeyDown(window(), key); } default boolean isShift() { - return isKey(InputUtil.GLFW_KEY_LEFT_SHIFT) || isKey(InputUtil.GLFW_KEY_RIGHT_SHIFT); + return isKey(InputConstants.KEY_LSHIFT) || isKey(InputConstants.KEY_RSHIFT); } default boolean isCtrl() { - return isKey(InputUtil.GLFW_KEY_LEFT_CONTROL) || isKey(InputUtil.GLFW_KEY_RIGHT_CONTROL); + return isKey(InputConstants.KEY_LCONTROL) || isKey(InputConstants.KEY_RCONTROL); } } \ No newline at end of file diff --git a/src/main/java/win/baruna/blockmeter/gui/EditBoxGui.java b/src/main/java/win/baruna/blockmeter/gui/EditBoxGui.java index e7010c9..91798de 100644 --- a/src/main/java/win/baruna/blockmeter/gui/EditBoxGui.java +++ b/src/main/java/win/baruna/blockmeter/gui/EditBoxGui.java @@ -1,16 +1,15 @@ package win.baruna.blockmeter.gui; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.util.NarratorManager; -import net.minecraft.text.Text; -import net.minecraft.util.math.BlockPos; import win.baruna.blockmeter.measurebox.ClientMeasureBox; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; +import net.minecraft.client.GameNarrator; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; import static win.baruna.blockmeter.gui.SelectBoxGui.*; @@ -20,7 +19,7 @@ public class EditBoxGui extends Screen { private BlockPos block; public EditBoxGui() { - super(NarratorManager.EMPTY); + super(GameNarrator.NO_TITLE); } @Override @@ -28,34 +27,29 @@ protected void init() { final int uiHeight = 2 * (BUTTONHEIGHT + PADDING); AtomicInteger buttonIdx = new AtomicInteger(1); - Consumer addButton = button -> this.addDrawableChild(button - .position(this.width / 2 - BUTTONWIDTH / 2, + Consumer addButton = button -> this.addRenderableWidget(button + .pos(this.width / 2 - BUTTONWIDTH / 2, this.height / 2 - uiHeight / 2 + buttonIdx.getAndIncrement() * (BUTTONHEIGHT + PADDING) + PADDING) .size(BUTTONWIDTH, BUTTONHEIGHT) .build()); - addButton.accept(new ButtonWidget.Builder(Text.translatable("blockmeter.moveCorner"), + addButton.accept(new Button.Builder(Component.translatable("blockmeter.moveCorner"), button -> { box.loosenCorner(block); - MinecraftClient.getInstance().setScreen(null); + Minecraft.getInstance().setScreen(null); })); - addButton.accept(new ButtonWidget.Builder(Text.translatable("blockmeter.restrictMining", Text.translatable(box.miningRestriction.translation)), button -> { + addButton.accept(new Button.Builder(Component.translatable("blockmeter.restrictMining", Component.translatable(box.miningRestriction.translation)), button -> { box.miningRestriction = box.miningRestriction.next(); - MinecraftClient.getInstance().setScreen(null); + Minecraft.getInstance().setScreen(null); })); - addButton.accept(new ButtonWidget.Builder(Text.translatable("gui.cancel"), - button -> MinecraftClient.getInstance().setScreen(null))); + addButton.accept(new Button.Builder(Component.translatable("gui.cancel"), + button -> Minecraft.getInstance().setScreen(null))); } @Override - public void render(DrawContext context, int mouseX, int mouseY, float delta) { - super.render(context, mouseX, mouseY, delta); - } - - @Override - public boolean shouldPause() { + public boolean isPauseScreen() { return false; } diff --git a/src/main/java/win/baruna/blockmeter/gui/ModMenu.java b/src/main/java/win/baruna/blockmeter/gui/ModMenu.java index f8add7a..7c5b485 100644 --- a/src/main/java/win/baruna/blockmeter/gui/ModMenu.java +++ b/src/main/java/win/baruna/blockmeter/gui/ModMenu.java @@ -4,6 +4,7 @@ import com.terraformersmc.modmenu.api.ModMenuApi; import me.shedaniel.autoconfig.AutoConfig; +import me.shedaniel.autoconfig.AutoConfigClient; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import win.baruna.blockmeter.ModConfig; @@ -12,6 +13,6 @@ public class ModMenu implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> AutoConfig.getConfigScreen(ModConfig.class, parent).get(); + return parent -> AutoConfigClient.getConfigScreen(ModConfig.class, parent).get(); } -} \ No newline at end of file +} diff --git a/src/main/java/win/baruna/blockmeter/gui/OptionsGui.java b/src/main/java/win/baruna/blockmeter/gui/OptionsGui.java index c8d49bd..9f34be9 100644 --- a/src/main/java/win/baruna/blockmeter/gui/OptionsGui.java +++ b/src/main/java/win/baruna/blockmeter/gui/OptionsGui.java @@ -1,23 +1,19 @@ package win.baruna.blockmeter.gui; -import com.mojang.blaze3d.systems.RenderSystem; import me.shedaniel.math.Color; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; -//import net.minecraft.client.gl.ShaderProgramKey; -//import net.minecraft.client.gl.ShaderProgramKeys; -import net.minecraft.client.gl.RenderPipelines; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.ButtonTextures; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.input.AbstractInput; -import net.minecraft.client.render.*; -import net.minecraft.client.util.NarratorManager; -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -import net.minecraft.util.DyeColor; -import net.minecraft.util.Identifier; +import net.minecraft.client.GameNarrator; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.components.WidgetSprites; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.InputWithModifiers; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.DyeColor; import win.baruna.blockmeter.BlockMeterClient; import win.baruna.blockmeter.ModConfig; import win.baruna.blockmeter.measurebox.ClientMeasureBox; @@ -25,7 +21,7 @@ public class OptionsGui extends Screen { public OptionsGui() { - super(NarratorManager.EMPTY); + super(GameNarrator.NO_TITLE); } private final static int BUTTONWIDTH = 200; @@ -38,70 +34,65 @@ protected void init() { for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { final int colorIndex = i * 4 + j; - this.addDrawableChild(new ColorButton(this.width / 2 - 44 + j * 22, + this.addRenderableWidget(new ColorButton(this.width / 2 - 44 + j * 22, this.height / 2 - 88 + i * 22, 20, 20, null, - Color.ofOpaque(DyeColor.byIndex(colorIndex) - .getMapColor().color), config.colorIndex == colorIndex, false, + Color.ofOpaque(DyeColor.byId(colorIndex) + .getMapColor().col), config.colorIndex == colorIndex, false, button -> { ClientMeasureBox.setColorIndex(colorIndex); final ClientMeasureBox currentBox = BlockMeterClient.getInstance().getCurrentBox(); if (currentBox != null) - currentBox.setColor(DyeColor.byIndex(colorIndex)); - MinecraftClient.getInstance().setScreen(null); + currentBox.setColor(DyeColor.byId(colorIndex)); + Minecraft.getInstance().setScreen(null); })); } } - this.addDrawableChild(new ButtonWidget.Builder( - Text.translatable("blockmeter.keepColor", Text.translatable(config.incrementColor ? "options.off" : + this.addRenderableWidget(new Button.Builder( + Component.translatable("blockmeter.keepColor", Component.translatable(config.incrementColor ? "options.off" : "options.on")), button -> { config.incrementColor = !config.incrementColor; - MinecraftClient.getInstance().setScreen(null); + Minecraft.getInstance().setScreen(null); // Todo find a way to increment to a new Color if a box was created while // incrementColor was disabled BlockMeterClient.getConfigManager().save(); }) - .position(this.width / 2 - BUTTONWIDTH / 2, this.height / 2 + 10) + .pos(this.width / 2 - BUTTONWIDTH / 2, this.height / 2 + 10) .size(BUTTONWIDTH, 20) .build()); - this.addDrawableChild(new ButtonWidget.Builder(Text.translatable("blockmeter.diagonal", - Text.translatable(config.innerDiagonal ? "options.on" : "options.off")), button -> { + this.addRenderableWidget(new Button.Builder(Component.translatable("blockmeter.diagonal", + Component.translatable(config.innerDiagonal ? "options.on" : "options.off")), button -> { System.err.println("IDK WHAT YOU ARE DOING"); config.innerDiagonal = !config.innerDiagonal; - MinecraftClient.getInstance().setScreen(null); + Minecraft.getInstance().setScreen(null); BlockMeterClient.getConfigManager().save(); }) - .position(this.width / 2 - BUTTONWIDTH / 2, this.height / 2 + 32) + .pos(this.width / 2 - BUTTONWIDTH / 2, this.height / 2 + 32) .size(BUTTONWIDTH, 20) .build()); - this.addDrawableChild(new ButtonWidget.Builder(Text.translatable("blockmeter.showOthers", - Text.translatable(config.showOtherUsersBoxes ? "options.on" : "options.off")), button -> { + this.addRenderableWidget(new Button.Builder(Component.translatable("blockmeter.showOthers", + Component.translatable(config.showOtherUsersBoxes ? "options.on" : "options.off")), button -> { System.err.println("IDK WHAT YOU ARE DOING"); config.showOtherUsersBoxes = !config.showOtherUsersBoxes; - MinecraftClient.getInstance().setScreen(null); + Minecraft.getInstance().setScreen(null); BlockMeterClient.getConfigManager().save(); }) - .position(this.width / 2 - BUTTONWIDTH / 2, this.height / 2 + 54) + .pos(this.width / 2 - BUTTONWIDTH / 2, this.height / 2 + 54) .size(BUTTONWIDTH, 20) .build()); } @Override - public void render(DrawContext context, int mouseX, int mouseY, float delta) { - super.render(context, mouseX, mouseY, delta); - } - - @Override - public boolean shouldPause() { + public boolean isPauseScreen() { return false; } } -class ColorButton extends ButtonWidget { +class ColorButton extends Button { Color color; int x; int y; @@ -109,13 +100,13 @@ class ColorButton extends ButtonWidget { int height; boolean selected; boolean texture; - MutableText text; - private static final ButtonTextures TEXTURES = new ButtonTextures( - Identifier.ofVanilla("widget/button"), Identifier.ofVanilla("widget/button_disabled"), Identifier.ofVanilla("widget/button_highlighted") + MutableComponent text; + private static final WidgetSprites TEXTURES = new WidgetSprites( + Identifier.withDefaultNamespace("widget/button"), Identifier.withDefaultNamespace("widget/button_disabled"), Identifier.withDefaultNamespace("widget/button_highlighted") ); @Override - public void onPress(AbstractInput input) { + public void onPress(InputWithModifiers input) { System.out.println(color.getRed()); System.out.println(color.getGreen()); System.out.println(color.getBlue()); @@ -123,9 +114,9 @@ public void onPress(AbstractInput input) { super.onPress(input); } - ColorButton(final int x, final int y, final int width, final int height, final MutableText label, final Color color, - final boolean selected, boolean texture, PressAction onPress) { - super(x, y, width, height, net.minecraft.text.Text.empty(), onPress, DEFAULT_NARRATION_SUPPLIER); + ColorButton(final int x, final int y, final int width, final int height, final MutableComponent label, final Color color, + final boolean selected, boolean texture, OnPress onPress) { + super(x, y, width, height, Component.empty(), onPress, DEFAULT_NARRATION); this.selected = false; this.color = color; this.x = x + 2; @@ -139,27 +130,26 @@ public void onPress(AbstractInput input) { } @Override - protected void drawIcon(DrawContext context, int mouseX, int mouseY, float deltaTicks) { - context.drawGuiTexture( + protected void extractContents(GuiGraphicsExtractor context, int mouseX, int mouseY, float deltaTicks) { + context.blitSprite( RenderPipelines.GUI_TEXTURED, - TEXTURES.get(this.active, this.isSelected()), + TEXTURES.get(this.active, this.isHoveredOrFocused()), x, y, width, height, color.getColor() ); if (text != null) { boolean dark = (0.299f * color.getRed() + 0.587f * color.getBlue() + 0.114f * color.getRed()) / 255f < 0.8f; - final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - int text_width = textRenderer.getWidth(text); + final Font textRenderer = Minecraft.getInstance().font; + int text_width = textRenderer.width(text); if (dark || texture) - context.drawText(textRenderer, text.asOrderedText(), x + width / 2 - text_width / 2, + context.text(textRenderer, text.getVisualOrderText(), x + width / 2 - text_width / 2, y + height / 2 - 4, 0xFFFFFF, true); else { // shadow - context.drawText(textRenderer, text, x + width / 2 - text_width / 2 + 1, y + height / 2 - 3, 0xAAAAAA - , false); - context.drawText(textRenderer, text, x + width / 2 - text_width / 2, y + height / 2 - 4, 0, false); + context.text(textRenderer, text, x + width / 2 - text_width / 2 + 1, y + height / 2 - 3, 0xAAAAAA, + false); + context.text(textRenderer, text, x + width / 2 - text_width / 2, y + height / 2 - 4, 0, false); } } - //drawButton(context); } } diff --git a/src/main/java/win/baruna/blockmeter/gui/SelectBoxGui.java b/src/main/java/win/baruna/blockmeter/gui/SelectBoxGui.java index 060440c..2efceab 100644 --- a/src/main/java/win/baruna/blockmeter/gui/SelectBoxGui.java +++ b/src/main/java/win/baruna/blockmeter/gui/SelectBoxGui.java @@ -1,13 +1,12 @@ package win.baruna.blockmeter.gui; import me.shedaniel.math.Color; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.util.NarratorManager; -import net.minecraft.text.Text; -import net.minecraft.util.math.BlockPos; +import net.minecraft.client.GameNarrator; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; import win.baruna.blockmeter.BlockMeterClient; import win.baruna.blockmeter.measurebox.ClientMeasureBox; @@ -17,7 +16,7 @@ public class SelectBoxGui extends Screen { private BlockPos block; public SelectBoxGui() { - super(NarratorManager.EMPTY); + super(GameNarrator.NO_TITLE); } final static int BUTTONWIDTH = 250; @@ -30,36 +29,31 @@ protected void init() { for (int i = 0; i < boxes.length; i++) { final ClientMeasureBox box = boxes[i]; - final var text = Text.translatable("blockmeter.boxToString", + final var text = Component.translatable("blockmeter.boxToString", box.getBlockStart().getX(), box.getBlockStart().getY(), box.getBlockStart().getZ(), box.getBlockEnd().getX(), box.getBlockEnd().getY(), box.getBlockEnd().getZ()); // text.setStyle(text.getStyle().withColor(TextColor.fromRgb(box.getColor().getSignColor()))); - this.addDrawableChild(new ColorButton(this.width / 2 - (BUTTONWIDTH) / 2, + this.addRenderableWidget(new ColorButton(this.width / 2 - (BUTTONWIDTH) / 2, this.height / 2 - uiHeight / 2 + i * (BUTTONHEIGHT + PADDING), BUTTONWIDTH, BUTTONHEIGHT, text, Color.ofOpaque(box.getColor()), false, true, button -> { BlockMeterClient.getInstance().editBox(box, block); - MinecraftClient.getInstance().setScreen(null); + Minecraft.getInstance().setScreen(null); })); } - this.addDrawableChild(new ButtonWidget.Builder(Text.translatable("gui.cancel"), - button -> MinecraftClient.getInstance().setScreen(null)) - .position(this.width / 2 - BUTTONWIDTH / 2, + this.addRenderableWidget(new Button.Builder(Component.translatable("gui.cancel"), + button -> Minecraft.getInstance().setScreen(null)) + .pos(this.width / 2 - BUTTONWIDTH / 2, this.height / 2 - uiHeight / 2 + boxes.length * (BUTTONHEIGHT + PADDING) + PADDING) .size(BUTTONWIDTH, BUTTONHEIGHT) .build()); } @Override - public void render(DrawContext context, int mouseX, int mouseY, float delta) { - super.render(context, mouseX, mouseY, delta); - } - - @Override - public boolean shouldPause() { + public boolean isPauseScreen() { return false; } diff --git a/src/main/java/win/baruna/blockmeter/measurebox/ClientMeasureBox.java b/src/main/java/win/baruna/blockmeter/measurebox/ClientMeasureBox.java index da9e64a..6c42f79 100644 --- a/src/main/java/win/baruna/blockmeter/measurebox/ClientMeasureBox.java +++ b/src/main/java/win/baruna/blockmeter/measurebox/ClientMeasureBox.java @@ -1,16 +1,16 @@ package win.baruna.blockmeter.measurebox; import me.shedaniel.autoconfig.AutoConfig; -import net.fabricmc.fabric.api.client.rendering.v1.world.WorldRenderContext; -import net.minecraft.client.render.DrawStyle; -import net.minecraft.util.DyeColor; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.BlockBox; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.debug.gizmo.GizmoDrawing; -import net.minecraft.world.debug.gizmo.TextGizmo; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext; +import net.minecraft.core.BlockPos; +import net.minecraft.gizmos.GizmoStyle; +import net.minecraft.gizmos.Gizmos; +import net.minecraft.gizmos.TextGizmo; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.level.levelgen.structure.BoundingBox; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.NotNull; import win.baruna.blockmeter.BlockMeterClient; import win.baruna.blockmeter.ModConfig; @@ -23,13 +23,13 @@ public class ClientMeasureBox extends MeasureBox { @NotNull public MiningRestriction miningRestriction; - private Box box; + private AABB box; private int argb; protected ClientMeasureBox(final BlockPos blockStart, final BlockPos blockEnd, final Identifier dimension, final DyeColor color, final boolean finished, final int mode, final int orientation) { super(blockStart, blockEnd, dimension, color, finished, mode, orientation); miningRestriction = MiningRestriction.Off; - argb = color.getEntityColor() | 0xFF000000; + argb = color.getTextureDiffuseColor() | 0xFF000000; updateBoundingBox(); } @@ -61,7 +61,7 @@ static private void incrementColor() { */ static private DyeColor getSelectedColor() { final ModConfig conf = BlockMeterClient.getConfigManager().getConfig(); - return DyeColor.byIndex(conf.colorIndex); + return DyeColor.byId(conf.colorIndex); } public static void setColorIndex(final int newColor) { @@ -102,7 +102,7 @@ public void setFinished() { */ public void setColor(final DyeColor color) { this.color = color; - this.argb = color.getEntityColor() | 0xFF000000; + this.argb = color.getTextureDiffuseColor() | 0xFF000000; } /** @@ -130,19 +130,19 @@ public void loosenCorner(final BlockPos block) { finished = false; } - public void render(WorldRenderContext context, final Identifier currentDimension) { + public void render(LevelRenderContext context, final Identifier currentDimension) { render(context, currentDimension, null); } - public void render(WorldRenderContext context, final Identifier currentDimension, final String boxCreatorName) { + public void render(LevelRenderContext context, final Identifier currentDimension, final String boxCreatorName) { if (!(currentDimension.equals(this.dimension))) { return; } - GizmoDrawing.box(this.box, DrawStyle.stroked(getColor(), 2f)).ignoreOcclusion(); + Gizmos.cuboid(this.box, GizmoStyle.stroke(getColor(), 2f)).setAlwaysOnTop(); if (BlockMeterClient.getConfigManager().getConfig().innerDiagonal) { - GizmoDrawing.line(box.getMinPos(), box.getMaxPos(), getColor()).ignoreOcclusion(); + Gizmos.line(box.getMinPosition(), box.getMaxPosition(), getColor()).setAlwaysOnTop(); } this.drawLengths(context, boxCreatorName); @@ -160,43 +160,43 @@ private void updateBoundingBox() { final int by = this.blockEnd.getY(); final int bz = this.blockEnd.getZ(); - this.box = new Box(Math.min(ax, bx), Math.min(ay, by), Math.min(az, bz), Math.max(ax, bx) + 1, Math.max(ay, by) + 1, Math.max(az, bz) + 1); + this.box = new AABB(Math.min(ax, bx), Math.min(ay, by), Math.min(az, bz), Math.max(ax, bx) + 1, Math.max(ay, by) + 1, Math.max(az, bz) + 1); } - private void drawLengths(WorldRenderContext context, final String boxCreatorName) { - final int lengthX = (int) this.box.getLengthX(); - final int lengthY = (int) this.box.getLengthY(); - final int lengthZ = (int) this.box.getLengthZ(); + private void drawLengths(LevelRenderContext context, final String boxCreatorName) { + final int lengthX = (int) this.box.getXsize(); + final int lengthY = (int) this.box.getYsize(); + final int lengthZ = (int) this.box.getZsize(); - final Vec3d boxCenter = this.box.getCenter(); - final double diagonalLength = new Vec3d(this.box.minX, this.box.minY, this.box.minZ).distanceTo(new Vec3d(this.box.maxX, this.box.maxY, this.box.maxZ)); + final Vec3 boxCenter = this.box.getCenter(); + final double diagonalLength = new Vec3(this.box.minX, this.box.minY, this.box.minZ).distanceTo(new Vec3(this.box.maxX, this.box.maxY, this.box.maxZ)); - final Vec3d pos = context.worldState().cameraRenderState.pos; + final Vec3 pos = context.levelState().cameraRenderState.pos; final List lines = new ArrayList<>(); - lines.add(new Line(new Box(this.box.minX, this.box.minY, this.box.minZ, this.box.minX, this.box.minY, this.box.maxZ), pos)); - lines.add(new Line(new Box(this.box.minX, this.box.maxY, this.box.minZ, this.box.minX, this.box.maxY, this.box.maxZ), pos)); - lines.add(new Line(new Box(this.box.maxX, this.box.minY, this.box.minZ, this.box.maxX, this.box.minY, this.box.maxZ), pos)); - lines.add(new Line(new Box(this.box.maxX, this.box.maxY, this.box.minZ, this.box.maxX, this.box.maxY, this.box.maxZ), pos)); + lines.add(new Line(new AABB(this.box.minX, this.box.minY, this.box.minZ, this.box.minX, this.box.minY, this.box.maxZ), pos)); + lines.add(new Line(new AABB(this.box.minX, this.box.maxY, this.box.minZ, this.box.minX, this.box.maxY, this.box.maxZ), pos)); + lines.add(new Line(new AABB(this.box.maxX, this.box.minY, this.box.minZ, this.box.maxX, this.box.minY, this.box.maxZ), pos)); + lines.add(new Line(new AABB(this.box.maxX, this.box.maxY, this.box.minZ, this.box.maxX, this.box.maxY, this.box.maxZ), pos)); Collections.sort(lines); - final Vec3d lineZ = lines.getFirst().line.getCenter(); + final Vec3 lineZ = lines.getFirst().line.getCenter(); lines.clear(); - lines.add(new Line(new Box(this.box.minX, this.box.minY, this.box.minZ, this.box.minX, this.box.maxY, this.box.minZ), pos)); - lines.add(new Line(new Box(this.box.minX, this.box.minY, this.box.maxZ, this.box.minX, this.box.maxY, this.box.maxZ), pos)); - lines.add(new Line(new Box(this.box.maxX, this.box.minY, this.box.minZ, this.box.maxX, this.box.maxY, this.box.minZ), pos)); - lines.add(new Line(new Box(this.box.maxX, this.box.minY, this.box.maxZ, this.box.maxX, this.box.maxY, this.box.maxZ), pos)); + lines.add(new Line(new AABB(this.box.minX, this.box.minY, this.box.minZ, this.box.minX, this.box.maxY, this.box.minZ), pos)); + lines.add(new Line(new AABB(this.box.minX, this.box.minY, this.box.maxZ, this.box.minX, this.box.maxY, this.box.maxZ), pos)); + lines.add(new Line(new AABB(this.box.maxX, this.box.minY, this.box.minZ, this.box.maxX, this.box.maxY, this.box.minZ), pos)); + lines.add(new Line(new AABB(this.box.maxX, this.box.minY, this.box.maxZ, this.box.maxX, this.box.maxY, this.box.maxZ), pos)); Collections.sort(lines); - final Vec3d lineY = lines.getFirst().line.getCenter(); + final Vec3 lineY = lines.getFirst().line.getCenter(); lines.clear(); - lines.add(new Line(new Box(this.box.minX, this.box.minY, this.box.minZ, this.box.maxX, this.box.minY, this.box.minZ), pos)); - lines.add(new Line(new Box(this.box.minX, this.box.minY, this.box.maxZ, this.box.maxX, this.box.minY, this.box.maxZ), pos)); - lines.add(new Line(new Box(this.box.minX, this.box.maxY, this.box.minZ, this.box.maxX, this.box.maxY, this.box.minZ), pos)); - lines.add(new Line(new Box(this.box.minX, this.box.maxY, this.box.maxZ, this.box.maxX, this.box.maxY, this.box.maxZ), pos)); + lines.add(new Line(new AABB(this.box.minX, this.box.minY, this.box.minZ, this.box.maxX, this.box.minY, this.box.minZ), pos)); + lines.add(new Line(new AABB(this.box.minX, this.box.minY, this.box.maxZ, this.box.maxX, this.box.minY, this.box.maxZ), pos)); + lines.add(new Line(new AABB(this.box.minX, this.box.maxY, this.box.minZ, this.box.maxX, this.box.maxY, this.box.minZ), pos)); + lines.add(new Line(new AABB(this.box.minX, this.box.maxY, this.box.maxZ, this.box.maxX, this.box.maxY, this.box.maxZ), pos)); Collections.sort(lines); - final Vec3d lineX = lines.getFirst().line.getCenter(); + final Vec3 lineX = lines.getFirst().line.getCenter(); final String playerNameStr = (boxCreatorName == null ? "" : boxCreatorName + ": "); @@ -208,7 +208,7 @@ private void drawLengths(WorldRenderContext context, final String boxCreatorName this.drawText(lineY, playerNameStr + lengthY, pos); } - private void drawText(Vec3d pos, final String text, final Vec3d playerPos) { + private void drawText(Vec3 pos, final String text, final Vec3 playerPos) { float size = .3f; final int constDist = 10; @@ -217,11 +217,11 @@ private void drawText(Vec3d pos, final String text, final Vec3d playerPos) { if (dist > constDist) size = dist * size / constDist; } - GizmoDrawing.text(text, pos, TextGizmo.Style.left(getColor()).scaled(size)).ignoreOcclusion(); + Gizmos.billboardText(text, pos, TextGizmo.Style.forColorAndCentered(getColor()).withScale(size)).setAlwaysOnTop(); } public boolean contains(BlockPos block) { - return BlockBox.create(blockStart, blockEnd).contains(block); + return BoundingBox.fromCorners(blockStart, blockEnd).isInside(block); } public enum MiningRestriction { @@ -250,10 +250,10 @@ public MiningRestriction next() { } private static class Line implements Comparable { - Box line; + AABB line; double distance; - Line(final Box line, final Vec3d pos) { + Line(final AABB line, final Vec3 pos) { this.line = line; this.distance = line.getCenter().distanceTo(pos); } diff --git a/src/main/java/win/baruna/blockmeter/measurebox/MeasureBox.java b/src/main/java/win/baruna/blockmeter/measurebox/MeasureBox.java index 32cba11..87cb4d9 100644 --- a/src/main/java/win/baruna/blockmeter/measurebox/MeasureBox.java +++ b/src/main/java/win/baruna/blockmeter/measurebox/MeasureBox.java @@ -1,10 +1,10 @@ package win.baruna.blockmeter.measurebox; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.util.DyeColor; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.ColorHelper; +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.Identifier; +import net.minecraft.util.ARGB; +import net.minecraft.world.item.DyeColor; public class MeasureBox { @@ -29,7 +29,7 @@ public Identifier getDimension() { } public int getColor() { - return ColorHelper.fullAlpha(color.getSignColor()); + return ARGB.opaque(color.getTextColor()); } public boolean isFinished() { @@ -54,11 +54,11 @@ protected MeasureBox(BlockPos blockStart, BlockPos blockEnd, * @param attachedData a PacketByteBuf containing the ClientMeasureBox * @return the PacketByteBuf submitted */ - protected MeasureBox(PacketByteBuf attachedData) { + protected MeasureBox(FriendlyByteBuf attachedData) { this.blockStart = attachedData.readBlockPos(); this.blockEnd = attachedData.readBlockPos(); this.dimension = attachedData.readIdentifier(); - this.color = DyeColor.byIndex(attachedData.readInt()); + this.color = DyeColor.byId(attachedData.readInt()); this.finished = attachedData.readBoolean(); this.mode = attachedData.readInt(); this.orientation = attachedData.readInt(); @@ -73,11 +73,11 @@ protected MeasureBox(PacketByteBuf attachedData) { * * @param buf PacketByteBuf to fill */ - public void writePacketBuf(PacketByteBuf buf) { + public void writePacketBuf(FriendlyByteBuf buf) { buf.writeBlockPos(this.blockStart); buf.writeBlockPos(this.blockEnd); buf.writeIdentifier(dimension); - buf.writeInt(color.getIndex()); + buf.writeInt(color.getId()); buf.writeBoolean(finished); buf.writeInt(mode); buf.writeInt(orientation); @@ -89,7 +89,7 @@ public void writePacketBuf(PacketByteBuf buf) { * @param attachedData a PacketByteBuf containing the ClientMeasureBox * @return the PacketByteBuf submitted */ - public static MeasureBox fromPacketByteBuf(PacketByteBuf attachedData) { + public static MeasureBox fromPacketByteBuf(FriendlyByteBuf attachedData) { return new MeasureBox(attachedData); } } diff --git a/src/main/resources/blockmeter.mixins.json b/src/main/resources/blockmeter.mixins.json index 9f57542..6c4527e 100644 --- a/src/main/resources/blockmeter.mixins.json +++ b/src/main/resources/blockmeter.mixins.json @@ -1,7 +1,7 @@ { "required": true, "package": "win.baruna.blockmeter.mixin", - "compatibilityLevel": "JAVA_16", + "compatibilityLevel": "JAVA_25", "mixins": [ ], "client": [ diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index dbbf114..931fff0 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -17,9 +17,9 @@ }, "mixins": ["blockmeter.mixins.json"], "depends": { - "fabricloader": "*", - "fabric": "*", - "minecraft": ">=1.21.10" + "fabricloader": ">=0.19.2", + "fabric-api": "*", + "minecraft": ">=26.1 <=26.1.2" }, "recommends": { "modmenu": "*" diff --git a/version.properties b/version.properties deleted file mode 100644 index 1de5074..0000000 --- a/version.properties +++ /dev/null @@ -1,2 +0,0 @@ -modVersion = 1.19 -minecraftVersion = 1.21.11