mcexts/src/fabric/mixin/ServerMetadataMixin.java

43 lines
1.6 KiB
Java

package net.flashii.mcexts.mixin;
import java.util.StringJoiner;
import net.flashii.mcexts.Config;
import net.flashii.mcexts.RNG;
import net.minecraft.server.ServerMetadata;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(ServerMetadata.class)
public abstract class ServerMetadataMixin {
@Inject(method = "description()Lnet/minecraft/text/Text;", at = @At("TAIL"), cancellable = true)
public void description(CallbackInfoReturnable<Text> cir) {
String linesRaw = Config.getValue("MOTDLines.txt");
if(linesRaw == null || linesRaw.isBlank())
return;
String[] lines = linesRaw.split("\n");
int linesCount = lines.length;
int lineNo = linesCount < 2 ? 0 : RNG.nextInt(linesCount);
String line = lines[lineNo].trim();
String original = cir.getReturnValue().getString();
int originalSpace = original.indexOf(" ");
String purple = originalSpace < 0 ? original : original.substring(0, originalSpace);
String white = originalSpace < 0 ? "" : original.substring(originalSpace);
MutableText motd = Text.literal("")
.append(Text.literal(purple).styled(style -> style.withColor(0x9475B2).withBold(true)))
.append(Text.literal(white).styled(style -> style.withColor(0xFFFFFF)))
.append("\n ")
.append(line);
cir.setReturnValue(motd);
cir.cancel();
}
}