- Баллы
- 76
- Имя в Minecraft
- Gorn
Эхх был бы человек который мог научить подсказывать в трудных ситуациях.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
xDКороче, рассказываю как нужно делать:
1. Ищите разные МГ, декомпилируете, смотрите. Пишите свою первую миниигру.
2. Доводите ее до ума, хотите написать вторую миниигру, но будет уже лень делать почти тоже самое.
3. Теперь идем и декоспилируем плагины mineplex'a и смотрим как там круто сделано и пытаемся написать что-то свое такое.
"теперь приступим к классу TeamManager" конец статьи... -_-Класс ArenaUtil не делает ничего такого супер офигенного. Он просто сохраняет, и загружает данные из конфига.
Java:package me.belka.energyapi; import java.io.File; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.configuration.file.YamlConfiguration; public class ArenaUtil { public static void saveArena(Arena arena, File f) { // Метод сохранения арены. Два аргумента - арена, и файл, куда сохранять. String name = arena.getName(); // Имя арены. Дальше просто разделяем каждую составляющую арены на части. YamlConfiguration config = YamlConfiguration.loadConfiguration(f); // Наша конфигурация config.set("arenas." + name + ".prefix", arena.getPrefix().replace("&", "§")); config.set("arenas." + name + ".spawn.loc.world", arena.getSpawn().getWorld().getName()); config.set("arenas." + name + ".spawn.loc.x", arena.getSpawn().getX()); config.set("arenas." + name + ".spawn.loc.y", arena.getSpawn().getY()); config.set("arenas." + name + ".spawn.loc.z", arena.getSpawn().getZ()); config.set("arenas." + name + ".lobby.loc.world", arena.getLobby().getWorld().getName()); config.set("arenas." + name + ".lobby.loc.x", arena.getLobby().getX()); config.set("arenas." + name + ".lobby.loc.y", arena.getLobby().getY()); config.set("arenas." + name + ".lobby.loc.z", arena.getLobby().getZ()); config.set("arenas." + name + ".end.loc.world", arena.getEnd().getWorld().getName()); config.set("arenas." + name + ".end.loc.x", arena.getEnd().getX()); config.set("arenas." + name + ".end.loc.y", arena.getEnd().getY()); config.set("arenas." + name + ".end.loc.z", arena.getEnd().getZ()); config.set("arenas." + name + ".time", arena.getTime()); config.set("arenas." + name + ".start", arena.getStart()); config.set("arenas." + name + ".max", arena.getMax()); try { config.save(f); config.load(f); } catch(Exception e1) { e1.printStackTrace(); } // Типа сохранили, и подгрузили конфиг. } public static void loadArena(String name, File f) { // Загружаем арену, но тут в аргументах не арена, а строка, какую мы будем подгружать. YamlConfiguration config = YamlConfiguration.loadConfiguration(f); // Наша конфигурация // Дальше идут три наших локации арены Location spawn = new Location(Bukkit.getWorld(config.getString("arenas." + name + ".spawn.loc.world")), config.getDouble("arenas." + name + ".spawn.loc.x"), config.getDouble("arenas." + name + ".spawn.loc.y"), config.getDouble("arenas." + name + ".spawn.loc.z")); Location lobby = new Location(Bukkit.getWorld(config.getString("arenas." + name + ".lobby.loc.world")), config.getDouble("arenas." + name + ".lobby.loc.x"), config.getDouble("arenas." + name + ".lobby.loc.y"), config.getDouble("arenas." + name + ".lobby.loc.z")); Location end = new Location(Bukkit.getWorld(config.getString("arenas." + name + ".end.loc.world")), config.getDouble("arenas." + name + ".end.loc.x"), config.getDouble("arenas." + name + ".end.loc.y"), config.getDouble("arenas." + name + ".end.loc.z")); if(config.getConfigurationSection("arenas." + name) != null) { EnergyAPI.am.registerNewArena(name, config.getString("arenas." + name + ".prefix").replace("&", "§"), config.getInt("arenas." + name + ".time"), config.getInt("arenas." + name + ".start"), config.getInt("arenas." + name + ".max"), spawn, lobby, end); // Тут мы создали, и подгрузили арену. EnergyAPI.am.getArena(name).setInGame(false); EnergyAPI.am.getArena(name).setSpawn(spawn); EnergyAPI.am.getArena(name).setEnd(end); EnergyAPI.am.getArena(name).setLobby(lobby); EnergyAPI.am.getArena(name).setPrefix(config.getString("arenas." + name + ".prefix").replace("&", "§")); EnergyAPI.am.getArena(name).setTime(config.getInt("arenas." + name + ".time")); EnergyAPI.am.getArena(name).setMax(config.getInt("arenas." + name + ".max")); EnergyAPI.am.getArena(name).setStart(config.getInt("arenas." + name + ".start")); // И так, тут мы уже добавляем арену во временное хранение, в пожизненном хранении никуда ее не деваем. } } public static void loadAllArenas(File f) { // Метод, для удобной подгрузки всех арен из конфигурации в методе onEnable() YamlConfiguration config = YamlConfiguration.loadConfiguration(f); // Наша конфигурация if(config.getConfigurationSection("arenas") != null) { // Проверяем, есть ли в конфиге секция "arenas" for(String an : config.getConfigurationSection("arenas").getValues(false).keySet()) { // Проходимся по всем подсекциям в секции "arenas" loadArena(an, f); // И тут загружаем каждую } } } // Далее пойдут методы для каждой функции, которые будет производиться не во временном, а в пожизненном хранении. public static void removeArena(String name, File f) { // Метод удаления арены YamlConfiguration config = YamlConfiguration.loadConfiguration(f); if(config.getConfigurationSection("arenas." + name) != null) { // Есть ли секция arenas.name? config.set("arenas." + name, null); // Теперь эта секция - null } try { config.save(f); config.load(f); } catch(Exception e1) { e1.printStackTrace(); } } public static void setStart(int i, Arena arena, File f) { // Метод для установки кол-ва игроков для старта YamlConfiguration config = YamlConfiguration.loadConfiguration(f); if(config.getConfigurationSection("arenas." + arena.getName()) != null) { config.set("arenas." + arena.getName() + ".start", i); } try { config.save(f); config.load(f); } catch(Exception e1) { e1.printStackTrace(); } } public static void setMax(int i, Arena arena, File f) { // Метод для установки макс. игроков YamlConfiguration config = YamlConfiguration.loadConfiguration(f); if(config.getConfigurationSection("arenas." + arena.getName()) != null) { config.set("arenas." + arena.getName() + ".max", i); } try { config.save(f); config.load(f); } catch(Exception e1) { e1.printStackTrace(); } } public static void setTime(int i, Arena arena, File f) { // Метод установки времени для арены YamlConfiguration config = YamlConfiguration.loadConfiguration(f); if(config.getConfigurationSection("arenas." + arena.getName()) != null) { config.set("arenas." + arena.getName() + ".time", i); } try { config.save(f); config.load(f); } catch(Exception e1) { e1.printStackTrace(); } } public static void setSpawn(Location loc, Arena arena, File f) { // Метод установки локации спавна YamlConfiguration config = YamlConfiguration.loadConfiguration(f); String name = arena.getName(); if(config.getConfigurationSection("arenas." + arena.getName()) != null) { // Есть такая секция? Далее разбиваем локацию на мир, x, y ,z. config.set("arenas." + name + ".spawn.loc.world", arena.getSpawn().getWorld().getName()); config.set("arenas." + name + ".spawn.loc.x", arena.getSpawn().getX()); config.set("arenas." + name + ".spawn.loc.y", arena.getSpawn().getY()); config.set("arenas." + name + ".spawn.loc.z", arena.getSpawn().getZ()); } try { config.save(f); config.load(f); } catch(Exception e1) { e1.printStackTrace(); } } public static void setLobby(Location loc, Arena arena, File f) { // Метод установки локации лобби YamlConfiguration config = YamlConfiguration.loadConfiguration(f); String name = arena.getName(); if(config.getConfigurationSection("arenas." + arena.getName()) != null) { // Есть такая секция? Далее разбиваем локацию на мир, x, y ,z. config.set("arenas." + name + ".lobby.loc.world", arena.getLobby().getWorld().getName()); config.set("arenas." + name + ".lobby.loc.x", arena.getLobby().getX()); config.set("arenas." + name + ".lobby.loc.y", arena.getLobby().getY()); config.set("arenas." + name + ".lobby.loc.z", arena.getLobby().getZ()); } try { config.save(f); config.load(f); } catch(Exception e1) { e1.printStackTrace(); } } public static void setEnd(Location loc, Arena arena, File f) { // Метод установки локации конца игры YamlConfiguration config = YamlConfiguration.loadConfiguration(f); String name = arena.getName(); if(config.getConfigurationSection("arenas." + arena.getName()) != null) { // Есть такая секция? Далее разбиваем локацию на мир, x, y ,z. config.set("arenas." + name + ".end.loc.world", arena.getEnd().getWorld().getName()); config.set("arenas." + name + ".end.loc.x", arena.getEnd().getX()); config.set("arenas." + name + ".end.loc.y", arena.getEnd().getY()); config.set("arenas." + name + ".end.loc.z", arena.getEnd().getZ()); } try { config.save(f); config.load(f); } catch(Exception e1) { e1.printStackTrace(); } } }
С классом ArenaUtil закончили! Теперь арены можно сохранять, и не бояться за потерю данных.
Теперь мы сделаем команды для арен! Класс GameTeam для этого и создан.
Java:package me.belka.energyapi; import java.util.ArrayList; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.ChatColor; public class GameTeam extends TeamManager { private List<String> teamPlayers = new ArrayList<>(); // Список игроков в команде private ChatColor color; // Цвет, который будет у игрока над головой private String name; // Имя команды private Arena arena; // Арена, в которой будет эта команда public GameTeam(String name, ChatColor color, Arena arena) { // Метод создания команды, затронем его в TeamManager this.name = name; this.color = color; this.arena = arena; } public String getName() { // Возвращает имя команды return name; } public void setName(String name) { // Устанавливает имя команды this.name = name; } public ChatColor getColor() { // Возвращает цвет команды... Дальше все понятно, все так же. return color; } public void setColor(ChatColor color) { this.color = color; } public List<String> getTeamPlayers() { return teamPlayers; } public void setTeamPlayers(List<String> teamPlayers) { this.teamPlayers = teamPlayers; } public Arena getArena() { return arena; } public void setArena(Arena arena) { this.arena = arena; } public void sendMessage(String msg) { // Утилита отсылки сообщения команде for(String players : teamPlayers) { Bukkit.getPlayer(players).sendMessage(msg); } } public boolean isFull() { // Утилита проверки - полная ли команда? if(teamPlayers.size() >= (arena.getPlayers().size() / 2)) { return true; } return false; } }
Теперь приступим к классу TeamManager
белка писал что ему лень писать статью дальше"теперь приступим к классу TeamManager" конец статьи... -_-
знаю... но блин... я то не знаю как там дописать! хотя я уже забил на миниигру...белка писал что ему лень писать статью дальше
не удивительно что ты не знаешь -_-знаю... но блин... я то не знаю как там дописать! хотя я уже забил на миниигру...
прогресс! )))не удивительно что ты не знаешь -_-
(зато ты импортировать уже научился ._ .)
не бомби, но я решил сделать мод... я его уже сделал но лишь на командных блоках с дерьмо-оптимизацией... короче где тему создать про моды?не удивительно что ты не знаешь -_-
(зато ты импортировать уже научился ._ .)
не на этом форуме.прогресс! )))
не бомби, но я решил сделать мод... я его уже сделал но лишь на командных блоках с дерьмо-оптимизацией... короче где тему создать про моды?
вообще то бывают сервера с модамине на этом форуме.
Тут только по серверам
сервера с модами это одно. А создание модов НЕ СЮДА.вообще то бывают сервера с модами
Че ты гонишь, есть раздел модификаций. А вот в плане помощи, это да, рашка не умеет в моды. Точнее умеет, но таких крайне мало и в основном любители на уровне кастомблока и тп.сервера с модами это одно. А создание модов НЕ СЮДА.
@Moderator убейте его
ок. хотя на этом форуме нашёл одну статейку по модам...сервера с модами это одно. А создание модов НЕ СЮДА.
@Moderator убейте его