Faster loading of files, improved saving of YAML, added new Command API and more!
+ Added Command API
Code (Java):
//Inside onEnable method
CommandHolder.
create
(
//empty command - no args
CommandStructure.
empty
(
).
permission
(
"mw.command"
).
onAnyArg
(
(sender, selectors
)
->
{
sender.
sendMessage
(
"/mw tp [world] {player}"
)
;
sender.
sendMessage
(
"/mw list"
)
;
}
),
//tp subcommand
CommandStructure.
create
(
"tp"
).
permission
(
"mw.tp"
).
onArgs
(
0,
(sender, selectors
)
->
{
sender.
sendMessage
(
"/mw tp [world] {player}"
)
;
//argument position
}
).
selector
(
1, SelectorType.
WORLD
).
onArgs
(
1,
(sender, selectors
)
->
{
sender.
sendMessage
(
"Tp to the world "
+selectors.
get
(
1
)
)
;
//argument position
}
).
permission
(
"mw.tp.other"
).
selector
(
2, SelectorType.
PLAYER
)
.
onArgsOrMore
(
2,
(sender, selectors
)
->
{
sender.
sendMessage
(
"Tp player "
+selectors.
get
(
2
)
+
" to the world "
+selectors.
get
(
1
)
)
;
//argument position
}
),
//list subcommand
CommandStructure.
create
(
"list"
).
permission
(
"mw.list"
).
onAnyArg
(
(sender, selectors
)
->
{
sender.
sendMessage
(
"List of worlds"
)
;
}
).
requirement
(
1,
"show"
)
.
onArgsOrMore
(
1,
(sender, selectors
)
->
{
sender.
sendMessage
(
"List of worlds (semi hidden)"
)
;
}
)
.
requirement
(
2,
"hidden"
)
// mw -> list -> show -> hidden:
.
onArgsOrMore
(
1,
(sender, selectors
)
->
{
sender.
sendMessage
(
"List of worlds (ultra hidden)"
)
;
}
)
)
//.permsChecker((sender, perm) -> { //permissions checker (no perms message?)
// return sender.hasPermission(perm);
//}
).
register
(
this,
"mw",
"multiworld",
"multiworlds"
)
;
//register command with aliases
+ Improved performance of loading & saving YAML files (Whoosh!)
+ Improved performance of lookup for Data Loader
+ Added abillity to make your OWN DataLoader - With ordering of loaders!
Code (Java):
@Override
//Inside your plugin's main class!
public
void onLoad
(
)
{
DataLoader.
register
(LoaderPriority.
LOWEST,
(
)
->
{
return
new MySuperCoolLoader
(
)
;
}
)
;
}
//This is external class!
public
class MySuperCoolLoader
extends EmptyLoader
{
//Or just extend DataHolder
@Override
public
void load
(
String input
)
{
reset
(
)
;
if
(input
==
null
)
return
;
try
{
//Some loading from input string logic...
}
catch
(
Exception er
)
{
reset
(
)
;
}
}
}
+ Fixed errors when trying connect to SQL after looong time inactive