43 lines
1.6 KiB
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();
|
|
}
|
|
}
|