- Баллы
- 76
- Имя в Minecraft
- DragOn4ik
Hi.
Накодил я тут плагин на паркур. Вроде бы загружается без ошибок, команды работают. Но сам паркур не работает. Т.е. я встаю на старт, ничего не происходит. Встаю на чекпоинт - тоже ничего не происходит.
Исходинки:
Накодил я тут плагин на паркур. Вроде бы загружается без ошибок, команды работают. Но сам паркур не работает. Т.е. я встаю на старт, ничего не происходит. Встаю на чекпоинт - тоже ничего не происходит.
Исходинки:
PHP:
package com.dragon4ik.parkours;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
public List<String> checkpoints;
public FileConfiguration config;
public Map<Player, Location> map;
public Map<Player, Boolean> started;
public void onEnable() {
saveDefaultConfig();
config = getConfig();
config.options().copyDefaults(true);
checkpoints = config.getStringList("checkpoints");
map = new HashMap<Player, Location>();
started = new HashMap<Player, Boolean>();
ParkourListener listener = new ParkourListener(this);
Commands commands = new Commands(this);
Bukkit.getPluginManager().registerEvents(listener, this);
getCommand("parkour-checkpoint").setExecutor(commands);
getCommand("parkour-start").setExecutor(commands);
getCommand("parkour-finish").setExecutor(commands);
getCommand("parkour-reload").setExecutor(commands);
}
}
PHP:
package com.dragon4ik.parkours;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.RegisteredServiceProvider;
import net.md_5.bungee.api.ChatColor;
import net.milkbowl.vault.economy.Economy;
public class ParkourListener implements Listener{
Main plugin;
public ParkourListener(Main plugin) {
this.plugin = plugin;
}
@EventHandler
public void onPlayerMove(PlayerMoveEvent e) {
if(plugin.checkpoints.contains(locToStr(e.getPlayer().getLocation()))) {
Player p = e.getPlayer();
Location loc = p.getLocation();
if(!plugin.started.get(p)) {
return;
}
if(locToStr(plugin.map.get(p)).equalsIgnoreCase(locToStr(loc))) {
return;
}
mapSet(p, loc);
p.sendTitle("", ChatColor.GREEN + "Checkpoint!", 20, 20, 20);
}
if(locToStr(e.getPlayer().getLocation()).equalsIgnoreCase(plugin.config.getString("start"))) {
Player p = e.getPlayer();
if(plugin.started.get(p)) {
return;
}
mapSetStarted(p, true);
p.sendTitle(ChatColor.GREEN + "Start!", ChatColor.GREEN + "Вы начали проходить паркур", 20, 20, 20);
}
if(locToStr(e.getPlayer().getLocation()).equalsIgnoreCase(plugin.config.getString("finish"))) {
Player p = e.getPlayer();
if(!plugin.started.get(p)) {
return;
}
mapSetStarted(p, false);
p.sendTitle(ChatColor.RED + "Поздравляем!", ChatColor.GREEN + "Вы прошли паркур, и получаете " + plugin.config.getDouble("reward") + "$", 20, 20, 20);
addMoney(p, plugin.config.getDouble("reward"));
}
}
public static Economy e;
public static void init() {
RegisteredServiceProvider<Economy> reg = Bukkit.getServicesManager().getRegistration(Economy.class);
if(reg != null) e = reg.getProvider();
}
public static boolean takeMoney(Player p, double amount) {
if(e == null) return false;
if(e.getBalance(p) < amount) return false;
return e.withdrawPlayer(p, amount).transactionSuccess();
}
public static boolean addMoney(Player p, double amount) {
if(e == null) return false;
return e.depositPlayer(p, amount).transactionSuccess();
}
public static String locToStr(Location loc) {
return loc.getWorld().getName() + "_" + loc.getBlockX() + "_" + loc.getBlockY() + "_" + loc.getBlockZ();
}
public void mapSet(Player p, Location loc) {
if(plugin.map.containsKey(p)) {
plugin.map.remove(p);
plugin.map.put(p, loc);
} else {
plugin.map.put(p, loc);
}
}
public void mapSetStarted(Player p, boolean loc) {
if(plugin.map.containsKey(p)) {
plugin.started.remove(p);
plugin.started.put(p, true);
} else {
plugin.started.put(p, true);
}
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {
mapSetStarted(e.getPlayer(), false);
}
}
PHP:
package com.dragon4ik.parkours;
import java.util.List;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import net.md_5.bungee.api.ChatColor;
public class Commands implements CommandExecutor {
Main plugin;
public Commands(Main plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(cmd.getName().equalsIgnoreCase("parkour-checkpoint")) {
Player p = (Player)sender;
if(!p.hasPermission("parkour.manage")) {
p.sendMessage(ChatColor.RED + "Недостаточно прав!");
}
List<String> lst = plugin.checkpoints;
lst.add(ParkourListener.locToStr(p.getLocation()));
plugin.checkpoints = lst;
plugin.config.set("checkpoints", plugin.checkpoints);
plugin.saveConfig();
plugin.reloadConfig();
plugin.config = plugin.getConfig();
p.sendMessage("Чекопоинт добавлен! " + ParkourListener.locToStr(p.getLocation()));
return true;
}
if(cmd.getName().equalsIgnoreCase("parkour-start")) {
Player p = (Player)sender;
if(!p.hasPermission("parkour.manage")) {
p.sendMessage(ChatColor.RED + "Недостаточно прав!");
}
plugin.config.set("start", ParkourListener.locToStr(p.getLocation()));
plugin.saveConfig();
plugin.reloadConfig();
plugin.config = plugin.getConfig();
p.sendMessage("Точка старта установлена! " + ParkourListener.locToStr(p.getLocation()));
return true;
}
if(cmd.getName().equalsIgnoreCase("parkour-finish")) {
Player p = (Player)sender;
if(!p.hasPermission("parkour.manage")) {
p.sendMessage(ChatColor.RED + "Недостаточно прав!");
}
plugin.config.set("finish", ParkourListener.locToStr(p.getLocation()));
plugin.saveConfig();
plugin.reloadConfig();
plugin.config = plugin.getConfig();
p.sendMessage("Точка финиша установлена! " + ParkourListener.locToStr(p.getLocation()));
return true;
}
if(cmd.getName().equalsIgnoreCase("parkour-reload")) {
if(!sender.hasPermission("parkour.reload")) {
sender.sendMessage("Not enough permissions!");
return true;
}
plugin.reloadConfig();
plugin.config = plugin.getConfig();
sender.sendMessage("Plugin reloaded!");
return true;
}
return false;
}
}