Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add experimental, undocumented BungeeTag command
It needs to be vigorously tested..
- Loading branch information
Showing
8 changed files
with
188 additions
and
2 deletions.
There are no files selected for viewing
2 changes: 1 addition & 1 deletion
2
...way/depenizen/commands/BungeeCommand.java → ...enizen/commands/bungee/BungeeCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
75 changes: 75 additions & 0 deletions
75
src/main/java/net/gnomeffinway/depenizen/commands/bungee/BungeeTagCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package net.gnomeffinway.depenizen.commands.bungee; | ||
|
||
import net.aufdemrand.denizen.tags.BukkitTagContext; | ||
import net.aufdemrand.denizen.utilities.DenizenAPI; | ||
import net.aufdemrand.denizencore.exceptions.CommandExecutionException; | ||
import net.aufdemrand.denizencore.exceptions.InvalidArgumentsException; | ||
import net.aufdemrand.denizencore.objects.Element; | ||
import net.aufdemrand.denizencore.objects.ObjectFetcher; | ||
import net.aufdemrand.denizencore.objects.aH; | ||
import net.aufdemrand.denizencore.scripts.ScriptEntry; | ||
import net.aufdemrand.denizencore.scripts.commands.AbstractCommand; | ||
import net.aufdemrand.denizencore.tags.TagContext; | ||
import net.aufdemrand.denizencore.tags.TagManager; | ||
import net.aufdemrand.denizencore.utilities.debugging.dB; | ||
import net.gnomeffinway.depenizen.objects.bungee.dServer; | ||
import net.gnomeffinway.depenizen.support.bungee.BungeeSupport; | ||
import net.gnomeffinway.depenizen.support.bungee.packets.ClientPacketOutTag; | ||
|
||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
public class BungeeTagCommand extends AbstractCommand { | ||
|
||
@Override | ||
public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException { | ||
|
||
for (aH.Argument arg : aH.interpret(scriptEntry.getOriginalArguments())) { | ||
|
||
if (arg.matchesPrefix("server", "s")) { | ||
scriptEntry.addObject("server", dServer.valueOf(TagManager.tag(arg.getValue(), | ||
DenizenAPI.getCurrentInstance().getTagContext(scriptEntry)))); | ||
} | ||
|
||
else { | ||
scriptEntry.addObject("tag", arg.asElement()); | ||
} | ||
|
||
} | ||
|
||
if (!scriptEntry.hasObject("tag") || !scriptEntry.hasObject("server")) { | ||
throw new InvalidArgumentsException("Must specify a tag and a server!"); | ||
} | ||
} | ||
|
||
@Override | ||
public void execute(ScriptEntry scriptEntry) throws CommandExecutionException { | ||
|
||
Element tag = scriptEntry.getElement("tag"); | ||
dServer server = scriptEntry.getdObject("server"); | ||
|
||
dB.report(scriptEntry, getName(), tag.debug() + server.debug()); | ||
|
||
if (BungeeSupport.isSocketConnected()) { | ||
if (!scriptEntry.shouldWaitFor()) { | ||
throw new CommandExecutionException("Currently, this command only works if you ~wait for it!"); | ||
} | ||
BungeeSupport.getSocketClient().send(new ClientPacketOutTag(nextId++, tag.asString(), server.getName())); | ||
} | ||
else { | ||
dB.echoError("Server is not connected to a BungeeCord Socket."); | ||
} | ||
} | ||
|
||
private static int nextId = 0; | ||
|
||
private static Map<Integer, ScriptEntry> waitingEntries = new HashMap<Integer, ScriptEntry>(); | ||
|
||
public static void returnTag(int id, String value) { | ||
ScriptEntry scriptEntry = waitingEntries.get(id); | ||
scriptEntry.addObject("result", ObjectFetcher.pickObjectFor(value)); | ||
scriptEntry.setFinished(true); | ||
waitingEntries.remove(id); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 30 additions & 0 deletions
30
src/main/java/net/gnomeffinway/depenizen/support/bungee/packets/ClientPacketInTag.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package net.gnomeffinway.depenizen.support.bungee.packets; | ||
|
||
public class ClientPacketInTag extends Packet { | ||
|
||
private int id; | ||
private String tag; | ||
private String from; | ||
|
||
public ClientPacketInTag() { | ||
} | ||
|
||
public int getId() { | ||
return id; | ||
} | ||
|
||
public String getTag() { | ||
return tag; | ||
} | ||
|
||
public String getFrom() { | ||
return from; | ||
} | ||
|
||
@Override | ||
public void deserialize(DataDeserializer deserializer) { | ||
this.id = deserializer.readInt(); | ||
this.tag = deserializer.readString(); | ||
this.from = deserializer.readString(); | ||
} | ||
} |
24 changes: 24 additions & 0 deletions
24
src/main/java/net/gnomeffinway/depenizen/support/bungee/packets/ClientPacketInTagParsed.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package net.gnomeffinway.depenizen.support.bungee.packets; | ||
|
||
public class ClientPacketInTagParsed extends Packet { | ||
|
||
private int id; | ||
private String result; | ||
|
||
public ClientPacketInTagParsed() { | ||
} | ||
|
||
public int getId() { | ||
return id; | ||
} | ||
|
||
public String getResult() { | ||
return result; | ||
} | ||
|
||
@Override | ||
public void deserialize(DataDeserializer deserializer) { | ||
this.id = deserializer.readInt(); | ||
this.result = deserializer.readString(); | ||
} | ||
} |
22 changes: 22 additions & 0 deletions
22
src/main/java/net/gnomeffinway/depenizen/support/bungee/packets/ClientPacketOutTag.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package net.gnomeffinway.depenizen.support.bungee.packets; | ||
|
||
public class ClientPacketOutTag extends Packet { | ||
|
||
private int id; | ||
private String tag; | ||
private String destination; | ||
|
||
public ClientPacketOutTag(int id, String tag, String destination) { | ||
this.id = id; | ||
this.tag = tag; | ||
this.destination = destination; | ||
} | ||
|
||
@Override | ||
public void serialize(DataSerializer serializer) { | ||
serializer.writeInt(0x05); | ||
serializer.writeInt(id); | ||
serializer.writeString(tag); | ||
serializer.writeString(destination); | ||
} | ||
} |
22 changes: 22 additions & 0 deletions
22
...main/java/net/gnomeffinway/depenizen/support/bungee/packets/ClientPacketOutTagParsed.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package net.gnomeffinway.depenizen.support.bungee.packets; | ||
|
||
public class ClientPacketOutTagParsed extends Packet { | ||
|
||
private int id; | ||
private String result; | ||
private String returnToSender; | ||
|
||
public ClientPacketOutTagParsed(int id, String result, String returnToSender) { | ||
this.id = id; | ||
this.result = result; | ||
this.returnToSender = returnToSender; | ||
} | ||
|
||
@Override | ||
public void serialize(DataSerializer serializer) { | ||
serializer.writeInt(0x06); | ||
serializer.writeInt(id); | ||
serializer.writeString(result); | ||
serializer.writeString(returnToSender); | ||
} | ||
} |