21 KiB
lastUpdated | aside | sidebar | sidebarDepth | title | description | meta_keywords | meta_url |
---|---|---|---|---|---|---|---|
true | true | true | 3 | API Informatie | API informatie over de ultimate kingdom plugin | kingdom plugin, ultimate, minecraft plugin, spigot plugin, gameplay, API | https://ultimatekingdom.nl |
API
Gradle
repositories
repositories {
maven { url "https://repo.recorehosting.com/repository/maven-snapshots/" } // snapshots
maven { url "https://repo.recorehosting.com/repository/development/" } // beta & release candidate
dependencies
Kingdom plugin
compileOnly 'me.map:ultimatekingdom:1.45.4.1-SNAPSHOT' //development voor deze versie is gestopt
compileOnly 'me.map:ultimatekingdom:2.12.0.0-RC1'
Exchange
compileOnly 'me.map.exchange:API:2.12.0.0-RC1'
compileOnly 'me.map.exchange:bungeecord:2.12.0.0-RC1'
compileOnly 'me.map.exchange:velocity:2.12.0.0-RC1'
Toegang tot API
De plugin is via een static class
bereikbaar.
UltimateKingdom. .....
UltimateKingdom.Kingdoms() .....
UltimateKingdom.getKingdomServer()
voorbeeld 1
public class myClass {
public void doSomething() {
Kingdom k1 = UltimateKingdom.Kingdoms().getKingdom("kingdomname"); //haal een kingdom op
Kingdom k = Kingdom.get("anotherkingdomname"); // mag ook
k1.setSlogan("&athis &fwill &cbe &6the &8new &aslogan" ,(result,kingdom) -> {
if (result.isOk()) { //result is ok...
Bukkit.getLogger().info("Changed kingdom slogan to " + kingdom.getSlogan());
} else {
Bukkit.getLogger().severe("Something has happend" + result.toString());
}
});
}
}
voorbeeld 2 KingdomPlayer
public void doSomething() {
UUID uuid = UUID.randomUUID(); //voorbeeld
KingdomPlayer playerOne = UltimateKingdom.Players().getPlayer(uuid);
KingdomPlayer playerTwo = KingdomPlayer.get(uuid); //tomayto, tomahto tomato
playerOne.setmod(false,(result,player) -> {
if (result.isOk()) {
Bukkit.getLogger().info("player:" + player.getName() + " mod " + player.isMod()); //
} else {
Bukkit.getLogger().severe(result.toString());
}
});
}
voorbeeld 3 uitzondering
Uitzondering op setRank
public void doSomething() {
UUID uuid = UUID.randomUUID(); //voorbeeld
KingdomPlayer playerOne = UltimateKingdom.Players().getPlayer(uuid);
KingdomPlayer playerTwo = KingdomPlayer.get(uuid); //tomayto, tomahto tomato
Rank rank = Rank.get("Koning");
playerOne.setRank(rank,(result,player,kingdom) -> { //[!code hl] //setrank geeft 3 objecten terug (result,player,kingdom)
if (result.isOk()) {
Bukkit.getLogger().info("player new rank :" + player.getRank().getName() + " kingdom " + kingdom.getName()); //
} else {
Bukkit.getLogger().severe(result.toString());
}
});
}
Gebruikte bibliotheken
De kingdom plugin gebruikt de onderstaande bibliotheken
- Kyori Adventure
- WorldGuardWrapper
- xseries
- Okaeri Placeholders
- okaeri-tasker 1
- Scoreboard-library
- Universal Scheduler
- Simple-Yaml
Hooks
De onderstaande hooks/bibliotheren zijn beschikbaar.
bibliotheken/hooks | via |
---|---|
Scoreboard-library | UltimateKingdom.getKingdomServer().ScoreboardLibrary() |
Kyori Adventure | UltimateKingdom.getKingdomServer().Adventurehook() |
Okaeri Placeholders | UltimateKingdom.getKingdomServer().Messages().getPlaceHolders() |
EssentialX | UltimateKingdom.getKingdomServer().EssentialsHook() |
Universal Scheduler | UltimateKingdom.getKingdomServer().UniversalScheduler() |
Okaeri-tasker | UltimateKingdom.getKingdomServer().Tasker() |
Teleport queue | UltimateKingdom.getKingdomServer().QueuedTeleports() |
Runnable queue | UltimateKingdom.getKingdomServer().QueuedRunnables() |
Commands
We gebruiken een aangepaste brigadier van mojang. Hieronder staat een voorbeeld van een commando die de display naam van de kingdom aanpast.
public class MyCommand extends AbstractCommand {
public list() {
super("mycommand");
setDescription("Geef hier een omschrijving"); //deze omschrijving is zichtbaar in /k help
setLongDescription("Geef hier eventueel een lange omschriving, deze is zichtbaar in /k help mycommand"); // (optioneel)
setAliases("l"); //geef hier een alias in voor het commando. (optioneel)
setPlayerOnly(true); //optioneel
setPermission("kingdom.mycommand"); //permissie
}
public void createCommand(KingdomCommand brigadierCommand) {
brigadierCommand
.then(literal("setdisplayname") //commando is dus: /k mycommand setdisplayname <kingdom naam> <string>
.requires(c -> c.hasKingdom() && c.isMod() && c.isPlayer() )
.then(argument("kingdom", KingdomArgumentType.kingdom()) //Kingdom argument
.then(argument("displayname", StringArgumentType.greedyString()) //String argument
.suggests(new StringSuggestion("geef naam op")) // "geef naam op" weergeven als suggestie bij de argument displayname
.executes(c -> {
String displayname = c.getArgument("displayname", String.class); //haal String argument op
Kingdom kingdom = c.getArgument("kingdom", Kingdom.class); //haal Kingdom argument op
kingdom.setDisplayName(displayname, (res,rm) -> {
if (res.isOk()) {
c.getSource().sendMessage("we hebben het aangepast");
} else {
c.getSource().sendMessage("Big Error... " + res);
}
});
return Command.SINGLE_SUCCESS;
}))));
}
Registreren command
new MyCommand().register();
ArgumentTypes
De onderstaande argumentypes zijn beschikbaar in de plugin.
type | omschrijving |
---|---|
KingdomArgumentType | argument voor kingdoms (Kingdom) |
KingdomPlayerArgumentType | argument voor online spelers (KingdomPlayer) |
ServerSpawnArgumentType | argument voor server spawns (KingdomLocation) |
ServerSpawnArgumentType | argument voor rank groep (String) |
PlayerLevelArgumentType | argument voor player levels (KingdomLevel) |
KingdomLevelArgumentType | argument voor kingdom levels (PlayerLevel) |
ChatChannelArgumentType | argument voor channels (Channels) |
CommandsArgumentType | argument voor commands (AbstractCommand) |
PlayerArgumentType | argument voor online spelers (lokaal Players) |
MultiServerCachedPlayerType | argument voor online spelers (CachedPlayers) |
RankArgumentTypeType | argument voor Rank (Rank) zie voorbeeld 3 |
YesNoArgumentsType | argument voor Yes/No (Boolean) |
BooleanWithWordsType | argument voor True/False (Boolean) |
ColorArgumentType | argument voor Colors (voorbeeld :0 0 0 255) |
HexArgumentType | argument voor Hex ( voorbeeld :404040) |
UuidMemberArgumentType | argument voor Kingdom members. Geeft UUID van speler |
voorbeeld 1
public class MyCommand extends AbstractCommand {
public MyCommand() {
super("MyCommand");
setDescription("this command does nothing");
setLongDescription("This is just a demo. So don't get angry.. please...");
setPermission("demo.set");
setPlayerOnly(false);
}
@Override
public void createCommand(KingdomCommand command) {
command
.then(argument("kingdom", KingdomArgumentType.kingdom()) // [!code hl] //eerste argument van commando
.executes(c -> {
Kingdom kingdom = c.getArgument("kingdom", Kingdom.class); //[!code hl] //ophalen argument
... //do something
return Command.SINGLE_SUCCESS;
}));
}
}
voorbeeld 2
public class MyCommand extends AbstractCommand {
public MyCommand() {
super("MyCommand");
setDescription("this command does nothing");
setLongDescription("This is just a demo. So don't get angry.. please...");
setPermission("demo.set");
setPlayerOnly(false);
}
@Override
public void createCommand(KingdomCommand command) {
command
.then(argument("action", OptionCollectionArgumentType.get(Arrays.asList("enable", "disable", "status"))) // [!code hl]
.executes(c -> {
String action = c.getArgument("action", String.class); // [!code hl]
switch (action.toLowerCase()) { // [!code hl]
case "on": // [!code hl]
break; // [!code hl]
case "disable": // [!code hl]
break; // [!code hl]
case "status": // [!code hl]
break;// [!code hl]
}
return Command.SINGLE_SUCCESS;
}));
}
}
voorbeeld 3
De argument RankArgumentTypeType geeft standaard de ranken uit de groep default
Met 'suggests' kan een andere lijst worden gegeven.
In het onderstaande voorbeeld wordt de ranken opgehaald van de kingdom , waar de speler die het commando uitvoert, lid van is.
De speler moet een echte speler
zijn en moet lid zijn van een kingdom om het commando te kunnen zien.
public class MyCommand extends AbstractCommand {
public MyCommand() {
super("MyCommand");
setDescription("this command does nothing");
setLongDescription("This is just a demo. So don't get angry.. please...");
setPermission("demo.set");
setPlayerOnly(false); // [!code hl] //controle van player-only doen we in het commando zelf.
}
//dit regelt de nieuwe suggestie van ranks // [!code hl]
private CompletableFuture<Suggestions> PlayerKingdomRank(CommandContext<CommandSource> suggestionsBuilder, SuggestionsBuilder builder) { // [!code hl]
KingdomPlayer player = suggestionsBuilder.getSource().asKingdomPlayerOrNull(); // [!code hl]
for (Rank rank : player.getKingdom().getRanksList()) { // [!code hl]
builder.suggest(rank.getName()); // [!code hl]
} // [!code hl]
return builder.buildFuture(); // [!code hl]
} // [!code hl]
@Override
public void createCommand(KingdomCommand command) {
command
.then(argument("rank", RankArgumentTypeType.get()) // [!code hl]
.requires(c -> c.isPlayer() && c.hasKingdom()) // [!code hl] //player-only && speler heeft kingdom
.suggests(this::PlayerKingdomRank) // [!code hl] //verwijst naar de nieuwe suggestie
.executes(c -> {
Rank rank = c.getArgument("rank",Rank.class);
... do something
return Command.SINGLE_SUCCESS;
}));
}
}
Gegevens opslaan
In de plugin kan je gegevens opslaan die je op een andere server weer kan gebruiken.
Je hebt 3 plekken waar je data kan bewaren.
- spelers data
- kingdom data
- server data
De data kan je bewaren dmv MetaData
Voorbeeld kingdom data
Kingdom kingdom = Kingdom.get("MyKingdom");
MetaData md = new IntegerDataField("myplugin_key");//zorg dat je plugin naam er in zit ivm andere plugins
md.setValue(10);
kingdom.addMeta(md, (result, kd)-> {
//do something
});
Voorbeeld server data
Kingdom kingdom = Kingdom.get("MyKingdom");
MetaData md = new IntegerDataField("myplugin_key"); //zorg dat je plugin naam er in zit ivm andere plugins
md.setValue(10);
UltimateKingdom.Settings().addMeta(md, (result, kd)-> {
//do something
});
Metadata objecten
Alleen serializable objects
type |
---|
BooleanDataField |
DecimalDataField |
IntegerDataField |
LongDataField |
ListDataFiend |
HashMapStringBooleanField |
HashMapStringIntegerField |
Placeholders
Kingdom/player object
De kingdom plugin gebruikt de onderstaande metadata labels.
label | Type | object | omschrijving |
---|---|---|---|
strokeColor | String | kingdom | in gebruik bij setdynmap |
strokeopacity | Double | kingdom | in gebruik bij setdynmap |
strokeweight | Integer | kingdom | in gebruik bij setdynmap |
fillcolor | String | kingdom | in gebruik bij setdynmap |
fillopacity | Double | kingdom | in gebruik bij setdynmap |
spawnicon | String | kingdom | in gebruik bij setdynmap |
warpicon | String | kingdom | in gebruik bij setdynmap |
Settings
De kingdom plugin gebruikt de onderstaande metadata settings labels.
label | Type | omschrijving |
---|---|---|
ultimate_leavelocation | String | KingdomLocatie als String |
ultimate_kicklocation | String | KingdomLocatie als String |
Events
onderstaande is nog niet compleet.
WorldGuard Events
type | omschrijving |
---|---|
RegionEnteredEvent | als een speler een regio binnen gaat |
RegionLeftEvent | als een speler een regio verlaat |
RegionsChangedEvent | als een speler van regio veranderd |
RegionsLeftEvent | als een speler een regio verlaat. |
GamePlay events
Alle gamePlay events waar je iets meer kan doen.
Action events
type | omschrijving |
---|---|
KingdomSwitchEvent | als een speler iets omzet zoals een schakelaar |
KingdomItemuseEvent | als een speler een item gebruikt |
KingdomDestroyEvent | als een speler iets kapot maakt |
KingdomBuildEvent | als een speler iets bouwt |
KingdomActionEvent | alles hierboven |
Damage events
type | omschrijving |
---|---|
KingdomPlayerDamagePlayerEvent | Speler tegen speler damage |
KingdomDamageEvent | alles hier boven |
Chat events
type | omschrijving |
---|---|
AsyncNonReportableChatEvent | waneer een admin chat (nochatreport in config.yml moet aan staan) |
AsyncPostNonReportableChatEvent | waneer een admin chat (nochatreport in config.yml moet aan staan) |
KingdomChatEvent | wanneer eens speler chat |
Kingdom events
type | omschrijving |
---|---|
KingdomSetEvent | Speler in kingdom zetten |
KingdomCreateEvent | kingdom aanmaken |
KingdomDeleteEvent | kingdom verwijderen |
KingdomRenameEvent | kingdom hernoemen |
KingdomAddPointsEvent | toevoegen punten |
KingdomAddSpawnEvent | toevoegen spawn |
KingdomDeleteSpawnEvent | verwijderen spawn |
KingdomAddWarpEvent | toevoegen warp |
KingdomDeleteWarpEvent | verwijderen warp |
KingdomMaxMembersEvent | instellen max. aantal leden |
KingdomRemoveLevelEvent | verwijderen van level |
KingdomRemoveMember | verwijderen van kingdom lid |
KingdomRemovePointsEvent | verwijderen van punten |
KingdomRemoveRankMaximumEvent | verwijderen van een rank max. |
KingdomSetFriendlyFireEvent | instellen friendly-fire |
KingdomSetInviteOnly | instellen invite-only |
KingdomSetLevelEvent | instellen kingdom level |
KingdomSetPlaceHolderEvent | instellen placeholder |
KingdomSetRankMaximumEvent | instellen max rank |
KingdomSetRelationEvent | instellen relatie |
KingdomSetSpawnEvent | instellen spawn |
KingdomSetWarpEvent | instellen warp |
KingdomPlayerSetRank | instellen rank |
Player events
type |
---|
PlayerJoinKingdomEvent |
PlayerJoinServerEvent |
PlayerDeathMessageEvent |
PlayerKilledPlayerDeathMessageEvent |
PlayerDeathMessageEvent |
WorldGuardWrapper Events
type |
---|
WrappedUseEntityEvent |
WrappedDisallowedPVPEvent |
WrappedDamageEntityEvent |
AbstractWrappedEvent |
-
Er zit een aangepaste variant in de plugin, voor ondersteuning van de Universal scheduler. (UniversalTasker) ↩︎