Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Локация в конфиг и наоборот.

Bomber123

Активный участник
Пользователь
Баллы
76
Я как всегда делаю плагин уже новый. Он уже в разработке. Мне нужно чтобы когда игрок кликнул чем-то по какому-то блоку и прописывал какую-то команду(XD:lol::lol::lol:) Локация заносилась в этот конфиг и года игрок что-то делает с этим выделенным блоком то тогда это всё от туда доставалось и происходило действие.
 
Ну это уже слишком, ты хочешь чтоб за тебя весь код написали
 
Нет просто помогли. у меня тут есть уже некие заготовки.
А код я и сам написать смогу. Просто объясните как надо это делать.
Ну это уже слишком, ты хочешь чтоб за тебя весь код написали
Ага за меня весь код. А за тебя весь плагин! Да да тот самый AdminGUI мне чувак в личку написал что ты у него плагин с****ил.
Что мол ты все ник нэймы поменял.
его ник
N0Trix
 
Нет просто помогли. у меня тут есть уже некие заготовки.
А код я и сам написать смогу. Просто объясните как надо это делать.

Ага за меня весь код. А за тебя весь плагин! Да да тот самый AdminGUI мне чувак в личку написал что ты у него плагин с****ил.
Что мол ты все ник нэймы поменял.
его ник
N0Trix
Врят ли он своровал тот плагин, ибо это такой костыль... Просто поверь мне, ибо я видел этот код.
 
Ну как то так.
типо локация.
Location location = new Location(null, 0, 0, 0);
надуваем в конфиг.
this.getConfig().set("loc", location);
читаем с конфига.
location = (Location) this.getConfig().get("loc");
 
Врят ли он своровал тот плагин, ибо это такой костыль... Просто поверь мне, ибо я видел этот код.
Вообще-то я тот костыль переписал с нуля...
Врят ли он своровал тот плагин, ибо это такой костыль... Просто поверь мне, ибо я видел этот код.
Старое Admin Menu я удалил
 
И получил другой костыль .-.
Ты чекал новый код?
Нет просто помогли. у меня тут есть уже некие заготовки.
А код я и сам написать смогу. Просто объясните как надо это делать.

Ага за меня весь код. А за тебя весь плагин! Да да тот самый AdminGUI мне чувак в личку написал что ты у него плагин с****ил.
Что мол ты все ник нэймы поменял.
его ник
N0Trix
Мне интересно каким образом, я мог с***дить его плагин, объясни. Я уверен на 100% что его нет в паблике. На Rubukkit'е только что чекнул Admin GUI и ничего такого тут нет. Так что, данный человек тебе глуобоко нап***дел.
 
Я как всегда делаю плагин уже новый. Он уже в разработке. Мне нужно чтобы когда игрок кликнул чем-то по какому-то блоку и прописывал какую-то команду(XD:lol::lol::lol:) Локация заносилась в этот конфиг и года игрок что-то делает с этим выделенным блоком то тогда это всё от туда доставалось и происходило действие.

Если нужен еще ответ, то вот:
Код:
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

public class ExampleListener extends JavaPlugin {

    public void saveLoc(String path, Location location) {
        FileConfiguration config = this.getConfig();
        UUID uuid = location.getWorld().getUID();

        config.set(path + ".location.world.most", uuid.getMostSignificantBits());
        config.set(path + ".location.world.least", uuid.getLeastSignificantBits());
        config.set(path + ".location.x", location.getX());
        config.set(path + ".location.y", location.getY());
        config.set(path + ".location.z", location.getZ());
    }

    public Location loadLoc(String path) {
        FileConfiguration config = this.getConfig();

        long most = config.getLong(path + ".location.world.most");
        long least = config.getLong(path + ".location.world.least");
        double x = config.getDouble(path + ".location.x");
        double y = config.getDouble(path + ".location.y");
        double z = config.getDouble(path + ".location.z");

        World world = Bukkit.getWorld(new UUID(most, least));
        if (world == null) {
            return null;
        }
        return new Location(world, x, y, z);
    }

}
 
Если нужен еще ответ, то вот:
Код:
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

public class ExampleListener extends JavaPlugin {

    public void saveLoc(String path, Location location) {
        FileConfiguration config = this.getConfig();
        UUID uuid = location.getWorld().getUID();

        config.set(path + ".location.world.most", uuid.getMostSignificantBits());
        config.set(path + ".location.world.least", uuid.getLeastSignificantBits());
        config.set(path + ".location.x", location.getX());
        config.set(path + ".location.y", location.getY());
        config.set(path + ".location.z", location.getZ());
    }

    public Location loadLoc(String path) {
        FileConfiguration config = this.getConfig();

        long most = config.getLong(path + ".location.world.most");
        long least = config.getLong(path + ".location.world.least");
        double x = config.getDouble(path + ".location.x");
        double y = config.getDouble(path + ".location.y");
        double z = config.getDouble(path + ".location.z");

        World world = Bukkit.getWorld(new UUID(most, least));
        if (world == null) {
            return null;
        }
        return new Location(world, x, y, z);
    }

}
Проорал. Location же сериализабле ему не нужны костыли такие.
 
Ну как то так.
типо локация.
Location location = new Location(null, 0, 0, 0);
надуваем в конфиг.
this.getConfig().set("loc", location);
читаем с конфига.
location = (Location) this.getConfig().get("loc");

А ну в принципе тут всё понятно но вот я не понимаю как взять расположение блока в другой метод
мне ведь надо чтобы когда я отмечаю блок палочкой координаты запоминает плагин и потом когда я пишу команду всё записывается в конфиг. И туда же добавляется функция редактирования сообщения.
Кароч щас скину код который у меня есть
JavaScript:
public void onEnable(){
      
        FileConfiguration config = getConfig();
        config.options().copyDefaults(true);
        saveDefaultConfig();
      
        getServer().getPluginManager().registerEvents(this, this);
    }
  
    public boolean onCommand(CommandSender sen, Command cmd, String lbl, String[] args){
      
      
        if(cmd.getName().equalsIgnoreCase("qb-wand")){
            if(!sen.hasPermission("qowesbuilder.wand")){
                sen.sendMessage(ChatColor.RED + "Нет прав");
            }
          
            if(!(sen instanceof Player)){
                sen.sendMessage("Only for players");
                return true;
            }
          
            Player p = (Player) sen;
          
            ItemStack wand = new ItemStack(Material.BLAZE_ROD);
            ItemMeta wandMeta = wand.getItemMeta();
            wandMeta.setDisplayName(ChatColor.GOLD + "Selecter");
            wand.setItemMeta(wandMeta);
            p.getInventory().addItem(wand);
          
            return true;
        }
      
        if(cmd.getName().equalsIgnoreCase("qb-reload")){
            if(!sen.hasPermission("qowesbuilder.reload")){
                sen.sendMessage(ChatColor.RED + "Нет прав");
            }
          
            getServer().getPluginManager().disablePlugin(this);
            getServer().getPluginManager().enablePlugin(this);
          
            return true;
        }
      
        if(cmd.getName().equalsIgnoreCase("qb-save")){
            if(!sen.hasPermission("qowesbuilder.wand")){
                sen.sendMessage(ChatColor.RED + "Нет прав");
            }
          
            if(!(sen instanceof Player)){
                sen.sendMessage("Only for players");
                return true;
            }
          
            return true;
        }
      
        return false;
    }

    @EventHandler
    public void wandSelect(PlayerInteractEvent e){
        Action a = e.getAction();
        if(a != Action.RIGHT_CLICK_BLOCK) return;
        Player p = e.getPlayer();
        if(p.getItemInHand().getType() != Material.BLAZE_ROD) return;
        if(e.getClickedBlock().getType() != Material.DIAMOND_BLOCK) return;
      
        p.sendMessage(ChatColor.GREEN + "Ты нажал выделителем");
    }
  
    @EventHandler
    public void InteactEvent(PlayerInteractEvent e){
        Action a = e.getAction();
        if(a != Action.RIGHT_CLICK_BLOCK) return;
        Player p = e.getPlayer();
        if(e.getClickedBlock().getType() != Material.IRON_BLOCK) return;
        Location loc = p.getLocation();
        Location test = loc.add(+5, 0, +5);
        p.teleport(test);
        p.sendMessage("Тебя сюда перенесло XD");
    }

что делать в таком случае?
 
Сохраняй локацию в Map<UUID,Location>, а потом доставай.

Код:
private Map<UUID,Location> map = new HashMap<>();

...
map.put(event.getPlayer().getUniqueId(), location);
...
...
Location location = map.get(player.getUniqueId());
...
 

Поделиться этой страницей

Назад
Верх