From c3b134b5ae6020c6ed492e904e55b84ce628166a Mon Sep 17 00:00:00 2001 From: Goodbird Date: Fri, 5 Jan 2024 16:31:57 +0300 Subject: [PATCH] Implemented the ability to get the screen size from server --- .../java/noppes/npcs/PacketHandlerPlayer.java | 4 ++ .../noppes/npcs/client/ClientTickHandler.java | 9 ++++- .../npcs/constants/EnumPlayerPacket.java | 2 +- .../npcs/controllers/data/PlayerData.java | 11 ++++++ .../java/noppes/npcs/scripted/ScreenSize.java | 38 +++++++++++++++++++ .../npcs/scripted/entity/ScriptPlayer.java | 6 +++ 6 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 src/main/java/noppes/npcs/scripted/ScreenSize.java diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index c1f06dc7a..23ba5bcae 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -316,5 +316,9 @@ public class PacketHandlerPlayer{ } } } + else if(type == EnumPlayerPacket.ScreenSize){ + int width = buffer.readInt(), height = buffer.readInt(); + PlayerDataController.Instance.getPlayerData(player).screenSize.setSize(width,height); + } } } diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index 9a1ec9a75..a7bd1f728 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -3,11 +3,9 @@ package noppes.npcs.client; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; -import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ContainerPlayer; import net.minecraft.world.World; import noppes.npcs.CustomNpcs; @@ -24,6 +22,8 @@ import static noppes.npcs.client.ClientEventHandler.renderCNPCPlayer; public class ClientTickHandler{ private World prevWorld; + private int prevWidth = 0; + private int prevHeight = 0; private boolean otherContainer = false; private int buttonPressed = -1; private long buttonTime = 0L; @@ -57,6 +57,11 @@ public class ClientTickHandler{ MusicController.Instance.stopMusic(); } ScriptSoundController.Instance.onUpdate(); + if(Minecraft.getMinecraft().thePlayer!=null && (prevWidth!=mc.displayWidth || prevHeight!=mc.displayHeight)){ + prevWidth = mc.displayWidth; + prevHeight = mc.displayHeight; + NoppesUtilPlayer.sendData(EnumPlayerPacket.ScreenSize,mc.displayWidth,mc.displayHeight); + } } @SubscribeEvent diff --git a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java index 01485988e..765cb7e92 100644 --- a/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java +++ b/src/main/java/noppes/npcs/constants/EnumPlayerPacket.java @@ -1,5 +1,5 @@ package noppes.npcs.constants; public enum EnumPlayerPacket { - FollowerHire,FollowerExtend,Trader, FollowerState, Transport, BankUnlock, BankUpgrade, Dialog, QuestLog, CheckQuestCompletion, BankSlotOpen, FactionsGet, MailGet, MailDelete, MailSend, MailRead, MailboxOpenMail, SignSave, SaveBook, CompanionOpenInv, RoleGet, KeyPressed, MouseClicked, CompanionTalentExp + FollowerHire,FollowerExtend,Trader, FollowerState, Transport, BankUnlock, BankUpgrade, Dialog, QuestLog, CheckQuestCompletion, BankSlotOpen, FactionsGet, MailGet, MailDelete, MailSend, MailRead, MailboxOpenMail, SignSave, SaveBook, CompanionOpenInv, RoleGet, KeyPressed, MouseClicked, CompanionTalentExp, ScreenSize } diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerData.java b/src/main/java/noppes/npcs/controllers/data/PlayerData.java index cc616a48c..f5a3ca9a9 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerData.java @@ -18,6 +18,7 @@ import noppes.npcs.entity.data.DataSkinOverlays; import noppes.npcs.entity.data.DataTimers; import noppes.npcs.roles.RoleCompanion; import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.ScreenSize; import noppes.npcs.util.CustomNPCsThreader; import noppes.npcs.util.NBTJsonUtil; @@ -52,6 +53,8 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { public boolean isGUIOpen = false; + public ScreenSize screenSize = new ScreenSize(-1,-1); + @Override public void saveNBTData(NBTTagCompound nbtTagCompound) { } @@ -136,6 +139,14 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { return this.isGUIOpen; } + public ScreenSize getScreenSize(){ + return screenSize; + } + + public void setScreenSize(ScreenSize size){ + screenSize = size; + } + public boolean hasCompanion(){ return activeCompanion != null && !activeCompanion.isDead; } diff --git a/src/main/java/noppes/npcs/scripted/ScreenSize.java b/src/main/java/noppes/npcs/scripted/ScreenSize.java new file mode 100644 index 000000000..b2cc540e2 --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/ScreenSize.java @@ -0,0 +1,38 @@ +package noppes.npcs.scripted; + +import noppes.npcs.api.IScreenSize; + +public class ScreenSize implements IScreenSize { + private int width; + private int height; + + public ScreenSize(int width, int height) { + this.width = width; + this.height = height; + } + + public void setSize(int width, int height) { + this.width = width; + this.height = height; + } + + @Override + public int getWidth() { + return width; + } + + @Override + public int getHeight() { + return height; + } + + @Override + public int getWidthPercent(double percent) { + return (int) (((double)width)*percent/100); + } + + @Override + public int getHeightPercent(double percent) { + return (int) (((double)height)*percent/100); + } +} diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index f3f3b09b4..34e58a59c 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -679,6 +679,12 @@ public class ScriptPlayer extends ScriptLivingBase return PlayerDataController.Instance.getPlayerData(player).timers; } + @Override + public IScreenSize getScreenSize() { + PlayerData data = PlayerDataController.Instance.getPlayerData(player); + return data.getScreenSize() ; + } + public void updatePlayerInventory() { ((EntityPlayerMP)this.entity).inventoryContainer.detectAndSendChanges(); PlayerData playerData = PlayerDataController.Instance.getPlayerData(player);