1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как сделать SUB-ID у предмета

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

  1. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon

    VotesForSnow - все таки количество, попробуй в моем коде написать его вместо единцы. т.е. вот так:

    нет, ты не верно понял. таких переменных не существует вообще. а проблема твоя в том что плагин ловит события нажатия вещи в инвентаре, и если вещь та, которая отвечает за погоду, то он ее меняет. логично что если ты сменил материал, то вещь другая и уже ничего не пашет.


    Да кстати, скинь ссыль на сорсы, я тогда смогу отвечать тебе правильно
     
  2. Автор темы
    GoldMine

    GoldMine Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    GoldMine
    Вот полный сорс, в котором я пытаюсь изменить предмет


    Код:
    package com.walrusone.skywars.menus;
    
    import java.util.List;
    
    import org.bukkit.ChatColor;
    import org.bukkit.DyeColor;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.*********ventory.ItemStack;
    
    import com.google.common.collect.Lists;
    import com.walrusone.skywars.SkyWarsReloaded;
    import com.walrusone.skywars.game.Game;
    import com.walrusone.skywars.game.GamePlayer;
    import com.walrusone.skywars.game.Game.GameState;
    import com.walrusone.skywars.utilities.IconMenu;
    import com.walrusone.skywars.utilities.Messaging;
    
    public class WeatherMenu {
    
        private static final int menuSlotsPerRow = 9;
        private static final int menuSize = 36;
        private static final String weatherMenuName = new Messaging.MessageFormatter().format("menu.weather-menu-title");
       
        @SuppressWarnings("deprecation")
        public WeatherMenu(final GamePlayer gamePlayer) {
           
            int rowCount = menuSlotsPerRow;
            while (rowCount < 36 && rowCount < menuSize) {
                rowCount += menuSlotsPerRow;
            }
    
            SkyWarsReloaded.getIC().create(gamePlayer.getP(), weatherMenuName, rowCount, new IconMenu.OptionClickEventHandler() {
                @Override
                public void onOptionClick(IconMenu.OptionClickEvent event) {   
                    String vote = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', event.getName()));
    
                    if (gamePlayer.getGame().getState() != GameState.PREGAME) {
                        return;
                    }
                   
                    if (!hasWeatherPermission(event.getPlayer())) {
                        return;
                    }
                   
                    event.setWillClose(false);
                    event.setWillDestroy(false);
                                   
                    int lastVote = gamePlayer.getTimeVote();
                   
                    if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.weather-sunny"))))) {
                        gamePlayer.setWeatherVote(1);
                        gamePlayer.getP().closeInventory();
                        if (gamePlayer.getGame().getState() == GameState.PREGAME) {
                            SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
                                @Override
                                public void run() {
                                    new MainMenu(gamePlayer);
                                }
                            }, 2);
                        }
                    } else if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.weather-rain"))))) {
                        gamePlayer.setWeatherVote(2);
                        gamePlayer.getP().closeInventory();
                        if (gamePlayer.getGame().getState() == GameState.PREGAME) {
                            SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
                                @Override
                                public void run() {
                                    new MainMenu(gamePlayer);
                                }
                            }, 2);
                        }
                    } else if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.weather-thunder"))))) {
                        gamePlayer.setWeatherVote(3);
                        gamePlayer.getP().closeInventory();
                        if (gamePlayer.getGame().getState() == GameState.PREGAME) {
                            SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
                                @Override
                                public void run() {
                                    new MainMenu(gamePlayer);
                                }
                            }, 2);
                        }
                    } else if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.weather-snow"))))) {
                        gamePlayer.setWeatherVote(4);
                        gamePlayer.getP().closeInventory();
                        if (gamePlayer.getGame().getState() == GameState.PREGAME) {
                            SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
                                @Override
                                public void run() {
                                    new MainMenu(gamePlayer);
                                }
                            }, 2);
                        }
                    } else if (vote.equalsIgnoreCase(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', new Messaging.MessageFormatter().format("menu.return-to-options"))))) {
                        gamePlayer.getP().closeInventory();
                        if (gamePlayer.getGame().getState() == GameState.PREGAME) {
                            SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
                                @Override
                                public void run() {
                                    new MainMenu(gamePlayer);
                                }
                            }, 2);
                        }
                    }
                   
                    if (gamePlayer.getWeatherVote() != lastVote) {
                        Game game = gamePlayer.getGame();
                        for (GamePlayer gPlayer: game.getPlayers()) {
                            if (gPlayer.getP() != null) {
                                gPlayer.getP().sendMessage(new Messaging.MessageFormatter()
                                .withPrefix()
                                .setVariable("player", gamePlayer.getName())
                                .setVariable("time", vote.toUpperCase())
                                .format("game.voted-for-time"));
                            }
                        }
                        gamePlayer.getGame().playSound(SkyWarsReloaded.getCfg().getWeatherVoteSound());
                    }
                }
            });
    
            Game game = gamePlayer.getGame();
            int votesForSunny = 0;
            int votesForRain = 0;
            int votesForThunder = 0;
            int votesForSnow = 0;
            for (GamePlayer gPlayer: game.getPlayers()) {
                if (gPlayer.getWeatherVote() == 1) {
                    votesForSunny++;
                } else if (gPlayer.getWeatherVote() == 2) {
                    votesForRain++;
                } else if (gPlayer.getWeatherVote() == 3) {
                    votesForThunder++;
                } else if (gPlayer.getWeatherVote() == 4) {
                    votesForSnow++;
                }
            }
           
            if (gamePlayer.getP() != null) {
                List<String> loreList = Lists.newLinkedList();
                SkyWarsReloaded.getIC().setOption(
                                gamePlayer.getP(),
                                11,
                                new ItemStack(Material.BLAZE_POWDER, votesForSunny),
                                new Messaging.MessageFormatter().format("menu.weather-sunny"),
                                loreList.toArray(new String[loreList.size()]));
               
                List<String> loreList3 = Lists.newLinkedList();
                SkyWarsReloaded.getIC().setOption(
                                gamePlayer.getP(),
                                12,
                                new ItemStack(Material.MELON_SEEDS, votesForRain),
                                new Messaging.MessageFormatter().format("menu.weather-rain"),
                                loreList3.toArray(new String[loreList3.size()]));
               
                List<String> loreList2 = Lists.newLinkedList();
                SkyWarsReloaded.getIC().setOption(
                                gamePlayer.getP(),
                                14,
                                new ItemStack(Material.WEB, (votesForThunder)),
                                new Messaging.MessageFormatter().format("menu.weather-thunder"),
                                loreList2.toArray(new String[loreList2.size()]));
    
                List<String> loreList4 = Lists.newLinkedList();
                SkyWarsReloaded.getIC().setOption(
                                gamePlayer.getP(),
                                15,
                                new ItemStack(Material.STAINED_GLASS_PANE, 0, (short)6),
                                new Messaging.MessageFormatter().format("menu.weather-snow"),
                                loreList4.toArray(new String[loreList4.size()]));
               
                List<String> loreList5 = Lists.newLinkedList();
                SkyWarsReloaded.getIC().setOption(
                                gamePlayer.getP(),
                                31,
                                new ItemStack(Material.ARROW, 1),
                                new Messaging.MessageFormatter().format("menu.return-to-options"),
                                loreList5.toArray(new String[loreList5.size()]));
               
                SkyWarsReloaded.getIC().show(gamePlayer.getP());
            }
        }
       
        public boolean hasWeatherPermission(Player player) {
            return player.isOp() || player.hasPermission("swr.weathervote");
        }
       
    }
    
    Тут сорсы всего плагина
    https://github.com/walrusone/SkyWar...dedPlugin/src/main/java/com/walrusone/skywars
    ПРОБЛЕМУ РЕШИЛ ТАК В КОДЕ ВПИСАЛ, ВСЕ РАБОТАЕТ НОРМАЛЬНО

    new ItemStack(Material.STAINED_GLASS_PANE, (votesForSnow), (short)3)


    PS: Спасибо всем что уже не раз помогаете по плагинам на руведре, вечером закрою тему если ошибок с subid не будет :3
     
  3. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    ага, только это не стартап. стартап = тутор от автора темы. смени обратно префикс
     
  4. Автор темы
    GoldMine

    GoldMine Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    GoldMine
    Сменил...
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Мне кажется, так поступают 90% людей раздела "Разработка плагинов для новичков". При этом большинство вообще ни единого ЯП не знает. У нас тут весело, короче говоря.
     

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