diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index d4d1dea95..36f247540 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -305,5 +305,9 @@ public class PacketHandlerPlayer{ tile.book.func_150996_a(Items.written_book); } } + 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 940cdbf6c..12614415a 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -22,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; @@ -55,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);