Kotlin -> Java (#586)

* Convert All Plugins To Java

* Convert Rest Of Kt To Java & Remove Kt From Maven
This commit is contained in:
Josh Shippam
2023-02-05 22:30:52 +00:00
committed by GitHub
parent eab153ee3f
commit 5db6da334d
83 changed files with 1324 additions and 1354 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{
"server_name": "2006Scape",
"server_test_version": 2.3,
"gui_enabled": true,
"gui_enabled": false,
"website_link": "https://2006Scape.org",
"server_debug": false,
"file_server": true,
@@ -0,0 +1,18 @@
package plugin.buttons;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.impl.ButtonActionEvent;
import com.rs2.game.players.Player;
public abstract class ButtonClick implements EventSubscriber<ButtonActionEvent> {
@Override
public void subscribe(EventContext context, Player player, ButtonActionEvent event) {
execute(player, event);
}
protected abstract void execute(Player player, ButtonActionEvent event);
public abstract boolean test(ButtonActionEvent event);
}
@@ -1,17 +0,0 @@
package plugin.buttons
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.impl.ButtonActionEvent
import com.rs2.game.players.Player
abstract class ButtonClick : EventSubscriber<ButtonActionEvent> {
override fun subscribe(context: EventContext, player: Player, event: ButtonActionEvent) {
execute(player, event)
}
abstract fun execute(player : Player, event : ButtonActionEvent);
}
@@ -0,0 +1,35 @@
package plugin.buttons.gameframe;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ButtonActionEvent;
import com.rs2.game.items.impl.LightSources;
import com.rs2.game.players.Player;
import plugin.buttons.ButtonClick;
@SubscribesTo(ButtonActionEvent.class)
public final class BrightnessButtons extends ButtonClick {
@Override
protected void execute(Player player, ButtonActionEvent event) {
switch (event.getButton()) {
case 3138:
LightSources.brightness1(player);
break;
case 3140:
LightSources.brightness2(player);
break;
case 3142:
LightSources.brightness3(player);
break;
case 3144:
LightSources.brightness4(player);
break;
}
}
@Override
public boolean test(ButtonActionEvent event) {
return event.getButton() == 3138 || event.getButton() == 3140 || event.getButton() == 3142 || event.getButton() == 3144;
}
}
@@ -1,25 +0,0 @@
package plugin.buttons.gameframe
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ButtonActionEvent
import com.rs2.game.items.impl.LightSources
import com.rs2.game.players.Player
import plugin.buttons.ButtonClick
@SubscribesTo(ButtonActionEvent::class)
class BrightnessButtons : ButtonClick() {
override fun execute(player: Player, event: ButtonActionEvent) {
when (event.button) {
3138 -> LightSources.brightness1(player)
3140 -> LightSources.brightness2(player)
3142 -> LightSources.brightness3(player)
3144 -> LightSources.brightness4(player)
}
}
override fun test(event: ButtonActionEvent): Boolean {
return event.button == 3138 || event.button == 3140 || event.button == 3142 || event.button == 912
}
}
@@ -0,0 +1,27 @@
package plugin.buttons.gameframe;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ButtonActionEvent;
import com.rs2.game.players.Player;
import plugin.buttons.ButtonClick;
@SubscribesTo(ButtonActionEvent.class)
public final class LogoutButton extends ButtonClick {
@Override
protected void execute(Player player, ButtonActionEvent event) {
switch (event.getButton()) {
case 9154:
player.logout();
break;
}
}
@Override
public boolean test(ButtonActionEvent event) {
return event.getButton() == 9154;
}
}
@@ -1,20 +0,0 @@
package plugin.buttons.gameframe
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ButtonActionEvent
import com.rs2.game.players.Player
import plugin.buttons.ButtonClick
@SubscribesTo(ButtonActionEvent::class)
class LogoutButton : ButtonClick() {
override fun execute(player: Player, event: ButtonActionEvent) {
player.logout()
}
override fun test(event: ButtonActionEvent): Boolean {
return event.button == 9154
}
}
@@ -0,0 +1,38 @@
package plugin.buttons.gameframe;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ButtonActionEvent;
import com.rs2.game.content.music.Music;
import com.rs2.game.players.Player;
import plugin.buttons.ButtonClick;
@SubscribesTo(ButtonActionEvent.class)
public final class MusicVolumeButtons extends ButtonClick {
@Override
protected void execute(Player player, ButtonActionEvent event) {
switch (event.getButton()) {
case 3162:
if (player.musicOn) {
player.musicOn = false;
} else {
player.getPacketSender().sendMessage("Your music is already turned off.");
}
break;
case 3163:
case 3164:
case 3165:
case 3166:
Music.playMusic(player);
player.musicOn = true;
break;
}
}
@Override
public boolean test(ButtonActionEvent event) {
return event.getButton() == 3162 || event.getButton() == 3163 || event.getButton() == 3164 || event.getButton() == 3165 || event.getButton() == 3166;
}
}
@@ -1,32 +0,0 @@
package plugin.buttons.gameframe
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ButtonActionEvent
import com.rs2.game.content.music.Music
import com.rs2.game.players.Player
import plugin.buttons.ButtonClick
@SubscribesTo(ButtonActionEvent::class)
class MusicVolumeButtons : ButtonClick() {
override fun execute(player: Player, event: ButtonActionEvent) {
when (event.button) {
3162 -> {
if (player.musicOn) {
player.musicOn = false
} else {
player.packetSender.sendMessage("Your music is already turned off.")
}
}
3163,3164,3165,3166 -> {
Music.playMusic(player)
player.musicOn = true
}
}
}
override fun test(event: ButtonActionEvent): Boolean {
return event.button == 3162 || event.button == 3163 || event.button == 3164 || event.button == 3165 || event.button == 3166
}
}
@@ -0,0 +1,36 @@
package plugin.buttons.gameframe;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ButtonActionEvent;
import com.rs2.game.players.Player;
import plugin.buttons.ButtonClick;
@SubscribesTo(ButtonActionEvent.class)
public final class ToggleRunButtons extends ButtonClick {
@Override
protected void execute(Player player, ButtonActionEvent event) {
switch (event.getButton()) {
case 152:
player.getPacketSender().sendConfig(173, 0);
player.isRunning = false;
player.isRunning2 = false;
break;
case 153:
if (player.tutorialProgress == 11) {
player.getDialogueHandler().sendDialogues(3041, 0);
}
player.getPacketSender().sendConfig(173, 1);
player.isRunning = true;
player.isRunning2 = true;
break;
}
}
@Override
public boolean test(ButtonActionEvent event) {
return event.getButton() == 152 || event.getButton() == 153;
}
}
@@ -1,34 +0,0 @@
package plugin.buttons.gameframe
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ButtonActionEvent
import com.rs2.game.players.Player
import plugin.buttons.ButtonClick
@SubscribesTo(ButtonActionEvent::class)
class ToggleRunButtons : ButtonClick() {
override fun execute(player: Player, event: ButtonActionEvent) {
when (event.button) {
152 -> {
player.packetSender.sendConfig(173, 0)
player.isRunning = false
player.isRunning2 = false
}
153 -> {
if (player.tutorialProgress == 11) {
player.dialogueHandler.sendDialogues(3041, 0)
}
player.packetSender.sendConfig(173, 1)
player.isRunning = true
player.isRunning2 = true
}
}
}
override fun test(event: ButtonActionEvent): Boolean {
return event.button == 152 || event.button == 153
}
}
@@ -0,0 +1,34 @@
package plugin.buttons.gameframe;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ButtonActionEvent;
import com.rs2.game.players.Player;
import plugin.buttons.ButtonClick;
@SubscribesTo(ButtonActionEvent.class)
public final class ToggleSplitChatButtons extends ButtonClick {
@Override
protected void execute(Player player, ButtonActionEvent event) {
switch (event.getButton()) {
case 3189:
player.getPacketSender().sendConfig(502, 1);
player.getPacketSender().sendConfig(287, 1);
player.splitChat = true;
break;
case 3190:
player.getPacketSender().sendConfig(502, 0);
player.getPacketSender().sendConfig(287, 0);
player.splitChat = false;
break;
}
}
@Override
public boolean test(ButtonActionEvent event) {
return event.getButton() == 3189 || event.getButton() == 3190;
}
}
@@ -1,32 +0,0 @@
package plugin.buttons.gameframe
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ButtonActionEvent
import com.rs2.game.players.Player
import plugin.buttons.ButtonClick
@SubscribesTo(ButtonActionEvent::class)
class ToggleSplitChatButtons : ButtonClick() {
override fun execute(player: Player, event: ButtonActionEvent) {
when (event.button) {
3189 -> {
player.packetSender.sendConfig(502, 1)
player.packetSender.sendConfig(287, 1)
player.splitChat = true
}
3190 -> {
player.packetSender.sendConfig(502, 0)
player.packetSender.sendConfig(287, 0)
player.splitChat = false
}
}
}
override fun test(event: ButtonActionEvent): Boolean {
return event.button == 3189 || event.button == 3190
}
}
@@ -0,0 +1,29 @@
package plugin.click.item;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ItemFirstClickEvent;
import com.rs2.game.players.Player;
import static com.rs2.game.content.StaticItemList.YOYO;
@SubscribesTo(ItemFirstClickEvent.class)
public final class ItemFirstClick implements EventSubscriber<ItemFirstClickEvent> {
@Override
public void subscribe(EventContext context, Player player, ItemFirstClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[ItemClick#1] - Item: " + event.getItem());
}
switch (event.getItem()) {
case YOYO:
player.startAnimation(1457);
break;
}
}
}
@@ -1,29 +0,0 @@
package plugin.click.item
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ItemFirstClickEvent
import com.rs2.game.content.StaticItemList.YOYO
import com.rs2.game.players.Player
@SubscribesTo(ItemFirstClickEvent::class)
class ItemFirstClick : EventSubscriber<ItemFirstClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: ItemFirstClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[ItemClick#1] - Item: ${event.item}")
}
when(event.item) {
YOYO -> player.startAnimation(1457)
}
}
}
@@ -0,0 +1,27 @@
package plugin.click.item;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ItemOnItemEvent;
import com.rs2.game.players.Player;
import static com.rs2.game.content.StaticItemList.*;
@SubscribesTo(ItemOnItemEvent.class)
public final class ItemOnItem implements EventSubscriber<ItemOnItemEvent> {
@Override
public void subscribe(EventContext context, Player player, ItemOnItemEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[ItemOnItem] - used: " + event.getUsed() + " with: " + event.getUsedWith());
}
if (event.getUsed() == BLACK_CANDLE && event.getUsedWith() == TINDERBOX) {
player.getItemAssistant().addItem(LIT_BLACK_CANDLE, 1);
player.getItemAssistant().deleteItem(BLACK_CANDLE, 1);
}
}
}
@@ -1,26 +0,0 @@
package plugin.click.item
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ItemOnItemEvent
import com.rs2.game.content.StaticItemList.*
import com.rs2.game.players.Player
@SubscribesTo(ItemOnItemEvent::class)
class ItemOnItem : EventSubscriber<ItemOnItemEvent> {
override fun subscribe(context: EventContext, player: Player, event: ItemOnItemEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[ItemOnItem] - used: ${event.used} with: ${event.usedWith}")
}
if (event.used == BLACK_CANDLE && event.usedWith == TINDERBOX) {
player.itemAssistant.addItem(LIT_BLACK_CANDLE, 1)
player.itemAssistant.deleteItem(BLACK_CANDLE, 1)
}
}
}
@@ -0,0 +1,19 @@
package plugin.click.item;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ItemOnNpcEvent;
import com.rs2.game.players.Player;
@SubscribesTo(ItemOnNpcEvent.class)
public final class ItemOnNpc implements EventSubscriber<ItemOnNpcEvent> {
@Override
public void subscribe(EventContext context, Player player, ItemOnNpcEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[ItemOnNpc] - itemId: " + event.getItem() + " npcId: " + event.getNpc());
}
}
}
@@ -1,21 +0,0 @@
package plugin.click.item
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ItemOnNpcEvent
import com.rs2.game.npcs.NpcHandler
import com.rs2.game.players.Player
@SubscribesTo(ItemOnNpcEvent::class)
class ItemOnNpc : EventSubscriber<ItemOnNpcEvent> {
override fun subscribe(context: EventContext, player: Player, event: ItemOnNpcEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[ItemOnNpc] - itemId: ${event.item} npcId: ${event.npc}")
}
}
}
@@ -0,0 +1,29 @@
package plugin.click.item;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ItemOnObjectEvent;
import com.rs2.game.items.impl.Fillables;
import com.rs2.game.players.Player;
@SubscribesTo(ItemOnObjectEvent.class)
public final class ItemOnObject implements EventSubscriber<ItemOnObjectEvent> {
@Override
public void subscribe(EventContext context, Player player, ItemOnObjectEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[ItemOnObject] - itemId: " + event.getItem() + " objectId: " + event.getGameObject() + " Location: x: " + player.objectX + "y: " + player.objectY);
}
if (Fillables.canFill(event.getItem(), event.getGameObject()) && player.getItemAssistant().playerHasItem(event.getItem())) {
//val amount = player.itemAssistant.getItemAmount(event.item)
player.getItemAssistant().deleteItem(event.getItem(), 1);
player.getItemAssistant().addItem(Fillables.counterpart(event.getItem()), 1);
player.getPacketSender().sendMessage(Fillables.fillMessage(event.getItem(), event.getGameObject()));
player.startAnimation(832);
return;
}
}
}
@@ -1,30 +0,0 @@
package plugin.click.item
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ItemOnObjectEvent
import com.rs2.game.items.impl.Fillables
import com.rs2.game.players.Player
@SubscribesTo(ItemOnObjectEvent::class)
class ItemOnObject : EventSubscriber<ItemOnObjectEvent> {
override fun subscribe(context: EventContext, player: Player, event: ItemOnObjectEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[ItemOnObject] - itemId: ${event.item} objectId: ${event.gameObject} Location: x: ${player.objectX}, x: ${player.objectY}")
}
if (Fillables.canFill(event.item, event.gameObject) && player.itemAssistant.playerHasItem(event.item)) {
//val amount = player.itemAssistant.getItemAmount(event.item)
player.itemAssistant.deleteItem(event.item, 1)
player.itemAssistant.addItem(Fillables.counterpart(event.item), 1)
player.packetSender.sendMessage(Fillables.fillMessage(event.item, event.gameObject))
player.startAnimation(832)
return
}
}
}
@@ -0,0 +1,29 @@
package plugin.click.item;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ItemSecondClickEvent;
import com.rs2.game.players.Player;
import static com.rs2.game.content.StaticItemList.YOYO;
@SubscribesTo(ItemSecondClickEvent.class)
public final class ItemSecondClick implements EventSubscriber<ItemSecondClickEvent> {
@Override
public void subscribe(EventContext context, Player player, ItemSecondClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[ItemClick#2] - ItemId: " + event.getId());
}
switch (event.getId()) {
case YOYO:
player.startAnimation(1459);
break;
}
}
}
@@ -1,28 +0,0 @@
package plugin.click.item
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ItemSecondClickEvent
import com.rs2.game.content.StaticItemList.YOYO
import com.rs2.game.players.Player
@SubscribesTo(ItemSecondClickEvent::class)
class ItemSecondClick : EventSubscriber<ItemSecondClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: ItemSecondClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[ItemClick#2] - ItemId: ${event.id}")
}
when(event.id) {
YOYO -> player.startAnimation(1459)
}
}
}
@@ -0,0 +1,30 @@
package plugin.click.item;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ItemThirdClickEvent;
import com.rs2.game.players.Player;
import static com.rs2.game.content.StaticItemList.YOYO;
@SubscribesTo(ItemThirdClickEvent.class)
public final class ItemThirdClick implements EventSubscriber<ItemThirdClickEvent> {
@Override
public void subscribe(EventContext context, Player player, ItemThirdClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[ItemClick#3] - ItemId: " + event.getId());
}
switch (event.getId()) {
case YOYO:
player.startAnimation(1460);
break;
}
}
}
@@ -1,29 +0,0 @@
package plugin.click.item
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ItemThirdClickEvent
import com.rs2.game.content.StaticItemList.YOYO
import com.rs2.game.players.Player
@SubscribesTo(ItemThirdClickEvent::class)
class ItemThirdClick : EventSubscriber<ItemThirdClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: ItemThirdClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[ItemClick#3] - ItemId: ${event.id}")
}
when(event.id) {
YOYO -> player.startAnimation(1460)
}
}
}
@@ -0,0 +1,28 @@
package plugin.click.magic;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.MagicOnItemEvent;
import com.rs2.game.content.skills.smithing.Superheat;
import com.rs2.game.players.Player;
@SubscribesTo(MagicOnItemEvent.class)
public final class MagicOnItem implements EventSubscriber<MagicOnItemEvent> {
@Override
public void subscribe(EventContext context, Player player, MagicOnItemEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[MagicOnItem] - ItemId: " + event.getItemId() + " Slot: " + event.getSlot() + " SpellId: " + event.getSpellId());
}
switch (event.getSpellId()) {
case 1173:
if (!Superheat.superHeatItem(player, event.getItemId())) {
return;
}
break;
}
}
}
@@ -1,26 +0,0 @@
package plugin.click.magic
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.MagicOnItemEvent
import com.rs2.game.content.skills.smithing.Superheat
import com.rs2.game.players.Player
@SubscribesTo(MagicOnItemEvent::class)
class MagicOnItem : EventSubscriber<MagicOnItemEvent> {
override fun subscribe(context: EventContext, player: Player, event: MagicOnItemEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[MagicOnItem] - ItemId: ${event.itemId} Slot: ${event.slot} SpellId: ${event.spellId}");
}
when(event.spellId) {
1173 -> if (!Superheat.superHeatItem(player, event.itemId)) {
return;
}
}
}
}
@@ -0,0 +1,38 @@
package plugin.click.npc;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.NpcFirstClickEvent;
import com.rs2.game.players.Player;
import com.rs2.util.Misc;
import static com.rs2.game.content.StaticNpcList.*;
@SubscribesTo(NpcFirstClickEvent.class)
public final class NpcFirstClick implements EventSubscriber<NpcFirstClickEvent> {
@Override
public void subscribe(EventContext context, Player player, NpcFirstClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[click= npc], [type = first], [id= " + event.getNpc() + "], [Type= " + event.getNpc() + "]");
}
switch (event.getNpc()) {
case MAN:
case MAN_2:
case MAN_3:
case WOMAN:
case WOMAN_5:
case WOMAN_6:
if (Misc.random(10) <= 5) {
player.getDialogueHandler().sendDialogues(3869, player.npcType);
} else {
player.getDialogueHandler().sendDialogues(3872, player.npcType);
}
break;
}
}
}
@@ -1,34 +0,0 @@
package plugin.click.npc
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.NpcFirstClickEvent
import com.rs2.game.content.StaticNpcList.*
import com.rs2.game.players.Player
import com.rs2.util.Misc
@SubscribesTo(NpcFirstClickEvent::class)
class NpcFirstClick : EventSubscriber<NpcFirstClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: NpcFirstClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[click= npc], [type = first], [id= ${event.npc}], [Type= ${event.npc}]");
}
when(event.npc) {
MAN,MAN_2,MAN_3,WOMAN,WOMAN_5,WOMAN_6 -> if (Misc.random(10) <= 5) {
player.dialogueHandler.sendDialogues(3869, player.npcType)
} else {
player.dialogueHandler.sendDialogues(3872, player.npcType)
}
//else ->
}
}
}
@@ -0,0 +1,25 @@
package plugin.click.npc;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.NpcSecondClickEvent;
import com.rs2.game.content.skills.thieving.Pickpocket;
import com.rs2.game.players.Player;
@SubscribesTo(NpcSecondClickEvent.class)
public final class NpcSecondClick implements EventSubscriber<NpcSecondClickEvent> {
@Override
public void subscribe(EventContext context, Player player, NpcSecondClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[click= npc], [type = second], [id= " + event.getNpc() + "], [Type= " + event.getNpc() + "]");
}
if (Pickpocket.isNPC(player, player.npcType)) {
Pickpocket.attemptPickpocket(player, player.npcType);
return;
}
}
}
@@ -1,30 +0,0 @@
package plugin.click.npc
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.NpcSecondClickEvent
import com.rs2.game.content.skills.thieving.Pickpocket
import com.rs2.game.players.Player
@SubscribesTo(NpcSecondClickEvent::class)
class NpcSecondClick : EventSubscriber<NpcSecondClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: NpcSecondClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[click= npc], [type = second], [id= ${event.npc}], [Type= ${event.npc}]");
}
if (Pickpocket.isNPC(player, player.npcType)) {
Pickpocket.attemptPickpocket(player, player.npcType)
return
}
when(event.npc) {
}
}
}
@@ -0,0 +1,19 @@
package plugin.click.npc;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.NpcThirdClickEvent;
import com.rs2.game.players.Player;
@SubscribesTo(NpcThirdClickEvent.class)
public final class NpcThirdClick implements EventSubscriber<NpcThirdClickEvent> {
@Override
public void subscribe(EventContext context, Player player, NpcThirdClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[click= npc], [type = third], [id= " + event.getNpc() + "], [Type= " + event.getNpc() + "]");
}
}
}
@@ -1,24 +0,0 @@
package plugin.click.npc
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.NpcThirdClickEvent
import com.rs2.game.players.Player
@SubscribesTo(NpcThirdClickEvent::class)
class NpcThirdClick : EventSubscriber<NpcThirdClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: NpcThirdClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[click= npc], [type = third], [id= ${event.npc}], [Type= ${event.npc}]");
}
when(event.npc) {
}
}
}
@@ -0,0 +1,32 @@
package plugin.click.obj;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ObjectFirstClickEvent;
import com.rs2.game.content.skills.core.Mining;
import com.rs2.game.players.Player;
import com.rs2.world.clip.Region;
@SubscribesTo(ObjectFirstClickEvent.class)
public final class ObjectFirstClick implements EventSubscriber<ObjectFirstClickEvent> {
@Override
public void subscribe(EventContext context, Player player, ObjectFirstClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[click= object], [type= first], [id= " + player.objectId + "], [location= x:" + player.objectX + " y:" + player.objectY + "]");
}
if (!Region.objectExists(player.objectId, player.objectX, player.objectY, player.heightLevel)) {
return;
}
// if its a rock we can mine, mine it
if (Mining.rockExists(event.getGameObject())) {
player.getMining().startMining(player, event.getGameObject(), player.objectX, player.objectY, player.clickObjectType);
return;
}
}
}
@@ -1,36 +0,0 @@
package plugin.click.obj
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ObjectFirstClickEvent
import com.rs2.game.content.skills.core.Mining
import com.rs2.game.players.Player
import com.rs2.world.clip.Region
@SubscribesTo(ObjectFirstClickEvent::class)
class ObjectFirstClick : EventSubscriber<ObjectFirstClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: ObjectFirstClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[click= object], [type= first], [id= ${player.objectId}], [location= x:${player.objectX} y:${player.objectY} ]")
}
if (!Region.objectExists(player.objectId, player.objectX, player.objectY, player.heightLevel)) {
return
}
// if its a rock we can mine, mine it
if (Mining.rockExists(event.gameObject)) {
player.mining.startMining(player, event.gameObject, player.objectX, player.objectY, player.clickObjectType)
return
}
when (event.gameObject) {
}
}
}
@@ -0,0 +1,27 @@
package plugin.click.obj;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ObjectFourthClickEvent;
import com.rs2.game.content.skills.farming.Farming;
import com.rs2.game.players.Player;
import com.rs2.world.clip.Region;
@SubscribesTo(ObjectFourthClickEvent.class)
public final class ObjectFourthClick implements EventSubscriber<ObjectFourthClickEvent> {
@Override
public void subscribe(EventContext context, Player player, ObjectFourthClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[click= object], [type= fourth], [id= " + player.objectId + "], [location= x:" + player.objectX + " y:" + player.objectY + "]");
}
if (!Region.objectExists(player.objectId, player.objectX, player.objectY, player.heightLevel)) {
return;
}
Farming.guide(player, player.objectX, player.objectY);
}
}
@@ -1,31 +0,0 @@
package plugin.click.obj
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ObjectFourthClickEvent
import com.rs2.game.content.skills.farming.Farming
import com.rs2.game.players.Player
import com.rs2.world.clip.Region
@SubscribesTo(ObjectFourthClickEvent::class)
class ObjectFourthClick : EventSubscriber<ObjectFourthClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: ObjectFourthClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[click= object], [type= fourth], [id= ${player.objectId}], [location= x:${player.objectX} y:${player.objectY} ], [PLUGIN]");
}
if (!Region.objectExists(player.objectId, player.objectX, player.objectY, player.heightLevel)) {
return
}
Farming.guide(player, player.objectX, player.objectY)
when (event.gameObject) {
}
}
}
@@ -0,0 +1,30 @@
package plugin.click.obj;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ObjectSecondClickEvent;
import com.rs2.game.content.skills.thieving.Stalls;
import com.rs2.game.players.Player;
import com.rs2.world.clip.Region;
@SubscribesTo(ObjectSecondClickEvent.class)
public final class ObjectSecondClick implements EventSubscriber<ObjectSecondClickEvent> {
@Override
public void subscribe(EventContext context, Player player, ObjectSecondClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[click= object], [type= second], [id= " + player.objectId + "], [location= x:" + player.objectX + " y:" + player.objectY + "]");
}
if (!Region.objectExists(player.objectId, player.objectX, player.objectY, player.heightLevel)) {
return;
}
if (Stalls.isObject(event.getGameObject())) {
Stalls.attemptStall(player, event.getGameObject(), player.objectX, player.objectY);
return;
}
}
}
@@ -1,35 +0,0 @@
package plugin.click.obj
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ObjectSecondClickEvent
import com.rs2.game.content.skills.thieving.Stalls
import com.rs2.game.players.Player
import com.rs2.world.clip.Region
@SubscribesTo(ObjectSecondClickEvent::class)
class ObjectSecondClick : EventSubscriber<ObjectSecondClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: ObjectSecondClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[click= object], [type= second], [id= ${player.objectId}], [location= x:${player.objectX} y:${player.objectY} ]");
}
if (!Region.objectExists(player.objectId, player.objectX, player.objectY, player.heightLevel)) {
return
}
if (Stalls.isObject(event.gameObject)) {
Stalls.attemptStall(player, event.gameObject, player.objectX, player.objectY)
return
}
when (event.gameObject) {
}
}
}
@@ -0,0 +1,38 @@
package plugin.click.obj;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.ObjectThirdClickEvent;
import com.rs2.game.content.skills.thieving.Stalls;
import com.rs2.game.players.Player;
import com.rs2.world.clip.Region;
import static com.rs2.game.content.StaticObjectList.IRON_LADDER_10177;
@SubscribesTo(ObjectThirdClickEvent.class)
public final class ObjectThirdClick implements EventSubscriber<ObjectThirdClickEvent> {
@Override
public void subscribe(EventContext context, Player player, ObjectThirdClickEvent event) {
if (player.playerRights == 3) {
player.getPacketSender().sendMessage("[click= object], [type= third], [id= " + player.objectId + "], [location= x:" + player.objectX + " y:" + player.objectY + "]");
}
if (!Region.objectExists(player.objectId, player.objectX, player.objectY, player.heightLevel)) {
return;
}
if (Stalls.isObject(event.getGameObject())) {
Stalls.attemptStall(player, event.getGameObject(), player.objectX, player.objectY);
return;
}
switch (event.getGameObject()) {
case IRON_LADDER_10177:
player.getPlayerAssistant().movePlayer(1798, 4407, 3);
break;
}
}
}
@@ -1,36 +0,0 @@
package plugin.click.obj
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.ObjectThirdClickEvent
import com.rs2.game.content.StaticObjectList.IRON_LADDER_10177
import com.rs2.game.content.skills.thieving.Stalls
import com.rs2.game.players.Player
import com.rs2.world.clip.Region
@SubscribesTo(ObjectThirdClickEvent::class)
class ObjectThirdClick : EventSubscriber<ObjectThirdClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: ObjectThirdClickEvent) {
if (player.playerRights >= 3) {
player.packetSender.sendMessage("[click= object], [type= third], [id= ${player.objectId}], [location= x:${player.objectX} y:${player.objectY} ], [PLUGIN]");
}
if (!Region.objectExists(player.objectId, player.objectX, player.objectY, player.heightLevel)) {
return
}
if (Stalls.isObject(event.gameObject)) {
Stalls.attemptStall(player, event.gameObject, player.objectX, player.objectY)
return
}
when (event.gameObject) {
IRON_LADDER_10177 -> player.playerAssistant.movePlayer(1798, 4407, 3);
}
}
}
@@ -0,0 +1,21 @@
package plugin.npc.fadli;
import com.rs2.event.EventContext;
import com.rs2.event.EventSubscriber;
import com.rs2.event.SubscribesTo;
import com.rs2.event.impl.NpcSecondClickEvent;
import com.rs2.game.players.Player;
import static com.rs2.game.content.StaticNpcList.FADLI;
@SubscribesTo(NpcSecondClickEvent.class)
public final class SecondClick implements EventSubscriber<NpcSecondClickEvent> {
@Override
public void subscribe(EventContext context, Player player, NpcSecondClickEvent event) {
if (event.getNpc() == FADLI) {
player.getPacketSender().openUpBank();
}
}
}
@@ -1,18 +0,0 @@
package plugin.npc.fadli
import com.rs2.event.EventContext
import com.rs2.event.EventSubscriber
import com.rs2.event.SubscribesTo
import com.rs2.event.impl.NpcSecondClickEvent
import com.rs2.game.players.Player
import com.rs2.game.content.StaticNpcList.FADLI
@SubscribesTo(NpcSecondClickEvent::class)
class SecondClick : EventSubscriber<NpcSecondClickEvent> {
override fun subscribe(context: EventContext, player: Player, event: NpcSecondClickEvent) {
if (event.npc == FADLI) {
player.packetSender.openUpBank()
}
}
}
+2 -30
View File
@@ -9,11 +9,6 @@
<version>1.0</version>
<packaging>jar</packaging>
<properties>
<kotlin.version>1.6.10</kotlin.version>
<kotlin.compiler.incremental>true</kotlin.compiler.incremental>
</properties>
<repositories>
<repository>
<id>libs-local</id>
@@ -23,11 +18,6 @@
</repositories>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
<dependency>
<groupId>org.apache.commons</groupId>
@@ -165,31 +155,13 @@
<build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/plugins</sourceDir>
<sourceDir>${project.basedir}/src/main/java</sourceDir>
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<generatedSourcesDirectory>${project.basedir}/plugins</generatedSourcesDirectory>
<generatedSourcesDirectory>${project.basedir}/src/main/java</generatedSourcesDirectory>
<source>8</source>
<target>8</target>
<encoding>UTF-8</encoding>
@@ -0,0 +1,112 @@
package com.rs2;
import com.rs2.integrations.PlayersOnlineWebsite;
import com.rs2.integrations.RegisteredAccsWebsite;
import com.rs2.integrations.discord.JavaCord;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.*;
import java.util.stream.Collectors;
public class ConfigLoader {
public static void loadSettings(String config) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(config));
String out = br.lines().collect(Collectors.joining("\n"));
JSONObject obj = new JSONObject(out);
if(obj.has("server_name"))
GameConstants.SERVER_NAME = obj.getString("server_name");
if(obj.has("server_test_version"))
GameConstants.TEST_VERSION = obj.getDouble("server_test_version");
if(obj.has("gui_enabled"))
GameConstants.GUI_ENABLED = obj.getBoolean("gui_enabled");
if(obj.has("website_link"))
GameConstants.WEBSITE_LINK = obj.getString("website_link");
if(obj.has("server_debug"))
GameConstants.SERVER_DEBUG = obj.getBoolean("server_debug");
if(obj.has("file_server"))
GameConstants.FILE_SERVER = obj.getBoolean("file_server");
if(obj.has("world_id"))
GameConstants.WORLD = obj.getInt("world_id");
if(obj.has("members_only"))
GameConstants.MEMBERS_ONLY = obj.getBoolean("members_only");
if(obj.has("tutorial_island_enabled"))
GameConstants.TUTORIAL_ISLAND = obj.getBoolean("tutorial_island_enabled");
if(obj.has("party_room_enabled"))
GameConstants.PARTY_ROOM_DISABLED = !obj.getBoolean("party_room_enabled");
if(obj.has("clues_enabled"))
GameConstants.CLUES_ENABLED = obj.getBoolean("clues_enabled");
if(obj.has("admin_can_trade"))
GameConstants.ADMIN_CAN_TRADE = obj.getBoolean("admin_can_trade");
if(obj.has("admin_can_drop_items"))
GameConstants.ADMIN_DROP_ITEMS = obj.getBoolean("admin_can_drop_items");
if(obj.has("admin_can_sell"))
GameConstants.ADMIN_CAN_SELL_ITEMS = obj.getBoolean("admin_can_sell");
if(obj.has("respawn_x"))
GameConstants.RESPAWN_X = obj.getInt("respawn_x");
if(obj.has("respawn_y"))
GameConstants.RESPAWN_Y = obj.getInt("respawn_y");
if(obj.has("save_timer"))
GameConstants.SAVE_TIMER = obj.getInt("save_timer");
if(obj.has("timeout"))
GameConstants.TIMEOUT = obj.getInt("timeout");
if(obj.has("item_requirements"))
GameConstants.ITEM_REQUIREMENTS = obj.getBoolean("item_requirements");
if(obj.has("variable_xp_rate"))
GameConstants.VARIABLE_XP_RATE = obj.getBoolean("variable_xp_rate");
if(obj.has("xp_rate"))
GameConstants.XP_RATE = obj.getDouble("xp_rate");
if(obj.has("max_players"))
GameConstants.MAX_PLAYERS = obj.getInt("max_players");
if (obj.has("variable_xp_rates")) {
JSONArray rates = obj.optJSONArray("variable_xp_rates");
for (int i = 0; i < rates.length(); ++i) {
GameConstants.VARIABLE_XP_RATES[i] = rates.optInt(i);
}
}
if(obj.has("website_integration"))
GameConstants.WEBSITE_INTEGRATION = obj.getBoolean("website_integration");
}
private static void initialize() {
JSONObject main = new JSONObject();
main
.put("bot-token", "")
.put("websitepass", "")
.put("erssecret", "");
try {
BufferedWriter br = new BufferedWriter(new FileWriter("data/secrets.json"));
br.write(main.toString());
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void loadSecrets() throws IOException {
if (!new File("data/secrets.json").exists()) {
initialize();
System.out.println("Please open \"data/secrets.json\" file and enter your discord token bot there!");
System.out.println("Please open \"data/secrets.json\" file and enter your Website Password there!");
} else {
BufferedReader br = new BufferedReader(new FileReader("data/secrets.json"));
String out = br.lines().collect(Collectors.joining("\n"));
JSONObject obj = new JSONObject(out);
/*
* Sets External Services Vars
*/
if(obj.has("bot-token"))
JavaCord.token = obj.getString("bot-token");
if(obj.has("websitepass"))
PlayersOnlineWebsite.password = obj.getString("websitepass");
RegisteredAccsWebsite.password = obj.getString("websitepass");
if(obj.has("erssecret"))
GameEngine.ersSecret = obj.getString("erssecret");
}
}
}
@@ -0,0 +1,88 @@
package com.rs2;
public class GameConstants {
/**
* The Variables Below Can Be Also Changed On Server Startup By Using The ConfigLoader
*
* SERVER_NAME Sets The Name The Server Will Use
* WEBSITE_LINK Defines The Server Website Links
* WORLD Sets The Servers World ID
* GUI_ENABLED Enables/Disables The Server Control Panel
* MAX_PLAYERS Sets The Maximum Amount Of Players Allow To Be Logged In At Once
* TIMEOUT Sets The Amount Of Time Before A Player Timeouts From A Bad Connection
* SAVE_TIMER Sets In Seconds How Often The Server Shouls Auto-Save All Characters
* RESPAWN_X Sets The X Coordinate That You Will Respawn At After Death
* RESPAWN_Y Sets The Y Coordinate That You Will Respawn At After Death
* FILE_SERVER Sets Whether The FileServer Should Run With The Server
* SERVER_DEBUG Sets Whether The Server Should Start In Debug Mode
* MEMBERS_ONLY Sets Whether The World Is Members Only
* TUTORIAL_ISLAND Enables/Disables Tutorial Island For Players On First Login
* PARTY_ROOM_DISABLED Enables/Disables The Party Room Should Be Disabled
* CLUES_ENABLED Enables/Disables Clue Scrolls
* ITEM_REQUIREMENTS Enables/Disables Item Requirements for All Players
* ADMIN_CAN_TRADE Defines Whether Admins Can Trade
* ADMIN_DROP_ITEMS Defines Whether Admins Can Drop Items
* ADMIN_CAN_SELL_ITEMS Defines Whether Admins Can Sell Items
* VARIABLE_XP_RATE Allows Players To Choose An XP Rate Set In VARIABLE_XP_RATES
* VARIABLE_XP_RATES Defines The XP Rates That Should Be Available To Players When VARIABLE_XP_RATES is true(Array Must Contain Four Entries)
* XP_RATE Sets The XP Rate Multiplier For All Players/Skills If VARIABLE_XP_RATES is false
* WEBSITE_INTEGRATION Enables/Disables Website Features(Total Accounts Registered & Players Online)
*/
public static String SERVER_NAME = "2006Scape", WEBSITE_LINK = "https://2006Scape.org";
public static int WORLD = 1, MAX_PLAYERS = 200, TIMEOUT = 60, SAVE_TIMER = 120,
RESPAWN_X = 3222, RESPAWN_Y = 3218;
public static boolean GUI_ENABLED = false, FILE_SERVER = true, SERVER_DEBUG = false, MEMBERS_ONLY = false, TUTORIAL_ISLAND = false,
PARTY_ROOM_DISABLED = false, CLUES_ENABLED = true, ITEM_REQUIREMENTS = true,
ADMIN_CAN_TRADE = false, ADMIN_DROP_ITEMS = false, ADMIN_CAN_SELL_ITEMS = false, VARIABLE_XP_RATE = false,
WEBSITE_INTEGRATION = false;
public static int[] VARIABLE_XP_RATES = new int[] {1, 2, 5, 10};
public static double TEST_VERSION = 2.3, XP_RATE = 1.0;
/**
* The Variables Below Should Only Be Changed If You Understand What You Are Doing
*/
public final static int ITEM_LIMIT = 15000, MAXITEM_AMOUNT = Integer.MAX_VALUE,
IPS_ALLOWED = 250, CONNECTION_DELAY = 100;
public final static boolean sendServerPackets = false, SOUND = true, GUILDS = true;
public static int[] SIDEBARS = { 2423, 3917, 638, 3213, 1644, 5608, 1151,
18128, 5065, 5715, 2449, 904, 147, 962 };
public final static int[] FUN_WEAPONS = { 2460, 2461, 2462, 2463, 2464,
2465, 2466, 2467, 2468, 2469, 2470, 2471, 2471, 2473, 2474, 2475,
2476, 2477 }; // fun weapons for dueling
public final static int DUELING_RESPAWN_X = 3362;
public final static int DUELING_RESPAWN_Y = 3263;
public final static int NO_TELEPORT_WILD_LEVEL = 20;
public final static int NPC_RANDOM_WALK_DISTANCE = 5;
public final static int NPC_FOLLOW_DISTANCE = 10;
public final static String[] UNDEAD = {
"armoured zombie", "ankous", "banshee", "crawling hand", "dried zombie", "ghost", "ghostly warrior", "ghast",
"mummy", "mighty banshee", "reventant imp", "reventant goblin", "reventant icefiend", "reventant pyrefiend",
"reventant hobgoblin", "reventant vampyre", "reventant werewolf", "reventant cyclops", "reventant darkbeast",
"reventant demon", "reventant ork", "reventant hellhound", "reventant knight", "reventant dragon",
"shade", "skeleton", "skeleton brute", "skeleton thug", "skeleton warload", "summoned zombie",
"skorge", "tortured soul", "undead chicken", "undead cow", "undead one", "undead troll", "zombie", "zombie rat", "zogre"
};
public final static int CYCLE_TIME = 600;
public final static int BUFFER_SIZE = 10000;
public final static int ATTACK = 0, DEFENCE = 1, STRENGTH = 2,
HITPOINTS = 3, RANGED = 4, PRAYER = 5, MAGIC = 6, COOKING = 7,
WOODCUTTING = 8, FLETCHING = 9, FISHING = 10, FIREMAKING = 11,
CRAFTING = 12, SMITHING = 13, MINING = 14, HERBLORE = 15,
AGILITY = 16, THIEVING = 17, SLAYER = 18, FARMING = 19,
RUNECRAFTING = 20;
}
@@ -0,0 +1,39 @@
package com.rs2.integrations.discord;
import com.rs2.game.players.PlayerHandler;
public class DiscordActivity {
public static Boolean playerCount = false;
private static int count = 50;
public static void updateActivity() {
try {
if (JavaCord.token != null && !JavaCord.token.equals("")) {
if (count == 0) {
if (PlayerHandler.getPlayerCount() != 1) {
JavaCord.api.updateActivity(PlayerHandler.getPlayerCount() + " Players Online");
System.out.println("Discord Activity Updated");
count = 100;
} else {
JavaCord.api.updateActivity(PlayerHandler.getPlayerCount() + " Player Online");
System.out.println("Discord Activity Updated");
count = 100;
}
} else {
count--;
}
}
} catch (Exception e) {
System.out.println("Could not set Discord activity: " + e);
System.out.println("Null checks");
try {
System.out.println("JavaCord.api: " + JavaCord.api);
System.out.println("PlayerHandler.getPlayerCount: " + PlayerHandler.getPlayerCount());
} catch (Exception e2) {
System.out.println(e2);
}
}
}
}
@@ -0,0 +1,75 @@
package com.rs2.integrations.discord;
import com.rs2.GameConstants;
import com.rs2.integrations.discord.commands.*;
import com.rs2.integrations.discord.commands.admin.*;
import org.javacord.api.DiscordApi;
import org.javacord.api.DiscordApiBuilder;
import org.javacord.api.entity.channel.TextChannel;
import org.javacord.api.entity.message.MessageBuilder;
import org.javacord.api.util.logging.ExceptionLogger;
import java.io.IOException;
/**
* @author Patrity || https://www.rune-server.ee/members/patrity/
*/
public class JavaCord {
public static String serverName = GameConstants.SERVER_NAME;
public static String commandPrefix = "::w" + GameConstants.WORLD;
public static String token;
public static DiscordApi api = null;
public static void init() throws IOException {
if (token != null && !token.equals("")) { //If the token was loaded by loadSettings:
new DiscordApiBuilder().setToken(token).login().thenAccept(api -> {
try {
JavaCord.api = api;
//System.out.println("You can invite the bot by using the following url: " + api.createBotInvite());
api.addListener(new Commands());
api.addListener(new Forum());
api.addListener(new Hiscores());
api.addListener(new Issues());
api.addListener(new Link());
api.addListener(new Online());
api.addListener(new Players());
api.addListener(new Vote());
api.addListener(new Website());
//Admin Commands
api.addListener(new AdminCommands());
api.addListener(new GameKick());
api.addListener(new MoveHome());
api.addListener(new Update());
api.addListener(new Pin());
api.addListener(new Purge());
//api.addListener(new Link());
//api.addListener(new WelcomeMessage());
if(!DiscordActivity.playerCount) {
api.updateActivity(GameConstants.WEBSITE_LINK);
}
api.addMessageCreateListener(event -> {
});
} catch (Exception e) {
e.printStackTrace();
}
})
// Log exceptions (might not work now that we try(catch)
.exceptionally(ExceptionLogger.get());
} else {
System.out.println("Discord Token Not Set So Bot Not Loaded");
}
}
public static void sendMessage(String channel, String msg) {
try {
new MessageBuilder()
.append(msg)
.send((TextChannel) api.getTextChannelsByNameIgnoreCase(channel).toArray()[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,16 @@
package com.rs2.integrations.discord;
import com.rs2.GameConstants;
import org.javacord.api.event.server.member.ServerMemberJoinEvent;
import org.javacord.api.listener.server.member.ServerMemberJoinListener;
public class WelcomeMessage implements ServerMemberJoinListener {
@Override
public void onServerMemberJoin(ServerMemberJoinEvent event) {
String welcomeMessageChannel = "655143683083206667";
if (GameConstants.WORLD == 1) {
event.getApi().getTextChannelById(welcomeMessageChannel).get().
sendMessage("Hello " + event.getUser().getMentionTag() + " And Welcome To " + JavaCord.serverName + ".");
}
}
}
@@ -0,0 +1,33 @@
package com.rs2.integrations.discord.commands;
import com.rs2.integrations.discord.JavaCord;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
public class Commands implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " commands")) {
event.getChannel().sendMessage("```fix"
+ System.lineSeparator() +
"::link"
+ System.lineSeparator() +
"::forum/::forums"
+ System.lineSeparator() +
JavaCord.commandPrefix + " gamekick(if account id linked)"
+ System.lineSeparator() +
JavaCord.commandPrefix + " hiscores/" + JavaCord.commandPrefix + " highscores"
+ System.lineSeparator() +
"::issues/::bugs"
+ System.lineSeparator() +
JavaCord.commandPrefix + " online"
+ System.lineSeparator() +
"::vote"
+ System.lineSeparator() +
"::website/::site"
+ "```");
}
}
}
@@ -0,0 +1,19 @@
package com.rs2.integrations.discord.commands;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
import com.rs2.GameConstants;
public class Forum implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase("::forum") || message.getContent().equalsIgnoreCase("::forums")) {
if (GameConstants.WORLD == 1) {
event.getChannel().sendMessage(GameConstants.WEBSITE_LINK + "/forums/index.php");
}
}
}
}
@@ -0,0 +1,18 @@
package com.rs2.integrations.discord.commands;
import com.rs2.integrations.discord.JavaCord;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
import com.rs2.GameConstants;
public class Hiscores implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " hiscores") || message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " highscores")) {
event.getChannel().sendMessage(GameConstants.WEBSITE_LINK + "/hiscores.html");
}
}
}
@@ -0,0 +1,18 @@
package com.rs2.integrations.discord.commands;
import com.rs2.GameConstants;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
public class Issues implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase("::issues") || message.getContent().equalsIgnoreCase("::bugs")) {
if (GameConstants.WORLD == 1) {
event.getChannel().sendMessage("https://github.com/2006-Scape/2006Scape/issues");
}
}
}
}
@@ -0,0 +1,17 @@
package com.rs2.integrations.discord.commands;
import org.javacord.api.entity.message.Message;
import org.javacord.api.entity.user.User;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
public class Link implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase("::link")) {
event.getChannel().sendMessage(message.getAuthor().asUser().get().getMentionTag() + ", Please check your DM's to continue.");
message.getAuthor().asUser().get().sendMessage("Please copy/paste the following in-game to link your Discord account: \n ```::link " + message.getAuthor().asUser().get().getIdAsString() + "```");
}
}
}
@@ -0,0 +1,18 @@
package com.rs2.integrations.discord.commands;
import com.rs2.GameConstants;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
import com.rs2.integrations.discord.JavaCord;
public class Online implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " online")) {
event.getChannel().sendMessage(":tada: " + JavaCord.serverName + " World:" + GameConstants.WORLD + " is Online! :tada:");
}
}
}
@@ -0,0 +1,21 @@
package com.rs2.integrations.discord.commands;
import com.rs2.game.players.PlayerHandler;
import com.rs2.integrations.discord.JavaCord;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
public class Players implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " players")) {
if (PlayerHandler.getPlayerCount() != 1) {
event.getChannel().sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online (" + PlayerHandler.getNonPlayerCount() + " staff online).");
} else {
event.getChannel().sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online (" + PlayerHandler.getNonPlayerCount() + " staff online).");
}
}
}
}
@@ -0,0 +1,20 @@
package com.rs2.integrations.discord.commands;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
import com.rs2.GameConstants;
public class Vote implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase("::vote")) {
if (GameConstants.WORLD == 1) {
event.getChannel().sendMessage("Visit " + GameConstants.WEBSITE_LINK + "/vote.html then type \"::claimvote\" in-game to receive your reward!");
}
}
}
}
@@ -0,0 +1,19 @@
package com.rs2.integrations.discord.commands;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
import com.rs2.GameConstants;
public class Website implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase("::website") || message.getContent().equalsIgnoreCase("::site")) {
if (GameConstants.WORLD == 1) {
event.getChannel().sendMessage(GameConstants.WEBSITE_LINK);
}
}
}
}
@@ -0,0 +1,31 @@
package com.rs2.integrations.discord.commands.admin;
import com.rs2.integrations.discord.JavaCord;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
public class AdminCommands implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " admincommands")) {
if (event.getMessageAuthor().isServerAdmin()) {
event.getChannel().sendMessage("```fix"
+ System.lineSeparator() +
"::pin/::unpin(Pins/Un-Pins The Replied Mesage)"
+ System.lineSeparator() +
"::purge(Purges The Specified Amount Of Messages From Discord Channel)"
+ System.lineSeparator() +
JavaCord.commandPrefix + " gamekick(Kicks The Specified Player From The GameServer)"
+ System.lineSeparator() +
JavaCord.commandPrefix + " movehome(Moves The Specified Player To Lumbridge)"
+ System.lineSeparator() +
JavaCord.commandPrefix + " update(Triggers A GameServer Update In The Specified Amount Of Seconds)"
+ "```");
} else {
event.getChannel().sendMessage("You do not have permission to perform this command");
}
}
}
}
@@ -0,0 +1,34 @@
package com.rs2.integrations.discord.commands.admin;
import com.rs2.game.players.Client;
import com.rs2.game.players.Player;
import com.rs2.game.players.PlayerHandler;
import com.rs2.integrations.discord.JavaCord;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
import java.util.Objects;
public class GameKick implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
if (event.getMessageContent().startsWith(JavaCord.commandPrefix + " gamekick")) {
String playerToKick = event.getMessageContent().replace( JavaCord.commandPrefix + " gamekick ", "");
for (Player player2 : PlayerHandler.players) {
if (player2 != null) {
if (player2.playerName.equalsIgnoreCase(playerToKick)) {
Client c2 = (Client) player2;
if (event.getMessageAuthor().isServerAdmin() || Objects.equals(event.getMessageAuthor().getIdAsString(), c2.discordCode)) {
event.getChannel().sendMessage(playerToKick + " was kicked by " + event.getMessageAuthor().getDisplayName() + ".");
c2.disconnected = true;
c2.logout(true);
} else {
event.getChannel().sendMessage("You do not have permission to perform this command");
}
break;
}
}
}
}
}
}
@@ -0,0 +1,31 @@
package com.rs2.integrations.discord.commands.admin;
import com.rs2.GameConstants;
import com.rs2.game.players.Client;
import com.rs2.game.players.PlayerHandler;
import com.rs2.integrations.discord.JavaCord;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
public class MoveHome implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
if (event.getMessageContent().startsWith(JavaCord.commandPrefix + " movehome")) {
if (event.getMessageAuthor().isServerAdmin()) {
String teleToMe = event.getMessageContent().replace( JavaCord.commandPrefix + " movehome ", "");
for (int i = 0; i < PlayerHandler.players.length; i++) {
if (PlayerHandler.players[i] != null) {
if (PlayerHandler.players[i].playerName.equalsIgnoreCase(teleToMe)) {
Client p = (Client) PlayerHandler.players[i];
event.getChannel().sendMessage(p.playerName + " has been moved to Lumbridge.");
p.getPlayerAssistant().movePlayer(GameConstants.RESPAWN_X, GameConstants.RESPAWN_Y, 0);
}
}
}
} else {
event.getChannel().sendMessage("You do not have permission to perform this command");
}
}
}
}
@@ -0,0 +1,39 @@
package com.rs2.integrations.discord.commands.admin;
import com.rs2.GameConstants;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
public class Pin implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().startsWith("::pin")) {
if (event.getMessageAuthor().isServerAdmin()) {
if(GameConstants.WORLD == 1) {
if (message.getReferencedMessage().isPresent()) {
Message messageToPin = message.getReferencedMessage().get();
messageToPin.pin();
}
}
} else {
event.getChannel().sendMessage("You do not have permission to perform this command");
}
}
if (message.getContent().startsWith("::unpin")) {
if (event.getMessageAuthor().isServerAdmin()) {
if(GameConstants.WORLD == 1) {
if (message.getReferencedMessage().isPresent()) {
Message messageToUnpin = message.getReferencedMessage().get();
messageToUnpin.unpin();
event.getChannel().sendMessage("Un-Pinned Message: " + messageToUnpin.getLink());
}
}
} else {
event.getChannel().sendMessage("You do not have permission to perform this command");
}
}
}
}
@@ -0,0 +1,40 @@
package com.rs2.integrations.discord.commands.admin;
import com.rs2.GameConstants;
import org.javacord.api.entity.message.Message;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
public class Purge implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
Message message = event.getMessage();
if (message.getContent().startsWith("::purge")) {
if (event.getMessageAuthor().isServerAdmin()) {
if(GameConstants.WORLD == 1) {
int messagesToPurge = Integer.parseInt(event.getMessageContent().replace("::purge ", ""));
if (messagesToPurge > 50) {
event.getChannel().sendMessage("Can't purge more than 50 messages at once.");
return;
}
try {
event.getChannel().sendMessage("Purging " + messagesToPurge + " Messages.");
message.getMessagesBefore(messagesToPurge).get().deleteAll();
Message Purge = message.getMessagesAfter(1).get().getNewestMessage().get();
Purge.edit("Purged " + messagesToPurge + " Messages.");
TimeUnit.SECONDS.sleep(5);
message.delete();
Purge.delete();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
} else {
event.getChannel().sendMessage("You do not have permission to perform this command");
}
}
}
}
@@ -0,0 +1,24 @@
package com.rs2.integrations.discord.commands.admin;
import com.rs2.game.players.PlayerHandler;
import com.rs2.integrations.discord.JavaCord;
import org.javacord.api.event.message.MessageCreateEvent;
import org.javacord.api.listener.message.MessageCreateListener;
public class Update implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent event) {
String seconds = event.getMessageContent().replace(JavaCord.commandPrefix + " update ", "");
if (event.getMessageContent().startsWith(JavaCord.commandPrefix + " update")) {
if (event.getMessageAuthor().isServerAdmin()) {
PlayerHandler.updateSeconds = Integer.parseInt(seconds);
PlayerHandler.updateAnnounced = false;
PlayerHandler.updateRunning = true;
PlayerHandler.updateStartTime = System.currentTimeMillis();
event.getChannel().sendMessage("Server update will begin in " + seconds + " seconds.");
} else {
event.getChannel().sendMessage("You do not have permission to perform this command");
}
}
}
}
@@ -1,83 +0,0 @@
package com.rs2
import com.rs2.integrations.PlayersOnlineWebsite
import com.rs2.integrations.RegisteredAccsWebsite
import com.rs2.integrations.discord.JavaCord
import org.json.JSONObject
import java.io.*
import java.util.stream.Collectors
object ConfigLoader {
@JvmStatic
@Throws(IOException::class)
fun loadSettings(config: String?) {
val br = config?.let { FileReader(it) }?.let { BufferedReader(it) }
val out = br?.lines()?.collect(Collectors.joining("\n"))
val obj = JSONObject(out)
if (obj.has("server_name")) GameConstants.SERVER_NAME = obj.getString("server_name")
if (obj.has("server_test_version")) GameConstants.TEST_VERSION = obj.getDouble("server_test_version")
if (obj.has("gui_enabled")) GameConstants.GUI_ENABLED = obj.getBoolean("gui_enabled")
if (obj.has("website_link")) GameConstants.WEBSITE_LINK = obj.getString("website_link")
if (obj.has("server_debug")) GameConstants.SERVER_DEBUG = obj.getBoolean("server_debug")
if (obj.has("file_server")) GameConstants.FILE_SERVER = obj.getBoolean("file_server")
if (obj.has("world_id")) GameConstants.WORLD = obj.getInt("world_id")
if (obj.has("members_only")) GameConstants.MEMBERS_ONLY = obj.getBoolean("members_only")
if (obj.has("tutorial_island_enabled")) GameConstants.TUTORIAL_ISLAND = obj.getBoolean("tutorial_island_enabled")
if (obj.has("party_room_enabled")) GameConstants.PARTY_ROOM_DISABLED = !obj.getBoolean("party_room_enabled")
if (obj.has("clues_enabled")) GameConstants.CLUES_ENABLED = obj.getBoolean("clues_enabled")
if (obj.has("admin_can_trade")) GameConstants.ADMIN_CAN_TRADE = obj.getBoolean("admin_can_trade")
if (obj.has("admin_can_drop_items")) GameConstants.ADMIN_DROP_ITEMS = obj.getBoolean("admin_can_drop_items")
if (obj.has("admin_can_sell")) GameConstants.ADMIN_CAN_SELL_ITEMS = obj.getBoolean("admin_can_sell")
if (obj.has("respawn_x")) GameConstants.RESPAWN_X = obj.getInt("respawn_x")
if (obj.has("respawn_y")) GameConstants.RESPAWN_Y = obj.getInt("respawn_y")
if (obj.has("save_timer")) GameConstants.SAVE_TIMER = obj.getInt("save_timer")
if (obj.has("timeout")) GameConstants.TIMEOUT = obj.getInt("timeout")
if (obj.has("item_requirements")) GameConstants.ITEM_REQUIREMENTS = obj.getBoolean("item_requirements")
if (obj.has("variable_xp_rate")) GameConstants.VARIABLE_XP_RATE = obj.getBoolean("variable_xp_rate")
if (obj.has("xp_rate")) GameConstants.XP_RATE = obj.getDouble("xp_rate")
if (obj.has("max_players")) GameConstants.MAX_PLAYERS = obj.getInt("max_players")
if (obj.has("variable_xp_rates")) {
val rates = obj.optJSONArray("variable_xp_rates")
for (i in 0 until rates.length()) {
GameConstants.VARIABLE_XP_RATES[i] = rates.optInt(i)
}
}
if (obj.has("website_integration")) GameConstants.WEBSITE_INTEGRATION = obj.getBoolean("website_integration")
}
private fun initialize() {
val main = JSONObject()
main
.put("bot-token", "")
.put("websitepass", "")
.put("erssecret", "")
try {
val br = BufferedWriter(FileWriter("data/secrets.json"))
br.write(main.toString())
br.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
@JvmStatic
@Throws(IOException::class)
fun loadSecrets() {
if (!File("data/secrets.json").exists()) {
initialize()
println("Please open \"data/secrets.json\" file and enter your discord token bot there!")
println("Please open \"data/secrets.json\" file and enter your Website Password there!")
} else {
val br = BufferedReader(FileReader("data/secrets.json"))
val out = br.lines().collect(Collectors.joining("\n"))
val obj = JSONObject(out)
/*
* Sets External Services Vars
*/if (obj.has("bot-token")) JavaCord.token = obj.getString("bot-token")
if (obj.has("websitepass")) PlayersOnlineWebsite.password = obj.getString("websitepass")
RegisteredAccsWebsite.password = obj.getString("websitepass")
if (obj.has("erssecret")) GameEngine.ersSecret = obj.getString("erssecret")
}
}
}
@@ -1,171 +0,0 @@
package com.rs2
object GameConstants {
/**
* The Variables Below Can Be Also Changed On Server Startup By Using The ConfigLoader
*
* SERVER_NAME Sets The Name The Server Will Use
* WEBSITE_LINK Defines The Server Website Links
* WORLD Sets The Servers World ID
* GUI_ENABLED Enables/Disables The Server Control Panel
* MAX_PLAYERS Sets The Maximum Amount Of Players Allow To Be Logged In At Once
* TIMEOUT Sets The Amount Of Time Before A Player Timeouts From A Bad Connection
* SAVE_TIMER Sets In Seconds How Often The Server Shouls Auto-Save All Characters
* RESPAWN_X Sets The X Coordinate That You Will Respawn At After Death
* RESPAWN_Y Sets The Y Coordinate That You Will Respawn At After Death
* FILE_SERVER Sets Whether The FileServer Should Run With The Server
* SERVER_DEBUG Sets Whether The Server Should Start In Debug Mode
* MEMBERS_ONLY Sets Whether The World Is Members Only
* TUTORIAL_ISLAND Enables/Disables Tutorial Island For Players On First Login
* PARTY_ROOM_DISABLED Enables/Disables The Party Room Should Be Disabled
* CLUES_ENABLED Enables/Disables Clue Scrolls
* ITEM_REQUIREMENTS Enables/Disables Item Requirements for All Players
* ADMIN_CAN_TRADE Defines Whether Admins Can Trade
* ADMIN_DROP_ITEMS Defines Whether Admins Can Drop Items
* ADMIN_CAN_SELL_ITEMS Defines Whether Admins Can Sell Items
* VARIABLE_XP_RATE Allows Players To Choose An XP Rate Set In VARIABLE_XP_RATES
* VARIABLE_XP_RATES Defines The XP Rates That Should Be Available To Players When VARIABLE_XP_RATES is true(Array Must Contain Four Entries)
* XP_RATE Sets The XP Rate Multiplier For All Players/Skills If VARIABLE_XP_RATES is false
* WEBSITE_INTEGRATION Enables/Disables Website Features(Total Accounts Registered & Players Online)
*/
@JvmField
var SERVER_NAME = "2006Scape"
@JvmField
var WEBSITE_LINK = "https://2006Scape.org"
@JvmField
var WORLD = 1
@JvmField
var GUI_ENABLED: Boolean = false
@JvmField
var MAX_PLAYERS = 200
@JvmField
var TIMEOUT = 60
@JvmField
var SAVE_TIMER = 120
@JvmField
var RESPAWN_X = 3222
@JvmField
var RESPAWN_Y = 3218
@JvmField
var FILE_SERVER = true
@JvmField
var SERVER_DEBUG = false
@JvmField
var MEMBERS_ONLY = false
@JvmField
var TUTORIAL_ISLAND = false
@JvmField
var PARTY_ROOM_DISABLED = false
@JvmField
var CLUES_ENABLED = true
@JvmField
var ITEM_REQUIREMENTS = true
@JvmField
var ADMIN_CAN_TRADE = false
@JvmField
var ADMIN_DROP_ITEMS = false
@JvmField
var ADMIN_CAN_SELL_ITEMS = false
@JvmField
var VARIABLE_XP_RATE = false
@JvmField
var WEBSITE_INTEGRATION = false
@JvmField
var VARIABLE_XP_RATES = intArrayOf(1, 2, 5, 10)
@JvmField
var TEST_VERSION = 2.3
@JvmField
var XP_RATE = 1.0
/**
* The Variables Below Should Only Be Changed If You Understand What You Are Doing
*/
const val ITEM_LIMIT = 15000
const val MAXITEM_AMOUNT = Int.MAX_VALUE
const val IPS_ALLOWED = 250
const val CONNECTION_DELAY = 100
const val sendServerPackets = false
const val SOUND = true
const val GUILDS = true
@JvmField
var SIDEBARS = intArrayOf(
2423, 3917, 638, 3213, 1644, 5608, 1151,
18128, 5065, 5715, 2449, 904, 147, 962
)
@JvmField
val FUN_WEAPONS = intArrayOf(
2460, 2461, 2462, 2463, 2464,
2465, 2466, 2467, 2468, 2469, 2470, 2471, 2471, 2473, 2474, 2475,
2476, 2477
) // fun weapons for dueling
const val DUELING_RESPAWN_X = 3362
const val DUELING_RESPAWN_Y = 3263
const val NO_TELEPORT_WILD_LEVEL = 20
const val NPC_RANDOM_WALK_DISTANCE = 5
const val NPC_FOLLOW_DISTANCE = 10
@JvmField
val UNDEAD = arrayOf(
"armoured zombie",
"ankous",
"banshee",
"crawling hand",
"dried zombie",
"ghost",
"ghostly warrior",
"ghast",
"mummy",
"mighty banshee",
"reventant imp",
"reventant goblin",
"reventant icefiend",
"reventant pyrefiend",
"reventant hobgoblin",
"reventant vampyre",
"reventant werewolf",
"reventant cyclops",
"reventant darkbeast",
"reventant demon",
"reventant ork",
"reventant hellhound",
"reventant knight",
"reventant dragon",
"shade",
"skeleton",
"skeleton brute",
"skeleton thug",
"skeleton warload",
"summoned zombie",
"skorge",
"tortured soul",
"undead chicken",
"undead cow",
"undead one",
"undead troll",
"zombie",
"zombie rat",
"zogre"
)
const val CYCLE_TIME = 600
const val BUFFER_SIZE = 10000
const val ATTACK = 0
const val DEFENCE = 1
const val STRENGTH = 2
const val HITPOINTS = 3
const val RANGED = 4
const val PRAYER = 5
const val MAGIC = 6
const val COOKING = 7
const val WOODCUTTING = 8
const val FLETCHING = 9
const val FISHING = 10
const val FIREMAKING = 11
const val CRAFTING = 12
const val SMITHING = 13
const val MINING = 14
const val HERBLORE = 15
const val AGILITY = 16
const val THIEVING = 17
const val SLAYER = 18
const val FARMING = 19
const val RUNECRAFTING = 20
}
@@ -1,38 +0,0 @@
package com.rs2.integrations.discord
import com.rs2.game.players.PlayerHandler
object DiscordActivity {
@JvmField
var playerCount = false
private var count = 50
@JvmStatic
fun updateActivity() {
try {
if (JavaCord.token != null && JavaCord.token != "") {
if (count == 0) {
if (PlayerHandler.getPlayerCount() != 1) {
JavaCord.api!!.updateActivity(PlayerHandler.getPlayerCount().toString() + " Players Online")
println("Discord Activity Updated")
count = 100
} else {
JavaCord.api!!.updateActivity(PlayerHandler.getPlayerCount().toString() + " Player Online")
println("Discord Activity Updated")
count = 100
}
} else {
count--
}
}
} catch (e: Exception) {
println("Could not set Discord activity: $e")
println("Null checks")
try {
println("JavaCord.api: " + JavaCord.api)
println("PlayerHandler.getPlayerCount: " + PlayerHandler.getPlayerCount())
} catch (e2: Exception) {
println(e2)
}
}
}
}
@@ -1,74 +0,0 @@
package com.rs2.integrations.discord
import com.rs2.GameConstants
import com.rs2.integrations.discord.commands.*
import com.rs2.integrations.discord.commands.admin.*
import org.javacord.api.DiscordApi
import org.javacord.api.DiscordApiBuilder
import org.javacord.api.entity.channel.TextChannel
import org.javacord.api.entity.message.MessageBuilder
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.util.logging.ExceptionLogger
import java.io.IOException
import java.util.*
/**
* @author Patrity || https://www.rune-server.ee/members/patrity/
*/
object JavaCord {
var serverName: String = GameConstants.SERVER_NAME
var commandPrefix = "::w" + GameConstants.WORLD
@JvmField
var token: String? = null
var api: DiscordApi? = null
@JvmStatic
@Throws(IOException::class)
fun init() {
if (token != null && token != "") { //If the token was loaded by loadSettings:
DiscordApiBuilder().setToken(token).login().thenAccept { api: DiscordApi ->
try {
JavaCord.api = api
//System.out.println("You can invite the bot by using the following url: " + api.createBotInvite());
api.addListener(Commands())
api.addListener(Forum())
api.addListener(Hiscores())
api.addListener(Issues())
api.addListener(Link())
api.addListener(Online())
api.addListener(Players())
api.addListener(Vote())
api.addListener(Website())
//Admin Commands
api.addListener(AdminCommands())
api.addListener(GameKick())
api.addListener(MoveHome())
api.addListener(Update())
api.addListener(Pin())
api.addListener(Purge())
//api.addListener(new Link());
//api.addListener(new WelcomeMessage());
if (!DiscordActivity.playerCount) {
api.updateActivity(GameConstants.WEBSITE_LINK)
}
api.addMessageCreateListener { event: MessageCreateEvent? -> }
} catch (e: Exception) {
e.printStackTrace()
}
} // Log exceptions (might not work now that we try(catch)
.exceptionally(ExceptionLogger.get())
} else {
println("Discord Token Not Set So Bot Not Loaded")
}
}
fun sendMessage(channel: String?, msg: String?) {
try {
MessageBuilder()
.append(msg)
.send(api!!.getTextChannelsByNameIgnoreCase(channel).toTypedArray()[0] as TextChannel)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
@@ -1,33 +0,0 @@
package com.rs2.integrations.discord.commands
import com.rs2.integrations.discord.JavaCord
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Commands : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals(JavaCord.commandPrefix + " commands", ignoreCase = true)) {
event.channel.sendMessage(
"```fix"
+ System.lineSeparator() +
"::link"
+ System.lineSeparator() +
"::forum/::forums"
+ System.lineSeparator() +
JavaCord.commandPrefix + " gamekick(if account id linked)"
+ System.lineSeparator() +
JavaCord.commandPrefix + " hiscores/" + JavaCord.commandPrefix + " highscores"
+ System.lineSeparator() +
"::issues/::bugs"
+ System.lineSeparator() +
JavaCord.commandPrefix + " online"
+ System.lineSeparator() +
"::vote"
+ System.lineSeparator() +
"::website/::site"
+ "```"
)
}
}
}
@@ -1,20 +0,0 @@
package com.rs2.integrations.discord.commands
import com.rs2.GameConstants
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Forum : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals("::forum", ignoreCase = true) || message.content.equals(
"::forums",
ignoreCase = true
)
) {
if (GameConstants.WORLD == 1) {
event.channel.sendMessage(GameConstants.WEBSITE_LINK + "/forums/index.php")
}
}
}
}
@@ -1,19 +0,0 @@
package com.rs2.integrations.discord.commands
import com.rs2.GameConstants
import com.rs2.integrations.discord.JavaCord
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Hiscores : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals(JavaCord.commandPrefix + " hiscores", ignoreCase = true) || message.content.equals(
JavaCord.commandPrefix + " highscores",
ignoreCase = true
)
) {
event.channel.sendMessage(GameConstants.WEBSITE_LINK + "/hiscores.html")
}
}
}
@@ -1,20 +0,0 @@
package com.rs2.integrations.discord.commands
import com.rs2.GameConstants
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Issues : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals("::issues", ignoreCase = true) || message.content.equals(
"::bugs",
ignoreCase = true
)
) {
if (GameConstants.WORLD == 1) {
event.channel.sendMessage("https://github.com/2006-Scape/2006Scape/issues")
}
}
}
}
@@ -1,14 +0,0 @@
package com.rs2.integrations.discord.commands
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Link : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals("::link", ignoreCase = true)) {
event.channel.sendMessage(message.author.asUser().get().mentionTag + ", Please check your DM's to continue.")
message.author.asUser().get().sendMessage("Please copy/paste the following in-game to link your Discord account: \n ```::link " + message.author.asUser().get().idAsString + "```")
}
}
}
@@ -1,15 +0,0 @@
package com.rs2.integrations.discord.commands
import com.rs2.GameConstants
import com.rs2.integrations.discord.JavaCord
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Online : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals(JavaCord.commandPrefix + " online", ignoreCase = true)) {
event.channel.sendMessage(":tada: " + JavaCord.serverName + " World:" + GameConstants.WORLD + " is Online! :tada:")
}
}
}
@@ -1,19 +0,0 @@
package com.rs2.integrations.discord.commands
import com.rs2.game.players.PlayerHandler
import com.rs2.integrations.discord.JavaCord
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Players : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals(JavaCord.commandPrefix + " players", ignoreCase = true)) {
if (PlayerHandler.getPlayerCount() != 1) {
event.channel.sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online (" + PlayerHandler.getNonPlayerCount() + " staff online).")
} else {
event.channel.sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online (" + PlayerHandler.getNonPlayerCount() + " staff online).")
}
}
}
}
@@ -1,16 +0,0 @@
package com.rs2.integrations.discord.commands
import com.rs2.GameConstants
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Vote : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals("::vote", ignoreCase = true)) {
if (GameConstants.WORLD == 1) {
event.channel.sendMessage("Visit " + GameConstants.WEBSITE_LINK + "/vote.html then type \"::claimvote\" in-game to receive your reward!")
}
}
}
}
@@ -1,20 +0,0 @@
package com.rs2.integrations.discord.commands
import com.rs2.GameConstants
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Website : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals("::website", ignoreCase = true) || message.content.equals(
"::site",
ignoreCase = true
)
) {
if (GameConstants.WORLD == 1) {
event.channel.sendMessage(GameConstants.WEBSITE_LINK)
}
}
}
}
@@ -1,31 +0,0 @@
package com.rs2.integrations.discord.commands.admin
import com.rs2.integrations.discord.JavaCord
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class AdminCommands : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.equals(JavaCord.commandPrefix + " admincommands", ignoreCase = true)) {
if (event.messageAuthor.isServerAdmin) {
event.channel.sendMessage(
"```fix"
+ System.lineSeparator() +
"::pin/::unpin(Pins/Un-Pins The Replied Mesage)"
+ System.lineSeparator() +
"::purge(Purges The Specified Amount Of Messages From Discord Channel)"
+ System.lineSeparator() +
JavaCord.commandPrefix + " gamekick(Kicks The Specified Player From The GameServer)"
+ System.lineSeparator() +
JavaCord.commandPrefix + " movehome(Moves The Specified Player To Lumbridge)"
+ System.lineSeparator() +
JavaCord.commandPrefix + " update(Triggers A GameServer Update In The Specified Amount Of Seconds)"
+ "```"
)
} else {
event.channel.sendMessage("You do not have permission to perform this command")
}
}
}
}
@@ -1,30 +0,0 @@
package com.rs2.integrations.discord.commands.admin
import com.rs2.game.players.Client
import com.rs2.game.players.PlayerHandler
import com.rs2.integrations.discord.JavaCord
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class GameKick : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
if (event.messageContent.startsWith(JavaCord.commandPrefix + " gamekick")) {
val playerToKick = event.messageContent.replace(JavaCord.commandPrefix + " gamekick ", "")
for (player2 in PlayerHandler.players) {
if (player2 != null) {
if (player2.playerName.equals(playerToKick, ignoreCase = true)) {
val c2 = player2 as Client
if (event.messageAuthor.isServerAdmin || event.messageAuthor.idAsString == c2.discordCode) {
event.channel.sendMessage(playerToKick + " was kicked by " + event.messageAuthor.displayName + ".")
c2.disconnected = true
c2.logout(true)
} else {
event.channel.sendMessage("You do not have permission to perform this command")
}
break
}
}
}
}
}
}
@@ -1,29 +0,0 @@
package com.rs2.integrations.discord.commands.admin
import com.rs2.GameConstants
import com.rs2.game.players.Client
import com.rs2.game.players.PlayerHandler
import com.rs2.integrations.discord.JavaCord
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class MoveHome : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
if (event.messageContent.startsWith(JavaCord.commandPrefix + " movehome")) {
if (event.messageAuthor.isServerAdmin) {
val teleToMe = event.messageContent.replace(JavaCord.commandPrefix + " movehome ", "")
for (i in PlayerHandler.players.indices) {
if (PlayerHandler.players[i] != null) {
if (PlayerHandler.players[i].playerName.equals(teleToMe, ignoreCase = true)) {
val p = PlayerHandler.players[i] as Client
event.channel.sendMessage(p.playerName + " has been moved to Lumbridge.")
p.playerAssistant.movePlayer(GameConstants.RESPAWN_X, GameConstants.RESPAWN_Y, 0)
}
}
}
} else {
event.channel.sendMessage("You do not have permission to perform this command")
}
}
}
}
@@ -1,36 +0,0 @@
package com.rs2.integrations.discord.commands.admin
import com.rs2.GameConstants
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Pin : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.startsWith("::pin")) {
if (event.messageAuthor.isServerAdmin) {
if (GameConstants.WORLD == 1) {
if (message.referencedMessage.isPresent) {
val messageToPin = message.referencedMessage.get()
messageToPin.pin()
}
}
} else {
event.channel.sendMessage("You do not have permission to perform this command")
}
}
if (message.content.startsWith("::unpin")) {
if (event.messageAuthor.isServerAdmin) {
if (GameConstants.WORLD == 1) {
if (message.referencedMessage.isPresent) {
val messageToUnpin = message.referencedMessage.get()
messageToUnpin.unpin()
event.channel.sendMessage("Un-Pinned Message: " + messageToUnpin.link)
}
}
} else {
event.channel.sendMessage("You do not have permission to perform this command")
}
}
}
}
@@ -1,39 +0,0 @@
package com.rs2.integrations.discord.commands.admin
import com.rs2.GameConstants
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
import java.util.concurrent.ExecutionException
import java.util.concurrent.TimeUnit
class Purge : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val message = event.message
if (message.content.startsWith("::purge")) {
if (event.messageAuthor.isServerAdmin) {
if (GameConstants.WORLD == 1) {
val messagesToPurge = event.messageContent.replace("::purge ", "").toInt()
if (messagesToPurge > 50) {
event.channel.sendMessage("Can't purge more than 50 messages at once.")
return
}
try {
event.channel.sendMessage("Purging $messagesToPurge Messages.")
message.getMessagesBefore(messagesToPurge).get().deleteAll()
val Purge = message.getMessagesAfter(1).get().newestMessage.get()
Purge.edit("Purged $messagesToPurge Messages.")
TimeUnit.SECONDS.sleep(5)
message.delete()
Purge.delete()
} catch (e: InterruptedException) {
e.printStackTrace()
} catch (e: ExecutionException) {
e.printStackTrace()
}
}
} else {
event.channel.sendMessage("You do not have permission to perform this command")
}
}
}
}
@@ -1,23 +0,0 @@
package com.rs2.integrations.discord.commands.admin
import com.rs2.game.players.PlayerHandler
import com.rs2.integrations.discord.JavaCord
import org.javacord.api.event.message.MessageCreateEvent
import org.javacord.api.listener.message.MessageCreateListener
class Update : MessageCreateListener {
override fun onMessageCreate(event: MessageCreateEvent) {
val seconds = event.messageContent.replace(JavaCord.commandPrefix + " update ", "")
if (event.messageContent.startsWith(JavaCord.commandPrefix + " update")) {
if (event.messageAuthor.isServerAdmin) {
PlayerHandler.updateSeconds = seconds.toInt()
PlayerHandler.updateAnnounced = false
PlayerHandler.updateRunning = true
PlayerHandler.updateStartTime = System.currentTimeMillis()
event.channel.sendMessage("Server update will begin in $seconds seconds.")
} else {
event.channel.sendMessage("You do not have permission to perform this command")
}
}
}
}