Interface directory: Difference between revisions
imported>Age Of Embers Editorial Team Initial verified wiki package import |
imported>Age Of Embers Editorial Team Initial verified wiki package import |
||
| Line 2,407: | Line 2,407: | ||
[[Category:Interfaces]][[Category:Directories]][[Category:Source-verified pages]] | [[Category:Interfaces]][[Category:Directories]][[Category:Source-verified pages]] | ||
{{Play CTA}} | |||
Revision as of 20:53, 23 July 2026
| Type | Complete UI source index |
|---|---|
| Status | Active modules only |
| Verified | Core, restricted and enabled plugin interfaces |
The interface directory documents every active interface class or interface script detected in the supplied base. It includes player-facing panels, inventories, reward screens, shops, exchanges, raids, minigames, account management and internal overlays.
| Interface | Module type | Declared actions | Source |
|---|---|---|---|
| Donation Store | Restricted game content | , (player, slotId, itemId, option) -> {
player.lock(1); if (option != 1) return; transmitPlayerIndividualOffers(player); }); bind(, , (player, slotId, itemId, option) -> { player.lock(1); IntEnum required = EnumDefinitions.getIntEnum(NearRealityStoreInterfacePacker.LOYALTY_DONATED_ENUM); IntEnum rewards = EnumDefinitions.getIntEnum(NearRealityStoreInterfacePacker.LOYALTY_REWARDS_ENUM); int rewardId = rewards.getValueOrDefault(slotId); if (rewardId == -1) return; if (option == 10) { ItemUtil.sendItemExamine(player, rewardId); return; } int dollarsRequired = required.getValueOrDefault(slotId); int donatedAfterLaunch = PlayerAttributesKt.getTotalDonatedAfterLaunch(player); if (donatedAfterLaunch < dollarsRequired) { player.sendMessage(, , (player, slotId, itemId, option) -> { PlayerAttributesKt.setStoreCategory(player, slotId); transmitCategory(player); }); bind(, , player -> setTab(player, 0));
bind(, , player -> setTab(player, 2));
bind(, list, loyalty_content_transmit, loyalty_footer_transmit, loyalty_side_transmit, popup_transmit, stock_transmit, tab_1 || | |
| Colosseum Reward Chest | Restricted game content | , (player, slotId, itemId, option) -> {
if (option == 10) { ItemUtil.sendItemExamine(player, itemId); return; } Container container = getContainer(player); if (container == null) { return; } Item item = container.get(slotId); if (item == null) return; container.set(slotId, item.toNote()); container.withdraw(player, player.getInventory().getContainer(), slotId, item.getAmount()); if (container.get(slotId) != null) { container.set(slotId, new Item(item.getDefinitions().getUnnotedOrDefault(), item.getAmount())); } container.refresh(player); player.getInventory().getContainer().refresh(player); setValue(player, container); }); } private Container getContainer(Player player) { if (!(player.getArea() instanceof ColosseumInstance instance)) { return null; } Container container = instance.getRewards(); if (container.isEmpty()) { player.sendMessage(, , player -> { Container container = getContainer(player); if (container == null) return; for (int slot = 0; slot < container.getContainerSize() + 1; slot++) { Item item = container.get(slot); if (item == null) continue; player.getBank().getContainer().deposit(player, container, slot, item.getAmount()); } container.refresh(player); player.getBank().getContainer().refresh(player); setValue(player, container); }); bind(, , player -> player.getDialogueManager().start(new Dialogue(player) {
@Override
public void buildDialogue() {
options(, bank-all, discard-all, take, take-all || | |
| Colosseum Scoreboard | Restricted game content | Display, navigation or source-controlled interaction | core-restricted/src/main/java/com/zenyte/game/content/colosseum/ColosseumScoreboardInterface.java
|
| Dizana Quiver | Restricted game content | ammo, charges, open | core-restricted/src/main/java/com/zenyte/game/content/colosseum/items/DizanaQuiverInterface.java
|
| Toaparty | Restricted game content | , (player, slotId, itemId, option) -> {
int currentValue = player.getVarManager().getBitValue(FRIENDS_ONLY_VARBIT);
player.getVarManager().sendBitInstant(FRIENDS_ONLY_VARBIT, currentValue == 0 ? 1 : 0);
updateMembersTab(player);
});
bind(, , (player, slotId, itemId, option) -> {
updateMembersTab(player);
});
bind(, Select, Select party || | |
| Toaparty Management | Restricted game content | + slot, (player, slotId, itemId, option) -> {
boolean accept = slotId < 44;
final TOALobbyParty viewingParty = checkViewingParty(player);
if (viewingParty == null) {
return;
}
final Player p = viewingParty.getApplicant(slotId - (accept ? 36 : 44));
if (accept && viewingParty.getPlayers().size() >= TOAManager.MAX_PARTY_MEMBERS) {
player.sendMessage(, + slot, (player, slotId, itemId, option) -> {
final TOALobbyParty viewingParty = checkViewingParty(player);
if (viewingParty != null && viewingParty.isLeader(player)) {
player.getTOAManager().toggleInvocation(InvocationType.VALUES[slotId - 52], player);
updatePartyManagementInterface(player);
}
});
}
bind(, + slot, (player, slotId, itemId, option) -> {
player.getTOAManager().setCurrentInterfaceTab(slotId - 8);
updatePartyManagementInterface(player);
});
}
for (int slot = 12; slot < 20; slot++) {
bind(, , (player, slotId, itemId, option) -> {
final TOALobbyParty viewingParty = checkViewingParty(player);
if (viewingParty != null && viewingParty.isLeader(player)) {
final int currentPresetSlot = player.getVarManager().getBitValue(PRESET_SELECT_VARBIT) - 1;
if (currentPresetSlot == -1) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
final TOALobbyParty viewingParty = checkViewingParty(player);
if (viewingParty != null && viewingParty.isLeader(player)) {
final int currentPresetSlot = player.getVarManager().getBitValue(PRESET_SELECT_VARBIT) - 1;
player.getVarManager().sendBitInstant(PRESET_SELECT_VARBIT, 0);
if (currentPresetSlot == -1) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
final TOALobbyParty viewingParty = checkViewingParty(player);
if (viewingParty != null && viewingParty.isLeader(player)) {
final PlainChat message = new PlainChat(player, , , (player, slotId, itemId, option) -> {
final TOALobbyParty viewingParty = checkViewingParty(player);
if (viewingParty != null && viewingParty.isLeader(player)) {
player.sendInputInt(, , (player, slotId, itemId, option) -> {
final TOALobbyParty viewingParty = checkViewingParty(player);
if (viewingParty == null || !viewingParty.isLeader(player)) {
return;
}
final OptionDialogue dialogue = new OptionDialogue(player, , , (player, slotId, itemId, option) -> {
final TOALobbyParty viewingParty = checkViewingParty(player);
if (viewingParty == null) {
return;
}
switch(player.getTOAManager().getViewingValue()) {
case NON_MEMBER_VIEW_VALUE -> {
TOALobbyParty currentLobbyParty = TOALobbyParty.getCurrentParty(player);
if (currentLobbyParty != null && currentLobbyParty.insideRaid()) {
player.getDialogueManager().start(new PlainChat(player, , , (player, slotId, itemId, option) -> {
GameInterface.TOA_PARTY_OVERVIEW.open(player);
});
bind(, , (player, slotId, itemId, option) -> {
if (slotId < 0 || slotId > 4) {
return;
}
final TOALobbyParty viewingParty = checkViewingParty(player);
if (viewingParty != null && viewingParty.isLeader(player)) {
if (option == 1) {
final int currentPresetSlot = player.getVarManager().getBitValue(PRESET_SELECT_VARBIT);
player.getVarManager().sendBitInstant(PRESET_SELECT_VARBIT, currentPresetSlot == slotId + 1 ? 0 : slotId + 1);
updatePartyManagementInterface(player);
} else {
final OptionDialogue dialogue = new OptionDialogue(player, , Open || | |
| Toareward | Restricted game content | , (player, slotId, itemId, option) -> {
final Container container = player.getTOAManager().getRewardContainer();
if (container == null || container.isEmpty() || slotId >= container.getSize()) {
player.getInterfaceHandler().closeInterfaces();
} else {
final Item containerItem = container.get(slotId);
int amountToTake = 1;
if (option == 2) {
amountToTake = 5;
} else if (option == 3) {
amountToTake = 10;
} else if (option == 4) {
amountToTake = containerItem.getAmount();
}
final int availableAmount = containerItem.getAmount();
amountToTake = Math.min(amountToTake, availableAmount);
player.getInventory().addItem(new Item(containerItem.getId(), amountToTake));
final int newAmount = Math.max(0, availableAmount - amountToTake);
if (newAmount > 0) {
containerItem.setAmount(newAmount);
} else {
container.set(slotId, null);
container.shift();
}
player.getPacketDispatcher().sendUpdateItemContainer(container);
checkSize(player, container);
}
});
}
private void checkSize(Player player, Container container) {
if (container.getSize() < 1) {
player.getVarManager().sendBit(14319, 0);
}
}
@Override
public void open(Player player) {
var rewardContainer = player.getTOAManager().getRewardContainer();
if (rewardContainer != null && !rewardContainer.isEmpty()) {
rewardContainer.setContainerSize(6);
player.getPacketDispatcher().sendUpdateItemContainer(rewardContainer);
rewardContainer.getItemsAsList().forEach(item -> rewardAnnounceRare(player, item.getId()));
}
super.open(player);
player.getPacketDispatcher().sendClientScript(149, 50528266, 811, 2, 3, 0, -1, , , (player, slotId, itemId, option) -> {
final Container container = player.getTOAManager().getRewardContainer();
if (container == null || container.isEmpty()) {
player.sendMessage(, Bank-all, Discard-all, Inventory-all, Take-All, Take-x ||
| |
| Toascore Board | Restricted game content | Display, navigation or source-controlled interaction | core-restricted/src/main/java/com/zenyte/game/content/tombsofamascut/raid/TOAScoreBoardInterface.java
|
| Toasupply Bag | Restricted game content | Container | core-restricted/src/main/java/com/zenyte/game/content/tombsofamascut/raid/TOASupplyBagInterface.java
|
| Toasupply Select | Restricted game content | , player -> addContainer(player, 0));
bind(, , player -> addContainer(player, 2)); } private void addContainer(Player player, int index) {
if (player.getArea() instanceof final MainHallEncounter mainHallEncounter && mainHallEncounter.getSupplyContainers() != null) {
final List<Item> toAdd = mainHallEncounter.getSupplyContainers()[index].getItemsAsList();
if (!player.getInventory().containsItem(ItemId.SUPPLIES)) {
if (!player.getInventory().hasSpaceFor(ItemId.SUPPLIES)) {
player.getDialogueManager().start(new PlainChat(player, , Chaos, Chaos container, Life, Life container, Power, Power container || | |
| Bounty Hunter | Restricted game content | Display, navigation or source-controlled interaction | core-restricted/src/main/kotlin/com/near_reality/game/content/bountyhunter/bounty_hunter.interface.kts
|
| Pvm Arena Hud | Restricted game content | Display, navigation or source-controlled interaction | core-restricted/src/main/kotlin/com/near_reality/game/content/pvm_arena/widget/PvmArenaHudInterface.kt
|
| Rewards | Restricted game content | Bank-all, Take-All | core-restricted/src/main/kotlin/com/near_reality/game/content/toa/rewards.interface.kts
|
| Tournament Presets | Restricted game content | ) { player: Player ->
if (cannotEnableTempContainer(player))
return@bind
val index = player.varManager.getValue(261) - 1
val preset = TournamentPreset.entries[index]
preset.apply(player)
}
bind(, ) { player: Player -> player.varManager.sendVar(261, 0) }
bind(, ) { player: Player?, _: Int, _: Int, _: Int ->
ItemUtil.sendItemExamine(player, id)
}
bind(, Apply, Equipment Setup, Inventory Setup, Presets, Search, Select, Take Item, View ||
| |
| Spectating Inventory | Restricted game content | Center, Center-Model, North-East, North-East-Model, North-West, North-West-Model, South-East, South-East-Model, South-West, South-West-Model, Stop Viewing | core-restricted/src/main/kotlin/com/near_reality/game/content/tournament/spectating/SpectatingInventoryInterface.kt
|
| Tournament Spectating | Restricted game content | Display, navigation or source-controlled interaction | core-restricted/src/main/kotlin/com/near_reality/game/content/tournament/spectating/TournamentSpectatingInterface.kt
|
| Tournament Viewer | Restricted game content | ) { player: Player -> this.refresh(player) }
bind(, Players, Refresh, Round, View, View Fight ||
| |
| Tournament Reward | Restricted game content | ) { player: Player, slotId: Int, itemId: Int, option: Int ->
if (!GameToggles.TOURNAMENTS_ENABLED) {
player.sendMessage(, Buy, Buy reward ||
| |
| Diary | Core game content | close | core/src/main/java/com/zenyte/game/content/achievementdiary/DiaryInterface.java
|
| Advent Calendar | Core game content | + day, player -> openDay(player, finalDay));
} } private static void openDay(Player player, int day) {
if (!AdventCalendarManager.adventEnabled()) {
player.sendMessage(, Day || | |
| Boon Purchase | Core game content | , (player, slotId, itemId, option) -> player.getBoonManager().purchaseBoon(BoonWrapper.get(itemId).getPerk(), itemId));
bind(, Buy, Entry, Open, Open Exchange ||
| |
| Quest Journal Interface Manager | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/casket/QuestJournalInterfaceManager.java
|
| Raiding Parties | Core game content | , (player, slotId, itemId, option) -> {
final RaidParty party = advertisedParties.get(slotId);
if (party == null) {
return;
}
player.getTemporaryAttributes().put(, , RaidingPartiesInterface::refresh);
bind(, View, View party ||
| |
| Raiding Party | Core game content | , player -> {
final ClanChannel channel = player.getSettings().getChannel();
if (channel == null) {
player.getDialogueManager().start(new PlainChat(player, , , player -> {
if (verifyConditions(player)) return;
player.sendInputInt(, , RaidingPartiesInterface::refresh);
bind(, , this::requestScaling);
bind(, Toggle, view ||
| |
| Raid Party | Core game content | , player -> refresh(player, player.getRaid().orElseThrow(RuntimeException::new)));
bind(, Refresh, Start raid ||
| |
| Raid Rewards | Core game content | , (player, slotId, itemId, option) -> player.getRaid().ifPresent(raid -> {
final RaidRewards rewards = raid.getRewards();
if (rewards == null) {
return;
}
final Container container = rewards.getRewardMap().get(player);
if (container == null) {
return;
}
if (option == 10) {
ItemUtil.sendItemExamine(player, itemId);
return;
}
if (slotId == 4) {
if (!rewards.getPlayers().contains(player)) {
return;
}
if (player.getInventory().hasFreeSlots()) {
rewards.getPlayers().remove(player);
player.getVarManager().sendBit(5457, 0);
player.getInventory().addItem(new Item(20899));
} else {
player.sendMessage(, Take item ||
| |
| Private Storage | Core game content | , player -> {
if (player.getGameMode().equals(GameMode.ULTIMATE_IRON_MAN) && player.getRaid().isPresent()) {
player.sendMessage(, , player -> player.getRaid().ifPresent(raid -> GameInterface.RAIDS_SHARED_STORAGE.open(player)));
bind(, Deposit, Deposit/Bank all, Interact with item, Shared storage button, Size, Withdraw, Withdraw all ||
| |
| Shared Storage | Core game content | , player -> {
final Raid raid = player.getRaid().orElseThrow(RuntimeException::new);
final SharedStorage storage = raid.constructOrGetSharedStorage();
final int size = storage.getContainer().getContainerSize();
player.getPrivateStorage().open(size == 250 ? 30 : size == 500 ? 60 : 90);
});
bind(, Container size, Interact with item, Switch to private storage ||
| |
| Storage | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/chambersofxeric/storageunit/StorageInterface.java
|
| Storage Inventory | Core game content | , (player, slotId, itemId, option) -> {
final Inventory inventory = player.getInventory();
final Item item = inventory.getItem(slotId);
if (item == null || item.getId() != itemId) {
return;
}
if (option == 10) {
if (player.getInterfaceHandler().isPresent(GameInterface.RAIDS_SHARED_STORAGE)) {
if (!Enums.RAIDS_ONLY_ITEMS.getKey(item.getId()).isPresent()) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
player.addAttribute(, Dismiss storage warning, Interact with item ||
| |
| Combat Buddy Interface Manager | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/combatbuddies/CombatBuddyInterfaceManager.java
|
| Comp Progress | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/compcapes/CompProgressInterface.java
|
| Comp Selection | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/compcapes/CompSelectionInterface.java
|
| Daily Task Interface Manager | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/dailychallenge/DailyTaskInterfaceManager.java
|
| Quest Completed | Core game content | Award line 1, Award line 2, Award line 3, Award line 4, Award line 5, Award line 6, Award line 7, Quest completed item, Quest completed title, Quest points | core/src/main/java/com/zenyte/game/content/event/christmas2019/QuestCompletedInterface.java
|
| Noticeboard | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/event/easter2020/NoticeboardInterface.java
|
| Item Sets | Core game content | , (player, slotId, itemId, option) -> {
if (player.getGameMode().equals(GameMode.ULTIMATE_IRON_MAN)) {
player.sendMessage(, Interact ||
| |
| Item Sets Inventory | Core game content | Interact | core/src/main/java/com/zenyte/game/content/grandexchange/ItemSetsInventoryInterface.java
|
| Hiscores | Core game content | , (player, slotId, itemId, option) -> {
int page = player.getNumericTemporaryAttributeOrDefault(SELECTED_PAGE_ATTRIBUTE, 0).intValue(); switch (slotId) { case 0: player.getTemporaryAttributes().put(SELECTED_PAGE_ATTRIBUTE, Math.max(0, page - 1)); refreshLastViewed(player); break; case 1: player.getTemporaryAttributes().put(SELECTED_PAGE_ATTRIBUTE, page + 1); refreshLastViewed(player); break; case 2: refreshLastViewed(player); break; } refreshDialog(player); }); bind(, , (player, slotId, itemId, option) -> selectRate(player, slotId)); bind(, , (player, slotId, itemId, option) -> toggleMode(player, GameMode.GROUP_IRON_MAN.ordinal())); } private static void refreshDialog(Player player) { player.awaitInputString(selectDialog); Analytics.flagInteraction(player, Analytics.InteractionType.HISCORES); } @Override public void open(Player player) { player.getVarManager().sendVar(261, 0); player.getVarManager().sendVar(262, player.getNumericTemporaryAttributeOrDefault(SELECTED_MODE_ATTRIBUTE, 0).intValue()); player.getVarManager().sendVar(263, player.getNumericTemporaryAttributeOrDefault(SELECTED_RATE_ATTRIBUTE, 0).intValue()); super.open(player); player.getPacketDispatcher().sendComponentSettings(getId(), getComponent(, , (player, slotId, itemId, option) -> toggleMode(player, GameMode.HARDCORE_IRON_MAN.ordinal()));
bind(, Dropdown, Entries, Group Ironman, Hardcore Ironman, Ironman, List, Ultimate Ironman || | |
| Master Scroll Book | Core game content | , (player, slotId, itemId, option) -> handle(player, ScrollBookTeleport.ELF_CAMP, option));
bind(, , (player, slotId, itemId, option) -> handle(player, ScrollBookTeleport.FELDIP_HILLS, option));
bind(, , (player, slotId, itemId, option) -> handle(player, ScrollBookTeleport.KEY_MASTER, option));
bind(, , (player, slotId, itemId, option) -> handle(player, ScrollBookTeleport.LUMBERYARD, option));
bind(, , (player, slotId, itemId, option) -> handle(player, ScrollBookTeleport.MORTTON, option));
bind(, , (player, slotId, itemId, option) -> handle(player, ScrollBookTeleport.NARDAH, option));
bind(, , (player, slotId, itemId, option) -> handle(player, ScrollBookTeleport.PISCATORIS, option));
bind(, , (player, slotId, itemId, option) -> handle(player, ScrollBookTeleport.WATSON, option));
}
private final void handle(@NotNull final Player player, @NotNull final ScrollBookTeleport teleport, final int option) {
final Object scrollBook = player.getTemporaryAttributes().get(, Digsite, Elf Camp, Feldip Hills, Key Master ||
| |
| Wilderness Loot Key | Core game content | , (player, slotId, itemId, option) -> {
if (option == 1 || option == 2 || option == 5 || option == 3 || option == 4 )
withdrawToInventory(player, itemId, option);
// 6 = bank x | 7 = bank all
if (option == 6 || option == 7)
withdrawToBank(player, itemId, option);
// 8 = destroy x | 9 = destroy y
if (option == 8 || option == 9)
destroyOption(player, itemId, option);
// 10 = examine
if (option == 10) {
ItemUtil.sendItemExamine(player, itemId);
}
});
} @Override
public void open(Player player) {
player.getInterfaceHandler().sendInterface(this);
var container = player.getLootkeySettings().getCurrentItemsInChest(player);
player.getPacketDispatcher().sendUpdateItemContainer(container, ContainerType.WILDERNESS_LOOT_KEY);
if (player.isIronman()) {
player.getPacketDispatcher().sendComponentVisibility(getInterface(), 22, true);
player.getPacketDispatcher().sendComponentVisibility(getInterface(), 23, false);
player.getPacketDispatcher().sendComponentSettings(getInterface(), 3, 0, 27, AccessMask.CLICK_OP10);
player.getPacketDispatcher().sendClientScript(150, 48627715, 797, 7, 4, 0, -1, , , player -> {
if (player.isIronman()) return;
// TODO: withdraw all to inventory
var container = player.getLootkeySettings().getCurrentItemsInChest(player);
for (int i = 0; i <= container.getContainerSize(); i++) {
var item = container.get(i);
if (item == null) continue;
withdrawItemsToInventory(player, item.getId(), item.getAmount());
}
});
bind(, , player -> player.getDialogueManager().start(new Dialogue(player) {
@Override
public void buildDialogue() {
options(, , player -> player.getLootkeySettings().setWithdrawAsNote(false));
bind(, Bank-All, Destroy, Item, Note, Take, Take-All, Withdraw, Withdraw all to bank ||
| |
| Magic Storage | Core game content | , (player, slotId, itemId, option) -> {
final int page = player.getNumericTemporaryAttribute(pageKey).intValue();
final Object typeObject = player.getTemporaryAttributes().get(typeKey);
if (!(typeObject instanceof StorageUnitType)) {
throw new IllegalStateException();
}
final StorageUnitType type = (StorageUnitType) typeObject;
final Container container = StorageUnitCollection.getSingleton().getContainer(type, page);
final int itemSlot = slotId >> 2;
final Item item = container.get(itemSlot);
if (option == 10) {
ItemUtil.sendItemExamine(player, item.getId());
} else if (option == 1) {
if (item.getId() == ItemId.MORE) {
openPage(player, page + 1, true);
} else if (item.getId() == ItemId.BACK) {
openPage(player, page - 1, true);
} else {
final MagicStorageUnit storage = player.getMagicStorageUnit();
final List<Integer> set = storage.getStoredItemIds(item.getId());
if (set == null) {
throw new IllegalStateException();
}
final Inventory inventory = player.getInventory();
/*final StringEnum storageEnum = Enums.COSTUME_STORAGE_UNIT_ENUM;
final String name = storageEnum.getValue(item.getId()).orElseThrow(RuntimeException::new);
if (inventory.getFreeSlots() < set.size()) {
player.sendMessage(, Interact with element ||
| |
| Barrows Overlay | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/minigame/barrows/BarrowsOverlayInterface.java
|
| Barrows Puzzle | Core game content | , player -> player.getBarrows().getPuzzle().select(0));
bind(, Answer option 0, Answer option 1, Answer option 2, Option 0, Option 1, Option 2, Select, Select option 0, Select option 1, Select option 2 ||
| |
| Barrows Rewards | Core game content | Examine | core/src/main/java/com/zenyte/game/content/minigame/barrows/BarrowsRewardsInterface.java
|
| Catapult | Core game content | , player -> {
player.getInterfaceHandler().closeInterface(getInterface());
final Location destination = getDestination(player);
final CastleWarsTeam team = CastleWars.getTeam(player);
WorldTasksManager.schedule(() -> {
CharacterLoop.forEach(destination, 2, Player.class, p -> {
if (CastleWars.getTeam(player) != CastleWars.getTeam(p)) {
p.applyHit(new Hit(Utils.random(8, 20), HitType.REGULAR));
}
});
}, World.sendProjectile(team == CastleWarsTeam.SARADOMIN ? SARADOMIN_CATAPULT_START : ZAMORAK_CATAPULT_START, destination, projectile));
});
}
@Override
public GameInterface getInterface() {
return GameInterface.CASTLE_WARS_CATAPULT;
}
/**
* Gets the model id representing the digit shown on the catapult interface.
*
* @param digit the digit for which the model to obtain.
* @return the model if of the digit.
*/
private static final int getModel(final int digit) {
if (digit < 0 || digit > 9) {
throw new IllegalArgumentException(, , player -> setHorizontalClicks(player, getHorizontalClicks(player) + 1));
bind(, , player -> setVerticalClicks(player, getVerticalClicks(player) + 1));
bind(, Cross, Decrease horizontal, Decrease vertical, Fire, First horizontal digit, First vertical digit, Increase horizontal, Increase vertical, Second horizontal digit ||
| |
| Duel Arena Scoreboard | Core game content | Duels Lost, Duels Won, Scoreboard | core/src/main/java/com/zenyte/game/content/minigame/duelarena/interfaces/DuelArenaScoreboardInterface.java
|
| Duel Settings | Core game content | , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.NO_FOOD); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.NO_MAGIC); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.BACK); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.HAND); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.NO_RANGED); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.OBSTACLES); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.RING); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.NO_PRAYER); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.LEFT_HAND); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.NO_FUN_WEAPONS); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.RIGHT_HAND); });
bind(, , p -> { final Duel d = p.getDuel(); if (d != null) d.toggleRule(DuelSetting.SHOW_INVENTORIES); });
// Slot disables
bind( ||
| |
| Duel Staking | Core game content | , (player, slotId, itemId, option) -> {
// final Duel duel = Objects.requireNonNull(player.getDuel());
// if (player.isIronman()) {
// player.sendMessage(, , player -> {
// final Duel duel = player.getDuel();
// final Object attr = player.getAttributes().get(, , player -> Objects.requireNonNull(player.getDuel()).confirm(DuelStage.STAKE));
// bind(, Close, Confirm, GP quantity, Load Previous Stake, Platinum quantity, Target name || | |
| Pest Control Game | Core game content | Damage dealt, Eastern health, Eastern shield, South-Eastern health, South-Eastern shield, South-Western health, South-Western shield, Time remaining, Void knight health, Western health, Western shield | core/src/main/java/com/zenyte/game/content/minigame/pestcontrol/PestControlGameInterface.java
|
| Pest Control Lander | Core game content | Lander flag, Lander type, Next departure, Pest points, Players ready | core/src/main/java/com/zenyte/game/content/minigame/pestcontrol/PestControlLanderInterface.java
|
| Void Knight Rewards | Core game content | , (player, slotId, itemId, option) -> {
final VoidKnightRewardsInterface.VoidKnightReward reward = Objects.requireNonNull(VoidKnightReward.map.get(slotId));
final boolean hasVoidRequirements = Enums.PEST_CONTROL_REWARDS_VOID_ELEMENTS_ENUM.getValue(slotId).isPresent();
if (hasVoidRequirements && !VoidKnightReward.isEligibleForVoid(player)) {
player.sendMessage(, Confirm, Confirm reward ||
| |
| Impling Tracker | Core game content | Eighth, Fifth, First, Fourth, Puro-Puro, Second, Seventh, Sixth, Surface World, Third | core/src/main/java/com/zenyte/game/content/minigame/puropuro/ImplingTrackerInterface.java
|
| Party Drop Chest | Core game content | , (player, slotId, itemId, option) -> {
final Container container = FaladorPartyRoom.getPartyRoom().getPrivateContainer(player);
final Item item = container.get(slotId);
if (item == null) {
return;
}
final Inventory inventory = player.getInventory();
final Container inventoryContainer = inventory.getContainer();
final PartyRoomOptionType optionType = getType(player, option);
if (optionType == PartyRoomOptionType.EXAMINE) {
player.sendMessage(item.getDefinitions().getExamine());
return;
}
if (optionType == PartyRoomOptionType.X) {
player.sendInputInt(, , player -> {
final FaladorPartyRoom partyroom = FaladorPartyRoom.getPartyRoom();
final Container container = partyroom.getPrivateContainer(player);
if (container.isEmpty()) {
return;
}
if (partyroom.getVariables().isDisabled()) {
player.sendMessage(, , player -> player.getVarManager().sendBitInstant(7792, 0));
bind(, , player -> player.getVarManager().sendBitInstant(7792, 3));
bind(, Accept, Add 1, Add 5, Add all, Add x, Chest private deposit container, Chest public deposit container ||
| |
| Party Drop Inventory | Core game content | , (player, slotId, itemId, option) -> {
final Inventory inventory = player.getInventory();
final Item item = inventory.getItem(slotId);
if (item == null || item.getId() != itemId) {
return;
}
final Container inventoryContainer = inventory.getContainer();
final Container container = FaladorPartyRoom.getPartyRoom().getPrivateContainer(player);
final PartyRoomOptionType optionType = getType(player, option);
if (optionType == PartyRoomOptionType.EXAMINE) {
player.sendMessage(item.getDefinitions().getExamine());
return;
}
if (optionType == PartyRoomOptionType.X) {
player.sendInputInt(, Interact with item ||
| |
| Farming Storage | Enabled plugin | , (player, slotId, itemId, option) -> remove(player, Storable.EMPTY_BUCKET, option));
bind(, , (player, slotId, itemId, option) -> remove(player, Storable.FARMING_RAKE, option));
bind(, , (player, slotId, itemId, option) -> remove(player, Storable.PLANT_CURE, option));
bind(, , (player, slotId, itemId, option) -> remove(player, Storable.SPADE, option));
bind(, , (player, slotId, itemId, option) -> remove(player, Storable.SUPER_COMPOST, option));
bind(, , (player, slotId, itemId, option) -> remove(player, Storable.WATERING_CAN, option));
bind(, , option);
VarCollection.FARMING_EQUIPMENT_STORAGE_DEFAULT.updateSingle(player);
}
private static final void remove(@NotNull final Player player, @NotNull final Storable storable, int option) {
final FarmingStorage storage = player.getFarming().getStorage();
final FarmingStorageInterface.Option op = storage.getOption(option);
final Item item = storage.getItem(storable);
switch (op) {
case EXAMINE:
if (item == null) {
ItemUtil.sendItemExamine(player, storable.getBaseId());
} else {
ItemUtil.sendItemExamine(player, item);
}
return;
case REMOVE_X:
player.sendInputInt(, , player -> setDefaultQuantityOption(player, 0));
bind(, , player -> setDefaultQuantityOption(player, 3));
bind(, Bottomless bucket, Empty buckets, Gardening trowel ||
| |
| Farming Storage Inventory | Enabled plugin | , (player, slotId, itemId, option) -> add(player, Storable.EMPTY_BUCKET, option));
bind(, , (player, slotId, itemId, option) -> add(player, Storable.FARMING_RAKE, option));
bind(, , (player, slotId, itemId, option) -> add(player, Storable.PLANT_CURE, option));
bind(, , (player, slotId, itemId, option) -> add(player, Storable.SPADE, option));
bind(, , (player, slotId, itemId, option) -> add(player, Storable.SUPER_COMPOST, option));
bind(, , (player, slotId, itemId, option) -> add(player, Storable.WATERING_CAN, option));
bind(, Bottomless buckets, Empty buckets, Gardening trowel, Normal compost, Plant cure, Rake ||
| |
| Seed Vault | Core game content | , ((player, slotId, itemId, option) -> player.getVarManager().sendBit(CATEGORY_VARBIT, slotId)));
bind(, , player -> player.getVarManager().sendVar(AMOUNT_VAR, 1));
bind(, , player -> player.getVarManager().sendVar(AMOUNT_VAR, 10));
bind(, , player -> player.getVarManager().sendVar(AMOUNT_VAR, Integer.MAX_VALUE));
bind(, Categories, Container, Deposit, Deposit-All, Search, Withdraw, Withdraw-1, Withdraw-10 ||
| |
| Seed Vault Inventory | Core game content | , ((player, slotId, itemId, optionId) -> {
final SeedVaultExchangeOption option = SeedVaultExchangeOption.of(optionId);
switch (option) {
case SELECTED:
deposit(player, slotId, player.getVarManager().getValue(SeedVaultInterface.AMOUNT_VAR), true);
break;
case X:
player.sendInputInt(, Container ||
| |
| Custom Fur Clothing | Core game content | , (player, slotId, itemId, option) -> {
final CustomFurClothingInterface.FurStock furItem = Objects.requireNonNull(FurStock.values[slotId]);
final int fee = furItem.fee;
final Item requirement = furItem.fur;
final Item alternativeRequirement = furItem.alternativeFur;
final String name = ItemDefinitions.getOrThrow(furItem.item).getName();
if (option == 1) {
player.sendMessage(name + , Interact with item ||
| |
| Arceuus Lectern | Core game content | , player -> setType(player, RUBY_ENCHANTMENT));
bind(, , player -> setType(player, EMERALD_ENCHANTMENT));
bind(, , player -> setType(player, BONES_TO_BANANAS));
bind(, , player -> setType(player, CAMELOT_TELEPORT));
bind(, , player -> setType(player, FALADOR_TELEPORT));
bind(, , player -> setType(player, DRAGONSTONE_ENCHANTMENT));
bind(, , player -> setType(player, WATCHTOWER_TELEPORT));
bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 1));
bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 10));
bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 28));
bind(, , this::createSelectedTablet); } private void createSelectedTablet(Player player) {
var selectedIndex = player.getVarManager().getValue(SELECTED_TABLET_TYPE);
var type = RegularTablet.get(selectedIndex);
if (type == null)
return;
player.getInterfaceHandler().closeInterface(getInterface());
player.getActionManager().setAction(new TabletCreation(type, player.getVarManager().getValue(QUANTITY_VARP)));
}
private void setType(@NotNull final Player player, @NotNull final LecternTablet tablet) {
player.getVarManager().sendVar(SELECTED_TABLET_TYPE, tablet.type());
logger.debug(, ,player -> setType(player, CIVITAS_ILLA_FORTIS_TELEPORT));
bind( ||
| |
| Regular Lectern | Core game content | , (player, slotId, itemId, option) -> create(player, RegularTablet.BONES_TO_BANANAS, option));
bind(, , (player, slotId, itemId, option) -> create(player, RegularTablet.CAMELOT_TELEPORT, option));
bind(, , (player, slotId, itemId, option) -> create(player, RegularTablet.DIAMOND_ENCHANTMENT, option));
bind(, , (player, slotId, itemId, option) -> create(player, RegularTablet.EMERALD_ENCHANTMENT, option));
bind(, , (player, slotId, itemId, option) -> create(player, RegularTablet.FALADOR_TELEPORT, option));
bind(, , (player, slotId, itemId, option) -> create(player, RegularTablet.SAPPHIRE_ENCHANTMENT, option));
bind(, , (player, slotId, itemId, option) -> create(player, RegularTablet.WATCHTOWER_TELEPORT, option));
bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 1));
bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 10));
bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 28));
bind(, Ardougne teleport, Bones to bananas ||
| |
| Slayer Partner | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/skills/slayer/SlayerPartnerInterface.java
|
| Clue | Core game content | Information | core/src/main/java/com/zenyte/game/content/treasuretrails/ClueInterface.java
|
| Clue Reward | Core game content | , container);
player.getPacketDispatcher().sendComponentSettings(getInterface(), getComponent(, Item list ||
| |
| Sextant | Core game content | , player -> {
final Inventory inventory = player.getInventory();
if (!inventory.containsItem(ItemId.WATCH, 1) || !inventory.containsItem(ItemId.CHART, 1)) {
player.getDialogueManager().start(new PlainChat(player, , , player -> move(player, 1, 0));
bind(, , player -> move(player, 1, 1));
bind(, Arm, Down arrow, Frame, Get location, Grass, Index mirror, Left arrow, Right arrow, Sun ||
| |
| Light Box | Core game content | , player -> player.getLightBox().press(0));
bind(, , player -> player.getLightBox().press(2));
bind(, , player -> player.getLightBox().press(4));
bind(, , player -> player.getLightBox().press(6));
bind(, A, B, C, D, E, F, G, H ||
| |
| Puzzle Box | Core game content | Puzzle piece | core/src/main/java/com/zenyte/game/content/treasuretrails/interfaces/PuzzleBoxInterface.java
|
| Stash Unit | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/treasuretrails/stash/StashUnitInterface.java
|
| Treasure Trail Statistics | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/treasuretrails/TreasureTrailStatisticsInterface.java
|
| Well Of Goodwill Interface Manager | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/well/WellOfGoodwillInterfaceManager.java
|
| Vault Overlay | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/content/wildernessVault/VaultOverlayInterface.java
|
| Vault Reward | Core game content | Take item | core/src/main/java/com/zenyte/game/content/wildernessVault/VaultRewardInterface.java
|
| Game | Core game content | Open | core/src/main/java/com/zenyte/game/GameInterface.java
|
| Shop | Core game content | , ((player, interfaceSlotId, itemId, option) -> {
final int slotId = interfaceSlotId - 1;
final Shop shop = getShopAttr(player);
final Item item = shop.getContainer().get(slotId);
if (ItemDefinitions.isInvalid(itemId) || item == null || item.getId() != itemId) return;
final int mobileBuyAmount = player.getNumericTemporaryAttribute(, Interact with item, Sell ||
| |
| Shop Inventory | Core game content | , ((player, slotId, itemId, option) -> {
final Object shopAttr = player.getTemporaryAttributes().get(, Interact with item, Sell ||
| |
| Dialogue | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/DialogueInterface.java
|
| Interface | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/Interface.java
|
| Interface Handler | Core game content | , true);
dispatcher.sendPane(pane); this.pane = pane; visible.forcePut(pane.getId() << 16, pane.getId()); for (final InterfacePosition position : InterfacePosition.VALUES) { if (position.getGameframeInterfaceId() == -1 || position.equals(InterfacePosition.FRIENDS_TAB) || position.equals(InterfacePosition.JOURNAL_TAB_HEADER)) { continue; } final Optional<GameInterface> gameInter = GameInterface.get(position.getGameframeInterfaceId()); if (gameInter.isPresent()) { gameInter.get().open(player); } else { sendInterface(position, position.getGameframeInterfaceId()); } } player.getSettings().refreshSetting(Setting.FRIEND_LIST_TOGGLE); player.onLobbyClose(); sendMisc(); openJournal(); ChatChannelPlayerExtKt.sendSocialTabs(player); if (player.isOnMobile()) { setJournal(Journal.QUEST_TAB); player.getVarManager().sendBit(SettingVariables.TRANSPARENT_CHATBOX_VARBIT_ID, 1); applyMobilePaneTweaks(); player.getCombatDefinitions().refresh(); } else { setJournal(Journal.GAME_NOTICEBOARD); GameInterface.GAME_SETTINGS.open(player); } setNumberJournalTabs(player.getVarManager().getBitValue(9340)); if (player.isOnMobile()) { player.getSettings().refreshSetting(Setting.MINIMIZE_MINIMAP); } PluginManager.post(new PostWindowStatusEvent(player)); } private void applyMobilePaneTweaks() { final PacketDispatcher dispatcher = player.getPacketDispatcher(); dispatcher.sendComponentPosition(PaneType.MOBILE.getId(), 40, 0, 20); dispatcher.sendComponentPosition(PaneType.MOBILE.getId(), 41, 0, 24); final int[] chatTabComponents = {4, 7, 11, 15, 19, 23, 27}; final int[] chatTabX = {58, 111, 164, 217, 270, 323, 376}; for (int i = 0; i < chatTabComponents.length; i++) { dispatcher.sendComponentPosition(GameInterface.CHAT.getId(), chatTabComponents[i], chatTabX[i], 0); } } public void openJournal() { GameInterface.JOURNAL_HEADER_TAB.open(player); switch (journal) { case QUEST_TAB: GameInterface.QUEST_TAB.open(player); break; case ACHIEVEMENT_DIARIES: GameInterface.ACHIEVEMENT_DIARY_TAB.open(player); break; case CHARACTER_SUMMARY: GameInterface.CHARACTER_SUMMARY.open(player); break; case GAME_NOTICEBOARD: GameInterface.GAME_NOTICEBOARD.open(player); break; case SERVER_EVENTS: GameInterface.SERVER_EVENTS.open(player); break; case EXTRA: GameInterface.EXTRA_JOURNAL_TAB.open(player); break; } } public void sendWelcomeScreen() {
final PacketDispatcher dispatcher = player.getPacketDispatcher();
dispatcher.sendComponentText(378, 70, || | |
| Interface Position | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/InterfacePosition.java
|
| New Interface Handler | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/NewInterfaceHandler.java
|
| Achievement Diary Tab | Core interface registry | , player -> Diary.sendDiary(player, ArdougneDiary.MAP));
bind(, , player -> Diary.sendDiary(player, FremennikDiary.MAP));
bind(, , player -> Diary.sendDiary(player, KandarinDiary.MAP));
bind(, , player -> Diary.sendDiary(player, LumbridgeDiary.MAP));
bind(, , player -> Diary.sendDiary(player, VarrockDiary.MAP));
bind(, , player -> Diary.sendDiary(player, WesternProvincesDiary.MAP));
bind(, Diaries, Open ||
| |
| Colour Picker | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/advancedsettings/ColourPickerInterface.java
|
| Settings | Core interface registry | , (player, slotId, itemId, option) -> {
final SettingCategory category = Settings.getCurrentSelectedCategory(player);
final SliderPosition position = Settings.findSliderPosition(category, slotId);
slider(player, position.getSlider(), slotId - position.getStartingPosition());
});
bind(, , player -> {
player.getInterfaceHandler().closeInterface(getInterface());
/* Also closes modals. */
player.getInterfaceHandler().closeInterfaces();
});
bind(, , player -> {
Settings.setCurrentSelectedCategory(player, null);
player.getVarManager().sendBitInstant(SETTINGS_SEARCH_LEFT_VARBIT, 1);
player.getVarManager().sendBitInstant(SETTINGS_SEARCH_RIGHT_VARBIT, 1);
});
bind(, , player -> Settings.setCurrentDropdownSetting(player, null));
bind(, Cancel drop-down selection, Category, Close, Drop-down menu, Search, Setting, Show less/more information, Slider ||
| |
| Another Clan | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/AnotherClanInterface.java
|
| Autocast | Core interface registry | , player -> close(player));
bind(, Set autocast spell ||
| |
| Avas Devices | Core interface registry | , (player, slotId, itemId, option) -> {
Preconditions.checkArgument(option >= 0 && option <= 4);
final IntConsumer consumer = amount -> {
final int cost = 2999;
final int space = player.getInventory().getFreeSlots();
final int coins = player.getInventory().getAmountOf(995);
if (amount > space) {
amount = space;
if (coins == ((amount + 1) * cost)) {
amount++;
}
}
if ((amount * cost) > coins) {
amount = coins / cost;
}
if (amount <= 0) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
Preconditions.checkArgument(option >= 0 && option <= 4);
final IntConsumer consumer = amount -> {
final int cost = 4999;
final int space = player.getInventory().getFreeSlots();
final int coins = player.getInventory().getAmountOf(995);
final int heads = player.getInventory().getAmountOf(21907);
if (amount > space) {
amount = space;
}
if ((amount * cost) > coins) {
amount = coins / cost;
}
if (heads < amount) {
amount = heads;
}
if (amount <= 0) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
Preconditions.checkArgument(option >= 0 && option <= 4);
final IntConsumer consumer = amount -> {
final int cost = 999;
final int space = player.getInventory().getFreeSlots();
final int coins = player.getInventory().getAmountOf(995);
if (amount > space) {
amount = space;
if (coins == ((amount + 1) * cost)) {
amount++;
}
}
if ((amount * cost) > coins) {
amount = coins / cost;
}
if (amount <= 0) {
player.sendMessage(, Purchase ava's accumulator, Purchase ava's assembler, Purchase ava's attractor ||
| |
| Bank Deposit | Core interface registry | , (player, slotId, itemId, option) -> {
final Item item = player.getInventory().getItem(slotId);
if (item == null || item.getId() != itemId) {
return;
}
final BankDepositInterface.ItemOption op = ItemOption.of(option);
if (op.equals(ItemOption.EXAMINE)) {
ItemUtil.sendItemExamine(player, item);
return;
}
if (op.equals(ItemOption.WITHDRAW_SELECTOR)) {
final int quantity = Math.max(1, player.getVarManager().getValue(1794));
player.getBank().deposit(player, player.getInventory().getContainer(), slotId, quantity);
player.setAnimation(DEPOSIT_ANIM);
return;
}
if (op.equals(ItemOption.WITHDRAW_X)) {
player.sendInputInt(, , player -> {
final Container container = player.getEquipment().getContainer();
if (container.getSize() == 0) {
player.sendMessage(, , player -> {
final Container container = player.getInventory().getContainer();
if (container.getSize() == 0) {
player.sendMessage(, , player -> {
final Inventory inventory = player.getInventory();
final boolean carryingLootingBag = inventory.containsItem(ItemId.LOOTING_BAG) || inventory.containsItem(ItemId.LOOTING_BAG_22586);
if (!carryingLootingBag) {
player.sendMessage(, , player -> {
player.getSettings().setSetting(Setting.MOBILE_DEPOSIT_BOX_AMOUNT, 0);
player.getVarManager().sendVar(1794, 1);
});
bind(, , player -> {
player.getSettings().setSetting(Setting.MOBILE_DEPOSIT_BOX_AMOUNT, 2);
player.getVarManager().sendVar(1794, Integer.MAX_VALUE);
});
Enums.DEPOSIT_BOX_EQUIPMENT_TAB_SLOT_MAP.getValues().forEach((slot, component)
-> bind(, , player -> {
player.getSettings().setSetting(Setting.MOBILE_DEPOSIT_BOX_AMOUNT, 4);
player.getVarManager().sendVar(1794, 10);
});
bind(, Default Quantity 1, Default Quantity 10, Default Quantity 5, Default Quantity All, Default Quantity X ||
| |
| Bank | Core interface registry | + slot, (player, slotId, itemId, optionId)
-> {
player.getEquipment().unequipItem(slot);
BankInventoryInterface.transmitSlotVarp(player);
}));
}
public static void tryDepositInventory(Player player, String action) {
tryDepositInventory(player.getBank(), player, action);
}
public static void tryDepositInventory(Bank bank, Player player, String action) {
if (player.getTemporaryAttributes().containsKey(, , (player, slotId, itemId, option) -> {
final Item item = player.getBank().get(slotId);
if (item == null) {
return;
}
final int id = item.getId();
if (id != itemId) {
return;
}
final BankInterface.ItemOption op = ItemOption.of(option);
if (op.is(ItemOption.EXAMINE)) {
player.sendMessage(item.getDefinitions().getExamine());
return;
}
if (id == 20594) {
BankUtil.safePermutation(player, bank -> {
if (op.is(ItemOption.CLEAR_ALL)) {
bank.removeFillers(-1, Integer.MAX_VALUE);
} else if (op.is(ItemOption.CLEAR)) {
bank.removeFillers(slotId, 1);
} else {
throw new RuntimeException(, , (player, slotId, itemId, option) -> {
if (player.getGameMode() == GameMode.ULTIMATE_IRON_MAN) {
player.sendMessage(, , (player, slotId, itemId, option) -> BankUtil.safePermutation(player, bank -> {
if (option == 1) {
final int size = bank.getTabSize(slotId == 10 ? 9 : slotId - 11);
if (size == 0) {
player.sendMessage(, , 1));
bind(, , 10));
bind(, , 50));
bind(, , a)));
bind(, , GameInterface.STORAGE_GIM::open);
bind(, , Integer.MAX_VALUE));
bind(, , player -> {
if (player.getTemporaryAttributes().containsKey(, , player -> player.getBank().releasePlaceholders(-1));
bind( ||
| |
| Bank Inventory | Core interface registry | , ((player, slotId, itemId, option) -> {
final Item item = player.getInventory().getItem(slotId);
if (item == null || item.getId() != itemId) {
return;
}
if (option == 1) {
player.getEquipment().wear(slotId);
} else if (option == 10) {
ItemUtil.sendItemExamine(player, item.getId());
}
}));
bind(, , (player, slotId, itemId, option) -> {
final LootingBag lootingBag = player.getLootingBag();
final Item item = lootingBag.getItem(slotId);
if (item == null) {
return;
}
final boolean uimHomeBankBag = com.zenyte.game.model.item.containers.LootingBag.canUltimateIronmanUseHomeBankBag(player);
if (uimHomeBankBag) {
if (option == 10) {
lootingBag.getContainer().withdraw(player, player.getInventory().getContainer(), slotId, item.getAmount());
} else if (option == 4) {
player.sendInputInt(, , player -> {
final LootingBag lootingBag = player.getLootingBag();
BankUtil.safePermutation(player, bank -> {
for (int slotId = 0; slotId < 28; slotId++) {
final Item item = lootingBag.getItem(slotId);
if (item == null) {
continue;
}
bank.deposit(player, lootingBag.getContainer(), slotId, item.getAmount());
}
return Unit.INSTANCE;
});
});
bind(, Deposit, Deposit Looting Bag Item, Empty Looting Bag, Interact with Item, Wear ||
| |
| Battlestaff Enchantment | Core interface registry | , player -> enchant(player, Battlestaff.AIR_BATTLESTAFF));
bind(, , player -> enchant(player, Battlestaff.EARTH_BATTLESTAFF));
bind(, , player -> enchant(player, Battlestaff.LAVA_BATTLESTAFF));
bind(, , player -> enchant(player, Battlestaff.MIST_BATTLESTAFF));
bind(, , player -> enchant(player, Battlestaff.STEAM_BATTLESTAFF));
bind(, Air battlestaff, Dust battlestaff, Earth battlestaff, Fire battlestaff, Lava battlestaff, Mist battlestaff, Mud battlestaff ||
| |
| Bounty Hunter Store | Core interface registry | , (player, slotId, itemId, optionId) -> {
/*final IntEnum layerEnum = Enums.BOUNTY_HUNTER_REWARDS;
final OptionalInt optionalItem = layerEnum.getValue(slotId);
if (!optionalItem.isPresent()) {
return;
}
int item = optionalItem.getAsInt();
final Optional<BountyHunterRewardType> optionalReward = BountyHunterRewardType.get(item);
if (!optionalReward.isPresent()) {
return;
}
final BountyHunterRewardType reward = optionalReward.get();
if (reward == BountyHunterRewardType.HUNTERS_HONOUR && player.getVarManager().getValue(1137) > player.getVarManager().getValue(1138)) {
item = 12856;
}
final BountyHunterStoreInterface.Option option = Option.get(optionId - 1);
if (option == Option.EXAMINE) {
ItemUtil.sendItemExamine(player, item);
return;
}
if (option == Option.VALUE) {
final ItemDefinitions itemDefinitions = ItemDefinitions.getOrThrow(item);
player.sendMessage(itemDefinitions.getName() + , Item layer, Scrollbar ||
| |
| Bug Report | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/BugReportInterface.java
|
| Character Summary | Core interface registry | , (player, slotId, itemId, option) -> {
if (player.isLocked()) return;
switch (slotId) {
case 3 -> COMP_PROGRESS.open(player);
case 4 -> player.getInterfaceHandler().setJournal(InterfaceHandler.Journal.ACHIEVEMENT_DIARIES);
case 5 -> {
switch (option) {
case 1 -> CA_OVERVIEW.open(player);
case 2 -> CA_BOSS_OVERVIEW.open(player);
case 3 -> CA_TASKS.open(player);
case 4 -> CA_REWARDS.open(player);
}
}
case 6 -> COLLECTION_LOG.open(player);
case 7 -> {
player.getVarManager().flipBit(12933);
player.getPacketDispatcher().sendClientScript(3970, getId() << 16 | getComponent(, Component layer, Element layer ||
| |
| Chartership | Core interface registry | , player -> charter(player, BRIMHAVEN));
bind(, , player -> charter(player, CATHERBY));
bind(, , player -> charter(player, MOS_LE_HARMLESS));
bind(, , player -> charter(player, PORT_KHAZARD));
bind(, , player -> charter(player, PORT_TYRAS));
bind(, , player -> charter(player, PRIFDDINAS));
}
private void charter(final Player player, final CharterLocation destination) {
final CharterLocation location = CharterLocation.getLocation(player.getLocation());
if (location == null || destination == null) {
return;
}
final Item cost = new Item(995, destination.getCosts()[location.ordinal()]);
player.getInterfaceHandler().closeInterface(InterfacePosition.CENTRAL);
if (!player.getInventory().containsItem(cost)) {
player.getDialogueManager().start(new PlainChat(player, , Brimhaven, Catherby, Corsair Cove, Mos Le'Harmless, Musa Point, Port Khazard ||
| |
| Chat Channel | Core interface registry | , player -> {
if (player.getInterfaceHandler().containsInterface(InterfacePosition.CENTRAL)) {
player.sendMessage(, Open, Open clan chat set-up ||
| |
| Chat | Core interface registry | , (player, slotId, itemId, option) -> {
if (option == 2) {
player.getSettings().toggleSetting(Setting.GAME_FILTER);
}
});
bind(, , (player, slotId, itemId, option) -> {
if (option >= 3 && option <= 5) {
player.getSettings().setSetting(Setting.CHANNEL_FILTER, option - 3);
}
});
bind(, Report button, Set channel filter, Set clan filter, Set game filter, Set group filter, Set private filter ||
| |
| Clan Chat Set Up | Core interface registry | , (player, slotId, itemId, option) -> {
final ClanChannel channel = ClanManager.getCurrentChannel(player);
final ClanRank rank = ClanRank.VALUES[option - 1];
if (rank == null) {
return;
}
channel.setEnterRank(rank);
player.getPacketDispatcher().sendComponentText(getInterface(), getComponent(, , (player, slotId, itemId, option) -> {
final ClanChannel channel = ClanManager.getCurrentChannel(player);
final ClanRank rank = ClanRank.VALUES[option - 1];
if (rank == null) {
return;
}
channel.setKickRank(rank);
player.getPacketDispatcher().sendComponentText(getInterface(), getComponent(, , (player, slotId, itemId, option) -> {
final ClanChannel channel = ClanManager.getCurrentChannel(player);
final ClanRank rank = ClanRank.VALUES[option - 1];
if (rank == null) {
return;
}
channel.setTalkRank(rank);
player.getPacketDispatcher().sendComponentText(getInterface(), getComponent(, , (player, slotId, itemId, option) -> {
final ClanChannel channel = ClanManager.getCurrentChannel(player);
if (option == 1) {
ClanManager.setPrefix(player, true);
return;
}
if (channel.isDisabled()) {
player.sendMessage(, , channel = new ClanChannel(, Disable/set prefix, Set enter rank, Set kick rank, Set talk rank ||
| |
| Clan | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/ClanInterface.java
|
| Combat Tab | Core interface registry | , player -> {
if (player.isLocked()) {
return;
}
player.getCombatDefinitions().setAutoRetaliate(!player.getCombatDefinitions().isAutoRetaliate());
});
bind(, , player -> {
if (player.isLocked()) {
return;
}
player.getCombatDefinitions().setDefensiveAutocast(true);
GameInterface.AUTOCAST_TAB.open(player);
});
bind(, , player -> {
player.getCombatDefinitions().setStyle(0);
player.getCombatDefinitions().setAutocastSpell(null);
});
bind(, , player -> {
player.getCombatDefinitions().setStyle(2);
player.getCombatDefinitions().setAutocastSpell(null);
});
bind(, Attack style 1, Attack style 2, Attack style 3, Attack style 4, Auto retaliate, Autocast, Defensive autocast, Special attack ||
| |
| Daily Challenges Overview | Core interface registry | , player -> claim(player, 0));
bind(, , player -> claim(player, 2));
bind(, 0, 1, 2, 3, 4 ||
| |
| Decanting Dialogue | Core interface registry | , player -> player.getDialogueManager().onClick(1, -1));
bind(, , player -> player.getDialogueManager().onClick(3, -1));
bind(, 1-dose, 2-dose, 3-dose, 4-dose ||
| |
| Drop Viewer | Core interface registry | , (player, slotId, itemId, option) -> {
final Object attr = player.getTemporaryAttributes().get(, , (player, slotId, itemId, option) -> {
player.toggleBooleanAttribute(, , player -> {
player.addTemporaryAttribute(, Duke Sucellus (awknd), Rarity Display, Search, Search button, Select, Select Item, Select NPC, View, View Result ||
| |
| Emote Tab | Core interface registry | , (player, slotId, itemId, option) -> {
if (player.getNumericTemporaryAttribute(, Play emote ||
| |
| Equipment Inventory | Core interface registry | , (player, slotId, itemId, option) -> {
final Item item = player.getInventory().getItem(slotId);
if (item == null) {
return;
}
if (option == 1) {
player.getEquipment().wear(slotId);
} else if (option == 10) {
ItemUtil.sendItemExamine(player, item.getId());
}
});
bind(, Interact with Item ||
| |
| Equipment Stats | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/EquipmentStatsInterface.java
|
| Equipment Tab | Core interface registry | , (player, slotId, itemId, optionId) -> {
if (player.isLocked()) { return; } if (!CombatUtilities.hasQuiverEquipped(player)) { return; } switch (optionId) { case 1: {//Remove handleDizanaQuiverRemoveOption(player); break; } case 2: {//Fill/Swap Item ammo = player.getAmmo(); int ammoItemId = PlayerAttributesKt.getDizanasQuiverAmmo(player); int ammoItemAmount = PlayerAttributesKt.getDizanasQuiverAmmoAmount(player); Item quiverItem = null; if (ammoItemId != -1 && ammoItemAmount > 0) { quiverItem = new Item(ammoItemId, ammoItemAmount); } if (ammo == null) { if (quiverItem == null) { player.sendMessage(Colour.ORANGE_RED.wrap(, , player -> { if (player.isLocked()) {
return;
}
Follower follower = player.getFollower();
if (follower == null) {
player.sendMessage(, , player -> {
if (player.isLocked()) {
return;
}
if (player.isUnderCombat()) {
player.sendMessage(, Call follower, dizana quiver, Price checker, View, View equipment stats, View items kept on death ||
| |
| Experience Lamp | Core interface registry | , (player, slot, __, ___) -> {
final String name = Enums.SKILL_NAMES_ENUM.getValue(Enums.FAKE_XP_DROPS.getValue(slot + 1).orElseThrow()).orElseThrow();
final int id = Skills.getSkill(name);
final Object consumer = player.getTemporaryAttributes().get(, Confirm, Text ||
| |
| Experience Tracker | Core interface registry | , (player, slotId, itemId, option) -> {
if (slotId < 0 || slotId >= SkillConstants.SKILLS.length) {
throw new IllegalStateException(, , (player, slotId, itemId, option) -> player.getVarManager().sendBit(DURATION_VARBIT, slotId - 1));
bind(, , (player, slotId, itemId, option) -> player.getVarManager().sendBit(GROUP_VARBIT, slotId - 1));
bind(, , (player, slotId, itemId, option) -> player.getVarManager().sendBit(POSITION_VARBIT, slotId - 1));
bind(, , (player, slotId, itemId, option) -> player.getVarManager().sendBit(PROGRESS_BAR_VARBIT, slotId - 1));
bind(, , (player, slotId, itemId, option) -> selectTrackerSetting(player, 1));
bind(, , (player, slotId, itemId, option) -> setTrackerPoint(player, option, false));
bind(, , (player, slotId, itemId, option) -> setTrackerPoint(player, option, true));
bind(, , slotId);
});
bind(, , type);
player.getVarManager().sendVar(1253 + skill, 0);
player.getVarManager().sendVar(1229 + skill, 0);
player.getVarManager().sendVar(261, 0);
player.getVarManager().sendVar(262, 0);
}
private void setTrackerPoint(@NotNull final Player player, final int option, final boolean start) {
final int skill = player.getNumericTemporaryAttribute(, Configure skill, Save goal ||
| |
| Explorer Ring | Core interface registry | , ((player, slotId, itemId, option) -> {
if (ExplorersRing.rings.contains(itemId)) {
player.sendMessage(, , ((player, slotId, itemId, option) -> {
if (player.carryingItem(ItemId.EXPLORERS_RING_4)) {
player.getVarManager().sendBit(HIGH_ALCHEMY_VARBIT, true);
player.getVarManager().sendBit(CHARGES_VARBIT, player.getVariables().getFreeAlchemyCasts());
} else {
player.sendMessage(, , player -> player.getInterfaceHandler().sendInterface(GameInterface.SPELLBOOK));
bind(, Charges, Close, High alchemy, Inventory, Low alchemy ||
| |
| Extra Quest Tab | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/ExtraQuestTabInterface.java
|
| Fixed Pane | Core interface registry | , (player, slotId, itemId, option) -> {
if (option == 2) {
player.getSettings().toggleSetting(Setting.PRAYER_FILTER_DISABLE);
}
});
bind(, , (player, slotId, itemId, option) -> VarCollection.COMP_PROGRESS.updateSingle(player));
bind(, Character Summary, Gravestone info, Open, Open Game Noticeboard, Toggle, Toggle prayer filtering, Toggle spell filtering ||
| |
| Friends List | Core interface registry | View, View Ignore List | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/FriendsListInterface.java
|
| Game Mode Setup | Core interface registry | , player -> selectExpMode(player, 0));
bind(, , player -> selectExpMode(player, 2));
bind(, Mode, Rate 1, Rate 2, Rate 3, Rate 4, review ||
| |
| Game Noticeboard | Core interface registry | , com.near_reality.game.content.commands.DeveloperCommands::openStore);
bind(, , com.zenyte.game.content.dailychallenge.DailyTaskInterfaceManager::open);
bind(, , GameNoticeboardInterface::showStaffOnline);
bind(, , player -> {
if(player.isMember()) {
DonationToggle.openInterface(player);
} else {
player.sendMessage(, , player -> {
player.getDialogueManager().start(new Dialogue(player) {
@Override
public void buildDialogue() {
options(, , player -> player.getPacketDispatcher().sendURL(GameConstants.DISCORD_INVITE));
bind(, , player -> player.getPacketDispatcher().sendURL(GameConstants.SERVER_VOTE_URL));
bind(, , player -> player.getPacketDispatcher().sendURL(GameConstants.SERVER_WEBSITE_URL + , , player -> player.getPacketDispatcher().sendURL(GameConstants.SERVER_WEBSITE_URL));
bind(, , raw);
return raw;
}
// If it looks like seconds (10 digits) convert to millis and persist.
if (raw > 1_000_000_000L && raw < 10_000_000_000L) {
raw = raw * 1000L;
p.getAttributes().put(, Bonus XP, Boss task ||
| |
| Game Settings | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/GameSettingsInterface.java
|
| Gnome Cocktail | Core interface registry | , player -> {
final GnomeCocktail cocktail = GnomeCocktail.getBySlot((Integer) player.getAttributes().get(SELECTED_COCKTAIL_SLOT));
if (player.getInventory().containsItems(cocktail.getIngredients()) && player.getSkills().getLevel(SkillConstants.COOKING) >= cocktail.getLevel()) {
final CocktailShaker shaker = CocktailShaker.SHAKERS.get(cocktail.getShaker());
final String heat = (shaker.equals(CocktailShaker.CHOCOLATE_SATURDAY) || shaker.equals(CocktailShaker.DRUNK_DRAGON)) ? , Create, select ||
| |
| Gnome Glider | Core interface registry | , player -> handle(player, GliderLocation.GANDIUS));
bind(, , player -> handle(player, GliderLocation.LEMANTO_ANDRA));
bind(, , player -> handle(player, GliderLocation.OOKOOKOLLY_UNDRI));
}
private void handle(final Player player, final GliderLocation destinationGlider) {
final GliderLocation currentGlider = GliderLocation.getGlider(player);
if (currentGlider == null) {
return;
}
if (currentGlider.equals(destinationGlider)) {
player.sendMessage(, , player -> handle(player, GliderLocation.TA_QUIR_PRIW));
bind(, Gandius, Kar-Hewo, Lemanto Andra, Lemantolly Undri, Ookookolly Undri, Sindarpos, Ta Quir Priw ||
| |
| Gold Jewellery | Core interface registry | , player -> player.getVarManager().sendVar(QUANTITY_VARP, 1));
bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 10));
bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 28));
for (JewelleryData data : JewelleryData.VALUES) {
if (isExcluded(data)) {
continue;
}
bind(data.name(), player -> {
if (JewelleryData.SLAYER_RING.equals(data) && !player.getSlayer().isUnlocked(, Make all, Make five, Make one, Make ten, Make x ||
| |
| Grand Exchange History | Core interface registry | , player -> player.getGrandExchange().openOffersInterface());
bind(, Click history entry, Open, Open Offers ||
| |
| Grand Exchange Offers Viewer | Core interface registry | , (player, slotId, itemId, option) -> {
final Object obj = player.getTemporaryAttributes().get(, , ExchangeType.BUYING);
if (itemId == 0) {
searchAll(player, ExchangeType.BUYING);
return;
}
search(player, itemId, ExchangeType.BUYING, null);
});
bind(, , ExchangeType.SELLING);
if (itemId == 0) {
searchAll(player, ExchangeType.SELLING);
return;
}
search(player, itemId, ExchangeType.SELLING, null);
});
bind(, , exchangeType);
final long lowestAcceptableTime = System.currentTimeMillis() - OFFER_TIMEOUT_DELAY;
for (final Map.Entry<String, Int2ObjectOpenHashMap<ExchangeOffer>> group : GrandExchangeHandler.getOffers().entrySet()) {
final Int2ObjectOpenHashMap<ExchangeOffer> offers = group.getValue();
for (final Int2ObjectMap.Entry<ExchangeOffer> entry : offers.int2ObjectEntrySet()) {
final ExchangeOffer offer = entry.getValue();
if (offer.isCancelled() || offer.isAborted() || offer.isCompleted()) {
continue;
}
if (offer.getLastUpdateTime() < lowestAcceptableTime) {
continue;
}
if (offer.getItem().getId() == itemId && offer.getType().equals(exchangeType)) {
results.add(offer);
}
}
}
if (sortType == null) {
final Object obj = player.getTemporaryAttributes().get(, , exchangeType);
final long lowestAcceptableTime = System.currentTimeMillis() - OFFER_TIMEOUT_DELAY;
for (final Map.Entry<String, Int2ObjectOpenHashMap<ExchangeOffer>> group : GrandExchangeHandler.getOffers().entrySet()) {
final Int2ObjectOpenHashMap<ExchangeOffer> offers = group.getValue();
for (final Int2ObjectMap.Entry<ExchangeOffer> entry : offers.int2ObjectEntrySet()) {
final ExchangeOffer offer = entry.getValue();
if (offer.isCancelled() || offer.isAborted() || offer.isCompleted()) {
continue;
}
if (offer.getLastUpdateTime() < lowestAcceptableTime) {
continue;
}
if (offer.getType().equals(exchangeType)) {
results.add(offer);
}
}
}
Comparator<ExchangeOffer> sorter = (Comparator.comparingLong(ExchangeOffer::getLastUpdateTime));
results.sort(sorter);
final int size = results.size();
if (size > 0) {
player.getPacketDispatcher().sendClientScript(10803, , , player -> {
player.toggleBooleanAttribute(, , player -> player.getGrandExchange().openOffersInterface());
bind(, , results);
GameInterface.GRAND_EXCHANGE_OFFERS_VIEWER.getPlugin().ifPresent(plugin -> {
player.getPacketDispatcher().sendComponentSettings(plugin.getInterface(), plugin.getComponent(, , sortType);
}
final int size = results.size();
if (size > 0) {
player.getPacketDispatcher().sendClientScript(10803, , Exchange, GE Item price, Item name ||
| |
| Grouping Tab | Core interface registry | , (player, slotId, itemId, option) -> {
final MinigameGroupFinder minigame = MinigameGroupFinder.getMinigame(slotId);
if (minigame == null) {
player.sendMessage(, Select, Select minigame, Teleport ||
| |
| Hairdresser | Core interface registry | , (player, slotId, itemId, option) -> {
boolean haircut = player.getVarManager().getBitValue(4146) == 1;
if (!haircut && !player.getAppearance().isMale()) {
haircut = true;
}
player.getVarManager().sendVar(261, slotId);
player.getTemporaryAttributes().put(haircut ? , , (player, slotId, itemId, option) -> {
boolean haircut = player.getVarManager().getBitValue(4146) == 1;
if (!haircut && !player.getAppearance().isMale()) {
haircut = true;
}
player.getVarManager().sendVar(263, slotId);
player.getTemporaryAttributes().put(haircut ? , , player -> {
boolean haircut = player.getVarManager().getBitValue(4146) == 1;
if (!haircut && !player.getAppearance().isMale()) {
haircut = true;
}
final int slot = player.getNumericTemporaryAttribute(haircut ? , Finish make-over, Select, Select hair/beard colour, Select hair/beard style ||
| |
| House Options Tab | Core interface registry | , player -> {
final Construction construction = player.getConstruction();
if (player.getCurrentHouse() != construction) {
player.sendMessage(, , player -> {
final Construction currentHouse = player.getCurrentHouse();
if (currentHouse == null) {
player.sendMessage(, , player -> player.getConstruction().getHouseViewer().openHouseViewer());
bind(, , player -> player.getConstruction().setBuildingMode(false));
bind(, , player -> player.getConstruction().setRenderDoorsMode(0));
bind(, , player -> player.getConstruction().setTeleportInside(false));
bind(, Building mode OFF, Building mode ON, Expel guests, Leave house, Number of rooms, Open ||
| |
| Ignore List | Core interface registry | View, View Friends List | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/IgnoreListInterface.java
|
| Item Retrieval Service | Core interface registry | , (player, slotId, itemId, option) -> {
final ItemRetrievalService service = player.getRetrievalService();
final Container container = service.getContainer();
final Item item = container.get(slotId);
if (item == null) return;
if (option == 2) {
if (service.isLocked()) {
player.sendMessage(, , player -> {
final ItemRetrievalService service = player.getRetrievalService();
if (service.isLocked()) {
final ItemRetrievalService.RetrievalServiceType type = service.getType();
final int cost = type.getCost();
final int inInventory = player.getInventory().getAmountOf(995);
final int inBank = player.getBank().getAmountOf(995);
final int total = inInventory + inBank;
//If cost is above total and total is above 0(overflow results in two integer adding going negative value)
if (cost > total && total >= 0) {
player.sendMessage(, , player -> {
player.getInterfaceHandler().closeInterface(getInterface());
player.getDialogueManager().start(new Dialogue(player) {
@Override
public void buildDialogue() {
options(, Discard-All, Items, Take-All, Take-All/Unlock ||
| |
| Journal Header Tab | Core interface registry | , player -> player.getInterfaceHandler().setJournal(InterfaceHandler.Journal.CHARACTER_SUMMARY));
bind(, , player -> player.getInterfaceHandler().setJournal(InterfaceHandler.Journal.QUEST_TAB));
bind(, , player -> player.getInterfaceHandler().setJournal(InterfaceHandler.Journal.SERVER_EVENTS));
bind(, Achievement Diary, Character Summary, Extra, Game Noticeboard, Quests, Server Events ||
| |
| Kourend Favour Tab | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/KourendFavourTabInterface.java
|
| Lobby | Core interface registry | Bank pin, Click here to play, Message of the week | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/LobbyInterface.java
|
| Logout Tab | Core interface registry | , player -> player.clickedLogoutButton(null));
bind(, Logout, World switcher ||
| |
| Looting Bag | Core interface registry | , player -> close(player));
bind(, Close, deposit, Store/Examine, Value, Withdraw ||
| |
| Make Over | Core interface registry | , (player, slotId, itemId, option) -> {
final int value = slotId == 0 ? 7 : slotId >= 8 && slotId <= 12 ? slotId : slotId - 1;
player.getVarManager().sendVar(262, value);
player.getTemporaryAttributes().put(, , player -> {
final boolean male = player.getBooleanTemporaryAttribute(, CONFIRM, Finish make-over, Select, Select female, Select male, Select skin colour ||
| |
| Minigame Tab | Core interface registry | , (player, slotId, itemId, option) -> {
final MinigameGroupFinder minigame = MinigameGroupFinder.getMinigame(slotId);
if (minigame == null) {
player.sendMessage(, PvM Arena, Select, Select minigame, Teleport ||
| |
| Minimized Minimap Orbs | Core interface registry | , (player, slotId, itemId, option) -> {
//In case of spoofing.
if (WildernessArea.isWithinWilderness(player)) {
return;
}
if (player.isLocked()) {
return;
}
final Duel duel = player.getDuel();
if (duel != null && duel.hasRule(DuelSetting.NO_SPECIAL_ATTACK) && duel.inDuel()) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
if (option == 1) {
player.getPrayerManager().toggleQuickPrayers();
} else if (option == 2) {
if (player.isLocked() || player.getInterfaceHandler().containsInterface(InterfacePosition.CENTRAL)) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
if (option == 1) {
player.getSettings().toggleSetting(Setting.EXPERIENCE_TRACKER);
} else if (option == 2) {
if (player.isLocked() || player.getInterfaceHandler().containsInterface(InterfacePosition.CENTRAL)) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
if (player.isLocked() || player.getInterfaceHandler().containsInterface(InterfacePosition.CENTRAL)) {
player.sendMessage(, , player -> player.setRun(!player.isRun()));
bind(, Cure Toxins, Experience Tracker, Prayer, Run, Toggle, Toggle special, View ||
| |
| Mobile Pane | Core interface registry | , (player, slotId, itemId, option) -> {
if (option == 2) {
player.getDialogueManager().start(new Dialogue(player) {
@Override
public void buildDialogue() {
final String currentSettingName = player.getAttributes().getOrDefault(, , FunctionButtonOption.SHOW_KEYBOARD.name());
});
final Dialogue.DialogueOption singleTap = new DialogueOption(FunctionButtonOption.TOGGLE_SINGLE_TAP_MODE.optionName, () -> {
player.getVarManager().sendBit(SettingVariables.SELECT_FUNCTIONMODE_VARBIT_ID, FunctionButtonOption.SHOW_KEYBOARD.varbitValue);
player.getSettings().setSetting(Setting.MOBILE_FUNCTION_BUTTON_ENABLED, 0);
player.getVarManager().sendBitInstant(SettingVariables.SINGLE_MOUSE_BUTTON_MODE_VARP_ID, 0);
player.getVarManager().sendBitInstant(SettingVariables.SHIFT_CLICK_TO_DROP_ITEMS_VARBIT_ID, 0);
player.getAttributes().put(, , FunctionButtonOption.TOGGLE_TAP_TO_DROP_MODE.name());
});
final Dialogue.DialogueOption disable = new DialogueOption(FunctionButtonOption.DISABLE.optionName, () -> {
player.getVarManager().sendBit(SettingVariables.SELECT_FUNCTIONMODE_VARBIT_ID, FunctionButtonOption.SHOW_KEYBOARD.varbitValue);
player.getSettings().setSetting(Setting.MOBILE_FUNCTION_BUTTON_ENABLED, 0);
player.getVarManager().sendBitInstant(SettingVariables.SINGLE_MOUSE_BUTTON_MODE_VARP_ID, 0);
player.getVarManager().sendBitInstant(SettingVariables.SHIFT_CLICK_TO_DROP_ITEMS_VARBIT_ID, 0);
player.getAttributes().put(, , player -> {
player.getPacketDispatcher().sendClientScript(1980, 0, 80);
});
bind(, , player -> player.getInterfaceHandler().openGameTab(GameTab.LOGOUT_TAB));
bind(, Combat tab, Function button, Logout tab, Select, Show keyboard, Start chatting ||
| |
| Music Player | Core interface registry | , (player, slotId, itemId, option) -> {
if (option == 1) {
if (!player.getMusic().play(slotId + 1)) {
player.sendMessage(, , player -> {
player.getSettings().setSetting(Setting.AUTO_MUSIC, 0);
player.getPacketDispatcher().sendComponentText(getInterface(), getComponent(, , player -> {
player.getSettings().setSetting(Setting.AUTO_MUSIC, 1);
player.getPacketDispatcher().sendComponentText(getInterface(), getComponent(, , player -> {
player.getSettings().toggleSetting(Setting.LOOP_MUSIC);
player.sendMessage(, Auto, Loop, Manual, Play song, Song name ||
| |
| Mycelium Teleport | Core interface registry | , player -> teleport(player, 0));
bind(, , player -> teleport(player, 2));
bind(, Teleport 1, Teleport 1 Text, Teleport 2, Teleport 2 Text, Teleport 3, Teleport 3 Text, Teleport 4, Teleport 4 Text ||
| |
| Nieve Gravestone | Core interface registry | Line 1, Line 10, Line 11, Line 12, Line 2, Line 3, Line 4, Line 5, Line 6, Line 7, Line 8, Line 9 | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/NieveGravestoneInterface.java
|
| Orbs | Core interface registry | , (player, slotId, itemId, option) -> {
//In case of spoofing. // if (WildernessArea.isWithinWilderness(player)) { // return; // } if (player.isLocked()) {
return;
}
final Duel duel = player.getDuel();
if (duel != null && duel.hasRule(DuelSetting.NO_SPECIAL_ATTACK) && duel.inDuel()) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
if (option == 1) {
player.getPrayerManager().toggleQuickPrayers();
} else if (option == 2) {
if (player.isLocked() || player.getInterfaceHandler().containsInterface(InterfacePosition.CENTRAL)) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
if (option == 1) {
player.getSettings().toggleSetting(Setting.EXPERIENCE_TRACKER);
} else if (option == 2) {
if (player.isLocked() || player.getInterfaceHandler().containsInterface(InterfacePosition.CENTRAL)) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
if (player.isLocked() || player.getInterfaceHandler().containsInterface(InterfacePosition.CENTRAL)) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
// if (WildernessArea.isWithinWilderness(player)) { // player.sendMessage(, , player -> player.setRun(!player.isRun())); bind(, Cure Toxins, Daily activity, Experience Tracker, Open, Open Store, Prayer ||
| |
| Pet Insurance | Core interface registry | , (player, slotId, ook, option) -> {
final IntEnum insurablePets = EnumDefinitions.getIntEnum(985);
int enumIndex = slotId / 5 - 1;
OptionalInt item = insurablePets.getValue(enumIndex);
int itemId = -1;
if (item.isPresent()) {
itemId = item.getAsInt();
}
if (option == 10) {
ItemUtil.sendItemExamine(player, itemId);
return;
}
final PetInsurance insurance = player.getPetInsurance();
final Pet pet = PetWrapper.getByItem(itemId);
if (pet == null || !insurance.isInsured(pet)) {
return;
}
if (pet.hasPet(player)) {
return;
}
final InsurableVariablePet variablePet = InsurableVariablePet.getPet(pet.itemId());
if (variablePet != null) {
for (final Integer variableId : variablePet.getIds()) {
final Pet alternativePet = PetWrapper.getByItem(variableId);
if (alternativePet == null) {
continue;
}
if (alternativePet.hasPet(player)) {
return;
}
}
}
if (!player.getMemberRank().equalToOrGreaterThan(MemberRank.RUBY)) {
if (!player.getInventory().containsItem(PetInsurance.RECLAIM_PRICE)) {
player.getDialogueManager().start(new NPCChat(player, 5906, , Buy, Buy Reclaims, Confirm, Reclaim Insured Pet ||
| |
| Preset Manager | Core interface registry | , (player, slotId, itemId, option) -> {
final PresetManager presetManager = player.getPresetManager();
if (presetManager.getTotalPresets() == 0) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
if (option == 1) {
final int activeIndex = indexOfActivePreset(player);
if (activeIndex == slotId) {
return;
}
refresh(player, OptionalInt.of(slotId), true);
} else if (option == 2) {
overwrite(player, slotId);
} else if (option == 3) {
load(player, slotId);
} else if (option == 4) {
rename(player, slotId);
} else if (option == 5) {
final Preset preset = player.getPresetManager().getPreset(slotId);
if (preset == null) {
return;
}
if (!preset.isAvailable()) {
player.sendMessage(, , index);
finalPreset.load(player);
});
}
}
private void rename(final Player player, final int index) {
final PresetManager presetManager = player.getPresetManager();
if (presetManager.getTotalPresets() == 0) {
player.sendMessage(, , player -> {
final PresetManager presetManager = player.getPresetManager();
if (presetManager.getTotalPresets() >= presetManager.getMaximumPresets()) {
player.sendMessage(, , player -> delete(player, indexOfActivePreset(player)));
bind(, , player -> load(player, indexOfActivePreset(player)));
bind(, , player -> player.getBank().toggleSetting(BankSetting.ALWAYS_PLACEHOLDER, player.getBank().getSetting(BankSetting.ALWAYS_PLACEHOLDER) == 0));
bind(, , player -> selectSpellbook(player, Spellbook.LUNAR));
bind(, , player -> selectSpellbook(player, Spellbook.NORMAL));
bind(, , preset) != null;
if (!scheduledPresetLoad) {
player.addPostProcessRunnable(() -> {
final Preset finalPreset = (Preset) player.getTemporaryAttributes().remove(, Always set placeholders, Ancient Spellbook ||
| |
| Price Checker | Core interface registry | , (player, slotId, itemId, option) -> {
final Container container = player.getInventory().getContainer();
if (container.getSize() == 0) {
player.sendMessage(, , (player, slotId, itemId, option) -> {
final Item item = player.getPriceChecker().get(slotId);
if (item == null) {
return;
}
if (item.getId() != itemId) {
return;
}
if (option == 10) {
ItemUtil.sendItemExamine(player, item);
return;
}
if (option == 5) {
player.sendInputInt(, , (player, slotId, itemId, option) -> player.sendInputItem(, Add all, Interact with item, Item name in search, Item sprite in search, Search, Search for item, Select ||
| |
| Price Checker Inventory | Core interface registry | , (player, slotId, itemId, option) -> {
final Item item = player.getInventory().getItem(slotId);
if (item == null) {
return;
}
if (item.getId() != itemId) {
return;
}
if (option == 10) {
ItemUtil.sendItemExamine(player, item);
return;
}
if (option == 5) {
player.sendInputInt(, Interact with item ||
| |
| Quest Tab | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/QuestTabInterface.java
|
| Quick Prayer | Core interface registry | , (player, slotId, itemId, option) -> player.getPrayerManager().setQuickPrayer(slotId));
bind(, Confirm, Select, Select prayer ||
| |
| Remnant Value Guide | Core interface registry | Search, Select, Sell | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/RemnantValueGuideInterface.java
|
| Resizable Pane | Core interface registry | , (player, slotId, itemId, option) -> {
if (option == 2) {
player.getSettings().toggleSetting(Setting.PRAYER_FILTER_DISABLE);
}
});
bind(, , (player, slotId, itemId, option) -> VarCollection.COMP_PROGRESS.updateSingle(player));
bind(, Character Summary, Gravestone info, Open, Open Game Noticeboard, Toggle, Toggle prayer filtering, Toggle spell filtering ||
| |
| Seed Box | Core interface registry | , (player, slotId, itemId, option) -> {
if (option == 5) {
player.sendInputInt(, , player -> player.getSeedBox().empty());
bind(, Empty box, Fill box, Remove ||
| |
| Server Events | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/ServerEventsInterface.java
|
| Settings Tab | Core interface registry | , (player, slotId, itemId, option) -> player.getVarManager().sendVar(SettingVariables.NPC_ATTACK_OPTIONS_VARP_ID, slotId - 1));
bind(, , (player, slotId, itemId, option) -> player.getVarManager().sendVar(SettingVariables.SCREEN_BRIGHTNESS_VARP_ID, slotId * 5));
bind(, , (player, slotId, itemId, option) -> setAreaSoundVolume(player, slotId * 5));
bind(, , (player, slotId, itemId, option) -> setSoundEffectVolume(player, slotId * 5));
bind(, , player -> {
player.getInterfaceHandler().closeInterfaces();
player.setRun(!player.isRun());
});
bind(, , player -> player.getVarManager().flipBit(SettingVariables.PK_SKULL_PREVENTION_VARBIT_ID));
bind(, Accept aid, All Settings, Area Sound Volume, Brightness, Disable zooming with scroll wheel, Game Client Layout ||
| |
| Side Panels Resizable Pane | Core interface registry | , (player, slotId, itemId, option) -> {
if (option == 2) {
player.getSettings().toggleSetting(Setting.PRAYER_FILTER_DISABLE);
}
});
bind(, , (player, slotId, itemId, option) -> VarCollection.COMP_PROGRESS.updateSingle(player));
bind(, Character Summary, Gravestone info, helper_cox, Open, Open Game Noticeboard, Toggle, Toggle prayer filtering, Toggle spell filtering ||
| |
| Silver Jewellery | Core interface registry | , (player) -> player.getVarManager().sendVar(SMITHING_AMOUNT_VARP, 1));
bind(, , (player) -> player.getVarManager().sendVar(SMITHING_AMOUNT_VARP, 10));
bind(, Make all, Make five, Make one, Make ten, Make x ||
| |
| Skills Tab | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/SkillsTabInterface.java
|
| Skotizo | Core interface registry | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/SkotizoInterface.java
|
| Spellbook | Core interface registry | , (player, slotId, itemId, option) ->
new Lvl1Enchant().spellEffect(player, player.getInventory().getItemById(itemId), slotId)); bind(, , option);
if (spell instanceof SpellbookTeleport) {
player.getTemporaryAttributes().put(, , player -> {
var reqRunes = new Item[] {
new Item(Magic.LAW_RUNE, 1), new Item(Magic.CHAOS_RUNE, 1), new Item(Magic.DEATH_RUNE, 1)
};
if (player.getInventory().containsItems(reqRunes)) {
if (player.getInventory().deleteItems(reqRunes).getResult() == SUCCESS) {
if (WildyExtKt.isBountyPaired(player)) {
if (TeleportToTarget.Companion.canTeleportToTarget(player))
TeleportToTarget.Companion.teleportToTarget(player);
else
player.sendMessage(, , player -> new EnchantCrossbowBolt().spellEffect(player, 0, null));
bind(, , player -> player.getSettings().toggleSetting(Setting.SHOW_SPELLS_YOU_LACK_THE_MAGIC_LEVEL_TO_CAST));
bind(, , player -> player.getSettings().toggleSetting(Setting.SHOW_SPELLS_YOU_LACK_THE_REQUIREMENTS_TO_CAST));
bind(, , player -> player.getSettings().toggleSetting(Setting.SHOW_TELEPORT_SPELLS));
bind(, Crossbow Bolt Enchantments, Jewellery Enchantments, Lvl-1 Enchant, Lvl-2 Enchant, Lvl-3 Enchant ||
| |
| Storage Room | Core interface registry | , (player, slotId, itemId, option) -> {
final StorageType type = getType(player);
final IntList categoryItems = items.get(type.getEnumId()).get(slotId);
if (option == 10) {
final int item = categoryItems.getInt(0);
player.sendMessage(ItemDefinitions.get(item).getExamine());
return;
}
if (option == 1) {
// Take out full set...
if (itemId <= -1) {
for (int i = 0; i < categoryItems.size(); i++) {
if (!player.getInventory().checkSpace(1)) {
return;
}
var result = player.getStorageRoom().getContainer().remove(new Item(categoryItems.getInt(i)));
if (result.getSucceededAmount() <= 0) continue;
var item = new Item(result.getItem().getId(), result.getSucceededAmount());
player.getInventory().addItem(item);
player.getStorageRoom().getContainer().setFullUpdate(true);
player.getPacketDispatcher().sendUpdateItemContainer(32768 + ContainerType.STORAGE_ROOM.getId(), -1, 0, player.getStorageRoom().getContainer());
}
} else {
int slotForItem = player.getStorageRoom().getContainer().getSlotOf(itemId);
if (slotForItem <= -1) return;
Item item = player.getStorageRoom().getContainer().get(slotForItem);
if (item == null) return;
player.getStorageRoom().getContainer().withdraw(player, player.getInventory().getContainer(), slotForItem, item.getAmount());
player.getPacketDispatcher().sendUpdateItemContainer(32768 + ContainerType.STORAGE_ROOM.getId(), -1, 0, player.getStorageRoom().getContainer());
player.getInventory().refreshAll();
}
}
});
bind(, , (player) -> {
for (int i = 0; i < 28; i++) {
final Item item = player.getInventory().getItem(i);
if (item == null) continue;
final var categoryItems = StorageRoomInterface.itemSetsByCategory.get(StorageRoomInterface.getType(player).getEnumId());
if (categoryItems == null) continue;
final IntList items = categoryItems.get(item.getId());
if (items == null) continue;
if (player.getStorageRoom().getContainer().getAmountOf(item.getId()) > 0) continue;
player.getInventory().getContainer().withdraw(player, player.getStorageRoom().getContainer(), i, item.getAmount());
}
player.getPacketDispatcher().sendUpdateItemContainer(32768 + ContainerType.STORAGE_ROOM.getId(), -1, 0, player.getStorageRoom().getContainer());
player.getInventory().refreshAll();
});
}
public static StorageType getType(Player player) {
return (StorageType) player.getTemporaryAttributes().get(, Deposit, Deposit inventory, Deposit mode, Items ||
| |
| Storage Room Inventory | Core interface registry | , (player, slotId, itemId, option) -> {
if (player.getVarManager().getBitValue(StorageRoomInterface.DEPOSIT_TYPE_VARBIT) == 0) {
final Item item = player.getInventory().getContainer().get(slotId);
if (item == null) return;
if (player.getStorageRoom().getContainer().getAmountOf(item.getId()) > 0) {
player.sendMessage(, Items ||
| |
| Teleport | Core interface registry | + index, (player, slotId, itemId, option) -> clickListRow(player, row));
}
bind(, + index, (player, slotId, itemId, option) -> removeFavourite(player, favourite));
}
bind(, , (player, slotId, itemId, option) -> changePage(player, 1));
for (int index = 0; index < CATEGORY_BUTTONS.length; index++) {
final int categoryIndex = index;
bind(, , (player, slotId, itemId, option) -> startSearch(player));
bind(, , (player, slotId, itemId, option) -> toggleSelectedFavourite(player));
for (int index = 0; index < FAVOURITE_ROWS.length; index++) {
final int favourite = index;
bind(, Back, Category button , Favourite row , Favourite selected, List row , Next page, Previous page ||
| |
| Trade Inventory | Core interface registry | , (player, slotId, itemId, option) -> {
if (option == 10) {
ItemUtil.sendItemExamine(player, itemId);
return;
}
if (FlowerPokerManager.get(player).inInterface) {
FlowerPokerManager flowerPokerManager = FlowerPokerManager.get(player);
final Item item = player.getInventory().getItem(slotId);
if (item == null) {
return;
}
if (option == 5) {
player.sendInputInt(, Add Item ||
| |
| Trade Stage1 | Core interface registry | , player -> {
if(FlowerPokerManager.get(player).inInterface)
FlowerPokerManager.get(player).accept(1);
else
player.getTrade().accept(1);
});
bind(, Accept, Remove Item ||
| |
| Trade Stage2 | Core interface registry | , player -> {
if(FlowerPokerManager.get(player).inInterface)
FlowerPokerManager.get(player).accept(2);
else
player.getTrade().accept(2);
});
bind(, Accept, Decline ||
| |
| Tutorial Make Over | Core interface registry | Title | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/TutorialMakeOverInterface.java
|
| Unmorph | Core interface registry | Unmorph | core/src/main/java/com/zenyte/game/model/ui/testinterfaces/UnmorphInterface.java
|
| Wheel Of Fortune | Core interface registry | , (player, slotId, itemId, option) -> ItemUtil.sendItemExamine(player, itemId));
bind(, , player -> close(player));
bind(, , player -> player.getWheelOfFortune().claim(false));
bind(, Claim, Claim later, Deposit, Deposit to bank, Discard, Examine item, No (Discard), Spin, Yes (Discard) ||
| |
| World Map | Core interface registry | , player -> {
if (player.isLocked()) {
return;
}
player.getWorldMap().close();
});
bind(, Close, Esc Close, Menu ||
| |
| User | Core game content | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/game/model/ui/UserInterface.java
|
| Calog Boss | Core game content | , (player, slotId, itemId, option) -> {
final Optional<CABossType> optionalType = Arrays.stream(CABossType.values).
filter(e -> player.getVarManager().getBitValue(CALogBossOverviewInterface.BOSS_SELECT_VARBIT) == e.ordinal() + 1).findFirst();
if (optionalType.isPresent()) {
final CABossType type = optionalType.get();
player.getTemporaryAttributes().put(CollectionLogInterface.CATEGORY_ATTR_KEY, type.isRaid() ? CLCategoryType.RAIDS : CLCategoryType.BOSS);
player.getTemporaryAttributes().put(CollectionLogInterface.SUB_CATEGORY_ATTR_KEY, type.getCollLogVal());
GameInterface.COLLECTION_LOG.open(player);
}
});
bind(, , (player, slotId, itemId, option) -> {
player.getVarManager().sendBit(CA_TASK_TIER_SELECT_VARBIT, 0);
player.getVarManager().sendBit(CA_TASK_TYPE_SELECT_VARBIT, 0);
player.getVarManager().sendBit(CA_TASK_MONSTER_SELECT_VARBIT, MONSTER_VALUES.get(player.getVarManager().getBitValue(12862)));
player.getVarManager().sendBit(CA_TASK_COMPLETED_SELECT_VARBIT, 0);
GameInterface.CA_TASKS.open(player);
});
bind(, Collection log, General, Navigation, Select, Select task || | |
| Calog Boss Overview | Core game content | , (player, slotId, itemId, option) -> {
if (slotId >= 1 && slotId <= 50) {
player.getVarManager().sendBitInstant(BOSS_SELECT_VARBIT, slotId);
GameInterface.CA_BOSS.open(player);
}
});
bind(, Navigation, Select || | |
| Calog Overview | Core game content | , (player, slotId, itemId, option) -> {
if (slotId == 12) {
GameInterface.CA_TASKS.open(player);
} else if (slotId == 14) {
GameInterface.CA_BOSS_OVERVIEW.open(player);
} else if (slotId == 16) {
GameInterface.CA_REWARDS.open(player);
}
});
bind(, Navigation, Task selection || | |
| Calog Reward | Core game content | , (player, slotId, itemId, option) -> {
System.out.println(, Navigation || | |
| Calog Task | Core game content | , (player, slotId, itemId, option) -> {
if (slotId == 10) {
GameInterface.CA_OVERVIEW.open(player);
} else if (slotId == 14) {
GameInterface.CA_BOSS_OVERVIEW.open(player);
} else if (slotId == 16) {
GameInterface.CA_REWARDS.open(player);
}
});
bind(, , (player, slotId, itemId, option) -> {
if (slotId >= 1 && slotId <= 7) {
player.getVarManager().sendBit(CA_TASK_TYPE_SELECT_VARBIT, slotId - 1);
}
});
bind(, Completed, Monster, Navigation, Tier, Type || | |
| Collection Log | Core game content | + c, (player) -> {
/* Avoid updating the results more than once a tick - it's very expensive. */
long lastTick = player.getNumericTemporaryAttribute(, , (player, slotId, itemId, option) -> {
final CLCategoryType currentCategory = (CLCategoryType) player.getTemporaryAttributes().getOrDefault(CATEGORY_ATTR_KEY, CLCategoryType.BOSS);
final int currentSubCategory = (int) player.getTemporaryAttributes().getOrDefault(SUB_CATEGORY_ATTR_KEY, 0);
final Optional<CABossType> optionalType = Arrays.stream(CABossType.values).
filter(b -> b.getCollLogVal() == currentSubCategory && currentCategory.equals(b.isRaid() ? CLCategoryType.RAIDS : CLCategoryType.BOSS)).findFirst();
if (optionalType.isPresent()) {
player.getVarManager().sendBitInstant(CALogBossOverviewInterface.BOSS_SELECT_VARBIT, optionalType.get().ordinal() + 1);
GameInterface.CA_BOSS.open(player);
}
});
bind(, , this::attemptClaim);
for (CLCategoryType type : CLCategoryType.values) {
bind(type + , Claim, Claim Reward, Close, Combat achievements, Search, Search letter ||
| |
| Bank Pin Settings | Core game content | , (player, slotId, itemId, option) -> {
player.getBankPin().toggleShortDelay();
refreshInterface(player);
});
// Change how long after logout before the account locks
bind(, , (player, slotId, itemId, option) -> player.getBankPin().sendConfirmationScreen(player, 1));
bind(, , (player, slotId, itemId, option) -> player.getBankPin().sendConfirmationScreen(player, 2));
bind(, , (player, slotId, itemId, option) -> refreshInterface(player));
bind(, Cancel PIN option, Change PIN, Change PIN Delay, Delete PIN, Interface base, Login Secure Delay, Message, PIN Alteration Confirm ||
| |
| Interface Switch Handler | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/handlers/InterfaceSwitchHandler.java
|
| Interface Switch Plugin | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/handlers/InterfaceSwitchPlugin.java
|
| Bingo | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/BingoInterface.java
|
| Canoe | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/CanoeInterface.java
|
| Combat Buddy | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/CombatBuddyInterface.java
|
| Daily Login Rewards | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/DailyLoginRewardsInterface.java
|
| Daily Task | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/DailyTaskInterface.java
|
| Daily Vote Streak | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/DailyVoteStreakInterface.java
|
| Book | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/dialogue/BookInterface.java
|
| Dual Item Option Dialogue | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/dialogue/DualItemOptionDialogueInterface.java
|
| Furniture Creation | Enabled plugin | , (player, slotId, itemId, option) -> {
if (player.getTemporaryAttributes().containsKey(, Build furniture ||
| |
| Normal Dialogue | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/dialogue/NormalDialogueInterface.java
|
| Option Dialogue | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/dialogue/OptionDialogueInterface.java
|
| Orb Of Oculus | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/dialogue/OrbOfOculusInterface.java
|
| Poll | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/dialogue/PollInterface.java
|
| Room Creation | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/dialogue/RoomCreationInterface.java
|
| Skill Dialogue | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/dialogue/SkillDialogueInterface.java
|
| Teleother | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/dialogue/TeleotherInterface.java
|
| Wilderness Warning | Enabled plugin | , true);
WildernessDitchObject.jump(player, (WorldObject) player.getTemporaryAttributes().get( || | |
| Grand Exchange Offers | Enabled plugin | buy, sell | core/src/main/java/com/zenyte/plugins/interfaces/GrandExchangeOffersInterface.java
|
| House Viewer | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/HouseViewerInterface.java
|
| Item Upgrader | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/ItemUpgraderInterface.java
|
| Kill Log | Enabled plugin | , new Object[] { name, slotId });
} else if (componentId == 25) {
final Object[] data = (Object[]) player.getTemporaryAttributes().get(, Select || | |
| Mystery Box | Enabled plugin | , (player, slotId, itemId, option) -> {
Integer boxId = (Integer) player.getTemporaryAttributes().get(, , container); player.getTemporaryAttributes().put(, , player -> player.getInterfaceHandler().closeInterfaces()); } public static void openBoxQuick(Player player, int boxId, MysteryItem[] rewards, int totalWeight, MysterySupplyItem[] supplies) { Item box = new Item(boxId); if (!player.getInventory().deleteItem(box).isFailure()) { MysteryItem jackpot = MysteryItem.generateItem(player, rewards, totalWeight); final Item reward = new Item(jackpot.getId(), Utils.random(jackpot.getMinAmount(), jackpot.getMaxAmount()), jackpot.getCharges()); player.getInventory().addOrDrop(reward); if (jackpot.isAnnounce() || reward.getId() == 6199) { WorldBroadcasts.broadcast(player, BroadcastType.MYSTERY_BOX_RARE_ITEM, reward.getId(), box.getName()); } if (supplies != null) { for (int i = 0; i < 2; i++) { MysterySupplyItem supplyItem = Utils.random(supplies); final Item supplyReward = supplyItem.toItem(Utils.random(supplyItem.getMinAmount(), supplyItem.getMaxAmount())); player.getInventory().addOrDrop(supplyReward); } } player.getInventory().addOrDrop(randomBurnPointVoucher()); } } @Override public GameInterface getInterface() { return GameInterface.MYSTERY_BOX; } @Override
public void close(Player player, Optional<GameInterface> replacement) {
if (player.getBooleanTemporaryAttribute(, , player -> player.getPacketDispatcher().sendURL(, , rewards);
player.getTemporaryAttributes().put(, Close, mbox_supplies, Purchase boxes, Reward text, Spin || | |
| Quest Journal | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/QuestJournalInterface.java
|
| Remnant Pet Perk Interface Plugin | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/RemnantPetPerkInterfacePlugin.java
|
| Report Abuse | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/ReportAbuseInterface.java
|
| Rune Pouch | Enabled plugin | , (player, slotId, itemId, option) -> {
withdraw(player, slotId, option);
});
bind(, boonQuantStored, Deposit, Withdraw ||
| |
| Scratch Card | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/ScratchCardInterface.java
|
| Shop | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/ShopInterface.java
|
| Skill | Enabled plugin | view | core/src/main/java/com/zenyte/plugins/interfaces/SkillInterface.java
|
| Smithing | Enabled plugin | , player -> player.getVarManager().sendVar(QUANTITY_VARP, 1));
bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 10)); bind(, , player -> player.getVarManager().sendVar(QUANTITY_VARP, 28)); for (int i = 9; i <= 35; i++) {
final int finalI = i;
bind(, , tier);
player.getTemporaryAttributes().put(, Quantity 1, Quantity 10, Quantity 5, Quantity All, Quantity X, Smith || | |
| Tanning | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/TanningInterface.java
|
| Task Book | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/TaskBookInterface.java
|
| Warrior Guild Catapult | Enabled plugin | catapultStance | core/src/main/java/com/zenyte/plugins/interfaces/WarriorGuildCatapultInterface.java
|
| Well Of Goodwill | Enabled plugin | Display, navigation or source-controlled interaction | core/src/main/java/com/zenyte/plugins/interfaces/WellOfGoodwillInterface.java
|
| Interface Extractor | Core game content | Graphic, Layer, Line, Model, Rectangle, Text | core/src/main/java/com/zenyte/tools/InterfaceExtractor.java
|
| Bhinterface Update | Core game content | Display, navigation or source-controlled interaction | core/src/main/kotlin/com/near_reality/game/content/bountyhunter/BHInterfaceUpdate.kt
|
| Bounty Hunter Update Player Interfaces | Core game content | Display, navigation or source-controlled interaction | core/src/main/kotlin/com/near_reality/game/content/bountyhunter/tasks/BountyHunterUpdatePlayerInterfaces.kt
|
| Contest | Core game content | ) { player: Player, _: Int, _: Int, _: Int ->
player.awaitInputInt(ListSelectDialog())
}
}
override fun open(player: Player) {
player.varManager.sendVar(261, 10400)//10301
var tasksFinishedFully = 0
var tasksFinished = 0
for (challenge in ChallengesManager.registries) {
if (challenge.key == SoloContestant::class) {
for (struct in challenge.value.structList) {
val finishedCount = ChallengesManager.checkCompleted(SoloContestant::class, struct)
val structParam = StructDefinitions.get(struct).getParamAsInt(5014)
if (finishedCount >= 3)
tasksFinishedFully = tasksFinishedFully or (1 shl structParam)
else if (finishedCount > 0)
tasksFinished = tasksFinished or (1 shl structParam)
}
}
}
player.varManager.sendVar(262, tasksFinishedFully)
player.varManager.sendVar(263, tasksFinished)
super.open(player)
player.packetDispatcher.sendComponentSettings(id, getComponent(, List ||
| |
| Middle Man Handle Trade | Core game content | , this::populatePendingTradeListView)
bind(, Logs, Player 1 Offer, Player 2 Offer, Refresh, Status ||
| |
| Middle Man Trade History | Core game content | , GameInterface.MIDDLE_MAN_MONITORING::open)
bind(, List, MM Home ||
| |
| Middle Man Trade Offer | Core game content | , Handler { player, slotId, itemId, option ->
if (option == 10) {
ItemUtil.sendItemExamine(player, itemId)
return@Handler
}
player.middleManController.ifTradeAwaitConfirmation {
if (player == accepter) {
val offerOption = when (option) {
3 -> MiddleManTradeOfferOption.Amount(1)
4 -> MiddleManTradeOfferOption.Amount(5)
5 -> MiddleManTradeOfferOption.Amount(10)
7 -> MiddleManTradeOfferOption.X
8 -> MiddleManTradeOfferOption.Amount(accepterContainer.getAmountOf(itemId))
else -> {
player.sendDeveloperMessage(, ) { player ->
player.middleManController.ifTradeAwaitConfirmation {
if (hasConfirmed(player)) {
player.sendMessage(
, ) { player ->
player.middleManController.ifTradeAwaitConfirmation {
if (player == accepter) {
--accepterOSRSMillions
updateOSRSGp()
}
}
}
bind(, ) { player ->
player.sendInputInt(, ) { player -> player.middleManController.cancelRequestOrTrade() }
}
private fun MiddleManPendingTrade.updateOSRSGp() {
val requester = requireNotNull(requester) {
, Cancel, Confirm, Minus 1, My Offered Items, Plus 1, Set quantity ||
| |
| Middle Man Trade Offer Inventory | Core game content | ) { player: Player, slotId: Int, itemId: Int, option: Int ->
val itemAtSlot = player.inventory.getItem(slotId)
if (itemAtSlot != null && !itemAtSlot.isTradable)
{
player.sendMessage(, My Tradeable Inventory ||
| |
| Middle Man Trade Request | Core game content | ) { player ->
player.awaitInputInt {
player.middleManOfferAmount = it
player.packetDispatcher.updateOfferAmount(player.middleManOfferAmount)
}
}
bind(, ) { player ->
player.packetDispatcher.updateOfferAmount(--player.middleManOfferAmount )
}
bind(, ) { player ->
player.sendInputString(, Cancel, Confirm, Enter name, Minus 1, Plus 1, Set quantity ||
| |
| Remnant Pet Perk | Core game content | Reroll, Upgrade | core/src/main/kotlin/com/near_reality/game/content/remnantpets/RemnantPetPerkInterface.kt
|
| Cape Customizer Interface Plugin | Core game content | Display, navigation or source-controlled interaction | core/src/main/kotlin/com/near_reality/game/model/ui/cape_customizer/CapeCustomizerInterfacePlugin.kt
|
| Chat Channel Interface Type | Core game content | Display, navigation or source-controlled interaction | core/src/main/kotlin/com/near_reality/game/model/ui/chat_channel/ChatChannelInterfaceType.kt
|
| Group Ironman Chat Channel | Core game content | , ChatChannelType.IronGroup)
bind(, , ChatChannelType.YourClan)
bind(, Clat-channel, Grouping, Iron Group, View, View another clan, Your Clan ||
| |
| Regular Chat Channel | Core game content | , ChatChannelType.ChatChannel)
bind(, , ChatChannelType.ViewAnotherClan)
bind(, Chat-channel, Grouping, View, View another clan, Your Clan ||
| |
| Credit Package | Core game content | ) { player ->
GameInterface.CREDIT_STORE.open(player)
}
bind(, ) { player, slotId, _, option ->
player.creditPackagePaymentMethodSelected = CreditPackageOrder.PaymentMethod.fromComponent(slotId)
}
}
override fun getInterface(): GameInterface =
GameInterface.CREDIT_PACKAGES
override fun open(player: Player) {
player.packetDispatcher.sendURL(STORE_URL)
player.sendMessage(, checkout, go_back, payment_options ||
| |
| Credit Store | Core game content | , CreditStoreModel::buyCredits)
bind(, ) { player ->
player.interfaceHandler.closeInterface(this)
}
bind(, ) { player ->
promptDPinSelectionAndOpenMiddlemanInterface(player)
}
}
override fun open(player: Player) {
if (player.getBooleanAttribute(, ) { player, slotId, _, _ ->
val tab = CreditStoreTab.findTab(slotId)
CreditStoreModel.updateSelectedTabContents(player, tab)
player.storeTabSelected = tab
}
bind(, buy, buy_credits_button, categories_dropdown, checkout_button, close, container, middleman_button, tabs ||
| |
| Donation Deals | Core game content | ) { player -> DonationDealsModel.previewClaim(player) }
bind(, ) { player -> player.packetDispatcher.sendComponentVisibility(id, 159, true) }
}
override fun open(player: Player) {
super.open(player)
DonationDealsModel.open(player)
}
override fun close(player: Player, replacement: Optional<GameInterface>) {
player.temporaryAttributes.remove(DonationDealsModel.CLAIM_ITEMS_KEY)
}
override fun getInterface(): GameInterface = GameInterface.DONATION_DEALS } object DonationDealsModel { const val CLAIM_ITEMS_KEY = , claim, claim_deal, close_confirm, confirm, confirm_claim ||
| |
| Vote | Core game content | Display, navigation or source-controlled interaction | core/src/main/kotlin/com/near_reality/game/model/ui/vote/VoteInterface.kt
|
| Duel Confirmation | Core game content | ) { p: Player ->
if (!p.inArea(, Confirm, Decline ||
| |
| Staking Duel | Core game content | ) { p -> p.duel?.confirm(DuelStage.STAKE) }
bind(, ) { player: Player, _: Int, itemId: Int, option: Int ->
val duel = player.duel ?: return@bind
val myContainer = duel.getContainer(player)
val stakeOption = when (option) {
1 -> ItemStakeOption.Amount(1)
2 -> ItemStakeOption.Amount(5)
3 -> ItemStakeOption.Amount(10)
4 -> ItemStakeOption.Amount(myContainer.getAmountOf(itemId))
5 -> ItemStakeOption.X
else -> return@bind
}
when (stakeOption) {
is ItemStakeOption.Amount -> duel.removeItem(itemId, stakeOption.amount)
ItemStakeOption.X -> player.sendInputInt(, Accept, Decline, My Staked Items, Target name ||
| |
| Staking Inventory | Core game content | ) { player: Player, slotId: Int, itemId: Int, option: Int ->
val itemAtSlot = player.inventory.getItem(slotId) ?: return@bind
if (!itemAtSlot.isTradable) {
player.sendMessage(, My Stakeable Inventory ||
| |
| Spellbook Open Teleport | Core game content | Display, navigation or source-controlled interaction | core/src/main/kotlin/com/zenyte/game/content/skills/magic/spells/teleports/SpellbookOpenTeleportInterface.kt
|
| Universal Shop | Core game content | ) { player: Player, _: Int, _: Int, _: Int ->
if(!player.univShopDoubleProcess) {
player.univShopSearchActive = !player.univShopSearchActive
player.univShopDoubleProcess = true
} else {
player.univShopDoubleProcess = false
}
}
bind(, ) { player: Player, slotId: Int, interfaceItem: Int, option: Int ->
val trueTarget = if(player.selectedUniversalShopCategory > 1) slotId - 4 else slotId
val categoryRow =
if(player.univShopSearchActive) UniversalShop.defaultBuyLocation(interfaceItem)
else UniversalShop.getCategoryRowIndexPair(player.selectedUniversalShopCategory, trueTarget)
val categoryId = categoryRow.first
val itemId = DBRowDefinition.getRowColumnByIndexesInt(UniversalShop.categoriesToIds.getOrDefault(categoryId, 1001), categoryRow.second, 3)
if (UniversalShop.isRemovedItem(itemId)) {
player.sendMessage(, categories_list, search, search_button, stock_list ||
| |
| Character Designer | Enabled plugin | , ::handleConfirm)
bind(, , ::handleMale)
bind(, , ::handlePreviousArms)
bind(, , ::handlePreviousFeet)
bind(, , ::handlePreviousFeetColour)
bind(, , ::handlePreviousHairColour)
bind(, , ::handlePreviousHands)
bind(, , ::handlePreviousHead)
bind(, , ::handlePreviousJaw)
bind(, , ::handlePreviousLegs)
bind(, , ::handlePreviousLegsColour)
bind(, , ::handlePreviousSkinColour)
bind( ||
| |
| Deaths Office Retrieval | Enabled plugin | Claim | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/deaths_office_retrieval.interface.kts
|
| Deaths Office Sacrifice Inv | Enabled plugin | Select | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/deaths_office_sacrifice_inv.interface.kts
|
| Deaths Office Sacrifice | Enabled plugin | Confirm, Select | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/deaths_office_sacrifice.interface.kts
|
| Deaths Office Retrieval | Enabled plugin | Claim | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/DeathsOfficeRetrievalInterface.kt
|
| Deaths Office Sacrifice | Enabled plugin | Confirm, Select | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/DeathsOfficeSacrificeInterface.kt
|
| Deaths Office Sacrifice Inv | Enabled plugin | Select | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/DeathsOfficeSacrificeInvInterface.kt
|
| Gravestone Reclaim | Enabled plugin | Display, navigation or source-controlled interaction | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/gravestone_reclaim.interface.kts
|
| Gravestone Reclaim | Enabled plugin | Display, navigation or source-controlled interaction | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/GravestoneReclaimInterface.kt
|
| Items Kept On Death | Enabled plugin | Display, navigation or source-controlled interaction | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/ItemsKeptOnDeathInterface.kt
|
| Remnant Exch | Enabled plugin | Confirm, Select | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/remnant_exch.interface.kts
|
| Remnant Inv | Enabled plugin | Select | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/remnant_inv.interface.kts
|
| Remnant Exch | Enabled plugin | Confirm, Select | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/RemnantExchInterface.kt
|
| Remnant Inv | Enabled plugin | Select | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/RemnantInvInterface.kt
|
| Univ Shop Inv | Enabled plugin | Sell | plugins/interfaces/death/src/main/kotlin/com/near_reality/plugins/interfaces/death/univ_shop_inv.interface.kts
|
| Slayer | Enabled plugin | Buy | plugins/interfaces/slayer/src/main/kotlin/com/zenyte/game/content/skills/slayer/slayer.interface.kts
|
| Slayer | Enabled plugin | Buy | plugins/interfaces/slayer/src/main/kotlin/com/zenyte/game/content/skills/slayer/SlayerInterface.kt
|
| Teleport Interface Dialog | Enabled plugin | Display, navigation or source-controlled interaction | plugins/interfaces/teleports/src/main/kotlin/com/near_reality/plugins/interfaces/teleports/TeleportInterfaceDialog.kt
|
| Teleports | Enabled plugin | Display, navigation or source-controlled interaction | plugins/interfaces/teleports/src/main/kotlin/com/near_reality/plugins/interfaces/teleports/TeleportsInterface.kt
|
| World Switcher Interface Plugin | Enabled plugin | Display, navigation or source-controlled interaction | plugins/interfaces/worldswitcher/src/main/kotlin/cloud/rsps/game/plugins/interfaces/WorldSwitcherInterfacePlugin.kt
|
Custom interfaces with full guides
Daily challenges, Daily login rewards, Vote streaks, Burn Points, Pet perks, Combat Buddies, Drop Viewer, Item upgrades, Universal shop, Game notice board, Command hub, Collection log, Server events, Teleport destinations, Automated bingo, Well of Goodwill, Achievements and Task book have dedicated player guides and screenshots.
Buying, selling and exchanging
- Standard shop screens support item/currency transactions according to the bound shop definition.
- The Universal Shop uses categories, item IDs, per-item price calculation, quantities and a selected currency.
- The Remnant Forge and Perk Master expose Buy Perks, Exchange Items, Item Values and the Burn Point Shop; see Burn Points.
- Reward containers such as the Colosseum chest can expose take, take-all, bank-all and destructive discard actions.
- Never infer a price from an interface button. The live bound shop, exchange manager or value table is authoritative.