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

  • Автор темы Автор темы GoldMine
  • Дата начала Дата начала
Это не кол-во это точно вот смотри полный код, в других местах прописано подобное и ошибок нет

6e0b46ba48c34c438f85c59e4d625cfc.png



Я убрал эту перемененную все работает, стекла другого цвета, но тогда не работает выборка погоды в SkyWars

Есть ли способ вписать переменную в код ?!

PS: Эта переменная как я понял отвечает за выборку погоды на SkyWars


VotesForSnow - все таки количество, попробуй в моем коде написать его вместо единцы. т.е. вот так:
new ItemStack(Material.SNOW_BALL, (votesForSnow), (short)DATAID)


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


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




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


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

Вот полный сорс, в котором я пытаюсь изменить предмет


JavaScript:
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
 
ага, только это не стартап. стартап = тутор от автора темы. смени обратно префикс
 
Ты плагины начал писать, на зная саму джаву?)
Мне кажется, так поступают 90% людей раздела "Разработка плагинов для новичков". При этом большинство вообще ни единого ЯП не знает. У нас тут весело, короче говоря.
 
Назад
Верх