Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Bomber123, 6 апр 2017.

  1. Автор темы
    Bomber123

    Bomber123 Активный участник Пользователь

    Баллы:
    46
    Я как всегда делаю плагин уже новый. Он уже в разработке. Мне нужно чтобы когда игрок кликнул чем-то по какому-то блоку и прописывал какую-то команду(XD:lol::lol::lol:) Локация заносилась в этот конфиг и года игрок что-то делает с этим выделенным блоком то тогда это всё от туда доставалось и происходило действие.
     
  2. Хостинг MineCraft
    <
  3. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    HunterGaming13
    Ну это уже слишком, ты хочешь чтоб за тебя весь код написали
     
  4. Автор темы
    Bomber123

    Bomber123 Активный участник Пользователь

    Баллы:
    46
    Нет просто помогли. у меня тут есть уже некие заготовки.
    А код я и сам написать смогу. Просто объясните как надо это делать.[DOUBLEPOST=1491477669,1491477574][/DOUBLEPOST]
    Ага за меня весь код. А за тебя весь плагин! Да да тот самый AdminGUI мне чувак в личку написал что ты у него плагин с****ил.[DOUBLEPOST=1491477707][/DOUBLEPOST]Что мол ты все ник нэймы поменял.[DOUBLEPOST=1491477753][/DOUBLEPOST]его ник
    N0Trix
     
  5. iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    opy
    Врят ли он своровал тот плагин, ибо это такой костыль... Просто поверь мне, ибо я видел этот код.
     
  6. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну как то так.
    типо локация.
    Location location = new Location(null, 0, 0, 0);
    надуваем в конфиг.
    this.getConfig().set("loc", location);
    читаем с конфига.
    location = (Location) this.getConfig().get("loc");
     
  7. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    HunterGaming13
    Вообще-то я тот костыль переписал с нуля...[DOUBLEPOST=1491485175,1491485150][/DOUBLEPOST]
    Старое Admin Menu я удалил
     
  8. iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    opy
    И получил другой костыль .-.
     
  9. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    HunterGaming13
    Ты чекал новый код?[DOUBLEPOST=1491485330,1491485251][/DOUBLEPOST]
    Мне интересно каким образом, я мог с***дить его плагин, объясни. Я уверен на 100% что его нет в паблике. На Rubukkit'е только что чекнул Admin GUI и ничего такого тут нет. Так что, данный человек тебе глуобоко нап***дел.
     
  10. JekaRUS

    JekaRUS Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    JekaRUS
    Если нужен еще ответ, то вот:
    Код:
    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);
        }
    
    }
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Проорал. Location же сериализабле ему не нужны костыли такие.
     
  12. JekaRUS

    JekaRUS Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    JekaRUS
    Ну... Я с конфигами баккита почти не работал, так как они не очень.. Теперь буду знать, но не знаю зачем :)
     
  13. XjCyan1de

    XjCyan1de Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Поподробнее можно?
     
  14. Автор темы
    Bomber123

    Bomber123 Активный участник Пользователь

    Баллы:
    46
    А ну в принципе тут всё понятно но вот я не понимаю как взять расположение блока в другой метод
    мне ведь надо чтобы когда я отмечаю блок палочкой координаты запоминает плагин и потом когда я пишу команду всё записывается в конфиг. И туда же добавляется функция редактирования сообщения.
    Кароч щас скину код который у меня есть[DOUBLEPOST=1491535308,1491535071][/DOUBLEPOST]
    Код:
    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");
        }
    [DOUBLEPOST=1491535424][/DOUBLEPOST]что делать в таком случае?
     
  15. JekaRUS

    JekaRUS Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    JekaRUS
    Сохраняй локацию в Map<UUID,Location>, а потом доставай.

    Код:
    private Map<UUID,Location> map = new HashMap<>();
    
    ...
    map.put(event.getPlayer().getUniqueId(), location);
    ...
    ...
    Location location = map.get(player.getUniqueId());
    ...
     
  16. Автор темы
    Bomber123

    Bomber123 Активный участник Пользователь

    Баллы:
    46
    эммммм[DOUBLEPOST=1491540735,1491540700][/DOUBLEPOST]и чё мне с этим делать по проще нельзя
     
    Последнее редактирование: 8 апр 2017
  17. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    И так все разжевали, куда проще то?
     
  18. Автор темы
    Bomber123

    Bomber123 Активный участник Пользователь

    Баллы:
    46
    да я понял как это всё к моему коду прицепить.
     
  19. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    видимо, пока не изучишь java, никак
     
  20. Автор темы
    Bomber123

    Bomber123 Активный участник Пользователь

    Баллы:
    46
    ;([DOUBLEPOST=1491649375,1491649280][/DOUBLEPOST]эх, значит никогда
     

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