import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DMuZ8-s6.js";const y=JSON.parse('{"title":"API Informatie","description":"API informatie over de ultimate kingdom plugin","frontmatter":{"lastUpdated":true,"aside":true,"sidebar":true,"sidebarDepth":3,"title":"API Informatie","description":"API informatie over de ultimate kingdom plugin","meta_keywords":"kingdom plugin, ultimate, minecraft plugin, spigot plugin, gameplay, API","meta_url":"https://ultimatekingdom.nl"},"headers":[],"relativePath":"API.md","filePath":"API.md"}'),t={name:"API.md"},e=n(`
repositories {
maven { url "https://repo.recorehosting.com/repository/maven-snapshots/" } // snapshots
maven { url "https://repo.recorehosting.com/repository/development/" } // beta & release candidate
compileOnly 'me.map:ultimatekingdom:1.45.4.1-SNAPSHOT' //development voor deze versie is gestopt
compileOnly 'me.map:ultimatekingdom:2.12.0.0-RC1'
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'
De plugin is via een static class
bereikbaar.
UltimateKingdom. .....
UltimateKingdom.Kingdoms() .....
UltimateKingdom.getKingdomServer()
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());
}
});
}
}
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());
}
});
}
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());
}
});
}
De kingdom plugin gebruikt de onderstaande bibliotheken
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() |
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;
}))));
}
new MyCommand().register();
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 |
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()) //eerste argument van commando
.executes(c -> {
Kingdom kingdom = c.getArgument("kingdom", Kingdom.class); //[!code hl] //ophalen argument
... //do something
return Command.SINGLE_SUCCESS;
}));
}
}
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")))
.executes(c -> {
String action = c.getArgument("action", String.class);
switch (action.toLowerCase()) {
case "on":
break;
case "disable":
break;
case "status":
break;
}
return Command.SINGLE_SUCCESS;
}));
}
}
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); //controle van player-only doen we in het commando zelf.
}
//dit regelt de nieuwe suggestie van ranks
private CompletableFuture<Suggestions> PlayerKingdomRank(CommandContext<CommandSource> suggestionsBuilder, SuggestionsBuilder builder) {
KingdomPlayer player = suggestionsBuilder.getSource().asKingdomPlayerOrNull();
for (Rank rank : player.getKingdom().getRanksList()) {
builder.suggest(rank.getName());
}
return builder.buildFuture();
}
@Override
public void createCommand(KingdomCommand command) {
command
.then(argument("rank", RankArgumentTypeType.get())
.requires(c -> c.isPlayer() && c.hasKingdom()) //player-only && speler heeft kingdom
.suggests(this::PlayerKingdomRank) //verwijst naar de nieuwe suggestie
.executes(c -> {
Rank rank = c.getArgument("rank",Rank.class);
... do something
return Command.SINGLE_SUCCESS;
}));
}
}
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.
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
});
Alleen serializable objects
type |
---|
BooleanDataField |
DecimalDataField |
IntegerDataField |
LongDataField |
ListDataFiend |
HashMapStringBooleanField |
HashMapStringIntegerField |
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 |
De kingdom plugin gebruikt de onderstaande metadata settings labels.
label | Type | omschrijving |
---|---|---|
ultimate_leavelocation | String | KingdomLocatie als String |
ultimate_kicklocation | String | KingdomLocatie als String |
onderstaande is nog niet compleet.
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. |
Alle gamePlay events waar je iets meer kan doen.
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 |
type | omschrijving |
---|---|
KingdomPlayerDamagePlayerEvent | Speler tegen speler damage |
KingdomDamageEvent | alles hier boven |
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 |
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 |
type |
---|
PlayerJoinKingdomEvent |
PlayerJoinServerEvent |
PlayerDeathMessageEvent |
PlayerKilledPlayerDeathMessageEvent |
PlayerDeathMessageEvent |
type |
---|
WrappedUseEntityEvent |
WrappedDisallowedPVPEvent |
WrappedDamageEntityEvent |
AbstractWrappedEvent |
Er zit een aangepaste variant in de plugin, voor ondersteuning van de Universal scheduler. (UniversalTasker) ↩︎