Skip to content

Commit

Permalink
AriKeysPlugin Support (#396)
Browse files Browse the repository at this point in the history
* AriKeysPlugin Support

AriKeysPlugin support, deprecation warning on mythickeys for 1.19

* add AriKeys

* nmsversion checks + softdepend

add snmsversion checks and arikeys as softdepend
  • Loading branch information
Hydroxycobalamin committed Nov 17, 2022
1 parent c765e5e commit 150b609
Show file tree
Hide file tree
Showing 9 changed files with 189 additions and 0 deletions.
1 change: 1 addition & 0 deletions Docs/BukkitPlugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
Supported Plugins: (And the sources we acquired Jar files from.)

- AreaShop (https://www.spigotmc.org/resources/areashop.2991/)
- AriKeys (https://www.spigotmc.org/resources/arikeysplugin-custom-keybinds.105968/)
- ASkyBlock (https://www.spigotmc.org/resources/a-skyblock.1220/)
- BetonQuest (https://www.spigotmc.org/resources/betonquest.2117/)
- BigDoors (https://www.spigotmc.org/resources/big-doors.58669)
Expand Down
7 changes: 7 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,13 @@
<scope>system</scope>
<systemPath>${basedir}/lib/AreaShop.jar</systemPath>
</dependency>
<dependency>
<groupId>eu.asangarin</groupId>
<artifactId>arikeys</artifactId>
<version>2.1</version>
<scope>system</scope>
<systemPath>${basedir}/lib/arikeys.jar</systemPath>
</dependency>
<dependency>
<groupId>com.wasteofplastic</groupId>
<artifactId>askyblock</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ public void loadBridge(String name, Supplier<Bridge> bridgeSupplier) {
public void registerCoreBridges() {
// Yes it needs to be `new MyBridge()` not `MyBridge::new` - this is due to an error in the Java runtime.
registerBridge("AreaShop", () -> new AreaShopBridge());
registerBridge("AriKeys", () -> new AriKeysBridge());
registerBridge("ASkyBlock", () -> new ASkyBlockBridge());
registerBridge("BetonQuest", () -> new BetonQuestBridge());
registerBridge("BigDoors", () -> new BigDoorsBridge());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.denizenscript.depenizen.bukkit.bridges;

import com.denizenscript.denizencore.events.ScriptEvent;
import com.denizenscript.depenizen.bukkit.Bridge;
import com.denizenscript.depenizen.bukkit.events.arikeys.AriKeysKeyPressScriptEvent;
import com.denizenscript.depenizen.bukkit.events.arikeys.AriKeysKeyReleaseScriptEvent;


public class AriKeysBridge extends Bridge {

@Override
public void init() {
ScriptEvent.registerScriptEvent(AriKeysKeyReleaseScriptEvent.class);
ScriptEvent.registerScriptEvent(AriKeysKeyPressScriptEvent.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.denizenscript.depenizen.bukkit.events.arikeys;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import eu.asangarin.arikeys.api.AriKeyPressEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class AriKeysKeyPressScriptEvent extends BukkitScriptEvent implements Listener {

// <--[event]
// @Events
// arikeys key pressed
//
// @Location true
//
// @Switch id:<id> to only process the event if the key ID matches the given text matcher.
//
// @Triggers When a key is pressed by a client running AriKeys, if that key is in the AriKeys config.
//
// @Context
// <context.id> Returns the ID of the key that was pressed according to the AriKeys config, as a namespaced key.
//
// @Player Always.
//
// @Plugin Depenizen, AriKeys
//
// @Group Depenizen
//
// -->

public AriKeysKeyPressScriptEvent() {
registerCouldMatcher("arikeys key pressed");
registerSwitches("id");
}

public AriKeyPressEvent event;

@Override
public boolean matches(ScriptPath path) {
if (!runGenericSwitchCheck(path, "id", String.valueOf(event.getId()))) {
return false;
}
if (!runInCheck(path, event.getPlayer().getLocation())) {
return false;
}
return super.matches(path);
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(event.getPlayer());
}

@Override
public ObjectTag getContext(String name) {
switch (name) {
case "id": return new ElementTag(event.getId().toString());
}
return super.getContext(name);
}

@EventHandler
public void onKeyPress(AriKeyPressEvent event) {
this.event = event;
fire(event);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.denizenscript.depenizen.bukkit.events.arikeys;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import eu.asangarin.arikeys.api.AriKeyReleaseEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class AriKeysKeyReleaseScriptEvent extends BukkitScriptEvent implements Listener {

// <--[event]
// @Events
// arikeys key released
//
// @Location true
//
// @Switch id:<id> to only process the event if the key ID matches the given text matcher.
//
// @Triggers When a key stops being pressed by a client running AriKeys, if that key is in the AriKeys config.
//
// @Context
// <context.id> Returns the ID of the key that was released according to the AriKeys config, as a namespaced key.
//
// @Player Always.
//
// @Plugin Depenizen, AriKeys
//
// @Group Depenizen
//
// -->

public AriKeysKeyReleaseScriptEvent() {
registerCouldMatcher("arikeys key released");
registerSwitches("id");
}

public AriKeyReleaseEvent event;

@Override
public boolean matches(ScriptPath path) {
if (!runGenericSwitchCheck(path, "id", String.valueOf(event.getId()))) {
return false;
}
if (!runInCheck(path, event.getPlayer().getLocation())) {
return false;
}
return super.matches(path);
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(event.getPlayer());
}

@Override
public ObjectTag getContext(String name) {
switch (name) {
case "id": return new ElementTag(event.getId().toString());
}
return super.getContext(name);
}

@EventHandler
public void onKeyRelease(AriKeyReleaseEvent event) {
this.event = event;
fire(event);
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
package com.denizenscript.depenizen.bukkit.events.mythickeys;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.denizenscript.denizencore.utilities.debugging.SlowWarning;
import com.denizenscript.denizencore.utilities.debugging.Warning;
import eu.asangarin.mythickeys.api.MythicKeyPressEvent;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

Expand All @@ -30,6 +35,8 @@ public class MythicKeysKeyPressScriptEvent extends BukkitScriptEvent implements
//
// @Group Depenizen
//
// @Warning For 1.19+ servers use AriKeysPlugin.
//
// -->

public MythicKeysKeyPressScriptEvent() {
Expand All @@ -38,6 +45,7 @@ public MythicKeysKeyPressScriptEvent() {
}

public MythicKeyPressEvent event;
public Warning outdatedMythicKeys = new Warning("mythicKeysOutdated", "MythicKeys is outdated. Use the plugin 'AriKeysPlugin' for 1.19+ servers.");

@Override
public boolean matches(ScriptPath path) {
Expand All @@ -47,6 +55,9 @@ public boolean matches(ScriptPath path) {
if (!runInCheck(path, event.getPlayer().getLocation())) {
return false;
}
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
outdatedMythicKeys.warn();
}
return super.matches(path);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package com.denizenscript.depenizen.bukkit.events.mythickeys;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.denizenscript.denizencore.utilities.debugging.Warning;
import eu.asangarin.mythickeys.api.MythicKeyReleaseEvent;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

Expand All @@ -30,6 +34,8 @@ public class MythicKeysKeyReleaseScriptEvent extends BukkitScriptEvent implement
//
// @Group Depenizen
//
// @Warning For 1.19+ servers use AriKeysPlugin.
//
// -->

public MythicKeysKeyReleaseScriptEvent() {
Expand All @@ -38,6 +44,7 @@ public MythicKeysKeyReleaseScriptEvent() {
}

public MythicKeyReleaseEvent event;
public Warning outdatedMythicKeys = new Warning("mythicKeysOutdated", "MythicKeys is outdated. Use the plugin 'AriKeysPlugin' for 1.19+ servers.");

@Override
public boolean matches(ScriptPath path) {
Expand All @@ -47,6 +54,9 @@ public boolean matches(ScriptPath path) {
if (!runInCheck(path, event.getPlayer().getLocation())) {
return false;
}
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
outdatedMythicKeys.warn();
}
return super.matches(path);
}

Expand Down
1 change: 1 addition & 0 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ api-version: '1.13'

softdepend:
- AreaShop
- AriKeys
- ASkyBlock
- BetonQuest
- BigDoors
Expand Down

0 comments on commit 150b609

Please sign in to comment.