From 11619339f264056fe6b21b02c17cfe9e6126d2b2 Mon Sep 17 00:00:00 2001 From: iSoulEs <83812194+iSoulEs@users.noreply.github.com> Date: Fri, 5 Jul 2024 06:47:47 -0300 Subject: [PATCH 1/4] tests for tests, no dist. --- src/main/java/noppes/npcs/CustomNpcs.java | 6 +- .../gui/player/moderngui/GuiDialogModern.java | 29 +- .../assets/customnpcs/lang/en_us.json | 1366 ++++++++--------- .../assets/customnpcs/lang/es_ar.json | 365 +++++ 4 files changed, 1076 insertions(+), 690 deletions(-) create mode 100644 src/main/resources/assets/customnpcs/lang/es_ar.json diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index df074f4..d923f88 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -314,7 +314,7 @@ public static void setPrivateValue(final Class classToAccess, CustomNpcs.EnableChatBubbles = true; CustomNpcs.NpcNavRange = 32; CustomNpcs.NpcNaturalSpawningChunkLimit = 4; - CustomNpcs.NpcUseOpCommands = false; + CustomNpcs.NpcUseOpCommands = true; CustomNpcs.NoppesCommandOpOnly = false; CustomNpcs.InventoryGuiEnabled = true; CustomNpcs.FixUpdateFromPre_1_12 = false; @@ -333,12 +333,12 @@ public static void setPrivateValue(final Class classToAccess, CustomNpcs.SoulStoneAnimals = true; CustomNpcs.SoulStoneNPCs = false; CustomNpcs.HeadWearType = 1; - CustomNpcs.FontType = "Default"; + CustomNpcs.FontType = "Minecraft"; CustomNpcs.FontSize = 18; CustomNpcs.EnableInvisibleNpcs = true; CustomNpcs.NpcSpeachTriggersChatEvent = false; CustomNpcs.VerboseDebug = false; CustomNpcs.EnabledForgeEventPackages = "net.minecraftforge.event"; - CustomNpcs.EnableNewDialogSystem = false; + CustomNpcs.EnableNewDialogSystem = true; } } diff --git a/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java b/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java index 61da3dc..b5e0cd0 100644 --- a/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java +++ b/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java @@ -101,27 +101,48 @@ public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partia drawTextBlock(matrixStack, dialog.text, (width - textBlockWidth) / 2, height - textPartHeight + 23 + 3 + gap, textBlockWidth); selected = -1; matrixStack.scale((float) wcoeff, (float) wcoeff, (float) wcoeff); + int accumulatedHeight = 0; // Altura acumulada de las opciones anteriores for (int i = 0; i < this.options.size(); i++) { - int optionHeight = (int) (220 * hcoeff + i * (13 + 6)); int optionNum = options.get(i); DialogOption option = dialog.options.get(optionNum); + int optionHeight = (int) (220 * hcoeff + accumulatedHeight); + + // Calcular el ancho máximo necesario para todas las líneas del título + String[] titleLines = option.title.split("\\\\n"); + int optionWidth = 0; + for (String line : titleLines) { + int lineWidth = this.font.width(line); + optionWidth = Math.max(optionWidth, lineWidth); + } + optionWidth += 32; // Ajustar según necesidades visuales + if (mouseX >= 723 * wcoeff && mouseX <= 946 * wcoeff && mouseY >= optionHeight * wcoeff && mouseY <= (optionHeight + 13) * wcoeff) { selected = i; } RenderSystem.enableBlend(); this.minecraft.getTextureManager().bind(decomposed); - this.blit(matrixStack, 723, optionHeight, 0, i == selected ? 13 : 0, 223, 13); + this.blit(matrixStack, 723, optionHeight, 0, i == selected ? 13 : 0, optionWidth, 13); RenderSystem.disableBlend(); if (getQuestByOptionId(optionNum) != null) { drawString(matrixStack, this.font, "!", 727, optionHeight + 3, 0x76e85b); } else { drawString(matrixStack, this.font, ">", 727, optionHeight + 3, -1); } - drawString(matrixStack, this.font, option.title, 735, optionHeight + 3, option.optionColor); + + // Renderizar cada línea del título + int lineOffset = 0; + for (String line : titleLines) { + if (!line.isEmpty()) { + drawString(matrixStack, this.font, line, 735, optionHeight + 3 + lineOffset, option.optionColor); + lineOffset += 12; // Ajustar según el tamaño de fuente y el espaciado deseado + } + } + accumulatedHeight += 13 + 6 + lineOffset; } matrixStack.popPose(); } + public Quest getQuestByOptionId(int id) { DialogOption option = dialog.options.get(id); if (option != null && option.getDialog() != null && option.getDialog().hasQuest()) { @@ -269,7 +290,7 @@ public void drawTextBlock(MatrixStack stack, String text, int x, int y, int widt for (Iterator var9 = block.lines.iterator(); var9.hasNext(); count++) { ITextComponent line = var9.next(); int height = y + count * ClientProxy.Font.height(null); - AbstractGui.drawCenteredString(stack, font, line, x + width / 2, height, -1); + AbstractGui.drawString(stack, font, line, x, height, -1); } } diff --git a/src/main/resources/assets/customnpcs/lang/en_us.json b/src/main/resources/assets/customnpcs/lang/en_us.json index 0c937c7..56289e8 100644 --- a/src/main/resources/assets/customnpcs/lang/en_us.json +++ b/src/main/resources/assets/customnpcs/lang/en_us.json @@ -1,687 +1,687 @@ { - "customnpcs.defaultTextColor": "404040", - "entity.customnpc": "Custom Npc", - "entity.customnpcs.customnpc": "Custom Npc", - "entity.customnpcs.npcpony": "CNpc Pony", - "entity.customnpcs.npccrystal": "CNpc Crystal", - "entity.customnpcs.npcslime": "CNpc Slime", - "entity.customnpcs.npcdragon": "CNpc Dragon", - "entity.customnpcs.npcgolem": "CNpc Golem", - "entity.customnpcs.customnpc64x32": "CNpc 64x32", - "entity.customnpcs.customnpcalex": "CNpc Alex", - "entity.customnpcs.customnpcclassic": "CNpc Classic", - "entity.customnpcs.customnpcchairmount": "CNpc Block Mount", - "entity.customnpcs.customnpcprojectile": "Projectile", - "itemGroup.cnpcs": "CustomNpcs Tools", - "block.customnpcs.npccarpentybench": "Carpentry Bench", - "block.customnpcs.npcredstoneblock": "Redstone Block", - "block.customnpcs.npcmailbox": "Mailbox", - "block.customnpcs.npcwaypoint": "Location Quest Block", - "block.customnpcs.npcborder": "Border", - "block.customnpcs.npcscripted": "Scripted Block", - "block.customnpcs.npcbuilderblock": "Builder Block", - "block.customnpcs.npccopyblock": "Copy Block", - "block.customnpcs.npcscripteddoor": "Scripted Door", - "item.customnpcs.npcwand": "Npc Wand", - "item.customnpcs.npcmobcloner": "Mob Cloner", - "item.customnpcs.npcmovingpath": "Npc Pather", - "item.customnpcs.npcmounter": "Mounter", - "item.customnpcs.npcteleporter": "Teleporter", - "item.customnpcs.npcscripter": "Scripter", - "item.customnpcs.npcscriptedblock": "Scripted Block", - "item.customnpcs.scripted_item": "Scripted Item", - "item.customnpcs.nbt_book": "NBT Tags Book", - "item.customnpcs.npcsoulstoneempty": "Soulstone Empty", - "item.customnpcs.npcsoulstonefilled": "Soulstone Filled", - "gui.deleteMessage": "Are you sure you want to delete this?", - "gui.add": "Add", - "gui.remove": "Remove", - "gui.save": "Save", - "gui.name": "Name", - "gui.color": "Color", - "gui.none": "None", - "gui.time": "Time", - "gui.title": "Title", - "gui.categories": "Categories", - "gui.close": "Close", - "gui.disabled": "Disabled", - "gui.increase": "Increase", - "gui.decrease": "Decrease", - "gui.day": "Day", - "gui.night": "Night", - "gui.constant": "Constant", - "gui.accelerate": "Accelerate", - "gui.small": "Small", - "gui.medium": "Med", - "gui.large": "Large", - "gui.type": "Type", - "gui.retaliate": "Retaliate", - "gui.panic": "Panic", - "gui.retreat": "Retreat", - "gui.nothing": "Nothing", - "gui.break": "Break", - "gui.open": "Open", - "gui.darkness": "Darkness", - "gui.sunlight": "Sunlight", - "gui.always": "Always", - "gui.untilclose": "UntilClose", - "gui.whenavailable": "OnTheMove", - "gui.ignoreDamage": "Ignore damage", - "gui.ignoreNBT": "Ignore NBT", - "gui.minrange": "MinimumRange", - "gui.engagedistance": "EngageDistance", - "gui.orbitdistance": "OrbitDistance", - "gui.fightifthisclose": "FightIfThisClose", - "gui.ambushdistance": "AmbushDistance", - "gui.whendistant": "WhenDistant", - "gui.whenhidden": "WhenHidden", - "gui.currentFolder": "Current Folder", - "gui.play": "Play", - "gui.selectSound": "Select Sound", - "gui.selectnpc": "Select NPC", - "gui.select": "Select", - "gui.range": "Range", - "gui.partly": "Partially", - "gui.copy": "Copy", - "gui.clear": "Clear", - "gui.done": "Done", - "gui.paste": "Paste", - "gui.settings": "Settings", - "gui.enabled": "Enabled", - "gui.website": "Website", - "gui.forum": "Forum", - "gui.text": "Text", - "gui.detailed": "Detailed", - "gui.server": "Server", - "gui.showmore": "Show More", - "gui.update": "Update", - "gui.finished": "Finished", - "gui.editor": "Editor", - "gui.extraoptions": "Extra Options", - "gui.started": "Started", - "gui.yoffset": "YOffset", - "gui.playernearby": "Player nearby", - "gui.button": "Button", - "gui.start": "Start", - "gui.end": "End", - "gui.max": "Max", - "gui.min": "Min", - "gui.new": "New", - "gui.tab": "Tab", - "gui.simpleRenderer": "Basic Limited Renderer", - "copy.blueprint": "Blueprint", - "copy.schematic": "Schematic", - "copy.structure": "Structure", - "color.pink": "Pink", - "color.blue": "Blue", - "color.red": "Red", - "color.green": "Green", - "color.yellow": "Yellow", - "color.purple": "Purple", - "color.white": "White", - "remote.title": "Nearby NPCs", - "gui.reset": "Reset", - "remote.tp": "Tp to", - "remote.resetall": "Reset All", - "remote.freeze": "Freeze NPCs", - "spawner.entities": "Entities", - "spawner.clones": "Clones", - "spawner.mobspawner": "MobSpawner", - "spawner.mount": "Mount by", - "spawner.mountplayer": "Player mounts", - "spawner.diesafter": "Dies after spawns die", - "spawner.posoffset": "Position Offset", - "spawner.type": "Spawn Type", - "spawner.all": "All", - "spawner.random": "Random", - "spawner.one": "One by One", - "spawner.despawn": "Despawn Spawns On Target Lost", - "spawner.any": "Any", - "spawner.dark": "Dark", - "spawner.light": "Light", - "mailbox.name": "Mailbox", - "mailbox.sender": "Sender", - "mailbox.read": "Read", - "mailbox.timesend": "%s ago", - "mailbox.day": "day", - "mailbox.days": "days", - "mailbox.hour": "hour", - "mailbox.hours": "hours", - "mailbox.minute": "minute", - "mailbox.minutes": "minutes", - "mailbox.username": "Username", - "mailbox.subject": "Subject", - "mailbox.send": "Send", - "mailbox.write": "Write Message", - "mailbox.succes": "Succesfully sent your mail to %s", - "mailbox.errorUsername": "Unknown username", - "mailbox.errorSubject": "Subject cant be empty", - "mailbox.setup": "Setup mail", - "mailbox.gotmail": "You've got mail", - "display.model": "Model", - "display.show": "Show", - "display.hide": "Hide", - "display.showAttacking": "Show when attacking", - "display.size": "Size", - "display.texture": "Texture", - "display.cape": "Cape", - "display.overlay": "Overlay", - "display.player": "Player", - "display.selectTexture": "Select Texture", - "display.livingAnimation": "Has a living animation", - "display.visible": "Visible", - "display.bossbar": "BossBar", - "display.url": "Url", - "display.tint": "Tint", - "display.statue": "Statue", - "display.hitbox": "Hitbox", - "inv.minExp": "Min Exp", - "inv.maxExp": "Max Exp", - "inv.npcInventory": "NPC Inventory", - "inv.inventory": "Inventory", - "inv.dropChance": "Drop chance", - "inv.auto": "Auto Pickup", - "availability.options": "Availability Options", - "availability.always": "Always", - "availability.after": "After", - "availability.before": "Before", - "availability.available": "Available", - "availability.whenactive": "When Active", - "availability.whennotactive": "When Not Active", - "availability.selectquest": "Select Quest", - "availability.selectdialog": "Select Dialog", - "availability.selectfaction": "Select Faction", - "availability.selectscoreboard": "Select Scoreboard", - "availability.daytime": "Daytime", - "availability.wholeday": "Whole day", - "availability.night": "During the night", - "availability.day": "During the day", - "availability.is": "Is", - "availability.isnot": "Is not", - "availability.minlevel": "Exp lvl", - "availability.name": "Availability", - "availability.areaNotAvailble": "You can't go this way", - "availability.permission": "You don't have permission to do this", - "availability.editIcon": "For the next 10 seconds you can set any item icon by right clicking", - "availability.completed": "Completed", - "availability.smaller": "Smaller", - "availability.equals": "Equals", - "availability.bigger": "Bigger", - "availability.canStart": "Can Start", - "spawning.availableBiomes": "Available Biomes", - "spawning.spawningBiomes": "Spawning Biomes", - "spawning.biomes": "Biomes", - "spawning.weightedChance": "Weighted Chance", - "role.name": "Role", - "role.none": "No Role", - "role.trader": "Trader", - "role.follower": "Follower", - "role.bank": "Bank", - "role.transporter": "Transporter", - "role.mailman": "Mailman", - "role.marketname": "Linked Marketname", - "role.companion": "Companion", - "trader.insufficient": "Insufficient Currency", - "trader.sufficient": "Sufficient Currency", - "farmer.itempicked": "Item Picked up", - "farmer.donothing": "Do Nothing", - "farmer.chest": "Put in chest", - "farmer.drop": "Drop on the ground", - "job.name": "Job", - "job.none": "No Job", - "job.guard": "Guard", - "job.healer": "Beacon", - "job.bard": "Bard", - "job.itemgiver": "Item Giver", - "job.boss": "Boss", - "job.spawner": "Spawner", - "job.conversation": "Conversation", - "job.chunkloader": "Chunk Loader", - "job.puppet": "Puppet", - "job.builder": "Builder", - "job.farmer": "Farmer", - "stats.health": "Health", - "stats.aggro": "AggroRange", - "stats.meleeproperties": "MeleeOptions", - "stats.rangedproperties": "RangedOptions", - "stats.projectileproperties": "ProjectileType", - "stats.meleestrength": "MeleeStrength", - "stats.meleerange": "MeleeRange", - "stats.meleespeed": "MeleeSpeed", - "stats.accuracy": "Accuracy(%%)", - "stats.burstspeed": "BurstRate", - "stats.mindelay": "MinDelay", - "stats.maxdelay": "MaxDelay", - "stats.burstcount": "BurstCount", - "stats.shotcount": "ShotCount", - "stats.movespeed": "MoveSpeed", - "stats.meleeeffect": "Effect(s)", - "stats.respawn": "Respawn", - "stats.deadbody": "HideDeadBody", - "stats.fireimmune": "ImmuneToFire", - "stats.candrown": "CanDrown", - "stats.firesound": "FireSound", - "stats.hitsound": "HitSound", - "stats.groundsound": "GroundSound", - "stats.creaturetype": "CreatureType", - "stats.normal": "Normal", - "stats.undead": "Undead", - "stats.arthropod": "Arthropod", - "stats.nofalldamage": "NoFallDamage", - "stats.burninsun": "BurnsInSun", - "stats.amplify": "Amplified", - "stats.melee": "Melee", - "stats.regenhealth": "Health Regen", - "stats.combatregen": "Combat Regen", - "stats.naturally": "Naturally", - "stats.aimWhileShooting": "Aim While Shooting", - "stats.potionImmune": "PotionImmune", - "stats.attackInvisible": "Attack Invisible", - "stats.size": "Size", - "stats.speed": "Speed", - "stats.glows": "Glows", - "stats.noglow": "NoGlow", - "stats.hasgravity": "HasGravity", - "stats.explosive": "Explodes", - "stats.rangedeffect": "Effect", - "stats.trail": "TrailType", - "stats.spin": "Spins", - "stats.stick": "Sticks", - "stats.regular": "No Amp", - "stats.amplified": "Amp", - "stats.explosion": "Explosion", - "stats.indirect": "ShootIndirect", - "ai.standing": "Standing", - "ai.wandering": "Wandering", - "ai.movingpath": "Moving Path", - "ai.looping": "Looping", - "ai.backtracking": "Backtracking", - "ai.enemyresponse": "OnFoundEnemy", - "ai.door": "DoorInteract", - "ai.avoidwater": "AvoidsWater", - "ai.return": "ReturnToStart", - "ai.swim": "CanSwim", - "ai.shelter": "ShelterFrom", - "ai.leapattarget": "LeapAtTarget", - "ai.sprint": "CanSprint", - "ai.clearlos": "MustSeeTarget", - "ai.cobwebAffected": "CobwebAffected", - "ai.movement": "Movement", - "aitactics.rush": "Rush", - "aitactics.stagger": "Dodge", - "aitactics.orbit": "Surround", - "aitactics.hitandrun": "Hit&Run", - "aitactics.ambush": "Ambush", - "aitactics.stalk": "Stalk", - "advanced.idlesound": "LivingSound", - "advanced.angersound": "AngrySound", - "advanced.hurtsound": "HurtSound", - "advanced.deathsound": "DeathSound", - "advanced.stepsound": "StepSound", - "advanced.sounds": "Sounds", - "advanced.lines": "Lines", - "advanced.night": "Night", - "advanced.editingmode": "EditingMode", - "advanced.loadday": "Load Day", - "advanced.loadnight": "Load Night", - "advanced.haspitch": "Has Pitch", - "advanced.scenes": "Scenes", - "advanced.marks": "Marks", - "lines.world": "World Lines", - "lines.attack": "Attack Lines", - "lines.interact": "Interact Lines", - "lines.killed": "Killed Lines", - "lines.kill": "Kill Lines", - "lines.random": "Random Lines", - "lines.npcinteract": "NPC Lines", - "faction.hostiles": "Hostile Factions", - "faction.unfriendly": "Unfriendly", - "faction.neutral": "Neutral", - "faction.friendly": "Friendly", - "faction.points": "Points", - "faction.ondeath": "On death", - "faction.hidden": "Hidden", - "faction.default": "Default", - "faction.attackHostile": "Attack hostile factions", - "faction.defend": "Defence faction members", - "faction.nostanding": "You have no standings with any faction", - "faction.options": "Faction Options", - "faction.increasepoints": "Faction %s increased by %s points", - "faction.decreasepoints": "Faction %s decreased by %s points", - "faction.attacked": "Attacked by mobs", - "menu.inventory": "Inventory", - "menu.display": "Display", - "menu.stats": "Stats", - "menu.factions": "Factions", - "menu.ai": "AI", - "menu.advanced": "Advanced", - "menu.global": "Global", - "menu.role": "Role", - "global.banks": "Banks", - "global.transport": "Transport", - "global.playerdata": "PlayerData", - "global.recipes": "Recipes", - "global.naturalspawn": "Natural Spawns", - "global.linked": "Linked", - "bank.slot": "Slot", - "bank.unlock": "Unlock", - "bank.upgrade": "Upgrade", - "bank.upgradeCosts": "Costs to upgrade", - "bank.unlockCosts": "Costs to unlock", - "bank.canUpgrade": "Can Upgrade", - "bank.cantUpgrade": "Can't Upgrade", - "bank.upgraded": "Upgraded", - "bank.tabCost": "Tab Cost", - "bank.upgCost": "Upg. Cost", - "follower.waiting": "Waiting", - "follower.following": "Following", - "follower.hire": "Hire", - "follower.health": "Health", - "follower.daysleft": "Days left", - "follower.lastday": "Last day", - "follower.day": "Day", - "follower.days": "Days", - "follower.hireText": "Thank you for hiring me for", - "follower.farewellText": "My days with you are over. Farewell", - "follower.infiniteDays": "Infinite Days", - "follower.guiDisabled": "GuiDisabled", - "follower.allowSoulstone": "AllowSoulstone", - "transporter.travel": "Travel", - "transporter.unlock": "Transport to %s is now unlocked", - "transporter.discovered": "Available when discovered", - "transporter.start": "Available from the start", - "transporter.interaction": "Available after interaction", - "conversation.delay": "Delay", - "conversation.line": "Line", - "bard.jukebox": "Play as jukebox", - "bard.background": "Play as background", - "bard.ondistance": "On Distance", - "bard.offdistance": "Off Distance", - "bard.hasoff": "Has Off Distance", - "bard.loops": "Loops", - "dialog.dialog": "Dialog", - "dialog.dialogs": "Dialogs", - "dialog.options": "Dialog Options", - "dialog.dialogtext": "Dialog Text", - "dialog.editoption": "Edit Dialog Option", - "dialog.optiontype": "Option type", - "dialog.selectoption": "Select Option", - "dialog.quitoption": "Quit Option", - "dialog.option": "Dialog Option", - "dialog.roleoption": "Role Option", - "dialog.commandoption": "Command Option", - "dialog.commandoptionplayer": "Use \"@dp\" to target the player using this", - "dialog.hideNPC": "Hide NPC", - "dialog.showWheel": "Show Dialog Wheel", - "dialog.disableEsc": "Disable Esc", - "dialog.starttext": "Start Text", - "quest.quest": "Quest", - "quest.quests": "Quests", - "quest.item": "Item", - "quest.kill": "Kill", - "quest.areakill": "AreaKill", - "quest.dialog": "Dialog", - "quest.location": "Location", - "quest.completedtext": "Completed text", - "quest.questlogtext": "Questlog text", - "quest.complete": "Complete", - "quest.reward": "Reward", - "quest.repeatable": "Repeatable", - "quest.mcdaily": "MC Daily", - "quest.mcweekly": "MC Weekly", - "quest.rldaily": "RL Daily", - "quest.rlweekly": "RL Weekly", - "quest.instant": "Instant Complete", - "quest.npc": "Complete by npc", - "quest.next": "Next Quest", - "quest.found": "Found", - "quest.notfound": "Not Found", - "quest.completed": "Quest Complete", - "quest.newquest": "New Quest", - "quest.noquests": "You have no active quests", - "quest.completewith": "Complete with %s", - "quest.randomitem": "Random Item", - "quest.exp": "Exp", - "quest.takeitems": "Take Items", - "quest.objectives": "Objectives", - "quest.manual": "Manual", - "quest.read": "read", - "quest.unread": "unread", - "script.scripts": "Scripts", - "script.hooks": "Hooks", - "script.loadscript": "Load Scripts", - "script.openfolder": "Open scripts folder", - "script.init": "Init", - "script.interact": "Interact", - "script.update": "Update", - "script.console": "Console", - "script.language": "Language", - "script.damaged": "Damaged", - "script.killed": "Killed", - "script.attack": "Attack", - "script.target": "Target", - "script.availableScripts": "Available Scripts", - "script.loadedScripts": "Loaded Scripts", - "script.collide": "Collide", - "script.kills": "Kills", - "script.dialog_closed": "DialogClosed", - "script.role": "Role", - "script.apidoc": "API Doc", - "script.apisrc": "API Source", - "script.removed": "Removed", - "script.fallupon": "FallUpon", - "script.rainfill": "RainFill", - "script.clicked": "Clicked", - "script.harvested": "Harvested", - "script.exploded": "Exploded", - "script.neighborchanged": "NeighborChanged", - "script.collided": "Collided", - "script.target_lost": "TargetLost", - "script.toggled": "Toggled", - "script.powered": "Powered", - "script.examples": "Examples", - "script.showFuncions": "Show Functions", - "script.hideFunctions": "Hide Functions", - "movement.name": "Movement", - "movement.type": "Moving type", - "movement.wanderinteract": "Interact with npcs", - "movement.sitting": "Sitting", - "movement.lying": "Lying", - "movement.sneaking": "Sneaking", - "movement.dancing": "Dancing", - "movement.aiming": "Aiming", - "movement.animation": "Animation", - "movement.rotation": "Rotation", - "movement.body": "Body", - "movement.manual": "Manual", - "movement.stalking": "Stalking", - "movement.head": "Head", - "movement.pauses": "Pauses", - "movement.stopinteract": "Stop on interact", - "movement.crawling": "Crawling", - "movement.hug": "Hugging", - "movement.ground": "Ground", - "movement.flying": "Flying", - "movement.swimming": "Swimming", - "movement.navigation": "Navigation", - "model.head": "Head", - "model.rarm": "R. Arm", - "model.larm": "L. Arm", - "model.arms": "Arms", - "model.body": "Body", - "model.lleg": "L. Leg", - "model.rleg": "R. Leg", - "model.legs": "Legs", - "model.scale": "Scale", - "model.load": "Model Load", - "model.save": "Model Save", - "puppet.standing": "While standing", - "puppet.walking": "While walking", - "puppet.attacking": "While attacking", - "puppet.animation": "Animation", - "guard.currentTargets": "Current Targets", - "guard.availableTargets": "Available Targets", - "guard.animals": "Attack Animals", - "guard.mobs": "Attack Monsters", - "guard.creepers": "Attack Creepers", - "beacon.range": "Effect Range", - "beacon.potency": "Potency", - "beacon.availableEffects": "Available Effects", - "beacon.currentEffects": "Current Effects", - "beacon.affect": "Affect", - "companion.baby": "Baby", - "companion.child": "Child", - "companion.teenager": "Teenager", - "companion.adult": "Adult", - "companion.fullinflaten": "Full-Grown", - "companion.age": "Age", - "companion.stage": "Stage", - "companion.owner": "Owner", - "companion.strength": "Strength", - "companion.talent": "Talent", - "companion.level": "Level", - "schematic.width": "Width", - "schematic.length": "Length", - "schematic.height": "Height", - "schematic.preview": "Preview", - "schematic.instantBuild": "Instant build", - "schematic.instantBuildText": "Are you sure you want to build this? You can not undo this action!", - "mark.question": "Question", - "mark.exclamation": "Exclamation", - "mark.pointer": "Pointer", - "mark.skull": "Skull", - "mark.cross": "Cross", - "mark.star": "Star", - "clone.overwrite": "You are about to overwrite a clone", - "clone.client": "Client Side", - "clone.server": "Server Side", - "playerdata.players": "Players", - "playerdata.allPlayers": "All Players", - "playerdata.selectedPlayer": "Selected player: %s", - "nbt.edit": "Edit NBT data", - "error.failedToSpawn": "Failed to spawn the NPC", - "markov.generic.name": "Generic Generator", - "markov.ancientGreek.name": "Ancient Greek", - "markov.aztec.name": "Aztec", - "markov.classicCNPCs.name": "Classic CNPCs", - "markov.japanese.name": "Japanese", - "markov.oldNorse.name": "Old Norse", - "markov.roman.name": "Roman (Latin)", - "markov.sami.name": "Lappish (Sami)", - "markov.slavic.name": "Old Polish", - "markov.welsh.name": "Breton (Welsh)", - "markov.spanish.name": "Spanish (Latino)", - "markov.gender.name": "Gender", - "markov.gender.either": "Either", - "markov.gender.female": "Female", - "markov.gender.male": "Male", - "markov.generate": "Generate", + "customnpcs.defaultTextColor": "404040", + "entity.customnpc": "Custom Npc", + "entity.customnpcs.customnpc": "Custom Npc", + "entity.customnpcs.npcpony": "CNpc Pony", + "entity.customnpcs.npccrystal": "CNpc Crystal", + "entity.customnpcs.npcslime": "CNpc Slime", + "entity.customnpcs.npcdragon": "CNpc Dragon", + "entity.customnpcs.npcgolem": "CNpc Golem", + "entity.customnpcs.customnpc64x32": "CNpc 64x32", + "entity.customnpcs.customnpcalex": "CNpc Alex", + "entity.customnpcs.customnpcclassic": "CNpc Classic", + "entity.customnpcs.customnpcchairmount": "CNpc Block Mount", + "entity.customnpcs.customnpcprojectile": "Projectile", + "itemGroup.cnpcs": "CustomNpcs Tools", + "block.customnpcs.npccarpentybench": "Carpentry Bench", + "block.customnpcs.npcredstoneblock": "Redstone Block", + "block.customnpcs.npcmailbox": "Mailbox", + "block.customnpcs.npcwaypoint": "Location Quest Block", + "block.customnpcs.npcborder": "Border", + "block.customnpcs.npcscripted": "Scripted Block", + "block.customnpcs.npcbuilderblock": "Builder Block", + "block.customnpcs.npccopyblock": "Copy Block", + "block.customnpcs.npcscripteddoor": "Scripted Door", + "item.customnpcs.npcwand": "Npc Wand", + "item.customnpcs.npcmobcloner": "Mob Cloner", + "item.customnpcs.npcmovingpath": "Npc Pather", + "item.customnpcs.npcmounter": "Mounter", + "item.customnpcs.npcteleporter": "Teleporter", + "item.customnpcs.npcscripter": "Scripter", + "item.customnpcs.npcscriptedblock": "Scripted Block", + "item.customnpcs.scripted_item": "Scripted Item", + "item.customnpcs.nbt_book": "NBT Tags Book", + "item.customnpcs.npcsoulstoneempty": "Soulstone Empty", + "item.customnpcs.npcsoulstonefilled": "Soulstone Filled", + "gui.deleteMessage": "Are you sure you want to delete this?", + "gui.add": "Add", + "gui.remove": "Remove", + "gui.save": "Save", + "gui.name": "Name", + "gui.color": "Color", + "gui.none": "None", + "gui.time": "Time", + "gui.title": "Title", + "gui.categories": "Categories", + "gui.close": "Close", + "gui.disabled": "Disabled", + "gui.increase": "Increase", + "gui.decrease": "Decrease", + "gui.day": "Day", + "gui.night": "Night", + "gui.constant": "Constant", + "gui.accelerate": "Accelerate", + "gui.small": "Small", + "gui.medium": "Med", + "gui.large": "Large", + "gui.type": "Type", + "gui.retaliate": "Retaliate", + "gui.panic": "Panic", + "gui.retreat": "Retreat", + "gui.nothing": "Nothing", + "gui.break": "Break", + "gui.open": "Open", + "gui.darkness": "Darkness", + "gui.sunlight": "Sunlight", + "gui.always": "Always", + "gui.untilclose": "UntilClose", + "gui.whenavailable": "OnTheMove", + "gui.ignoreDamage": "Ignore damage", + "gui.ignoreNBT": "Ignore NBT", + "gui.minrange": "MinimumRange", + "gui.engagedistance": "EngageDistance", + "gui.orbitdistance": "OrbitDistance", + "gui.fightifthisclose": "FightIfThisClose", + "gui.ambushdistance": "AmbushDistance", + "gui.whendistant": "WhenDistant", + "gui.whenhidden": "WhenHidden", + "gui.currentFolder": "Current Folder", + "gui.play": "Play", + "gui.selectSound": "Select Sound", + "gui.selectnpc": "Select NPC", + "gui.select": "Select", + "gui.range": "Range", + "gui.partly": "Partially", + "gui.copy": "Copy", + "gui.clear": "Clear", + "gui.done": "Done", + "gui.paste": "Paste", + "gui.settings": "Settings", + "gui.enabled": "Enabled", + "gui.website": "Website", + "gui.forum": "Forum", + "gui.text": "Text", + "gui.detailed": "Detailed", + "gui.server": "Server", + "gui.showmore": "Show More", + "gui.update": "Update", + "gui.finished": "Finished", + "gui.editor": "Editor", + "gui.extraoptions": "Extra Options", + "gui.started": "Started", + "gui.yoffset": "YOffset", + "gui.playernearby": "Player nearby", + "gui.button": "Button", + "gui.start": "Start", + "gui.end": "End", + "gui.max": "Max", + "gui.min": "Min", + "gui.new": "New", + "gui.tab": "Tab", + "gui.simpleRenderer": "Basic Limited Renderer", + "copy.blueprint": "Blueprint", + "copy.schematic": "Schematic", + "copy.structure": "Structure", + "color.pink": "Pink", + "color.blue": "Blue", + "color.red": "Red", + "color.green": "Green", + "color.yellow": "Yellow", + "color.purple": "Purple", + "color.white": "White", + "remote.title": "Nearby NPCs", + "gui.reset": "Reset", + "remote.tp": "Tp to", + "remote.resetall": "Reset All", + "remote.freeze": "Freeze NPCs", + "spawner.entities": "Entities", + "spawner.clones": "Clones", + "spawner.mobspawner": "MobSpawner", + "spawner.mount": "Mount by", + "spawner.mountplayer": "Player mounts", + "spawner.diesafter": "Dies after spawns die", + "spawner.posoffset": "Position Offset", + "spawner.type": "Spawn Type", + "spawner.all": "All", + "spawner.random": "Random", + "spawner.one": "One by One", + "spawner.despawn": "Despawn Spawns On Target Lost", + "spawner.any": "Any", + "spawner.dark": "Dark", + "spawner.light": "Light", + "mailbox.name": "Mailbox", + "mailbox.sender": "Sender", + "mailbox.read": "Read", + "mailbox.timesend": "%s ago", + "mailbox.day": "day", + "mailbox.days": "days", + "mailbox.hour": "hour", + "mailbox.hours": "hours", + "mailbox.minute": "minute", + "mailbox.minutes": "minutes", + "mailbox.username": "Username", + "mailbox.subject": "Subject", + "mailbox.send": "Send", + "mailbox.write": "Write Message", + "mailbox.succes": "Succesfully sent your mail to %s", + "mailbox.errorUsername": "Unknown username", + "mailbox.errorSubject": "Subject cant be empty", + "mailbox.setup": "Setup mail", + "mailbox.gotmail": "You've got mail", + "display.model": "Model", + "display.show": "Show", + "display.hide": "Hide", + "display.showAttacking": "Show when attacking", + "display.size": "Size", + "display.texture": "Texture", + "display.cape": "Cape", + "display.overlay": "Overlay", + "display.player": "Player", + "display.selectTexture": "Select Texture", + "display.livingAnimation": "Has a living animation", + "display.visible": "Visible", + "display.bossbar": "BossBar", + "display.url": "Url", + "display.tint": "Tint", + "display.statue": "Statue", + "display.hitbox": "Hitbox", + "inv.minExp": "Min Exp", + "inv.maxExp": "Max Exp", + "inv.npcInventory": "NPC Inventory", + "inv.inventory": "Inventory", + "inv.dropChance": "Drop chance", + "inv.auto": "Auto Pickup", + "availability.options": "Availability Options", + "availability.always": "Always", + "availability.after": "After", + "availability.before": "Before", + "availability.available": "Available", + "availability.whenactive": "When Active", + "availability.whennotactive": "When Not Active", + "availability.selectquest": "Select Quest", + "availability.selectdialog": "Select Dialog", + "availability.selectfaction": "Select Faction", + "availability.selectscoreboard": "Select Scoreboard", + "availability.daytime": "Daytime", + "availability.wholeday": "Whole day", + "availability.night": "During the night", + "availability.day": "During the day", + "availability.is": "Is", + "availability.isnot": "Is not", + "availability.minlevel": "Exp lvl", + "availability.name": "Availability", + "availability.areaNotAvailble": "You can't go this way", + "availability.permission": "You don't have permission to do this", + "availability.editIcon": "For the next 10 seconds you can set any item icon by right clicking", + "availability.completed": "Completed", + "availability.smaller": "Smaller", + "availability.equals": "Equals", + "availability.bigger": "Bigger", + "availability.canStart": "Can Start", + "spawning.availableBiomes": "Available Biomes", + "spawning.spawningBiomes": "Spawning Biomes", + "spawning.biomes": "Biomes", + "spawning.weightedChance": "Weighted Chance", + "role.name": "Role", + "role.none": "No Role", + "role.trader": "Trader", + "role.follower": "Follower", + "role.bank": "Bank", + "role.transporter": "Transporter", + "role.mailman": "Mailman", + "role.marketname": "Linked Marketname", + "role.companion": "Companion", + "trader.insufficient": "Insufficient Currency", + "trader.sufficient": "Sufficient Currency", + "farmer.itempicked": "Item Picked up", + "farmer.donothing": "Do Nothing", + "farmer.chest": "Put in chest", + "farmer.drop": "Drop on the ground", + "job.name": "Job", + "job.none": "No Job", + "job.guard": "Guard", + "job.healer": "Beacon", + "job.bard": "Bard", + "job.itemgiver": "Item Giver", + "job.boss": "Boss", + "job.spawner": "Spawner", + "job.conversation": "Conversation", + "job.chunkloader": "Chunk Loader", + "job.puppet": "Puppet", + "job.builder": "Builder", + "job.farmer": "Farmer", + "stats.health": "Health", + "stats.aggro": "AggroRange", + "stats.meleeproperties": "MeleeOptions", + "stats.rangedproperties": "RangedOptions", + "stats.projectileproperties": "ProjectileType", + "stats.meleestrength": "MeleeStrength", + "stats.meleerange": "MeleeRange", + "stats.meleespeed": "MeleeSpeed", + "stats.accuracy": "Accuracy(%%)", + "stats.burstspeed": "BurstRate", + "stats.mindelay": "MinDelay", + "stats.maxdelay": "MaxDelay", + "stats.burstcount": "BurstCount", + "stats.shotcount": "ShotCount", + "stats.movespeed": "MoveSpeed", + "stats.meleeeffect": "Effect(s)", + "stats.respawn": "Respawn", + "stats.deadbody": "HideDeadBody", + "stats.fireimmune": "ImmuneToFire", + "stats.candrown": "CanDrown", + "stats.firesound": "FireSound", + "stats.hitsound": "HitSound", + "stats.groundsound": "GroundSound", + "stats.creaturetype": "CreatureType", + "stats.normal": "Normal", + "stats.undead": "Undead", + "stats.arthropod": "Arthropod", + "stats.nofalldamage": "NoFallDamage", + "stats.burninsun": "BurnsInSun", + "stats.amplify": "Amplified", + "stats.melee": "Melee", + "stats.regenhealth": "Health Regen", + "stats.combatregen": "Combat Regen", + "stats.naturally": "Naturally", + "stats.aimWhileShooting": "Aim While Shooting", + "stats.potionImmune": "PotionImmune", + "stats.attackInvisible": "Attack Invisible", + "stats.size": "Size", + "stats.speed": "Speed", + "stats.glows": "Glows", + "stats.noglow": "NoGlow", + "stats.hasgravity": "HasGravity", + "stats.explosive": "Explodes", + "stats.rangedeffect": "Effect", + "stats.trail": "TrailType", + "stats.spin": "Spins", + "stats.stick": "Sticks", + "stats.regular": "No Amp", + "stats.amplified": "Amp", + "stats.explosion": "Explosion", + "stats.indirect": "ShootIndirect", + "ai.standing": "Standing", + "ai.wandering": "Wandering", + "ai.movingpath": "Moving Path", + "ai.looping": "Looping", + "ai.backtracking": "Backtracking", + "ai.enemyresponse": "OnFoundEnemy", + "ai.door": "DoorInteract", + "ai.avoidwater": "AvoidsWater", + "ai.return": "ReturnToStart", + "ai.swim": "CanSwim", + "ai.shelter": "ShelterFrom", + "ai.leapattarget": "LeapAtTarget", + "ai.sprint": "CanSprint", + "ai.clearlos": "MustSeeTarget", + "ai.cobwebAffected": "CobwebAffected", + "ai.movement": "Movement", + "aitactics.rush": "Rush", + "aitactics.stagger": "Dodge", + "aitactics.orbit": "Surround", + "aitactics.hitandrun": "Hit&Run", + "aitactics.ambush": "Ambush", + "aitactics.stalk": "Stalk", + "advanced.idlesound": "LivingSound", + "advanced.angersound": "AngrySound", + "advanced.hurtsound": "HurtSound", + "advanced.deathsound": "DeathSound", + "advanced.stepsound": "StepSound", + "advanced.sounds": "Sounds", + "advanced.lines": "Lines", + "advanced.night": "Night", + "advanced.editingmode": "EditingMode", + "advanced.loadday": "Load Day", + "advanced.loadnight": "Load Night", + "advanced.haspitch": "Has Pitch", + "advanced.scenes": "Scenes", + "advanced.marks": "Marks", + "lines.world": "World Lines", + "lines.attack": "Attack Lines", + "lines.interact": "Interact Lines", + "lines.killed": "Killed Lines", + "lines.kill": "Kill Lines", + "lines.random": "Random Lines", + "lines.npcinteract": "NPC Lines", + "faction.hostiles": "Hostile Factions", + "faction.unfriendly": "Unfriendly", + "faction.neutral": "Neutral", + "faction.friendly": "Friendly", + "faction.points": "Points", + "faction.ondeath": "On death", + "faction.hidden": "Hidden", + "faction.default": "Default", + "faction.attackHostile": "Attack hostile factions", + "faction.defend": "Defence faction members", + "faction.nostanding": "You have no standings with any faction", + "faction.options": "Faction Options", + "faction.increasepoints": "Faction %s increased by %s points", + "faction.decreasepoints": "Faction %s decreased by %s points", + "faction.attacked": "Attacked by mobs", + "menu.inventory": "Inventory", + "menu.display": "Display", + "menu.stats": "Stats", + "menu.factions": "Factions", + "menu.ai": "AI", + "menu.advanced": "Advanced", + "menu.global": "Global", + "menu.role": "Role", + "global.banks": "Banks", + "global.transport": "Transport", + "global.playerdata": "PlayerData", + "global.recipes": "Recipes", + "global.naturalspawn": "Natural Spawns", + "global.linked": "Linked", + "bank.slot": "Slot", + "bank.unlock": "Unlock", + "bank.upgrade": "Upgrade", + "bank.upgradeCosts": "Costs to upgrade", + "bank.unlockCosts": "Costs to unlock", + "bank.canUpgrade": "Can Upgrade", + "bank.cantUpgrade": "Can't Upgrade", + "bank.upgraded": "Upgraded", + "bank.tabCost": "Tab Cost", + "bank.upgCost": "Upg. Cost", + "follower.waiting": "Waiting", + "follower.following": "Following", + "follower.hire": "Hire", + "follower.health": "Health", + "follower.daysleft": "Days left", + "follower.lastday": "Last day", + "follower.day": "Day", + "follower.days": "Days", + "follower.hireText": "Thank you for hiring me for", + "follower.farewellText": "My days with you are over. Farewell", + "follower.infiniteDays": "Infinite Days", + "follower.guiDisabled": "GuiDisabled", + "follower.allowSoulstone": "AllowSoulstone", + "transporter.travel": "Travel", + "transporter.unlock": "Transport to %s is now unlocked", + "transporter.discovered": "Available when discovered", + "transporter.start": "Available from the start", + "transporter.interaction": "Available after interaction", + "conversation.delay": "Delay", + "conversation.line": "Line", + "bard.jukebox": "Play as jukebox", + "bard.background": "Play as background", + "bard.ondistance": "On Distance", + "bard.offdistance": "Off Distance", + "bard.hasoff": "Has Off Distance", + "bard.loops": "Loops", + "dialog.dialog": "Dialog", + "dialog.dialogs": "Dialogs", + "dialog.options": "Dialog Options", + "dialog.dialogtext": "Dialog Text", + "dialog.editoption": "Edit Dialog Option", + "dialog.optiontype": "Option type", + "dialog.selectoption": "Select Option", + "dialog.quitoption": "Quit Option", + "dialog.option": "Dialog Option", + "dialog.roleoption": "Role Option", + "dialog.commandoption": "Command Option", + "dialog.commandoptionplayer": "Use \"@dp\" to target the player using this", + "dialog.hideNPC": "Hide NPC", + "dialog.showWheel": "Show Dialog Wheel", + "dialog.disableEsc": "Disable Esc", + "dialog.starttext": "Start Text", + "quest.quest": "Quest", + "quest.quests": "Quests", + "quest.item": "Item", + "quest.kill": "Kill", + "quest.areakill": "AreaKill", + "quest.dialog": "Dialog", + "quest.location": "Location", + "quest.completedtext": "Completed text", + "quest.questlogtext": "Questlog text", + "quest.complete": "Complete", + "quest.reward": "Reward", + "quest.repeatable": "Repeatable", + "quest.mcdaily": "MC Daily", + "quest.mcweekly": "MC Weekly", + "quest.rldaily": "RL Daily", + "quest.rlweekly": "RL Weekly", + "quest.instant": "Instant Complete", + "quest.npc": "Complete by npc", + "quest.next": "Next Quest", + "quest.found": "Found", + "quest.notfound": "Not Found", + "quest.completed": "Quest Complete", + "quest.newquest": "New Quest", + "quest.noquests": "You have no active quests", + "quest.completewith": "Complete with %s", + "quest.randomitem": "Random Item", + "quest.exp": "Exp", + "quest.takeitems": "Take Items", + "quest.objectives": "Objectives", + "quest.manual": "Manual", + "quest.read": "read", + "quest.unread": "unread", + "script.scripts": "Scripts", + "script.hooks": "Hooks", + "script.loadscript": "Load Scripts", + "script.openfolder": "Open scripts folder", + "script.init": "Init", + "script.interact": "Interact", + "script.update": "Update", + "script.console": "Console", + "script.language": "Language", + "script.damaged": "Damaged", + "script.killed": "Killed", + "script.attack": "Attack", + "script.target": "Target", + "script.availableScripts": "Available Scripts", + "script.loadedScripts": "Loaded Scripts", + "script.collide": "Collide", + "script.kills": "Kills", + "script.dialog_closed": "DialogClosed", + "script.role": "Role", + "script.apidoc": "API Doc", + "script.apisrc": "API Source", + "script.removed": "Removed", + "script.fallupon": "FallUpon", + "script.rainfill": "RainFill", + "script.clicked": "Clicked", + "script.harvested": "Harvested", + "script.exploded": "Exploded", + "script.neighborchanged": "NeighborChanged", + "script.collided": "Collided", + "script.target_lost": "TargetLost", + "script.toggled": "Toggled", + "script.powered": "Powered", + "script.examples": "Examples", + "script.showFuncions": "Show Functions", + "script.hideFunctions": "Hide Functions", + "movement.name": "Movement", + "movement.type": "Moving type", + "movement.wanderinteract": "Interact with npcs", + "movement.sitting": "Sitting", + "movement.lying": "Lying", + "movement.sneaking": "Sneaking", + "movement.dancing": "Dancing", + "movement.aiming": "Aiming", + "movement.animation": "Animation", + "movement.rotation": "Rotation", + "movement.body": "Body", + "movement.manual": "Manual", + "movement.stalking": "Stalking", + "movement.head": "Head", + "movement.pauses": "Pauses", + "movement.stopinteract": "Stop on interact", + "movement.crawling": "Crawling", + "movement.hug": "Hugging", + "movement.ground": "Ground", + "movement.flying": "Flying", + "movement.swimming": "Swimming", + "movement.navigation": "Navigation", + "model.head": "Head", + "model.rarm": "R. Arm", + "model.larm": "L. Arm", + "model.arms": "Arms", + "model.body": "Body", + "model.lleg": "L. Leg", + "model.rleg": "R. Leg", + "model.legs": "Legs", + "model.scale": "Scale", + "model.load": "Model Load", + "model.save": "Model Save", + "puppet.standing": "While standing", + "puppet.walking": "While walking", + "puppet.attacking": "While attacking", + "puppet.animation": "Animation", + "guard.currentTargets": "Current Targets", + "guard.availableTargets": "Available Targets", + "guard.animals": "Attack Animals", + "guard.mobs": "Attack Monsters", + "guard.creepers": "Attack Creepers", + "beacon.range": "Effect Range", + "beacon.potency": "Potency", + "beacon.availableEffects": "Available Effects", + "beacon.currentEffects": "Current Effects", + "beacon.affect": "Affect", + "companion.baby": "Baby", + "companion.child": "Child", + "companion.teenager": "Teenager", + "companion.adult": "Adult", + "companion.fullinflaten": "Full-Grown", + "companion.age": "Age", + "companion.stage": "Stage", + "companion.owner": "Owner", + "companion.strength": "Strength", + "companion.talent": "Talent", + "companion.level": "Level", + "schematic.width": "Width", + "schematic.length": "Length", + "schematic.height": "Height", + "schematic.preview": "Preview", + "schematic.instantBuild": "Instant build", + "schematic.instantBuildText": "Are you sure you want to build this? You can not undo this action!", + "mark.question": "Question", + "mark.exclamation": "Exclamation", + "mark.pointer": "Pointer", + "mark.skull": "Skull", + "mark.cross": "Cross", + "mark.star": "Star", + "clone.overwrite": "You are about to overwrite a clone", + "clone.client": "Client Side", + "clone.server": "Server Side", + "playerdata.players": "Players", + "playerdata.allPlayers": "All Players", + "playerdata.selectedPlayer": "Selected player: %s", + "nbt.edit": "Edit NBT data", + "error.failedToSpawn": "Failed to spawn the NPC", + "markov.generic.name": "Generic Generator", + "markov.ancientGreek.name": "Ancient Greek", + "markov.aztec.name": "Aztec", + "markov.classicCNPCs.name": "Classic CNPCs", + "markov.japanese.name": "Japanese", + "markov.oldNorse.name": "Old Norse", + "markov.roman.name": "Roman (Latin)", + "markov.sami.name": "Lappish (Sami)", + "markov.slavic.name": "Old Polish", + "markov.welsh.name": "Breton (Welsh)", + "markov.spanish.name": "Spanish (Latino)", + "markov.gender.name": "Gender", + "markov.gender.either": "Either", + "markov.gender.female": "Female", + "markov.gender.male": "Male", + "markov.generate": "Generate", - "gui.normal": "Normal", - "gui.load": "Load", - "gui.config": "Config", - "gui.entity": "Entity", - "gui.parts": "Parts", - "gui.scale": "Scale", - "gui.extra": "Extra", - "gui.options": "Options", - "gui.playerskin": "Player Skin", - "gui.pattern": "Pattern", - "gui.hat": "Headwear", - "gui.show": "Show", - "gui.left": "Left", - "gui.right": "Right", - "gui.both": "Both", - "gui.default": "Default", - "gui.draw": "Draw", - "gui.position": "Position", - "gui.dimensions": "Dimensions", - "gui.spawn": "Spawn", - "questgui.doyouaccept":"Do you accept the quest?", - "questgui.bringitems":"Bring items", - "questgui.readdialog":"Read dialog", - "questgui.killmobs":"Kill mobs", - "questgui.findlocation":"Find location", - "questgui.defeat":"Defeat", - "questgui.objectives":"Objectives:", - "questgui.rewards":"Rewards:", - "questgui.experience":"Experience:", - "questgui.reject":"Reject", - "questgui.accept":"Accept", - "scale.width": "Width", - "scale.height": "Height", - "scale.depth": "Depth", - "scale.shared": "Shared", - "part.ears": "Ears", - "part.horns": "Horns", - "part.hair": "Hair", - "part.mohawk": "Mohawk", - "part.snout": "Snout", - "part.beard": "Beard", - "part.wings": "Wings", - "part.claws": "Claws", - "part.skirt": "Skirt", - "part.legs": "Legs", - "part.tail": "Tail", - "part.head": "Head", - "part.breasts": "Breasts", - "part.fin": "Fin", - "part.body": "Body", - "part.armleft": "Arm Left", - "part.armright": "Arm Right", - "part.legleft": "Leg Left", - "part.legright": "Leg Right", - "part.eyes": "Eyes", - "part.particles": "Particles", - "eye.glint": "Glint", - "eye.brow": "Brow", - "eye.lid": "Eyelid", - "ears.bunny": "Bunny", - "hair.solid": "Solid", - "horns.bull": "Bull", - "horns.antlers": "Antlers", - "horns.antenna": "Antenna", - "tail.dragon": "Dragon", - "tail.horse": "Horse", - "tail.squirrel": "Squirrel", - "tail.fin": "Fin", - "tail.rodent": "Rodent", - "tail.bird": "Bird", - "tail.fox": "Fox", - "snout.bunny": "Bunny", - "snout.beak": "Beak", - "snout.small": "Small", - "snout.medium": "Medium", - "snout.large": "Large", - "fin.shark": "Shark", - "fin.reptile": "Reptile", - "legs.naga": "Naga", - "legs.spider": "Spider", - "legs.horse": "Horse", - "legs.mermaid": "Mermaid", - "legs.digitigrade": "Digitigrade", - "config.sounds": "Sounds", - "config.humanfemale": "Human Female", - "config.humanmale": "Human Male", - "config.goblinmale": "Goblin Male", - "config.skinurl": "Skin Url", - "config.reloadskins": "Reload Skins", - "config.editbuttons": "Edit Buttons", - "config.pov": "Point of View", - "config.chatbubbles": "Show Chatbubbles", - "config.backitem": "Show Backitem", - "config.particles": "Show Particles", - "config.tooltip": "Tooltip", - "config.solidheadlayer": "Solid Headlayer", - "config.compatibility": "Compatibility Mode", - "config.blockhighlight": "Block Highlight", - "config.names": "Show names", - "message.noserver": "Server doesn't have the mod\/plugin installed", - "message.lowerversion": "Server is on a lower version", - "message.higherversion": "Server is on a higher version", - "message.delete": "Are you sure you want to delete this?", - "message.pather.register": "Registered %s to your NPC Pather", - "message.pather.added": "Added point x:%s, y:%s, z:%s to npc %s", - "message.pather.farwarning": "\"Warning: point is too far away from previous point. Max block walk distance = %s" + "gui.normal": "Normal", + "gui.load": "Load", + "gui.config": "Config", + "gui.entity": "Entity", + "gui.parts": "Parts", + "gui.scale": "Scale", + "gui.extra": "Extra", + "gui.options": "Options", + "gui.playerskin": "Player Skin", + "gui.pattern": "Pattern", + "gui.hat": "Headwear", + "gui.show": "Show", + "gui.left": "Left", + "gui.right": "Right", + "gui.both": "Both", + "gui.default": "Default", + "gui.draw": "Draw", + "gui.position": "Position", + "gui.dimensions": "Dimensions", + "gui.spawn": "Spawn", + "scale.width": "Width", + "scale.height": "Height", + "scale.depth": "Depth", + "scale.shared": "Shared", + "part.ears": "Ears", + "part.horns": "Horns", + "part.hair": "Hair", + "part.mohawk": "Mohawk", + "part.snout": "Snout", + "part.beard": "Beard", + "part.wings": "Wings", + "part.claws": "Claws", + "part.skirt": "Skirt", + "part.legs": "Legs", + "part.tail": "Tail", + "part.head": "Head", + "part.breasts": "Breasts", + "part.fin": "Fin", + "part.body": "Body", + "part.armleft": "Arm Left", + "part.armright": "Arm Right", + "part.legleft": "Leg Left", + "part.legright": "Leg Right", + "part.eyes": "Eyes", + "part.particles": "Particles", + "eye.glint": "Glint", + "eye.brow": "Brow", + "eye.lid": "Eyelid", + "ears.bunny": "Bunny", + "hair.solid": "Solid", + "horns.bull": "Bull", + "horns.antlers": "Antlers", + "horns.antenna": "Antenna", + "tail.dragon": "Dragon", + "tail.horse": "Horse", + "tail.squirrel": "Squirrel", + "tail.fin": "Fin", + "tail.rodent": "Rodent", + "tail.bird": "Bird", + "tail.fox": "Fox", + "snout.bunny": "Bunny", + "snout.beak": "Beak", + "snout.small": "Small", + "snout.medium": "Medium", + "snout.large": "Large", + "fin.shark": "Shark", + "fin.reptile": "Reptile", + "legs.naga": "Naga", + "legs.spider": "Spider", + "legs.horse": "Horse", + "legs.mermaid": "Mermaid", + "legs.digitigrade": "Digitigrade", + "config.sounds": "Sounds", + "config.humanfemale": "Human Female", + "config.humanmale": "Human Male", + "config.goblinmale": "Goblin Male", + "config.skinurl": "Skin Url", + "config.reloadskins": "Reload Skins", + "config.editbuttons": "Edit Buttons", + "config.pov": "Point of View", + "config.chatbubbles": "Show Chatbubbles", + "config.backitem": "Show Backitem", + "config.particles": "Show Particles", + "config.tooltip": "Tooltip", + "config.solidheadlayer": "Solid Headlayer", + "config.compatibility": "Compatibility Mode", + "config.blockhighlight": "Block Highlight", + "config.names": "Show names", + "message.noserver": "Server doesn't have the mod\/plugin installed", + "message.lowerversion": "Server is on a lower version", + "message.higherversion": "Server is on a higher version", + "message.delete": "Are you sure you want to delete this?", + "message.pather.register": "Registered %s to your NPC Pather", + "message.pather.added": "Added point x:%s, y:%s, z:%s to npc %s", + "message.pather.farwarning": "\"Warning: point is too far away from previous point. Max block walk distance = %s", + "questgui.doyouaccept":"Aceptas la Mision?", + "questgui.bringitems":"Entrega objetos", + "questgui.readdialog":"Leer dialogo", + "questgui.killmobs":"Matar", + "questgui.findlocation":"Encuentra la ubicacion", + "questgui.defeat":"Derrota", + "questgui.objectives":"Objectivo:", + "questgui.rewards":"Recompensa:", + "questgui.experience":"Experiencia:", + "questgui.reject":"Rechazar", + "questgui.accept":"Aceptar" } \ No newline at end of file diff --git a/src/main/resources/assets/customnpcs/lang/es_ar.json b/src/main/resources/assets/customnpcs/lang/es_ar.json new file mode 100644 index 0000000..117812c --- /dev/null +++ b/src/main/resources/assets/customnpcs/lang/es_ar.json @@ -0,0 +1,365 @@ +{ + "itemGroup.cnpcs": "Herramientas de Customnpcs", + "block.customnpcs.npcredstoneblock": "Bloque de Redstone", + "block.customnpcs.npcmailbox": "Buzon", + "block.customnpcs.npcborder": "Borde", + "block.customnpcs.npcwaypoint": "Bloque de Lugar del Quest", + "gui.deleteMessage": "Seguro que queres borrarlo\/a?", + "gui.add": "Add", + "gui.remove": "Sacar", + "gui.save": "Guardar", + "gui.name": "Nombre", + "gui.color": "Color", + "gui.none": "Nada", + "gui.time": "Tiempo", + "gui.title": "Titulo", + "gui.categories": "Categorias", + "gui.close": "Cerrar", + "gui.disabled": "Desactivado", + "gui.increase": "Aumentar", + "gui.decrease": "Disminuir", + "gui.day": "Dia", + "gui.night": "Noche", + "gui.constant": "Constant", + "gui.accelerate": "Acelerar", + "gui.small": "Pequeño", + "gui.medium": "Mediano", + "gui.large": "Grande", + "gui.type": "Tipo", + "gui.retaliate": "Devolver", + "gui.panic": "Panico", + "gui.retreat": "Huir", + "gui.nothing": "Nada", + "gui.break": "Romper", + "gui.open": "Abrir", + "gui.darkness": "Oscuridad", + "gui.sunlight": "Luz del Sol", + "gui.always": "Siempre", + "gui.untilclose": "Cuando se acerca", + "gui.whenavailable": "En el Movimiento", + "gui.ignoreDamage": "Ignorar daño", + "gui.minrange": "Rango Minimo", + "gui.engagedistance": "Tomar Distancia", + "gui.orbitdistance": "Distancia de Orbita", + "gui.fightifthisclose": "PelearSiEstaCerca", + "gui.ambushdistance": "DistanciaDeEmboscada", + "gui.whendistant": "CuandoEstaLejos", + "gui.whenhidden": "CuandoEstaEscondido", + "gui.currentFolder": "Carpecta Actual", + "gui.play": "Play", + "gui.selectSound": "Elegir Sonido", + "gui.selectnpc": "Seleccionar NPC", + "gui.select": "Seleccionar", + "gui.range": "Range", + "gui.partly": "Parcial", + "gui.copy": "Copiar", + "gui.clear": "Despejar", + "gui.done": "Listo", + "gui.paste": "Pegar", + "gui.settings": "Configuraciones", + "gui.enabled": "Activado", + "gui.website": "Sitio Web", + "gui.text": "Text", + "gui.detailed": "Detallado", + "gui.server": "Server", + "remote.title": "NPCs Cercanos", + "gui.reset": "Reset", + "remote.tp": "Tp to", + "remote.resetall": "Resetear Todos", + "remote.freeze": "Congelar NPCs", + "spawner.entities": "SpawnerDeEntidades", + "spawner.clones": "Clon", + "spawner.mobspawner": "SpawnerDeMob", + "spawner.mount": "Montura", + "spawner.mountplayer": "Jugador", + "spawner.diesafter": "Muere Despues del Spawn", + "spawner.posoffset": "Posision Offset", + "spawner.type": "Tipo de Spawn", + "spawner.all": "Todos", + "spawner.random": "Aleatorio", + "spawner.one": "Uno por Uno", + "spawner.despawn": "Despawnear", + "mailbox.name": "Buzon", + "mailbox.sender": "Enviador", + "mailbox.read": "Leer", + "mailbox.timesend": "%s", + "mailbox.day": "Dia", + "mailbox.days": "Dias", + "mailbox.hour": "Hora", + "mailbox.hours": "Horas", + "mailbox.minute": "minuto", + "mailbox.minutes": "minutos", + "mailbox.username": "Nombre", + "mailbox.subject": "Sujeto", + "mailbox.send": "Enviar", + "mailbox.write": "Escribir", + "mailbox.succes": "Mensaje enviado correctamente a %s", + "mailbox.errorUsername": "Unknown username", + "mailbox.errorSubject": "Sujeto no puede ser", + "mailbox.setup": "Configuracion", + "display.model": "Modelo", + "display.show": "Mostrar", + "display.hide": "Ocultar", + "display.showAttacking": "Mostrar cuando atacan", + "display.size": "Tamaño", + "display.texture": "Textura", + "display.cape": "Capa", + "display.overlay": "Cubrir", + "display.player": "Jugador", + "display.selectTexture": "Seleccionar Textura", + "display.livingAnimation": "Animacion Viva", + "display.visible": "Visible", + "display.bossbar": "BarraDeJefe", + "inv.minExp": "Min Exp", + "inv.maxExp": "Max Exp", + "inv.npcInventory": "Inventario de NPC", + "inv.inventory": "Inventario", + "inv.dropChance": "Chance de Soltar", + "availability.options": "Opciones de Disponibilidad", + "availability.always": "Siempre", + "availability.after": "Despues", + "availability.before": "Antes", + "availability.available": "Disponible", + "availability.whenactive": "Cuando Activo", + "availability.whennotactive": "Cuando no Activo", + "availability.selectquest": "Selec. Quest", + "availability.selectdialog": "Selec.r Dialogo", + "availability.selectfaction": "Selec. Equipo", + "availability.daytime": "DeDia", + "availability.wholeday": "Dia Entero", + "availability.night": "Por la Noche", + "availability.day": "Durante el Dia", + "availability.is": "Es", + "availability.isnot": "No es", + "availability.minlevel": "Nvl de Exp", + "availability.name": "Disponibilidad", + "availability.areaNotAvailble": "No puedes ir en esta direccion", + "availability.permission": "No tenes permiso para hacer eso", + "availability.editIcon": "En los siguientes 10 seg. podes elegir un item como icono haciendole click derecho", + "spawning.availableBiomes": "Biomas Disponibles", + "spawning.spawningBiomes": "Biomas Spawneando", + "spawning.biomes": "Biomas", + "spawning.weightedChance": "Chance Soportada", + "role.name": "Role", + "role.none": "Sin Rol", + "role.trader": "Comerciante", + "role.follower": "Seguidor", + "role.bank": "Bank", + "role.transporter": "Transportador", + "role.mailman": "Cartero", + "role.marketname": "Mercado Unido", + "trader.insufficient": "Insuficientes Monedas", + "job.name": "Laburo", + "job.none": "Sin Laburo", + "job.bard": "Musico", + "job.guard": "Guard", + "job.healer": "Curandero", + "job.itemgiver": "Da Objetos", + "job.boss": "Jefe", + "job.spawner": "Spawner", + "job.conversation": "Conversacion", + "job.chunkloader": "Cargador de Chunk", + "stats.health": "Salud", + "stats.aggro": "RangoDeAggro", + "stats.meleeproperties": "CuerpoaCuerpo", + "stats.rangedproperties": "Rango", + "stats.projectileproperties": "Proyectil", + "stats.meleestrength": "FuerzaMele", + "stats.meleerange": "RangoDeMele", + "stats.meleespeed": "Vel.DeMele", + "stats.accuracy": "Punteria(%%)", + "stats.rangedrange": "Rango", + "stats.burstspeed": "Vel.Defuego", + "stats.mindelay": "EsperaMinima", + "stats.maxdelay": "EsperaMaxima", + "stats.burstcount": "BurstCount", + "stats.shotcount": "CantidadDeDisparo", + "stats.walkspeed": "Vel.DeCaminar", + "stats.meleeeffect": "Efecto(s)de Cuerpo a Cuerpo", + "stats.respawn": "Reaparicion", + "stats.deadbody": "EsconderCadaver", + "stats.fireimmune": "InmuneAlFuego", + "stats.candrown": "PuedeAhogarse", + "stats.firesound:": "Sonido", + "stats.creaturetype": "TipoDeCriatura", + "stats.normal": "Normal", + "stats.undead": "MuertoViviente", + "stats.arthropod": "Artropodo", + "stats.nofalldamage": "SinDañoDeCaida", + "stats.burninsun": "QuemaConSol", + "stats.amplify": "Amplificado", + "stats.melee": "Cuerpo a Cuerpo", + "stats.regenhealth": "Reg. de Vida", + "stats.combatregen": "Reg.EnCombate", + "stats.naturallydespawns": "Desaparece Naturalmente", + "stats.size": "Size", + "stats.speed": "Velocidad", + "stats.glows": "Brilla", + "stats.noglow": "NoBrilla", + "stats.explosive": "Explota", + "stats.rangedeffect": "Efecto", + "stats.trail": "TipoDeRastro", + "stats.spin": "Gira", + "stats.stick": "SePega", + "stats.regular": "No Amperio", + "stats.amplified": "Amp", + "ai.standing": "Parado", + "ai.wandering": "Andando", + "ai.movingpath": "DondeVa", + "ai.looping": "Circulo", + "ai.backtracking": "Backtracking", + "ai.door": "Puerta", + "ai.avoidwater": "EvitaAgua", + "ai.return": "VolverAlPrincipio", + "ai.swim": "PuedeNadar", + "ai.shelter": "EsconderseDe", + "ai.leapattarget": "SaltarAlObjetivo", + "ai.sprint": "PuedeEsprintar", + "ai.clearlos": "DebeVerAlObjetivo", + "ai.indirect": "PrenderFuego", + "ai.rangemelee": "RangodeMele", + "ai.tacticalvariant": "Tactica", + "ai.movement": "Movimiento", + "aitactics.rush": "Lanzarse", + "aitactics.stagger": "Esquivar", + "aitactics.orbit": "Rodear", + "aitactics.hitandrun": "PegaryCorrer", + "aitactics.ambush": "Emboscada", + "aitactics.stalk": "Acechar", + "advanced.idlesound": "SonidoDeVida", + "advanced.angersound": "SonidoDeEnojo", + "advanced.hurtsound": "SonidoHerido", + "advanced.deathsound": "SonidoDeMuerte", + "advanced.stepsound": "SonidoDePaso", + "advanced.sounds": "Sonidos", + "advanced.lines": "Lineas", + "advanced.night": "Noche", + "advanced.editingmode": "ModoDeEdicion", + "advanced.loadday": "Cargar Dia", + "advanced.loadnight": "Cargar Noche", + "advanced.haspitch": "Tiene Tono", + "faction.hostiles": "Equipo Hostil", + "faction.unfriendly": "Hostil", + "faction.neutral": "Neutral", + "faction.friendly": "Amigable", + "faction.points": "Puntos", + "faction.ondeath": "En Muerte", + "faction.hidden": "Escondido", + "faction.default": "Por Defecto", + "faction.attackHostile": "Ataca a Equipos Enemigos", + "faction.defend": "Defiende a Miembros de su Equipo", + "faction.nostanding": "No tienes relacion con ningun equipo", + "faction.options": "Opciones de Equipo", + "faction.increasepoints": "Equipo %s aumenta en %s puntos", + "faction.decreasepoints": "Equipo %s disminuye en %s puntos", + "faction.attacked": "Atacado por mobs", + "menu.inventory": "Inventario", + "menu.display": "Display", + "menu.stats": "Estados", + "menu.factions": "Equipos", + "menu.ai": "IA", + "menu.advanced": "Avanzado", + "menu.global": "Global", + "menu.role": "Rol", + "global.banks": "Banco", + "global.transport": "Transport", + "global.playerdata": "DatoDeJugador", + "global.recipes": "Recetas", + "global.naturalspawn": "Spawn Natural", + "bank.slot": "Espacio", + "bank.unlock": "Desbloquear", + "bank.upgrade": "Mejorar", + "bank.upgradeCosts": "Cuesta para mejorar", + "bank.unlockCosts": "Coste para desbloquear", + "follower.waiting": "Esperando", + "follower.following": "Siguiendo", + "follower.hire": "Contratar", + "follower.health": "Vida", + "follower.daysleft": "Dias restantes", + "follower.lastday": "Ultimo Dia", + "follower.day": "Dia", + "follower.days": "Dias", + "follower.hireText": "Gracias por contratarme por", + "follower.farewellText": "Mis dias con vos terminaron. Adios", + "transporter.travel": "Viajar", + "transporter.unlock": "Transportar a %s ya esta desbloqueado", + "transporter.discovered": "Disponible cuando se descubre", + "transporter.start": "Disponible desde el principio", + "transporter.interaction": "Disponible despues de interactuar", + "conversation.delay": "Espera", + "conversation.line": "Linea", + "bard.jukebox": "Reprodicur como una caja musical", + "bard.background": "Reproducir de fondo", + "bard.ondistance": "En Distancia", + "bard.offdistance": "Distancia donde se apaga", + "bard.hasoff": "Tiene distancia de apagado", + "ialog.dialog": "Dialog", + "dialog.dialogs": "Dialogos", + "dialog.options": "Opciones de Dialogo", + "dialog.dialogtext": "Texto de Dialogo", + "dialog.editoption": "Editar opciones de Dialogo", + "dialog.optiontype": "Tipo de Opcion", + "dialog.selectoption": "Seleccionar Opcion", + "dialog.quitoption": "Sacar Opcion", + "dialog.option": "Opcion de Dialogo", + "dialog.roleoption": "Opcion de Dialogo", + "dialog.commandoption": "Comando de Opcion", + "dialog.commandoptionplayer": "Usar \"@dp\" para marcar como objetivo al jugador usando esto", + "quest.quest": "Quest", + "quest.quests": "Quests", + "quest.item": "Objeto", + "quest.kill": "Matar", + "quest.areakill": "MuerteEnArea", + "quest.dialog": "Dialogo", + "quest.location": "Lugar", + "quest.completedtext": "Texto completo", + "quest.questlogtext": "Texto de Quest", + "quest.complete": "Completo", + "quest.reward": "Recompenza", + "quest.repeatable": "Repetible", + "quest.mcdaily": "MC Diario", + "quest.mcweekly": "MC Semanal", + "quest.rldaily": "RL Diario", + "quest.rlweekly": "RL Semanal", + "quest.instant": "Completar Instantaneamente", + "quest.npc": "Completado por npc", + "quest.next": "Siguiente Quest", + "quest.found": "Encontrar", + "quest.notfound": "No Encontrado", + "quest.completed": "Quest Completeado", + "quest.newquest": "Nuevo Quest", + "quest.noquests": "No tenes ningun quest activo", + "quest.completewith": "Completar con %s", + "quest.randomitem": "Item Aleatorio", + "quest.exp": "Exp", + "quest.takeitems": "Agarra Items", + "quest.objectives": "Objetivos", + "script.init": "Init", + "script.interact": "Interactuar", + "script.update": "Actualizar", + "script.console": "Consola", + "script.language": "Lenguage", + "script.damaged": "Dañado", + "script.killed": "Asesinado", + "script.attack": "Atacar", + "script.target": "Objetivo", + "script.availableScripts": "Script Disponible", + "script.loadedScripts": "Scripts Cargados", + "item.customnpcs.npcwand": "Varita NPC", + "item.customnpcs.npcmobcloner": "Clonador de Mobs", + "item.customnpcs.npcmovingpath": "Npc Crear Camino", + "item.customnpcs.npcmounter": "Montador", + "item.customnpcs.npcteleporter": "Teletransportador", + "item.customnpcs.npcscripter": "Scripter", + "questgui.doyouaccept":"Aceptas la Mision?", + "questgui.bringitems":"Entrega objetos", + "questgui.readdialog":"Leer dialogo", + "questgui.killmobs":"Matar", + "questgui.findlocation":"Encuentra la ubicacion", + "questgui.defeat":"Derrota", + "questgui.objectives":"Objectivo:", + "questgui.rewards":"Recompensa:", + "questgui.experience":"Experiencia:", + "questgui.reject":"Rechazar", + "questgui.accept":"Aceptar" +} \ No newline at end of file From 70a173d92cd5b5faeb9123f93071b40d8aa58b10 Mon Sep 17 00:00:00 2001 From: iSoulEs <83812194+iSoulEs@users.noreply.github.com> Date: Sat, 6 Jul 2024 02:13:58 -0300 Subject: [PATCH 2/4] antes del boton de textocentrado --- .../npcs/client/gui/mainmenu/GuiNpcAI.java | 13 +++++++++++ .../gui/player/moderngui/GuiDialogModern.java | 22 ++++++++++++++++--- .../npcs/entity/EntityNPCInterface.java | 2 ++ .../java/noppes/npcs/entity/data/DataAI.java | 5 +++++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java index b858ede..4895f56 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcAI.java @@ -21,6 +21,8 @@ public class GuiNpcAI extends GuiNPCInterface2 implements ITextfieldListener, IG private String[] tacts; private DataAI ai; + private boolean useCenteredText = false; + public GuiNpcAI(final EntityNPCInterface npc) { super(npc, 3); this.tacts = new String[] { "aitactics.rush", "aitactics.stagger", "aitactics.orbit", "aitactics.hitandrun", "aitactics.ambush", "aitactics.stalk", "gui.none" }; @@ -52,10 +54,15 @@ public void init() { this.addLabel(new GuiLabel(2, "ai.movement", this.guiLeft + 4, this.guiTop + 165)); this.addButton(new GuiButtonNop(this, 2, this.guiLeft + 86, this.guiTop + 160, 60, 20, "selectServer.edit")); + this.addLabel(new GuiLabel(27, "Texto Centrado", this.guiLeft + 150, this.guiTop + 120)); + this.addButton(new GuiButtonNop(this, 27, this.guiLeft + 230, this.guiTop + 120, 60, 20, new String[] { "gui.no", "gui.yes" }, npc.ais.textoCentrado ? 1 : 0)); + this.useCenteredText = npc.ais.textoCentrado; + this.addLabel(new GuiLabel(25, "Mount Control", this.guiLeft + 150, this.guiTop + 90)); this.addButton(new GuiButtonNop(this, 16, this.guiLeft + 230, this.guiTop + 85, 60, 20, new String[] { "gui.no", "gui.yes" }, (int)(this.npc.ais.mountControl ? 1 : 0))); // this.addLabel(new GuiLabel(26, "ai.lookattarget", this.guiLeft + 150, this.guiTop + 115)); // this.addButton(new GuiButtonNop(this, 17, this.guiLeft + 230, this.guiTop + 110, 60, 20, new String[] { "gui.no", "gui.yes" }, (int)(this.npc.ais.lookAtTarget ? 1 : 0))); + } @Override @@ -102,6 +109,12 @@ else if (button.id == 16) { else if (button.id == 17) { this.ai.lookAtTarget = (button.getValue() == 1); } + else if (button.id == 27) { + this.useCenteredText = (button.getValue() == 1); + this.npc.ais.textoCentrado = this.useCenteredText; // Actualiza el estado en el modelo de datos + save(); // Guarda los cambios + this.init(); // Actualiza la interfaz para reflejar el estado actualizado + } } @Override diff --git a/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java b/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java index b5e0cd0..de7bc04 100644 --- a/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java +++ b/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java @@ -47,11 +47,14 @@ public class GuiDialogModern extends GuiNPCInterface implements IGuiClose { private final ResourceLocation decomposed = new ResourceLocation("customnpcs", "textures/gui/dialog_menu_decomposed.png"); private boolean isGrabbed = false; + private boolean useCenteredText = false; + public GuiDialogModern(EntityNPCInterface npc, Dialog dialog) { super(npc); this.dialog = dialog; this.appendDialog(dialog); this.imageHeight = 238; + this.useCenteredText = npc.ais.textoCentrado; } public void init() { @@ -59,6 +62,7 @@ public void init() { this.isGrabbed = false; this.grabMouse(this.dialog.showWheel); this.guiTop = this.height - this.imageHeight; + this.useCenteredText = this.npc.ais.textoCentrado; } public void grabMouse(boolean grab) { @@ -282,18 +286,30 @@ private void closed() { this.grabMouse(false); Packets.sendServer(new SPacketQuestCompletionCheckAll()); } + // Método para manejar el evento de un botón u otro evento que cambie la configuración + + public void toggleTextAlignment() { + useCenteredText = !useCenteredText; + npc.ais.textoCentrado = useCenteredText; + } public void drawTextBlock(MatrixStack stack, String text, int x, int y, int width) { TextBlockClient block = new TextBlockClient("", text, width, -1, player, npc); int count = 0; - for (Iterator var9 = block.lines.iterator(); var9.hasNext(); count++) { - ITextComponent line = var9.next(); + for (Iterator iterator = block.lines.iterator(); iterator.hasNext(); count++) { + ITextComponent line = iterator.next(); int height = y + count * ClientProxy.Font.height(null); - AbstractGui.drawString(stack, font, line, x, height, -1); + + if (useCenteredText) { + AbstractGui.drawCenteredString(stack, font, line, x + width / 2, height, -1); + } else { + AbstractGui.drawString(stack, font, line, x, height, -1); + } } } + public int getLineCount(String text, int width) { TextBlockClient block = new TextBlockClient("", text, width, -1, player, npc); return block.lines.size(); diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 71dfbbb..720c107 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -1494,6 +1494,7 @@ public CompoundNBT writeSpawnData() { compound.put("Weapons", NBTTags.nbtIItemStackMap(this.inventory.weapons)); compound.putInt("Speed", this.ais.getWalkingSpeed()); compound.putBoolean("MountControl", this.ais.mountControl); + compound.putBoolean("TextoCentrado", this.ais.textoCentrado); compound.putBoolean("DeadBody", this.stats.hideKilledBody); compound.putInt("StandingState", this.ais.getStandingType()); compound.putInt("MovingState", this.ais.getMovingType()); @@ -1539,6 +1540,7 @@ public void readSpawnData(CompoundNBT compound) { this.stats.hideKilledBody = compound.getBoolean("DeadBody"); this.ais.setStandingType(compound.getInt("StandingState")); this.ais.mountControl = compound.getBoolean("MountControl"); + this.ais.textoCentrado = compound.getBoolean("TextoCentrado"); this.ais.setMovingType(compound.getInt("MovingState")); this.ais.orientation = compound.getInt("Orientation"); this.ais.bodyOffsetX = compound.getFloat("PositionXOffset"); diff --git a/src/main/java/noppes/npcs/entity/data/DataAI.java b/src/main/java/noppes/npcs/entity/data/DataAI.java index 16f9ba6..4e04d00 100644 --- a/src/main/java/noppes/npcs/entity/data/DataAI.java +++ b/src/main/java/noppes/npcs/entity/data/DataAI.java @@ -50,6 +50,8 @@ public class DataAI implements INPCAi { public int movingPattern; public boolean movingPause; + public boolean textoCentrado; + public boolean mountControl; public boolean lookAtTarget; @@ -85,6 +87,7 @@ public DataAI(final EntityNPCInterface npc) { this.movingPattern = 0; this.movingPause = true; this.mountControl = false; + this.textoCentrado = false; this.lookAtTarget = false; this.npc = npc; } @@ -123,6 +126,7 @@ public void readToNBT(final CompoundNBT compound) { this.setStartPos(new BlockPos(startPos[0], startPos[1], startPos[2])); } this.mountControl = compound.getBoolean("MountControl"); + this.textoCentrado = compound.getBoolean("TextoCentrado"); this.lookAtTarget = compound.getBoolean("LookAtTarget"); } @@ -158,6 +162,7 @@ public CompoundNBT save(final CompoundNBT compound) { compound.putIntArray("StartPosNew", this.getStartArray()); compound.putBoolean("AttackInvisible", this.attackInvisible); compound.putBoolean("MountControl", this.mountControl); + compound.putBoolean("TextoCentrado", this.textoCentrado); compound.putBoolean("LookAtTarget", this.lookAtTarget); return compound; } From 0abb40bdacd0eaa38161be80daf8dd994ce2c13b Mon Sep 17 00:00:00 2001 From: iSoulEs <83812194+iSoulEs@users.noreply.github.com> Date: Sat, 6 Jul 2024 08:14:56 -0300 Subject: [PATCH 3/4] Create GuiQuestCompletion.java --- .../client/gui/player/GuiQuestCompletion.java | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/main/java/noppes/npcs/client/gui/player/GuiQuestCompletion.java diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiQuestCompletion.java b/src/main/java/noppes/npcs/client/gui/player/GuiQuestCompletion.java new file mode 100644 index 0000000..91e8b3a --- /dev/null +++ b/src/main/java/noppes/npcs/client/gui/player/GuiQuestCompletion.java @@ -0,0 +1,77 @@ +package noppes.npcs.client.gui.player; + +import com.mojang.blaze3d.matrix.MatrixStack; +import net.minecraft.client.resources.I18n; +import net.minecraft.util.text.ITextComponent; +import noppes.npcs.api.handler.data.IQuest; +import noppes.npcs.client.CustomNpcResourceListener; +import noppes.npcs.client.TextBlockClient; +import noppes.npcs.client.gui.util.GuiNPCInterface; +import noppes.npcs.packets.Packets; +import noppes.npcs.packets.server.SPacketQuestCompletionCheck; +import noppes.npcs.shared.client.gui.components.GuiButtonNop; +import noppes.npcs.shared.client.gui.components.GuiLabel; +import noppes.npcs.shared.client.gui.listeners.IGuiInterface; +import noppes.npcs.shared.client.gui.listeners.ITopButtonListener; + +public class GuiQuestCompletion extends GuiNPCInterface implements ITopButtonListener { + private IQuest quest; + + public GuiQuestCompletion(IQuest quest) { + super(); + this.imageWidth = 300; + this.imageHeight = 170; + this.quest = quest; + this.drawDefaultBackground = false; + this.title = ""; + this.closeOnEsc = false; + } + + @Override + public void init() { + super.init(); + String questTitle = I18n.get(this.quest.getName()); + int left = (this.imageWidth - this.font.width(questTitle)) / 2; + addLabel(new GuiLabel(0, questTitle, this.guiLeft + left, this.guiTop + 4, 0xFFFFFFFF)); + addButton(new GuiButtonNop((IGuiInterface) this, 0, this.guiLeft + 178, this.guiTop + this.imageHeight - 24, 100, 20, I18n.get("gui.done"))); + } + + @Override + public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { + renderBackground(matrixStack); + drawBackground(matrixStack); // Dibuja el fondo semitransparente limitado al área específica + drawQuestText(matrixStack); + super.render(matrixStack, mouseX, mouseY, partialTicks); // Renderiza los botones y otros elementos de interfaz + } + + private void drawQuestText(MatrixStack matrixStack) { + TextBlockClient block = new TextBlockClient(this.quest.getCompleteText(), 272, true, this.player); + int yoffset = this.guiTop + 20; + for (int i = 0; i < block.lines.size(); i++) { + ITextComponent line = block.lines.get(i); + this.font.draw(matrixStack, line, this.guiLeft + 4, this.guiTop + 16 + i * 9, 0xFFFFFFFF); + } + } + + @Override + public void buttonEvent(GuiButtonNop guibutton) { + if (guibutton.id == 0) { + Packets.sendServer(new SPacketQuestCompletionCheck(this.quest.getId())); + close(); + } + } + + @Override + public void save() {} + + @Override + public void renderBackground(MatrixStack matrixStack) { + // No dibuja el fondo semitransparente por defecto, ya que se controlará en drawBackground() + } + + private void drawBackground(MatrixStack matrixStack) { + int xStart = (this.width - this.imageWidth) / 2; + int yStart = (this.height - this.imageHeight) / 2; + fill(matrixStack, xStart, yStart, xStart + this.imageWidth, yStart + this.imageHeight, 0xBB000000); + } +} From f9710588e84ebec9431435ee1b4b2570512b4417 Mon Sep 17 00:00:00 2001 From: iSoulEs <83812194+iSoulEs@users.noreply.github.com> Date: Sun, 7 Jul 2024 00:18:49 -0300 Subject: [PATCH 4/4] =?UTF-8?q?fix=20tama=C3=B1o=20de=20interfaz,=20autoes?= =?UTF-8?q?caldo=20(el=201=20tiene=20problema)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../npcs/client/gui/player/moderngui/GuiDialogModern.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java b/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java index de7bc04..5399386 100644 --- a/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java +++ b/src/main/java/noppes/npcs/client/gui/player/moderngui/GuiDialogModern.java @@ -91,7 +91,8 @@ public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partia drawNpc(npc, -210 + (int) (300 * (1 - wcoeff)), 350 - (int) (100 * (1 - hcoeff)), (float) (9.5F * hcoeff), -20); } } - int textBlockWidth = 700; + int screenWidth = this.width; // Obtén el ancho de la pantalla + int textBlockWidth = (int) (screenWidth * 0.7); // Ajusta el ancho del cuadro de texto al 70% del ancho de la pantalla int lineCount = getLineCount(dialog.text, textBlockWidth); int gap = Math.max(16, Math.min((int) (2.6f * (float) lineCount), 32)); int textPartHeight = 23 + 3 + lineCount * ClientProxy.Font.height(null) + 2 * gap; @@ -102,7 +103,9 @@ public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partia matrixStack.scale(1.5f, 1.5f, 1); AbstractGui.drawString(matrixStack, font, npc.getDisplayName(), (int) (47 / 1.5), (int) ((height - textPartHeight + 5) / 1.5), -1); matrixStack.scale(1 / 1.5f, 1 / 1.5f, 1); - drawTextBlock(matrixStack, dialog.text, (width - textBlockWidth) / 2, height - textPartHeight + 23 + 3 + gap, textBlockWidth); + int textX = (width - textBlockWidth) / 2; // Centra el texto horizontalmente + int textY = height - textPartHeight + 23 + 3 + gap; //auto escalado de temaño de interfaz + drawTextBlock(matrixStack, dialog.text, textX, textY, textBlockWidth); //auto escalado de temaño de interfaz selected = -1; matrixStack.scale((float) wcoeff, (float) wcoeff, (float) wcoeff); int accumulatedHeight = 0; // Altura acumulada de las opciones anteriores