Starts. ><
This commit is contained in:
parent
fb3c6be715
commit
f767c0a269
|
|
@ -31,17 +31,20 @@ import net.minecraftforge.event.entity.item.ItemTossEvent;
|
||||||
import net.minecraftforge.event.entity.player.PlayerEvent;
|
import net.minecraftforge.event.entity.player.PlayerEvent;
|
||||||
import net.minecraftforge.event.server.ServerStoppingEvent;
|
import net.minecraftforge.event.server.ServerStoppingEvent;
|
||||||
import net.minecraftforge.event.world.WorldEvent;
|
import net.minecraftforge.event.world.WorldEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
import net.minecraftforge.fml.ModList;
|
import net.minecraftforge.fml.ModList;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
import net.minecraftforge.network.PacketDistributor;
|
import net.minecraftforge.network.PacketDistributor;
|
||||||
import net.montoyo.wd.client.ClientProxy;
|
import net.montoyo.wd.client.ClientProxy;
|
||||||
import net.montoyo.wd.config.ModConfig;
|
import net.montoyo.wd.config.ModConfig;
|
||||||
import net.montoyo.wd.core.*;
|
import net.montoyo.wd.core.*;
|
||||||
import net.montoyo.wd.init.BlockInit;
|
import net.montoyo.wd.init.BlockInit;
|
||||||
import net.montoyo.wd.init.ItemInit;
|
import net.montoyo.wd.init.ItemInit;
|
||||||
|
import net.montoyo.wd.init.TileInit;
|
||||||
import net.montoyo.wd.miniserv.server.Server;
|
import net.montoyo.wd.miniserv.server.Server;
|
||||||
import net.montoyo.wd.net.Messages;
|
import net.montoyo.wd.net.Messages;
|
||||||
import net.montoyo.wd.net.client.CMessageServerInfo;
|
import net.montoyo.wd.net.client.CMessageServerInfo;
|
||||||
|
|
@ -144,11 +147,16 @@ public class WebDisplays {
|
||||||
padResY = config.main.padHeight;
|
padResY = config.main.padHeight;
|
||||||
padResX = padResY * PAD_RATIO;
|
padResX = padResY * PAD_RATIO;
|
||||||
|
|
||||||
ItemInit.init();
|
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
BlockInit.init();
|
bus.addListener(Messages::registryNetworkPackets);
|
||||||
|
ItemInit.init(bus);
|
||||||
|
BlockInit.init(bus);
|
||||||
|
TileInit.init(bus);
|
||||||
PROXY.preInit();
|
PROXY.preInit();
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
|
|
||||||
|
|
||||||
//Other things
|
//Other things
|
||||||
PROXY.init();
|
PROXY.init();
|
||||||
|
|
||||||
|
|
@ -279,8 +287,8 @@ public class WebDisplays {
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onLogIn(PlayerEvent.PlayerLoggedInEvent ev) {
|
public void onLogIn(PlayerEvent.PlayerLoggedInEvent ev) {
|
||||||
if(!ev.getPlayer().getLevel().isClientSide && ev.getPlayer() instanceof ServerPlayer) {
|
if(!ev.getPlayer().getLevel().isClientSide && ev.getPlayer() instanceof ServerPlayer) {
|
||||||
Messages.INSTANCE.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) ev.getPlayer()), new CMessageServerInfo(miniservPort));
|
IWDDCapability cap =
|
||||||
IWDDCapability cap = ev.getPlayer().getCapability(WDDCapability.Provider.cap, null).orElseThrow(RuntimeException::new);
|
ev.getPlayer().getCapability(WDDCapability.Provider.cap, null).orElseThrow(RuntimeException::new);
|
||||||
|
|
||||||
if(cap == null)
|
if(cap == null)
|
||||||
Log.warning("Player %s (%s) has null IWDDCapability!", ev.getPlayer().getName(), ev.getPlayer().getGameProfile().getId().toString());
|
Log.warning("Player %s (%s) has null IWDDCapability!", ev.getPlayer().getName(), ev.getPlayer().getGameProfile().getId().toString());
|
||||||
|
|
@ -291,6 +299,15 @@ public class WebDisplays {
|
||||||
|
|
||||||
cap.clearFirstRun();
|
cap.clearFirstRun();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PacketDistributor.PacketTarget packetDistrutor = PacketDistributor.PLAYER
|
||||||
|
.with(
|
||||||
|
() ->
|
||||||
|
(ServerPlayer) ev.getPlayer());
|
||||||
|
|
||||||
|
CMessageServerInfo message = new CMessageServerInfo(miniservPort);
|
||||||
|
|
||||||
|
Messages.INSTANCE.send(packetDistrutor, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ package net.montoyo.wd.client.renderers;
|
||||||
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
import com.mojang.math.Vector3f;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
import net.minecraft.client.player.AbstractClientPlayer;
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
|
@ -17,7 +18,6 @@ import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.montoyo.wd.WebDisplays;
|
import net.montoyo.wd.WebDisplays;
|
||||||
import net.montoyo.wd.client.ClientProxy;
|
import net.montoyo.wd.client.ClientProxy;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL11.*;
|
|
||||||
import static org.lwjgl.opengl.GL12.GL_RESCALE_NORMAL;
|
import static org.lwjgl.opengl.GL12.GL_RESCALE_NORMAL;
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
|
@ -34,18 +34,18 @@ public final class MinePadRenderer implements IItemRenderer {
|
||||||
private float sinSwingProg1;
|
private float sinSwingProg1;
|
||||||
private float sinSwingProg2;
|
private float sinSwingProg2;
|
||||||
|
|
||||||
public static void drawAxis() {
|
// public static void drawAxis() {
|
||||||
glDisable(GL_TEXTURE_2D);
|
// glDisable(GL_TEXTURE_2D);
|
||||||
glBegin(GL_LINES);
|
// glBegin(GL_LINES);
|
||||||
glColor4f(1.f, 0.f, 0.f, 1.f); glVertex3d(0.0, 0.0, 0.0);
|
// glColor4f(1.f, 0.f, 0.f, 1.f); glVertex3d(0.0, 0.0, 0.0);
|
||||||
glColor4f(1.f, 0.f, 0.f, 1.f); glVertex3d(5.0, 0.0, 0.0);
|
// glColor4f(1.f, 0.f, 0.f, 1.f); glVertex3d(5.0, 0.0, 0.0);
|
||||||
glColor4f(0.f, 1.f, 0.f, 1.f); glVertex3d(0.0, 0.0, 0.0);
|
// glColor4f(0.f, 1.f, 0.f, 1.f); glVertex3d(0.0, 0.0, 0.0);
|
||||||
glColor4f(0.f, 1.f, 0.f, 1.f); glVertex3d(0.0, 5.0, 0.0);
|
// glColor4f(0.f, 1.f, 0.f, 1.f); glVertex3d(0.0, 5.0, 0.0);
|
||||||
glColor4f(0.f, 0.f, 1.f, 1.f); glVertex3d(0.0, 0.0, 0.0);
|
// glColor4f(0.f, 0.f, 1.f, 1.f); glVertex3d(0.0, 0.0, 0.0);
|
||||||
glColor4f(0.f, 0.f, 1.f, 1.f); glVertex3d(0.0, 0.0, 5.0);
|
// glColor4f(0.f, 0.f, 1.f, 1.f); glVertex3d(0.0, 0.0, 5.0);
|
||||||
glEnd();
|
// glEnd();
|
||||||
glEnable(GL_TEXTURE_2D);
|
// glEnable(GL_TEXTURE_2D);
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void render(PoseStack stack, ItemStack is, float handSideSign, float swingProgress, float equipProgress, MultiBufferSource multiBufferSource, int packedLight) {
|
public final void render(PoseStack stack, ItemStack is, float handSideSign, float swingProgress, float equipProgress, MultiBufferSource multiBufferSource, int packedLight) {
|
||||||
|
|
@ -65,69 +65,69 @@ public final class MinePadRenderer implements IItemRenderer {
|
||||||
stack.popPose();
|
stack.popPose();
|
||||||
|
|
||||||
//Prepare minePad transform
|
//Prepare minePad transform
|
||||||
glPushMatrix();
|
stack.pushPose();
|
||||||
stack.translate(handSideSign * -0.4f * sinSqrtSwingProg1, 0.2f * sinSqrtSwingProg2, -0.2f * sinSwingProg1);
|
stack.translate(handSideSign * -0.4f * sinSqrtSwingProg1, 0.2f * sinSqrtSwingProg2, -0.2f * sinSwingProg1);
|
||||||
stack.translate(handSideSign * 0.56f, -0.52f - equipProgress * 0.6f, -0.72f);
|
stack.translate(handSideSign * 0.56f, -0.52f - equipProgress * 0.6f, -0.72f);
|
||||||
glRotatef(handSideSign * (45.0f - sinSwingProg2 * 20.0f), 0.0f, 1.0f, 0.0f);
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * (45.0f - sinSwingProg2 * 20.0f)));
|
||||||
glRotatef(handSideSign * sinSqrtSwingProg1 * -20.0f, 0.0f, 0.0f, 1.0f);
|
stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * sinSqrtSwingProg1 * -20.0f));
|
||||||
glRotatef(sinSqrtSwingProg1 * -80.0f, 1.0f, 0.0f, 0.0f);
|
stack.mulPose(Vector3f.XP.rotationDegrees(sinSqrtSwingProg1 * -80.0f));
|
||||||
glRotatef(handSideSign * -45.0f, 0.0f, 1.0f, 0.0f);
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * -45.0f));
|
||||||
|
|
||||||
if(handSideSign >= 0.0f)
|
if(handSideSign >= 0.0f)
|
||||||
glTranslatef(-1.065f, 0.0f, 0.0f);
|
stack.translate(-1.065f, 0.0f, 0.0f);
|
||||||
else {
|
else {
|
||||||
glTranslatef(0.0f, 0.0f, -0.2f);
|
stack.translate(0.0f, 0.0f, -0.2f);
|
||||||
glRotatef(20.0f, 0.0f, 1.0f, 0.0f);
|
stack.mulPose(Vector3f.YP.rotationDegrees(20.0f));
|
||||||
glTranslatef(-0.475f, -0.1f, 0.0f);
|
stack.translate(-0.475f, -0.1f, 0.0f);
|
||||||
glRotatef(1.0f, 0.0f, 0.0f, 1.0f);
|
stack.mulPose(Vector3f.ZP.rotationDegrees(1.0f));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Render model
|
//Render model
|
||||||
glPushMatrix();
|
stack.pushPose();
|
||||||
glRotatef(-90.0f, 1.0f, 0.0f, 0.0f);
|
stack.mulPose(Vector3f.XP.rotationDegrees(-90.0f));
|
||||||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
RenderSystem.setShaderTexture(0, tex);
|
RenderSystem.setShaderTexture(0, tex);
|
||||||
// model.render(1.f / 16.f);
|
// model.render(1.f / 16.f);
|
||||||
glPopMatrix();
|
stack.popPose();
|
||||||
|
|
||||||
//Render web view
|
//Render web view
|
||||||
if(is.getTag() != null && is.getTag().contains("PadID")) {
|
if(is.getTag() != null && is.getTag().contains("PadID")) {
|
||||||
ClientProxy.PadData pd = clientProxy.getPadByID(is.getTag().getInt("PadID"));
|
ClientProxy.PadData pd = clientProxy.getPadByID(is.getTag().getInt("PadID"));
|
||||||
|
|
||||||
if(pd != null) {
|
if(pd != null) {
|
||||||
glTranslatef(0.063f, 0.28f, 0.001f);
|
stack.translate(0.063f, 0.28f, 0.001f);
|
||||||
glDisable(GL_TEXTURE_2D);
|
RenderSystem.disableTexture();
|
||||||
pd.view.draw(0.0, 0.0, 27.65 / 32.0 + 0.01, 14.0 / 32.0 + 0.002);
|
pd.view.draw(0.0, 0.0, 27.65 / 32.0 + 0.01, 14.0 / 32.0 + 0.002);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
glPopMatrix();
|
stack.popPose();
|
||||||
// glDisable(GL_RESCALE_NORMAL);
|
// glDisable(GL_RESCALE_NORMAL);
|
||||||
glEnable(GL_CULL_FACE);
|
RenderSystem.enableCull();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderArmFirstPerson(PoseStack matrixStack, MultiBufferSource buffer, int combinedLight, float equipProgress, float handSideSign) {
|
private void renderArmFirstPerson(PoseStack stack, MultiBufferSource buffer, int combinedLight, float equipProgress, float handSideSign) {
|
||||||
float tx = -0.3f * sinSqrtSwingProg1;
|
float tx = -0.3f * sinSqrtSwingProg1;
|
||||||
float ty = 0.4f * sinSqrtSwingProg2;
|
float ty = 0.4f * sinSqrtSwingProg2;
|
||||||
float tz = -0.4f * sinSwingProg1;
|
float tz = -0.4f * sinSwingProg1;
|
||||||
|
|
||||||
matrixStack.translate(handSideSign * (tx + 0.64000005f), ty - 0.6f - equipProgress * 0.6f, tz - 0.71999997f);
|
stack.translate(handSideSign * (tx + 0.64000005f), ty - 0.6f - equipProgress * 0.6f, tz - 0.71999997f);
|
||||||
glRotatef(handSideSign * 45.0f, 0.0f, 1.0f, 0.0f);
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * 45.0f));
|
||||||
glRotatef(handSideSign * sinSqrtSwingProg1 * 70.0f, 0.0f, 1.0f, 0.0f);
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * sinSqrtSwingProg1 * 70.0f));
|
||||||
glRotatef(handSideSign * sinSwingProg2 * -20.0f, 0.0f, 0.0f, 1.0f);
|
stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * sinSwingProg2 * -20.0f));
|
||||||
matrixStack.translate(-handSideSign, 3.6f, 3.5f);
|
stack.translate(-handSideSign, 3.6f, 3.5f);
|
||||||
glRotatef(handSideSign * 120.0f, 0.0f, 0.0f, 1.0f);
|
stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * 120.0f));
|
||||||
glRotatef(200.0f, 1.0f, 0.0f, 0.0f);
|
stack.mulPose(Vector3f.XP.rotationDegrees(200.0f));
|
||||||
glRotatef(handSideSign * -135.0f, 0.0f, 1.0f, 0.0f);
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * -135.0f));
|
||||||
matrixStack.translate(handSideSign * 5.6f, 0.0f, 0.0f);
|
stack.translate(handSideSign * 5.6f, 0.0f, 0.0f);
|
||||||
|
|
||||||
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(mc.player);
|
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(mc.player);
|
||||||
RenderSystem.setShaderTexture(0, mc.player.getSkinTextureLocation());
|
RenderSystem.setShaderTexture(0, mc.player.getSkinTextureLocation());
|
||||||
|
|
||||||
if(handSideSign >= 0.0f)
|
if(handSideSign >= 0.0f)
|
||||||
playerRenderer.renderRightHand(matrixStack, buffer, combinedLight, mc.player);
|
playerRenderer.renderRightHand(stack, buffer, combinedLight, mc.player);
|
||||||
else
|
else
|
||||||
playerRenderer.renderLeftHand(matrixStack, buffer, combinedLight, mc.player);
|
playerRenderer.renderLeftHand(stack, buffer, combinedLight, mc.player);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,9 @@ import java.util.function.Supplier;
|
||||||
|
|
||||||
public class BlockInit {
|
public class BlockInit {
|
||||||
|
|
||||||
public static void init() {}
|
public static void init(IEventBus bus) {
|
||||||
|
BLOCKS.register(bus);
|
||||||
|
}
|
||||||
|
|
||||||
public static DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, "webdisplays");
|
public static DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, "webdisplays");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,9 @@ import java.util.function.Supplier;
|
||||||
|
|
||||||
public class ItemInit {
|
public class ItemInit {
|
||||||
|
|
||||||
public static void init() {}
|
public static void init(IEventBus bus) {
|
||||||
|
ITEMS.register(bus);
|
||||||
|
}
|
||||||
|
|
||||||
public static DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, "webdisplays");
|
public static DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, "webdisplays");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package net.montoyo.wd.init;
|
package net.montoyo.wd.init;
|
||||||
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.registries.DeferredRegister;
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
import net.minecraftforge.registries.RegistryObject;
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
|
@ -31,4 +32,7 @@ public class TileInit {
|
||||||
public static final RegistryObject<BlockEntityType<?>> SERVER = TILE_TYPES.register("server" ,
|
public static final RegistryObject<BlockEntityType<?>> SERVER = TILE_TYPES.register("server" ,
|
||||||
() -> BlockEntityType.Builder.of(TileEntityServer::new, BlockInit.blockPeripheral.get()).build(null));
|
() -> BlockEntityType.Builder.of(TileEntityServer::new, BlockInit.blockPeripheral.get()).build(null));
|
||||||
|
|
||||||
|
public static void init(IEventBus bus) {
|
||||||
|
TILE_TYPES.register(bus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public class Client extends AbstractClient implements Runnable {
|
||||||
private volatile boolean authenticated;
|
private volatile boolean authenticated;
|
||||||
private long lastPingTime;
|
private long lastPingTime;
|
||||||
|
|
||||||
public SMessageMiniservConnect beginConnection() {
|
public SMessageMiniservConnect beginConnection() {
|
||||||
if(keyPair == null) {
|
if(keyPair == null) {
|
||||||
try {
|
try {
|
||||||
KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA");
|
KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA");
|
||||||
|
|
|
||||||
|
|
@ -24,15 +24,13 @@ public class CMessageServerInfo {
|
||||||
return new CMessageServerInfo(buf.readShort() & 0xFFFF);
|
return new CMessageServerInfo(buf.readShort() & 0xFFFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CMessageServerInfo encode(FriendlyByteBuf buf) {
|
public void encode(FriendlyByteBuf buf) {
|
||||||
buf.writeShort(miniservPort);
|
buf.writeShort(miniservPort);
|
||||||
return new CMessageServerInfo(miniservPort);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handle(Supplier<NetworkEvent.Context> contextSupplier) {
|
public void handle(Supplier<NetworkEvent.Context> contextSupplier) {
|
||||||
contextSupplier.get().enqueueWork(() -> {
|
contextSupplier.get().enqueueWork(() -> {
|
||||||
WebDisplays.PROXY.setMiniservClientPort(miniservPort);
|
WebDisplays.PROXY.setMiniservClientPort(miniservPort);
|
||||||
|
|
||||||
if (miniservPort > 0)
|
if (miniservPort > 0)
|
||||||
Messages.INSTANCE.sendToServer(Client.getInstance().beginConnection());
|
Messages.INSTANCE.sendToServer(Client.getInstance().beginConnection());
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,9 @@ package net.montoyo.wd.utilities;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.network.chat.FormattedText;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.chat.NbtComponent;
|
import net.minecraft.network.chat.Style;
|
||||||
|
import net.minecraft.network.chat.TextComponent;
|
||||||
import net.minecraft.network.chat.TranslatableComponent;
|
import net.minecraft.network.chat.TranslatableComponent;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
|
||||||
|
|
@ -135,8 +136,8 @@ public abstract class Util {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void toast(Player player, ChatFormatting color, String key, Object... data) {
|
public static void toast(Player player, ChatFormatting color, String key, Object... data) {
|
||||||
NbtComponent root = (NbtComponent) FormattedText.of("[WebDisplays] ");
|
TextComponent root = new TextComponent("[WebDisplays] ");
|
||||||
root.withStyle(color);
|
root.setStyle(Style.EMPTY.withColor(color));
|
||||||
root.append(new TranslatableComponent("webdisplays.message." + key, data));
|
root.append(new TranslatableComponent("webdisplays.message." + key, data));
|
||||||
|
|
||||||
player.sendMessage(root, player.getUUID());
|
player.sendMessage(root, player.getUUID());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user