Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Прикинь, то же самое писал на заказНа dev.bukkit существуют подобные плагины, Даже у меня есть подобная разработка, при вводе кода в чат выполняется набор команд (а там хоть вещи давай, группу назначай для пользователя).

Ссылку можно?На dev.bukkit существуют подобные плагины, Даже у меня есть подобная разработка, при вводе кода в чат выполняется набор команд (а там хоть вещи давай, группу назначай для пользователя).
Почему бы тебе самому не научится искать?Ссылку можно?
На dev.bukkit существуют подобные плагины, Даже у меня есть подобная разработка, при вводе кода в чат выполняется набор команд (а там хоть вещи давай, группу назначай для пользователя).
Нет, не могу,можешь дать плыз ссылку очень надо я проект редактирую плыз дай
import org.bukkit.event.player.PlayerCommandPreprocessEvent
import java.util.ArrayList
import org.*********ventory.ItemStack
import org.apache.commons.lang.StringUtils
def metaclasses = program.require("metaclasses")
def nbttools = program.require("nbttools")
if(!metaclasses) return null
if(!nbttools) return null
String prefix = +"&3[&eVarKey&3]&r"
String etalon = "/varkey"
File file = new File("VarKey/tokens.nbtz")
file.getParentFile().mkdirs();
file.createNewFile();
if( !( nbt(file) ) ){
nbt(file,nbt([:]))
}
def workers = [:]
workers.WIN = { player, params ->
Server.broadcastMessage(prefix+(+" &6")+player.name+(+"&r used token with type WIN!"))
}
workers.GIVE = { player, params ->
ArrayList pieces = params.split(" ")
if(pieces.size() < 3){
send(player,"&c ### token params error ###")
return false
}
def name = null
int id = pieces.remove(0) as int
int amount = pieces.remove(0) as int
Short data = pieces.remove(0) as Short
if(pieces) name = StringUtils.join(pieces," ") ;
def item
if(name != null){
item = new ItemStack(id,amount,data)
def meta = item.itemMeta
meta.displayName = name
item.itemMeta = meta
}else{
item = new ItemStack(id,amount,data)
}
player.give(item)
return true;
}
workers.TP = { player, params ->
ArrayList pieces = params.split(" ")
if(pieces.size() < 4) return send(player,"&c ### token params error ###")
Double x = pieces.remove(0) as Double
Double y = pieces.remove(0) as Double
Double z = pieces.remove(0) as Double
def world = StringUtils.join(pieces," ").w
if(!world) return send(player,"&c ### Wrong world")
player >> new org.bukkit.Location(world,x,y,z)
return true;
}
workers.KILL = { player, params ->
if(player.gm as String == "CREATIVE"){
player.gm = 0
player.kill()
player.gm = 1
}else{
player.kill()
}
return true;
}
workers.VS = { player, params ->
def stack = [player:player,result:true]
VarscriptRuntime.startScript(player, params, "VarScript", stack)
return stack.result
}
workers.GROOVY = { player, params ->
def stack = [player:player,result:true]
VarscriptRuntime.startScript(player, params, "Groovy", stack)
return stack.result
}
def send = { def p, def text ->
p.sendRawMessage(prefix+" "+text)
return null
}
writeToken = { String key, String type, String params ->
if(!file.exists()){
}
nbt(file) {it[key] = [type:type,params:params]}
return null
}
getTokenType = { String key ->
return nbt(file) {it[key].get("type")}
}
getTokenParams = { String key ->
return nbt(file) {it[key].get("params")}
}
getToken = { String key ->
return nbt(file) {it[key]}
}
removeToken = { String key ->
nbt(file,{it.remove(key)})
return null
}
getTokens = { ->
return nbt(file)
}
hasToken = { String key ->
def tokens = nbt(file)
return tokens.containsKey(key)
}
listen { PlayerCommandPreprocessEvent event ->
String command = event.getMessage()
def player = event.getPlayer()
ArrayList words = command.split(" ")
if(words.get(0) != etalon){
return
}
event.cancelled = true
def printHelp = { ->
send(player," Help ----->")
player.sendRawMessage(+"&e/varkey&r redeem &6{key}&r - redeem token")
player.sendRawMessage(+"&e/varkey&r generate &6{type} [params]&r - generate token")
player.sendRawMessage(+"&e/varkey&r remove &6{key}&r - remove token")
}
def printAbout = { ->
send(player," About ----->")
player.sendRawMessage(+"&aVarkey &rversion &a0.1")
player.sendRawMessage(+"Powerful token generator")
player.sendRawMessage(+"Author:&a MYXOMOPX")
}
def wrongOperation = {
send(player,"Wrong command!")
}
def generate = { def wordz ->
if(!player.hasPermission("varkey.generate")) return send(player,"You don't have permissions! ;(")
def type = "WIN"
if (wordz.size() != 0) type = wordz.remove(0).toUpperCase()
if (!workers[type]) return send(player,+"&c ### token type error ###")
def params = wordz ? wordz.inject{a,b -> a+" "+b} : ""
def uuid = UUID.randomUUID() as String
writeToken(uuid,type,params)
send(player,"Token generated! UUID: "+uuid)
}
def redeem = { def wordz ->
if(wordz.size() == 0){
send(player,"Enter token! :|")
return
}
def uuid = wordz.get(0)
if(!hasToken(uuid)){
send(player,"Token not exists. ^_^")
return
}
def token = getToken(uuid)
def result = true
def worker = workers[token.type]
if(worker == null) send(player,+"&c ### token type error ###")
else if(worker(player,token.params)){
removeToken(uuid);
send(player,"You redeemed token! :3");
}
}
def remove = { def wordz ->
if(!player.hasPermission("varkey.remove")) return send(player,"You don't have permissions! ;(")
if(wordz.size() == 0){
send(player,"Enter token! :|")
return
}
def uuid = wordz.get(0)
if(!hasToken(uuid)){
send(player,"Token not exists. ^_^")
return
}
removeToken(uuid)
}
words.remove(0)
if(words.size() == 0){
printHelp()
return
}
String operation = (words.get(0)).toLowerCase()
words.remove(0)
switch(operation) {
case "help": printHelp(); break;
case "about": printAbout(); break;
case "redeem": redeem(words.clone()); break;
case "r": redeem(words.clone()); break;
case "generate": generate(words); break;
case "gen": generate(words); break;
case "remove": remove(words); break;
case "rem": remove(words); break;
default: wrongOperation(); break;
}
}
return [ name:"VarKey",version:[0,1],author:"MYXOMOPX" ]
Ну зачем изобретать велосипед?