diff --git a/src/main/java/net/montoyo/wd/WebDisplays.java b/src/main/java/net/montoyo/wd/WebDisplays.java index 83f0da2..2246e1e 100644 --- a/src/main/java/net/montoyo/wd/WebDisplays.java +++ b/src/main/java/net/montoyo/wd/WebDisplays.java @@ -31,17 +31,20 @@ import net.minecraftforge.event.entity.item.ItemTossEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.server.ServerStoppingEvent; import net.minecraftforge.event.world.WorldEvent; +import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.network.PacketDistributor; import net.montoyo.wd.client.ClientProxy; import net.montoyo.wd.config.ModConfig; import net.montoyo.wd.core.*; import net.montoyo.wd.init.BlockInit; import net.montoyo.wd.init.ItemInit; +import net.montoyo.wd.init.TileInit; import net.montoyo.wd.miniserv.server.Server; import net.montoyo.wd.net.Messages; import net.montoyo.wd.net.client.CMessageServerInfo; @@ -144,11 +147,16 @@ public class WebDisplays { padResY = config.main.padHeight; padResX = padResY * PAD_RATIO; - ItemInit.init(); - BlockInit.init(); + IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); + bus.addListener(Messages::registryNetworkPackets); + ItemInit.init(bus); + BlockInit.init(bus); + TileInit.init(bus); PROXY.preInit(); + MinecraftForge.EVENT_BUS.register(this); + //Other things PROXY.init(); @@ -279,8 +287,8 @@ public class WebDisplays { @SubscribeEvent public void onLogIn(PlayerEvent.PlayerLoggedInEvent ev) { if(!ev.getPlayer().getLevel().isClientSide && ev.getPlayer() instanceof ServerPlayer) { - Messages.INSTANCE.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) ev.getPlayer()), new CMessageServerInfo(miniservPort)); - IWDDCapability cap = ev.getPlayer().getCapability(WDDCapability.Provider.cap, null).orElseThrow(RuntimeException::new); + IWDDCapability cap = + ev.getPlayer().getCapability(WDDCapability.Provider.cap, null).orElseThrow(RuntimeException::new); if(cap == null) 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(); } + + PacketDistributor.PacketTarget packetDistrutor = PacketDistributor.PLAYER + .with( + () -> + (ServerPlayer) ev.getPlayer()); + + CMessageServerInfo message = new CMessageServerInfo(miniservPort); + + Messages.INSTANCE.send(packetDistrutor, message); } } diff --git a/src/main/java/net/montoyo/wd/client/renderers/MinePadRenderer.java b/src/main/java/net/montoyo/wd/client/renderers/MinePadRenderer.java index 9deec0d..227ae0b 100644 --- a/src/main/java/net/montoyo/wd/client/renderers/MinePadRenderer.java +++ b/src/main/java/net/montoyo/wd/client/renderers/MinePadRenderer.java @@ -6,6 +6,7 @@ package net.montoyo.wd.client.renderers; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Vector3f; import net.minecraft.client.Minecraft; import net.minecraft.client.player.AbstractClientPlayer; 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.client.ClientProxy; -import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.opengl.GL12.GL_RESCALE_NORMAL; @OnlyIn(Dist.CLIENT) @@ -34,18 +34,18 @@ public final class MinePadRenderer implements IItemRenderer { private float sinSwingProg1; private float sinSwingProg2; - public static void drawAxis() { - glDisable(GL_TEXTURE_2D); - 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(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, 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, 5.0); - glEnd(); - glEnable(GL_TEXTURE_2D); - } +// public static void drawAxis() { +// glDisable(GL_TEXTURE_2D); +// 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(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, 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, 5.0); +// glEnd(); +// glEnable(GL_TEXTURE_2D); +// } @Override 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(); //Prepare minePad transform - glPushMatrix(); + stack.pushPose(); stack.translate(handSideSign * -0.4f * sinSqrtSwingProg1, 0.2f * sinSqrtSwingProg2, -0.2f * sinSwingProg1); 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); - glRotatef(handSideSign * sinSqrtSwingProg1 * -20.0f, 0.0f, 0.0f, 1.0f); - glRotatef(sinSqrtSwingProg1 * -80.0f, 1.0f, 0.0f, 0.0f); - glRotatef(handSideSign * -45.0f, 0.0f, 1.0f, 0.0f); + stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * (45.0f - sinSwingProg2 * 20.0f))); + stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * sinSqrtSwingProg1 * -20.0f)); + stack.mulPose(Vector3f.XP.rotationDegrees(sinSqrtSwingProg1 * -80.0f)); + stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * -45.0f)); if(handSideSign >= 0.0f) - glTranslatef(-1.065f, 0.0f, 0.0f); + stack.translate(-1.065f, 0.0f, 0.0f); else { - glTranslatef(0.0f, 0.0f, -0.2f); - glRotatef(20.0f, 0.0f, 1.0f, 0.0f); - glTranslatef(-0.475f, -0.1f, 0.0f); - glRotatef(1.0f, 0.0f, 0.0f, 1.0f); + stack.translate(0.0f, 0.0f, -0.2f); + stack.mulPose(Vector3f.YP.rotationDegrees(20.0f)); + stack.translate(-0.475f, -0.1f, 0.0f); + stack.mulPose(Vector3f.ZP.rotationDegrees(1.0f)); } //Render model - glPushMatrix(); - glRotatef(-90.0f, 1.0f, 0.0f, 0.0f); - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + stack.pushPose(); + stack.mulPose(Vector3f.XP.rotationDegrees(-90.0f)); + RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); RenderSystem.setShaderTexture(0, tex); // model.render(1.f / 16.f); - glPopMatrix(); + stack.popPose(); //Render web view if(is.getTag() != null && is.getTag().contains("PadID")) { ClientProxy.PadData pd = clientProxy.getPadByID(is.getTag().getInt("PadID")); if(pd != null) { - glTranslatef(0.063f, 0.28f, 0.001f); - glDisable(GL_TEXTURE_2D); + stack.translate(0.063f, 0.28f, 0.001f); + RenderSystem.disableTexture(); 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); - 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 ty = 0.4f * sinSqrtSwingProg2; float tz = -0.4f * sinSwingProg1; - matrixStack.translate(handSideSign * (tx + 0.64000005f), ty - 0.6f - equipProgress * 0.6f, tz - 0.71999997f); - glRotatef(handSideSign * 45.0f, 0.0f, 1.0f, 0.0f); - glRotatef(handSideSign * sinSqrtSwingProg1 * 70.0f, 0.0f, 1.0f, 0.0f); - glRotatef(handSideSign * sinSwingProg2 * -20.0f, 0.0f, 0.0f, 1.0f); - matrixStack.translate(-handSideSign, 3.6f, 3.5f); - glRotatef(handSideSign * 120.0f, 0.0f, 0.0f, 1.0f); - glRotatef(200.0f, 1.0f, 0.0f, 0.0f); - glRotatef(handSideSign * -135.0f, 0.0f, 1.0f, 0.0f); - matrixStack.translate(handSideSign * 5.6f, 0.0f, 0.0f); + stack.translate(handSideSign * (tx + 0.64000005f), ty - 0.6f - equipProgress * 0.6f, tz - 0.71999997f); + stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * 45.0f)); + stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * sinSqrtSwingProg1 * 70.0f)); + stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * sinSwingProg2 * -20.0f)); + stack.translate(-handSideSign, 3.6f, 3.5f); + stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * 120.0f)); + stack.mulPose(Vector3f.XP.rotationDegrees(200.0f)); + stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * -135.0f)); + stack.translate(handSideSign * 5.6f, 0.0f, 0.0f); PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(mc.player); RenderSystem.setShaderTexture(0, mc.player.getSkinTextureLocation()); if(handSideSign >= 0.0f) - playerRenderer.renderRightHand(matrixStack, buffer, combinedLight, mc.player); + playerRenderer.renderRightHand(stack, buffer, combinedLight, mc.player); else - playerRenderer.renderLeftHand(matrixStack, buffer, combinedLight, mc.player); + playerRenderer.renderLeftHand(stack, buffer, combinedLight, mc.player); } } diff --git a/src/main/java/net/montoyo/wd/init/BlockInit.java b/src/main/java/net/montoyo/wd/init/BlockInit.java index 40c2f9d..cafa43b 100644 --- a/src/main/java/net/montoyo/wd/init/BlockInit.java +++ b/src/main/java/net/montoyo/wd/init/BlockInit.java @@ -19,7 +19,9 @@ import java.util.function.Supplier; public class BlockInit { - public static void init() {} + public static void init(IEventBus bus) { + BLOCKS.register(bus); + } public static DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, "webdisplays"); diff --git a/src/main/java/net/montoyo/wd/init/ItemInit.java b/src/main/java/net/montoyo/wd/init/ItemInit.java index 837f5cf..4c51dcb 100644 --- a/src/main/java/net/montoyo/wd/init/ItemInit.java +++ b/src/main/java/net/montoyo/wd/init/ItemInit.java @@ -11,7 +11,9 @@ import java.util.function.Supplier; public class ItemInit { - public static void init() {} + public static void init(IEventBus bus) { + ITEMS.register(bus); + } public static DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, "webdisplays"); diff --git a/src/main/java/net/montoyo/wd/init/TileInit.java b/src/main/java/net/montoyo/wd/init/TileInit.java index 37c1c01..d869ed0 100644 --- a/src/main/java/net/montoyo/wd/init/TileInit.java +++ b/src/main/java/net/montoyo/wd/init/TileInit.java @@ -1,6 +1,7 @@ package net.montoyo.wd.init; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; @@ -31,4 +32,7 @@ public class TileInit { public static final RegistryObject> SERVER = TILE_TYPES.register("server" , () -> BlockEntityType.Builder.of(TileEntityServer::new, BlockInit.blockPeripheral.get()).build(null)); + public static void init(IEventBus bus) { + TILE_TYPES.register(bus); + } } diff --git a/src/main/java/net/montoyo/wd/miniserv/client/Client.java b/src/main/java/net/montoyo/wd/miniserv/client/Client.java index 05c5452..12de278 100644 --- a/src/main/java/net/montoyo/wd/miniserv/client/Client.java +++ b/src/main/java/net/montoyo/wd/miniserv/client/Client.java @@ -49,7 +49,7 @@ public class Client extends AbstractClient implements Runnable { private volatile boolean authenticated; private long lastPingTime; - public SMessageMiniservConnect beginConnection() { + public SMessageMiniservConnect beginConnection() { if(keyPair == null) { try { KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA"); diff --git a/src/main/java/net/montoyo/wd/net/client/CMessageServerInfo.java b/src/main/java/net/montoyo/wd/net/client/CMessageServerInfo.java index ebe75c2..f294865 100644 --- a/src/main/java/net/montoyo/wd/net/client/CMessageServerInfo.java +++ b/src/main/java/net/montoyo/wd/net/client/CMessageServerInfo.java @@ -24,15 +24,13 @@ public class CMessageServerInfo { return new CMessageServerInfo(buf.readShort() & 0xFFFF); } - public CMessageServerInfo encode(FriendlyByteBuf buf) { + public void encode(FriendlyByteBuf buf) { buf.writeShort(miniservPort); - return new CMessageServerInfo(miniservPort); } public void handle(Supplier contextSupplier) { contextSupplier.get().enqueueWork(() -> { WebDisplays.PROXY.setMiniservClientPort(miniservPort); - if (miniservPort > 0) Messages.INSTANCE.sendToServer(Client.getInstance().beginConnection()); }); diff --git a/src/main/java/net/montoyo/wd/utilities/Util.java b/src/main/java/net/montoyo/wd/utilities/Util.java index ae2632a..d4b47dc 100644 --- a/src/main/java/net/montoyo/wd/utilities/Util.java +++ b/src/main/java/net/montoyo/wd/utilities/Util.java @@ -7,8 +7,9 @@ package net.montoyo.wd.utilities; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.FormattedText; -import net.minecraft.network.chat.NbtComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; 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) { - NbtComponent root = (NbtComponent) FormattedText.of("[WebDisplays] "); - root.withStyle(color); + TextComponent root = new TextComponent("[WebDisplays] "); + root.setStyle(Style.EMPTY.withColor(color)); root.append(new TranslatableComponent("webdisplays.message." + key, data)); player.sendMessage(root, player.getUUID());