diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index e90caab3b..6c35b9a8b 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -320,6 +320,12 @@ public class NoppesUtilPlayer { } } + public static void clearTrackQuest(EntityPlayerMP player) throws IOException { + PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); + playerData.questData.untrackQuest(); + } + + public static void updatePartyQuestLogData(ByteBuf buffer, EntityPlayerMP player) throws IOException { PlayerData playerData = PlayerDataController.Instance.getPlayerData(player); String trackedQuestString = Server.readString(buffer); diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 6a3fb0858..14d99f16e 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -94,6 +94,9 @@ public class PacketHandlerServer{ } else if (type == EnumPacketServer.PartyLogToServer) { NoppesUtilPlayer.updatePartyQuestLogData(buffer, player); return; + } else if (type == EnumPacketServer.UntrackQuest) { + NoppesUtilPlayer.clearTrackQuest(player); + return; } else if(type == EnumPacketServer.DimensionsGet){ HashMap map = new HashMap(); for(int id : DimensionManager.getStaticDimensionIDs()){ diff --git a/src/main/java/noppes/npcs/client/ClientCacheHandler.java b/src/main/java/noppes/npcs/client/ClientCacheHandler.java index b3060f3e4..4314a83b8 100644 --- a/src/main/java/noppes/npcs/client/ClientCacheHandler.java +++ b/src/main/java/noppes/npcs/client/ClientCacheHandler.java @@ -55,4 +55,10 @@ public class ClientCacheHandler { ClientCacheHandler.playerAnimations.clear(); ClientCacheHandler.playerData.animationData.clearCache(); } + + public static void clearSkinCache() { + ClientCacheHandler.imageDataCache.clear(); + ClientCacheHandler.customOverlays.clear(); + ClientCacheHandler.skinOverlays.clear(); + } } diff --git a/src/main/java/noppes/npcs/client/gui/OverlayQuestTracking.java b/src/main/java/noppes/npcs/client/gui/OverlayQuestTracking.java index 87f46d1ee..d6969cb61 100644 --- a/src/main/java/noppes/npcs/client/gui/OverlayQuestTracking.java +++ b/src/main/java/noppes/npcs/client/gui/OverlayQuestTracking.java @@ -180,8 +180,11 @@ public class OverlayQuestTracking extends Gui { public void renderGameOverlay(float partialTicks){ res = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); - scaledWidth = res.getScaledWidth(); - scaledHeight = res.getScaledHeight(); + + float overallScale = (float) ConfigClient.TrackingScale / 100; + + scaledWidth = (int) (res.getScaledWidth()); + scaledHeight = (int) (res.getScaledHeight()); GL11.glEnable(GL11.GL_BLEND); OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); @@ -195,14 +198,13 @@ public class OverlayQuestTracking extends Gui { float offsetY = ConfigClient.TrackingInfoAlignment < 3 ? 5 : 0; offsetY = ConfigClient.TrackingInfoAlignment > 5 ? -5 : offsetY; - GL11.glTranslatef(ConfigClient.TrackingInfoX + offsetX, ConfigClient.TrackingInfoY + offsetY, 0.0F); red = (color >> 16 & 255) / 255f; green = (color >> 8 & 255) / 255f; blue = (color & 255) / 255f; - float centerX = -60; + float centerX = (float) -overlayWidth /2 * overallScale; if (ConfigClient.TrackingInfoAlignment % 3 == 1) { // For Center alignment centerX = 0; } else { @@ -210,39 +212,39 @@ public class OverlayQuestTracking extends Gui { } float questTitleTop; - this.renderOffsetY = -40; + this.renderOffsetY = -40 * overallScale; GL11.glPushMatrix(); GL11.glTranslatef(centerX, 0.0F, 0.0F); - this.renderStringLines(trackedQuestLines,1.2F, false, true, 0); + this.renderStringLines(trackedQuestLines,1.2F * overallScale, false, true, 0); GL11.glPopMatrix(); questTitleTop = this.renderOffsetY; - this.renderOffsetY -= 10; + this.renderOffsetY -= 10 * overallScale; GL11.glPushMatrix(); GL11.glTranslatef(centerX, 0.0F, 0.0F); - this.renderStringLines(categoryNameLines,0.85F, false, false, 0); + this.renderStringLines(categoryNameLines,0.85F * overallScale, false, false, 0); GL11.glPopMatrix(); - this.renderOffsetY = -10; + this.renderOffsetY = -10 * overallScale; GL11.glPushMatrix(); - this.renderStringLines(objectiveLines, 1F, true, false, ConfigClient.TrackingInfoAlignment % 3 == 0 ? 1 : (ConfigClient.TrackingInfoAlignment % 3 == 2 ? 2 : 0)); + this.renderStringLines(objectiveLines, 1F * overallScale, true, false, ConfigClient.TrackingInfoAlignment % 3 == 0 ? 1 : (ConfigClient.TrackingInfoAlignment % 3 == 2 ? 2 : 0)); GL11.glPopMatrix(); - this.renderOffsetY += 10; + this.renderOffsetY += 10 * overallScale; GL11.glPushMatrix(); - this.renderStringLines(turnInText, 1F, true, false, ConfigClient.TrackingInfoAlignment % 3 == 0 ? 1 : (ConfigClient.TrackingInfoAlignment % 3 == 2 ? 2 : 0)); + this.renderStringLines(turnInText, 1F * overallScale, true, false, ConfigClient.TrackingInfoAlignment % 3 == 0 ? 1 : (ConfigClient.TrackingInfoAlignment % 3 == 2 ? 2 : 0)); GL11.glPopMatrix(); - this.renderOffsetY = -20; + this.renderOffsetY = -20 * overallScale; GL11.glPushMatrix(); - this.drawHorizontalLine((int)(-overlayWidth/2 + centerX), (int)(overlayWidth/2 + centerX), (int) (this.renderOffsetY+2), 0xFF777777); - this.drawHorizontalLine((int)(-overlayWidth/2 + centerX), (int)(overlayWidth/2 + centerX), (int) (this.renderOffsetY+1), 0xFFA8A8A8); - this.drawHorizontalLine((int)(-overlayWidth/2 + centerX), (int)(overlayWidth/2 + centerX), (int) (this.renderOffsetY), 0xFFFFFFFF); + this.drawHorizontalLine((int) (centerX - overlayWidth / 2), (int) (centerX + overlayWidth / 2), (int) (this.renderOffsetY), 0xFF777777); + this.drawHorizontalLine((int) (centerX - overlayWidth / 2), (int) (centerX + overlayWidth / 2), (int) ((this.renderOffsetY + 1)), 0xFFA8A8A8); + this.drawHorizontalLine((int) (centerX - overlayWidth / 2), (int) (centerX + overlayWidth / 2), (int) ((this.renderOffsetY + 2)), 0xFFFFFFFF); GL11.glPopMatrix(); this.renderOffsetY = questTitleTop + 2; GL11.glPushMatrix(); - this.drawHorizontalLine((int)(-overlayWidth/2 + centerX), (int)(overlayWidth/2 + centerX), (int) (this.renderOffsetY), 0xFFFFFFFF); - this.drawHorizontalLine((int)(-overlayWidth/2 + centerX), (int)(overlayWidth/2 + centerX), (int) (this.renderOffsetY-1), 0xFFA8A8A8); - this.drawHorizontalLine((int)(-overlayWidth/2 + centerX), (int)(overlayWidth/2 + centerX), (int) (this.renderOffsetY-2), 0xFF777777); + this.drawHorizontalLine((int) (centerX - overlayWidth / 2), (int) (centerX + overlayWidth / 2), (int) (this.renderOffsetY), 0xFFFFFFFF); + this.drawHorizontalLine((int) (centerX - overlayWidth / 2), (int) (centerX + overlayWidth / 2), (int) ((this.renderOffsetY - 1)), 0xFFA8A8A8); + this.drawHorizontalLine((int) (centerX - overlayWidth / 2), (int) (centerX + overlayWidth / 2), (int) ((this.renderOffsetY - 2)), 0xFF777777); GL11.glPopMatrix(); GL11.glPopMatrix(); diff --git a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java index 2cc1316a0..47dc7896d 100644 --- a/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java +++ b/src/main/java/noppes/npcs/client/gui/player/inventory/GuiSettings.java @@ -2,13 +2,19 @@ package noppes.npcs.client.gui.player.inventory; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiYesNo; +import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import noppes.npcs.client.Client; +import noppes.npcs.client.ClientCacheHandler; import noppes.npcs.client.gui.util.*; import noppes.npcs.config.ConfigClient; +import noppes.npcs.constants.EnumPacketServer; import org.lwjgl.opengl.GL11; import tconstruct.client.tabs.AbstractTab; -public class GuiSettings extends GuiCNPCInventory implements ITextfieldListener { +public class GuiSettings extends GuiCNPCInventory implements ITextfieldListener, GuiYesNoCallback { private final ResourceLocation resource = new ResourceLocation("customnpcs","textures/gui/standardbg.png"); @@ -26,37 +32,48 @@ public class GuiSettings extends GuiCNPCInventory implements ITextfieldListener super.initGui(); int y = 0; - this.addLabel(new GuiNpcLabel(1, "Chat Bubbles", guiLeft + 8, guiTop + 14 + y)); + this.addLabel(new GuiNpcLabel(1, "settings.chatBubbles", guiLeft + 8, guiTop + 14 + y)); this.addButton(new GuiNpcButton(1, guiLeft + 105, guiTop + 9 + y, 50, 20, new String[]{"gui.no", "gui.yes"}, ConfigClient.EnableChatBubbles?1:0)); - this.addLabel(new GuiNpcLabel(3, "Tracking Alignment", guiLeft + 8 + 155, guiTop + 14 + y)); + this.addLabel(new GuiNpcLabel(3, "settings.trackAlignment", guiLeft + 8 + 155, guiTop + 14 + y)); this.addButton(new GuiNpcButton(3, guiLeft + 105 + 160, guiTop + 9 + y, 50, 20, new String[]{"TLeft", "TCenter", "TRight", "Left", "Center", "Right", "BLeft", "BCenter", "BRight"}, ConfigClient.TrackingInfoAlignment)); y += 22; - this.addLabel(new GuiNpcLabel(2, "Dialog Sound", guiLeft + 8, guiTop + 14 + y)); + this.addLabel(new GuiNpcLabel(2, "settings.dialogSound", guiLeft + 8, guiTop + 14 + y)); this.addButton(new GuiNpcButton(2, guiLeft + 105, guiTop + 9 + y, 50, 20, new String[]{"gui.no", "gui.yes"}, ConfigClient.DialogSound?1:0)); - this.addLabel(new GuiNpcLabel(12,"Alignment X", guiLeft + 8 + 155, guiTop + 14 + y)); + this.addLabel(new GuiNpcLabel(12,"settings.alignmentX", guiLeft + 8 + 155, guiTop + 14 + y)); this.addTextField(new GuiNpcTextField(12, this, this.fontRendererObj, guiLeft + 107 + 160, guiTop + 9 + y, 45, 20, ConfigClient.TrackingInfoX + "")); getTextField(12).integersOnly = true; getTextField(12).setMinMaxDefault(-2000, 2000, 0); y += 22; - this.addLabel(new GuiNpcLabel(10,"Dialog Speed", guiLeft + 8, guiTop + 14 + y)); + this.addLabel(new GuiNpcLabel(10,"settings.dialogSpeed", guiLeft + 8, guiTop + 14 + y)); this.addTextField(new GuiNpcTextField(10, this, this.fontRendererObj, guiLeft + 107, guiTop + 9 + y, 45, 20, ConfigClient.DialogSpeed + "")); getTextField(10).integersOnly = true; getTextField(10).setMinMaxDefault(1, 20, 10); - this.addLabel(new GuiNpcLabel(13,"Alignment Y", guiLeft + 8 + 155, guiTop + 14 + y)); + this.addLabel(new GuiNpcLabel(13,"settings.alignmentY", guiLeft + 8 + 155, guiTop + 14 + y)); this.addTextField(new GuiNpcTextField(13, this, this.fontRendererObj, guiLeft + 107 + 160, guiTop + 9 + y, 45, 20, ConfigClient.TrackingInfoY + "")); getTextField(13).integersOnly = true; getTextField(13).setMinMaxDefault(-2000, 2000, 0); + y += 22; - // Planned - // Clear Skin Cache - // Clear Tracked Quest - // + this.addLabel(new GuiNpcLabel(14,"settings.trackScale", guiLeft + 8 + 155, guiTop + 14 + y)); + this.addTextField(new GuiNpcTextField(14, this, this.fontRendererObj, guiLeft + 107 + 160, guiTop + 9 + y, 45, 20, ConfigClient.TrackingScale + "")); + getTextField(14).integersOnly = true; + getTextField(14).setMinMaxDefault(0, 100, 100); + + y += 22; + + y += 22; + + y += 22; + + y += 22; + this.addButton(new GuiNpcButton(5, guiLeft + 8, guiTop + 9 + y, 150, 20, "settings.clearSkin")); + this.addButton(new GuiNpcButton(4, guiLeft + 8 + 155, guiTop + 9 + y, 150, 20, "settings.clearTrack")); } @Override @@ -71,6 +88,24 @@ public class GuiSettings extends GuiCNPCInventory implements ITextfieldListener } + @Override + public void confirmClicked(boolean flag, int i) { + if (flag) { + switch (i) { + case 0: + // Untrack Quest + Client.sendData(EnumPacketServer.UntrackQuest); + break; + case 1: + // Clear Skin Cache + ClientCacheHandler.clearSkinCache(); + break; + } + initGui(); + } + displayGuiScreen(this); + } + @Override protected void actionPerformed(GuiButton btn){ if(btn instanceof AbstractTab) @@ -95,6 +130,14 @@ public class GuiSettings extends GuiCNPCInventory implements ITextfieldListener ConfigClient.TrackingInfoAlignment = button.getValue(); ConfigClient.TrackingInfoAlignmentProperty.set(ConfigClient.TrackingInfoAlignment); } + if(button.id == 4){ + GuiYesNo yesNoTrack = new GuiYesNo(this, "Confirm", StatCollector.translateToLocal("settings.confirmClearTrack"), 0); + displayGuiScreen(yesNoTrack); + } + if(button.id == 5){ + GuiYesNo yesNoSkin = new GuiYesNo(this, "Confirm", StatCollector.translateToLocal("settings.confirmClearSkin"), 1); + displayGuiScreen(yesNoSkin); + } } @@ -128,5 +171,9 @@ public class GuiSettings extends GuiCNPCInventory implements ITextfieldListener ConfigClient.TrackingInfoY = textfield.getInteger(); ConfigClient.TrackingInfoYProperty.set(ConfigClient.TrackingInfoY); } + if(textfield.id == 14){ + ConfigClient.TrackingScale = textfield.getInteger(); + ConfigClient.TrackingScaleProperty.set(ConfigClient.TrackingScale); + } } } diff --git a/src/main/java/noppes/npcs/config/ConfigClient.java b/src/main/java/noppes/npcs/config/ConfigClient.java index e6d5176a1..1b277144c 100644 --- a/src/main/java/noppes/npcs/config/ConfigClient.java +++ b/src/main/java/noppes/npcs/config/ConfigClient.java @@ -54,6 +54,9 @@ public class ConfigClient public static Property TrackingInfoYProperty; public static int TrackingInfoY = 0; + public static Property TrackingScaleProperty; + public static int TrackingScale = 100; + public static Property DialogSpeedProperty; public static int DialogSpeed = 10; @@ -98,6 +101,9 @@ public class ConfigClient TrackingInfoYProperty = config.get(QUESTING, "Tracking Info Y", 0, "Client sided! Offsets the tracking info GUI by this amount in the Y direction."); TrackingInfoY = TrackingInfoYProperty.getInt(0); + TrackingScaleProperty = config.get(QUESTING, "Tracking Scale", 100, "Client sided! Adjusts the scaling of the Quest Tracking"); + TrackingScale = TrackingScaleProperty.getInt(100); + DialogSpeedProperty = config.get(VISUAL, "Dialog Speed", 10, "Only set for gradual dialogs"); DialogSpeed = DialogSpeedProperty.getInt(10); diff --git a/src/main/java/noppes/npcs/constants/EnumPacketServer.java b/src/main/java/noppes/npcs/constants/EnumPacketServer.java index 281798250..7e3162c88 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketServer.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketServer.java @@ -98,7 +98,7 @@ public enum EnumPacketServer { AnimationsGet, AnimationGet, AnimationRemove(CustomNpcsPermissions.GLOBAL_ANIMATION), AnimationSave(CustomNpcsPermissions.GLOBAL_ANIMATION), - RecipesGet, RecipeGet, QuestOpenGui, PlayerDataGet, QuestLogToServer, PartyLogToServer, + RecipesGet, RecipeGet, QuestOpenGui, PlayerDataGet, QuestLogToServer, PartyLogToServer, UntrackQuest, RemoteNpcsGet(CustomNpcsPermissions.NPC_GUI), RemoteTpToNpc(CustomNpcsPermissions.NPC_TELEPORT), diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index 6b00243b0..4a40a85f2 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -185,6 +185,18 @@ party.partyRequirements=Required by party.setQuestConfirm=Setting a Quest to a party will clear its progress! party.dropQuestConfirm=Are you sure you want to drop the party quest?` +settings.chatBubbles=Chat Bubbles +settings.trackAlignment=Tracking Alignment +settings.dialogSound=Dialog Sound +settings.dialogSpeed=Dialog Speed +settings.alignmentX=Alignment X +settings.alignmentY=Alignment Y +settings.trackScale=Tracking Scale +settings.clearTrack=Clear Tracked Quest +settings.confirmClearTrack=Are you sure you want to clear your tracked quest? +settings.clearSkin=Clear Skin Cache +settings.confirmClearSkin=Are you sure you want to clear your skin cache? + scale.shared=Shared filter.contains=Contains filter.any=Any