# mcMMOgui, v1.4 [config update] by 3meraldK#2137 # Don't redistribute this file and don't claim it as your own import: org.bukkit.inventory.ItemFlag com.gmail.nossr50.datatypes.skills.PrimarySkillType com.gmail.nossr50.api.ExperienceAPI com.gmail.nossr50.api.PartyAPI com.gmail.nossr50.mcMMO com.gmail.nossr50.party.PartyManager options: background: gray stained glass pane named "&7" skillGUIname: "&3&lmcMMO &eSkills" partyGUIname: "&3&lmcMMO &eParty" rankingGUIname: "&3&lmcMMO &eRankings" command: mcmmogui cmdPerms: mcmmogui.use errorNoPerms: &cError: &7No required permissions. errorNoParty: "&cError: &7You are not in party." errorNoPartyMember: "&cError: &7Player you input isn't in your party or doesn't exist." inputNewLeader: "&7[Input new leader's name below]" inputNewName: "&7[Input new party's name below]" inputNewPassword: "&7[Input new party's password below]" skillInfo: "", "&7Level: &e%{_skill::1}%", "&7Progress: &e%{_skill::2}%/%{_skill::3}% (%(round ({_skill::2} / {_skill::3}) * 10000) / 100%%%)", "&7Rank: &e##%{_skill::4}% &7of &e##%{_skill::5}%" # Skill representation in GUI mining: iron pickaxe named "&f&lMINING" with lore "&8Gathering skill", "", "&7■ Mine stone and ores to gain experience.", "&7■ Unlock many brilliant mining skills." without itemflags woodcutting: iron axe named "&f&lWOODCUTTING" with lore "&8Gathering skill", "", "&7■ Chop trees and wood to make experience.", "&7■ Gain very useful abilities for tree-chopping!" without itemflags excavation: iron shovel named "&f&lEXCAVATION" with lore "&8Gathering skill", "", "&7■ Dig dirt, clay, sand and gravel." without itemflags herbalism: iron hoe named "&f&lHERBALISM" with lore "&8Gathering skill", "", "&7■ Farm crops to get experience." without itemflags fishing: fishing rod named "&f&lFISHING" with lore "&8Gathering skill", "", "&7■ Fish to loot and get more experienced.", "&7■ Unlock much better loot and be a master!" without itemflags repair: anvil named "&f&lREPAIR" with lore "&8Gathering skill", "", "&7■ Smelt items and repair tools", "&7in mcMMO anvil to gain XP.", "&7■ Repair your stuff in better", "&7way using less materials." without itemflags unarmed: rabbit foot named "&f&lUNARMED" with lore "&8Combat skill", "", "&7■ Gain experience by hitting", "&7entities with your hands.", "&7■ Use your fists to your own", "&7advantage over armored ones!" without itemflags swords: iron sword named "&f&lSWORDS" with lore "&8Combat skill", "", "&7■ Use swords to level up.", "&7■ Unlock sword fight bonuses!" without itemflags axes: diamond axe named "&f&lAXES" with lore "&8Combat skill", "", "&7■ Fight with axes to make experience.", "&7■ Your axe is now dangerous to people!" without itemflags archery: bow named "&f&lARCHERY" with lore "&8Combat skill", "", "&7■ Use bows and crossbows to kill entities.", "&7■ You may eventually make archery useful!" without itemflags acrobatics: leather boots named "&f&lACROBATICS" with lore "&8Combat skill", "", "&7■ Damage yourself from fall.", "&7■ You will not finally die", "&7due to an unfortunate fall." without itemflags alchemy: healing splash potion named "&f&lALCHEMY" with lore "&8Combat skill", "", "&7■ Produce potions to level up.", "&7■ Get into more advanced chemistry", "&7and produce better potions!" without itemflags taming: bone named "&f&lTAMING" with lore "&8Miscellaneous skill", "", "&7■ Tame some of animals to gain experience." without itemflags smelting: coal named "&f&lSMELTING" with lore "&8Miscellaneous skill", "", "&7■ Level up mining and repair to get experience.", "&7■ Smelt much more effectively and with less loss.", "", "&7Level: &e%{_level}%" without itemflags salvage: golden helmet named "&f&lSALVAGE" with lore "&8Miscellaneous skill", "", "&7■ Level up fishing and repair to gain experience.", "&7■ Reclaim base materials from tools and armor!", "", "&7Level: &e%{_level}%" without itemflags party: emerald named "&a&lPARTY" with lore "&8Party viewer", "", "&7■ View your party", "&7in a simple interface!" without itemflags rankings: golden chestplate named "&a&lRANKINGS" with lore "&8Ranking viewer", "", "&7■ View skill leaderboards and see who is the best!", "", "&7Power level: &e%{_powerLevel}%", "&7Rank: &e##%{_rank}% &7of &e##%{_maxRank}%" without itemflags close: barrier named "&cClose" without itemflags # Miscellaneous partyInfo: end crystal named "&a&lPARTY" with lore "&8Party viewer", "", "&7Name: &e%{_finalName}%", "&7Leader: &e%{_leader}%", "&7Level: &e%{_partyLevel}%", "&7Party status: &e%{_lock}%" without itemflags ally: shield named "&b&lALLY" with lore "&8Party viewer", "", {_allyString::*} members: leather chestplate named "&b&lMEMBERS" with lore "&8Party viewer", "", "&7Members: [%{_memberList}%&7]" without itemflags xpshare: experience bottle named "&b&lXP-SHARE" with lore "&8Party viewer", "", "&7■ Share skill experience with", "&7nearby party members!", "", "&7Mode set: &e%{_XPmode}%" without itemflags itemshare: enchanted golden apple named "&b&lITEM-SHARE" with lore "&8Party viewer", "", "&7■ Gift your nearby party members", "&7with items collected!", "", "&7Mode set: &e%{_itemMode}%", "&7Categories allowed: &e%{_categories}%" without itemflags name: paper named "&c&lNAME" with lore "&8Party manager", "", "&7■ Set a new party name.", "&4■ Requires enough permissions!" without itemflags leader: diamond helmet named "&c&lLEADER" with lore "&8Party manager", "", "&7■ Set a new party leader.", "&4■ Requires enough permissions!" without itemflags password: dried kelp named "&c&lPASSWORD" with lore "&8Party manager", "", "&7■ Set a new party password.", "&4■ Requires enough permissions!" without itemflags locked: conduit named "&c&lLOCKED" with lore "&8Party manager", "", "&7Status: %{_lock}%", "&7■ Toggle party status.", "&4■ Requires enough permissions!" without itemflags local expression %item% without itemflags: return type: item get: set {_meta} to expr-1.getItemMeta() {_meta}.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_POTION_EFFECTS) expr-1.setItemMeta({_meta}) return expr-1 function getSkillInfo(player: player, skill: object, skillText: text) :: objects: set {_skill::1} to ExperienceAPI.getLevel({_player}, {_skillText}) set {_skill::2} to ExperienceAPI.getXP({_player}, {_skillText}) set {_skill::3} to ExperienceAPI.getXpNeededToLevel({_skill::1}) set {_skill::4} to ExperienceAPI.getPlayerRankSkill({_player}.getUniqueId(), {_skillText}) set {_skill::5} to mcMMO.getDatabaseManager().readLeaderboard({_skill}, 1, 1000000).size() return {_skill::*} function setSkillGUI(gui: inventory, slot: integer, item: item, skillinfo: objects): set {_gui}'s slot {_slot} to {_item} set {_skill::*} to {_skillinfo::*} add {@skillInfo} to lore of {_gui}'s slot {_slot} function setSkillRankingGUI(gui: inventory, slot: integer, item: item, skill: object): set {_gui}'s slot {_slot} to {_item} delete lore of {_gui}'s slot {_slot} set {_leaderboard} to mcMMO.getDatabaseManager().readLeaderboard({_skill}, 1, 10) loop ...{_leaderboard}: add "&6##%{_leaderboard}.indexOf(loop-value) + 1%: &e%loop-value.name% &7(%loop-value.statVal%)" to {_loreRanking::*} add "&8Ranking viewer", "", {_loreRanking::*} to lore of {_gui}'s slot {_slot} function openSkillGUI(player: player, mode: text): if {_mode} is "skill": set {_gui} to chest inventory with 6 rows named {@skillGUIname} loop 54 times: set {_gui}'s slot loop-value - 1 to {@background} setSkillGUI({_gui}, 10, {@mining}, getSkillInfo({_player}, PrimarySkillType.MINING, "mining")) setSkillGUI({_gui}, 11, {@woodcutting}, getSkillInfo({_player}, PrimarySkillType.WOODCUTTING, "woodcutting")) setSkillGUI({_gui}, 12, {@excavation}, getSkillInfo({_player}, PrimarySkillType.EXCAVATION, "excavation")) setSkillGUI({_gui}, 19, {@herbalism}, getSkillInfo({_player}, PrimarySkillType.HERBALISM, "herbalism")) setSkillGUI({_gui}, 20, {@fishing}, getSkillInfo({_player}, PrimarySkillType.FISHING, "fishing")) setSkillGUI({_gui}, 21, {@repair}, getSkillInfo({_player}, PrimarySkillType.REPAIR, "repair")) setSkillGUI({_gui}, 14, {@unarmed}, getSkillInfo({_player}, PrimarySkillType.UNARMED, "unarmed")) setSkillGUI({_gui}, 15, {@swords}, getSkillInfo({_player}, PrimarySkillType.SWORDS, "swords")) setSkillGUI({_gui}, 16, {@axes}, getSkillInfo({_player}, PrimarySkillType.AXES, "axes")) setSkillGUI({_gui}, 23, {@archery}, getSkillInfo({_player}, PrimarySkillType.ARCHERY, "archery")) setSkillGUI({_gui}, 24, {@acrobatics}, getSkillInfo({_player}, PrimarySkillType.ACROBATICS, "acrobatics")) setSkillGUI({_gui}, 25, {@alchemy}, getSkillInfo({_player}, PrimarySkillType.ALCHEMY, "alchemy")) setSkillGUI({_gui}, 41, {@taming}, getSkillInfo({_player}, PrimarySkillType.TAMING, "taming")) set {_level} to ExperienceAPI.getLevel({_player}, "smelting") set {_gui}'s slot 42 to {@smelting} set {_level} to ExperienceAPI.getLevel({_player}, "salvage") set {_gui}'s slot 43 to {@salvage} set {_gui}'s slot 37 to {@close} set {_rank} to ExperienceAPI.getPlayerRankOverall({_player}'s name) set {_maxrank} to mcMMO.getDatabaseManager().readLeaderboard(null, 1, 1000000).size() set {_powerLevel} to ExperienceAPI.getPowerLevel({_player}) set {_gui}'s slot 38 to {@rankings} set {_gui}'s slot 39 to {@party} open {_gui} to {_player} if {_mode} is "ranking": set {_gui} to chest inventory with 6 rows named {@rankingGUIname} loop 54 times: set {_gui}'s slot loop-value - 1 to {@background} setSkillRankingGUI({_gui}, 10, {@mining}, PrimarySkillType.MINING) setSkillRankingGUI({_gui}, 11, {@woodcutting}, PrimarySkillType.WOODCUTTING) setSkillRankingGUI({_gui}, 12, {@excavation}, PrimarySkillType.EXCAVATION) setSkillRankingGUI({_gui}, 19, {@herbalism}, PrimarySkillType.HERBALISM) setSkillRankingGUI({_gui}, 20, {@fishing}, PrimarySkillType.FISHING) setSkillRankingGUI({_gui}, 21, {@repair}, PrimarySkillType.REPAIR) setSkillRankingGUI({_gui}, 14, {@unarmed}, PrimarySkillType.UNARMED) setSkillRankingGUI({_gui}, 15, {@swords}, PrimarySkillType.SWORDS) setSkillRankingGUI({_gui}, 16, {@axes}, PrimarySkillType.AXES) setSkillRankingGUI({_gui}, 23, {@archery}, PrimarySkillType.ARCHERY) setSkillRankingGUI({_gui}, 24, {@acrobatics}, PrimarySkillType.ACROBATICS) setSkillRankingGUI({_gui}, 25, {@alchemy}, PrimarySkillType.ALCHEMY) setSkillRankingGUI({_gui}, 42, {@taming}, PrimarySkillType.TAMING) set {_gui}'s slot 38 to {@close} setSkillRankingGUI({_gui}, 37, {@rankings}, null) open {_gui} to {_player} function openPartyGUI(player: player): set {_gui} to chest inventory with 6 rows named {@partyGUIname} loop 54 times: set {_gui}'s slot loop-value - 1 to {@background} set {_name} and {_finalName} to PartyAPI.getPartyName({_player}) set {_finalName} to "%{_finalName}.substring(1, 32)%..." if {_finalName}'s length > 32 set {_leader} to PartyAPI.getPartyLeader({_name}) set {_partyObj} to PartyManager.getParty({_name}) set {_lock} to "&c&lPRIVATE" set {_lock} to "&a&lPUBLIC" if {_partyObj}.isLocked() is false set {_partyLevel} to {_partyObj}.getLevel() set {_allyString::*} to "&7You don't have any allies!", "&7Send ally request to party leader", "&7via &b/party alliance invite (player)" set {_allyString::*} to "&7You have an ally!", "&7Their party name: &e%PartyAPI.getAllyName({_name})%" if PartyAPI.hasAlly({_name}) is true set {_memberList} to {_partyObj}.createMembersList({_player}) set {_XPmode} to {_partyObj}.getXpShareMode() set {_itemMode} to {_partyObj}.getItemShareMode() set {_categories} to {_partyObj}.getItemShareCategories() set {_gui}'s slot 13 to {@partyInfo} set {_gui}'s slot 19 to {@ally} set {_gui}'s slot 20 to {@members} set {_gui}'s slot 24 to {@xpshare} set {_gui}'s slot 25 to {@itemshare} set {_gui}'s slot 38 to {@name} set {_gui}'s slot 39 to {@leader} set {_gui}'s slot 40 to {@close} set {_gui}'s slot 41 to {@password} set {_gui}'s slot 42 to {@locked} open {_gui} to {_player} command {@command}: permission: {@cmdPerms} permission message: {@errorNoPerms} trigger: openSkillGUI(player, "skill") on inventory click: if event-inventory's name = {@skillGUIname}, {@rankingGUIname} or {@partyGUIname}: cancel event if event-inventory's name = {@skillGUIname}: if clicked slot = 37: close player's inventory if clicked slot = 38: openSkillGUI(player, "ranking") if clicked slot = 39: if PartyAPI.inParty(player) is true: openPartyGUI(player) else: close player's inventory send {@errorNoParty} if event-inventory's name = {@partyGUIname}: if clicked slot = 40: openSkillGUI(player, "skill") if clicked slot = 38: if player has permission "mcmmo.commands.party.rename": close player's inventory set {mcmmogui::%player%::partymanage::rename} to true send {@inputNewName} if clicked slot = 39: if player has permission "mcmmo.commands.party.owner": close player's inventory set {mcmmogui::%player%::partymanage::owner} to true send {@inputNewLeader} if clicked slot = 41: if player has permission "mcmmo.commands.party.password": close player's inventory set {mcmmogui::%player%::partymanage::password} to true send {@inputNewPassword} if clicked slot = 42: if player has permission "mcmmo.commands.party.lock": set {_partyObj} to PartyManager.getParty(PartyAPI.getPartyName(player)) if {_partyObj}.isLocked() is true: {_partyObj}.setLocked(false) else: {_partyObj}.setLocked(true) set {_lock} to "&c&lPRIVATE" set {_lock} to "&a&lPUBLIC" if {_partyObj}.isLocked() is false openPartyGUI(player) if event-inventory's name = {@rankingGUIname}: if clicked slot = 38: openSkillGUI(player, "skill") on chat: if {mcmmogui::%player%::partymanage::rename} is true: cancel event set {_partyObj} to PartyManager.getParty(PartyAPI.getPartyName(player)) {_partyObj}.setName(message) delete {mcmmogui::%player%::*} openPartyGUI(player) if {mcmmogui::%player%::partymanage::owner} is true: cancel event set {_partyObj} to PartyManager.getParty(PartyAPI.getPartyName(player)) if {_partyObj}.hasMember(message) is false: send {@errorNoPartyMember} stop PartyAPI.setPartyLeader(PartyAPI.getPartyName(player), message) delete {mcmmogui::%player%::*} openPartyGUI(player) if {mcmmogui::%player%::partymanage::password} is true: cancel event set {_partyObj} to PartyManager.getParty(PartyAPI.getPartyName(player)) {_partyObj}.setPassword(message) delete {mcmmogui::%player%::*} openPartyGUI(player) on quit: delete {mcmmogui::%player%::*}