Skip to content

Commit

Permalink
Port over mixins
Browse files Browse the repository at this point in the history
  • Loading branch information
Gaming32 committed Apr 20, 2023
1 parent a633622 commit efe1a6f
Show file tree
Hide file tree
Showing 14 changed files with 999 additions and 1 deletion.
48 changes: 48 additions & 0 deletions src/main/java/io/github/gaming32/worldhost/WorldHost.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.mojang.authlib.GameProfile;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.CommandDispatcher;
import io.github.gaming32.worldhost.protocol.ProtocolClient;
import io.github.gaming32.worldhost.upnp.Gateway;
import io.github.gaming32.worldhost.upnp.GatewayFinder;
Expand All @@ -16,13 +18,15 @@
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.client.resources.SkinManager;
import net.minecraft.client.server.IntegratedServer;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.status.ClientboundStatusResponsePacket;
import net.minecraft.network.protocol.status.ServerStatus;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.players.GameProfileCache;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.Nullable;
import org.quiltmc.json5.JsonReader;
import org.quiltmc.json5.JsonWriter;
import java.io.File;
Expand All @@ -35,6 +39,8 @@
import java.util.function.Consumer;
import java.util.function.Supplier;

import static net.minecraft.commands.Commands.literal;

//#if MC >= 11700
import com.mojang.logging.LogUtils;
import org.slf4j.Logger;
Expand Down Expand Up @@ -210,6 +216,29 @@ public static void tickHandler(Minecraft minecraft) {
}
}

public static void commandRegistrationHandler(CommandDispatcher<CommandSourceStack> dispatcher) {
dispatcher.register(literal("worldhost")
.then(literal("ip")
.requires(s -> s.getServer().isPublished())
.executes(ctx -> {
final String externalIp = getExternalIp();
if (externalIp == null) {
ctx.getSource().sendFailure(Component.translatable("world-host.worldhost.ip.no_server_support"));
return 0;
}
ctx.getSource().sendSuccess(
Components.translatable(
"world-host.worldhost.ip.success",
Components.copyOnClickText(externalIp)
),
false
);
return Command.SINGLE_SUCCESS;
})
)
);
}

public static void reconnect(boolean successToast, boolean failureToast) {
if (protoClient != null) {
protoClient.close();
Expand Down Expand Up @@ -345,6 +374,25 @@ public static ServerStatus parseServerStatus(FriendlyByteBuf buf) {
//#endif
}

@Nullable
public static String getExternalIp() {
if (protoClient.getBaseIp().isEmpty()) {
return null;
}
String ip = "connect0000-" + protoClient.getConnectionId() + '.' + protoClient.getBaseIp();
if (protoClient.getBasePort() != 25565) {
ip += ':' + protoClient.getBasePort();
}
return ip;
}

public static void pingFriends() {
ONLINE_FRIEND_PINGS.clear();
if (protoClient != null) {
protoClient.queryRequest(CONFIG.getFriends());
}
}

//#if FORGE
//$$ @Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
//$$ public static class ClientModEvents {
Expand Down
46 changes: 46 additions & 0 deletions src/main/java/io/github/gaming32/worldhost/gui/FriendsButton.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package io.github.gaming32.worldhost.gui;

import com.mojang.blaze3d.vertex.PoseStack;
import io.github.gaming32.worldhost.FriendsListUpdate;
import io.github.gaming32.worldhost.WorldHostComponents;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.components.Button;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.NotNull;

import java.util.Set;
import java.util.UUID;

public class FriendsButton extends Button implements FriendsListUpdate {
private int bgX, bgWidth;

public FriendsButton(int x, int y, int width, int height, OnPress onPress) {
super(x, y, width, height, Component.empty(), onPress, DEFAULT_NARRATION);
registerForUpdates();
}

@Override
public void friendsListUpdate(Set<UUID> friends) {
final int online = friends.size();
final Component baseText = WorldHostComponents.FRIENDS.copy().append(" " + online + " ");
setMessage(baseText);
final Font textRenderer = Minecraft.getInstance().font;
bgX = width / 2 - textRenderer.width(baseText) / 2 + textRenderer.width(WorldHostComponents.FRIENDS.copy().append(" "));
bgWidth = textRenderer.width(" " + online + " ");
}

@Override
//#if MC >= 11904
public void renderString(@NotNull PoseStack poseStack, @NotNull Font font, int i) {
//#else
//$$ protected void renderBg(PoseStack matrices, Minecraft minecraft, int mouseX, int mouseY) {
//#endif
final int baseX = getX() + bgX;
final int baseY = getY() + (height - 12) / 2;
fill(poseStack, baseX, baseY, baseX + bgWidth, baseY + 12, 0x80000000);
//#if MC >= 11904
super.renderString(poseStack, font, i);
//#endif
}
}

0 comments on commit efe1a6f

Please sign in to comment.