Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pomoc w pluginie MegaWalls - czy ten kod jest w 100% poprawny?


Mnichuxx

Rekomendowane odpowiedzi

Opublikowano

Witam. Ostatnio natknalem sie w sieci na plugin do mega walls i kiedy probuje cos utawic np. lobby pisze ze /walls <args>. Javy znam tylko małe podstawy ale otworzylm plugin w jd-gui i moim zdaniem wina lezy po stronie classy commend wiec prosze bardziej obeznanych w temacie o zerkniecie na kod. Ewentualnie jak bedzie taka potrzeba moge udostepnic plugin. A oto kod :

 

 

 

package com.gregoiretaja.MegaWalls.Commands;
 
import com.gregoiretaja.MegaWalls.Managers.KitManager;
import com.gregoiretaja.MegaWalls.Managers.TeamsManager.TeamColor;
import com.gregoiretaja.MegaWalls.MegaWalls;
import com.gregoiretaja.MegaWalls.MegaWalls.GameState;
import com.gregoiretaja.MegaWalls.Timers.GameTimer;
import com.gregoiretaja.MegaWalls.Utils.Data;
import java.util.HashMap;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.PluginManager;
 
public class CommandWalls
  implements CommandExecutor, Listener
{
  private HashMap<UUID, TeamConfig> m_teamConfig = new HashMap();
  private HashMap<UUID, WallConfig> m_wallConfig = new HashMap();
  
  public CommandWalls()
  {
    Bukkit.getPluginManager().registerEvents(this, MegaWalls.getInstance());
  }
  
  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
  {
    if (!(sender instanceof Player))
    {
      sender.sendMessage(ChatColor.RED + "You must be a player !");
      return true;
    }
    if (!sender.isOp())
    {
      sender.sendMessage(ChatColor.RED + "You must be an admin !");
      return true;
    }
    Player player = (Player)sender;
    if (args.length == 1)
    {
      if (args[0].equalsIgnoreCase("setlobby"))
      {
        Location l = player.getLocation();
        Data.getInstance().setLobby(l);
        l.getWorld().setSpawnLocation(l.getBlockX(), l.getBlockY(), l.getBlockZ());
        
        player.sendMessage(ChatColor.GREEN + "Lobby define !");
        return true;
      }
      if (args[0].equalsIgnoreCase("lobby"))
      {
        player.teleport(Data.getInstance().getLobby());
        return true;
      }
      if (args[0].equalsIgnoreCase("gameworld"))
      {
        player.teleport(MegaWalls.getWorldGame().getSpawnLocation());
        return true;
      }
      if (args[0].equalsIgnoreCase("addwall"))
      {
        this.m_wallConfig.put(player.getUniqueId(), new WallConfig(player));
        player.setItemInHand(new ItemStack(Material.STICK, 1));
        return true;
      }
      if (args[0].equalsIgnoreCase("clearwalls"))
      {
        Data.getInstance().clearWalls();
        player.sendMessage(ChatColor.RED + "Walls clear !");
        return true;
      }
      if (args[0].equalsIgnoreCase("start"))
      {
        if (MegaWalls.getGameState() == MegaWalls.GameState.CONFIG)
        {
          MegaWalls.getInstance().getConfig().set("config-mode", Boolean.valueOf(false));
          MegaWalls.getInstance().saveConfig();
          player.sendMessage(ChatColor.GREEN + "Config mode disable, please restart the server");
          return true;
        }
        if (MegaWalls.getGameState() == MegaWalls.GameState.LOBBY)
        {
          GameTimer.getInstance().setTime(2L);
          return true;
        }
      }
    }
    else if (args.length == 2)
    {
      if (args[0].equalsIgnoreCase("configteam"))
      {
        TeamsManager.TeamColor color = TeamsManager.TeamColor.getByString(args[1]);
        if (color == null)
        {
          player.sendMessage(ChatColor.RED + "Use /walls configteam <BLUE | GREEN | RED | YELLOW>");
        }
        else
        {
          this.m_teamConfig.put(player.getUniqueId(), new TeamConfig(player, color));
          player.setItemInHand(new ItemStack(Material.STICK, 1));
        }
        return true;
      }
    }
    else if ((args.length >= 3) && 
      (args[0].equalsIgnoreCase("addkit")))
    {
      Material item = Material.getMaterial(args[1].toUpperCase());
      StringBuilder name = new StringBuilder();
      for (int i = 2; i < args.length; i++)
      {
        if (i > 2) {
          name.append(" ");
        }
        name.append(args);
      }
      KitManager.getInstance().addKit(name.toString(), item, player);
      player.sendMessage(ChatColor.GREEN + "Kit added !");
      return true;
    }
    return false;
  }
  
  @EventHandler
  public void onPlayerInteract(PlayerInteractEvent event)
  {
    Player player = event.getPlayer();
    if (!player.getItemInHand().getType().equals(Material.STICK)) {
      return;
    }
    if ((this.m_teamConfig.containsKey(player.getUniqueId())) && (
      (event.getAction() == Action.RIGHT_CLICK_AIR) || (event.getAction() == Action.RIGHT_CLICK_BLOCK))) {
      ((TeamConfig)this.m_teamConfig.get(player.getUniqueId())).setState(player.getLocation());
    }
    if ((this.m_wallConfig.containsKey(player.getUniqueId())) && 
      (event.getAction() == Action.RIGHT_CLICK_BLOCK)) {
      ((WallConfig)this.m_wallConfig.get(player.getUniqueId())).setState(event.getClickedBlock().getLocation());
    }
  }
  
  private class TeamConfig
  {
    private Player m_player;
    private TeamsManager.TeamColor m_color;
    private int m_state;
    private Location m_spawn;
    private Location m_wither;
    
    public TeamConfig(Player player, TeamsManager.TeamColor color)
    {
      this.m_player = player;
      this.m_color = color;
      this.m_state = 0;
      this.m_player.sendMessage(ChatColor.YELLOW + "Right click with stick to set team spawn");
    }
    
    public void setState(Location loc)
    {
      if (this.m_state == 0)
      {
        this.m_player.sendMessage(ChatColor.YELLOW + "Ok! Right click with stick to set wither location");
        this.m_spawn = loc;
        this.m_state += 1;
      }
      else if (this.m_state == 1)
      {
        this.m_player.sendMessage(ChatColor.GREEN + "Team config !");
        this.m_wither = loc;
        
        Data.getInstance().createTeamData(this.m_color, this.m_spawn, this.m_wither);
        CommandWalls.this.m_teamConfig.remove(this.m_player.getUniqueId());
      }
    }
  }
  
  private class WallConfig
  {
    private Player m_player;
    private int m_state;
    private Location m_loc1;
    private Location m_loc2;
    
    public WallConfig(Player player)
    {
      this.m_player = player;
      this.m_state = 0;
      this.m_player.sendMessage(ChatColor.YELLOW + "Right click with stick on block to set first location of wall");
    }
    
    public void setState(Location loc)
    {
      if (this.m_state == 0)
      {
        this.m_player.sendMessage(ChatColor.YELLOW + "Ok! Right click with stick on block to set second location of wall");
        this.m_loc1 = loc;
        this.m_state += 1;
      }
      else if (this.m_state == 1)
      {
        this.m_player.sendMessage(ChatColor.GREEN + "Wall added !");
        this.m_loc2 = loc;
        
        Data.getInstance().addWall(this.m_loc1, this.m_loc2);
        CommandWalls.this.m_wallConfig.remove(this.m_player.getUniqueId());
      }
    }
  }
}

To jest main

 

package com.gregoiretaja.MegaWalls;
 
import com.gregoiretaja.MegaWalls.Commands.CommandAllChat;
import com.gregoiretaja.MegaWalls.Commands.CommandMessage;
import com.gregoiretaja.MegaWalls.Commands.CommandWalls;
import com.gregoiretaja.MegaWalls.Listeners.BasicPlayerListener;
import com.gregoiretaja.MegaWalls.Listeners.ChatListener;
import com.gregoiretaja.MegaWalls.Listeners.GameListener;
import com.gregoiretaja.MegaWalls.Listeners.LobbyListener;
import com.gregoiretaja.MegaWalls.Listeners.Motd;
import com.gregoiretaja.MegaWalls.Listeners.SpectatorListener;
import com.gregoiretaja.MegaWalls.Listeners.WorldListener;
import com.gregoiretaja.MegaWalls.Managers.PlayersManager;
import com.gregoiretaja.MegaWalls.Managers.PlayersManager.TucPlayer;
import com.gregoiretaja.MegaWalls.Managers.TeamsManager;
import com.gregoiretaja.MegaWalls.Managers.TeamsManager.TeamColor;
import com.gregoiretaja.MegaWalls.Managers.TeamsManager.TucTeam;
import com.gregoiretaja.MegaWalls.Managers.TucScoreboardManager;
import com.gregoiretaja.MegaWalls.Timers.GameTimer;
import com.gregoiretaja.MegaWalls.Utils.Data;
import com.gregoiretaja.MegaWalls.Utils.EntityFreeze;
import com.gregoiretaja.MegaWalls.Utils.FileUtils;
import com.gregoiretaja.MegaWalls.Utils.Lang;
import com.gregoiretaja.MegaWalls.Utils.Utils;
import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.command.PluginCommand;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.messaging.Messenger;
 
public class MegaWalls extends JavaPlugin
{
  private World m_worldGame;
  private GameState m_gameState;
  private static MegaWalls instance;
 
  public static MegaWalls getInstance()
  {
    return instance;
  }
 
  public void onEnable()
  {
    instance = this;
 
    saveDefaultConfig();
    reloadConfig();
 
    if (getBoolean("enable-bungeecord")) {
      getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
    }
 
    File srcDir = new File("world_walls");
    File destDir = new File("world_in_progress");
 
    FileUtils.deleteDirectory(destDir);
    FileUtils.copyDirectory(srcDir, destDir);
 
    this.m_worldGame = Bukkit.createWorld(new WorldCreator("world_in_progress"));
 
    Data.getInstance();
    Lang.init();
    EntityFreeze.getInstance();
    TucScoreboardManager.getInstance();
    TeamsManager.getInstance();
 
    this.m_gameState = (getBoolean("config-mode") ? GameState.CONFIG : GameState.LOBBY);
    Iterator localIterator2;
    for (Iterator localIterator1 = Bukkit.getWorlds().iterator(); localIterator1.hasNext(); 
      localIterator2.hasNext())
    {
      World world = (World)localIterator1.next();
      localIterator2 = world.getEntities().iterator(); continue; Entity entity = (Entity)localIterator2.next();
      if (((entity instanceof LivingEntity)) && (entity.getType() != EntityType.PLAYER)) entity.remove();
 
    }
 
    PluginManager pm = getServer().getPluginManager();
    if (!getBoolean("config-mode")) {
      pm.registerEvents(new BasicPlayerListener(), this);
      pm.registerEvents(new ChatListener(), this);
      pm.registerEvents(new GameListener(), this);
      pm.registerEvents(new LobbyListener(), this);
      pm.registerEvents(new SpectatorListener(), this);
    }
    pm.registerEvents(new WorldListener(), this);
 
    GameTimer.getInstance().start();
    getWorldGame().setStorm(false);
 
    getCommand("walls").setExecutor(new CommandWalls());
    getCommand("all").setExecutor(new CommandAllChat());
    getCommand("message").setExecutor(new CommandMessage());
  }
 
  public void onDisable()
  {
    if (getGameState() == GameState.CONFIG) {
      File srcDir = new File("world_in_progress");
      File destDir = new File("world_walls");
 
      FileUtils.deleteDirectory(destDir);
      FileUtils.copyDirectory(srcDir, destDir);
    }
  }
 
  public static World getWorldGame() { return instance.m_worldGame; } 
  public static GameState getGameState() { return instance.m_gameState; }
 
  public void setGameState(GameState gameState) {
    this.m_gameState = gameState;
    Object localObject1;
    if (this.m_gameState == GameState.PREPARATION) {
      Motd.set(Lang.get("MOTD_GAME"));
 
      for (TeamsManager.TucTeam team : TeamsManager.getInstance().getTeams()) {
        team.initToGame();
      }
 
      List withoutTeam = new LinkedList();
 
      for (PlayersManager.TucPlayer tplayer : PlayersManager.getInstance().getPlayers()) {
        if (tplayer.getTeamColor() == null) withoutTeam.add(tplayer); else {
          TeamsManager.getInstance().getTeam(tplayer.getTeamColor()).addPlayer(tplayer);
        }
      }
      while ((!TeamsManager.getInstance().allTeamFull()) && (!withoutTeam.isEmpty())) {
        TeamsManager.TucTeam team = (TeamsManager.TucTeam)TeamsManager.getInstance().getTeamNotFull().get(0);
        team.addPlayer((PlayersManager.TucPlayer)withoutTeam.get(0));
        ((PlayersManager.TucPlayer)withoutTeam.get(0)).setTeamColor(team.getColor());
        withoutTeam.remove(0);
      }
      Object localObject2;
      for (??? = TeamsManager.getInstance().getTeams().iterator(); ???.hasNext(); 
        ((Iterator)localObject2).hasNext())
      {
        TeamsManager.TucTeam team = (TeamsManager.TucTeam)???.next();
        localObject2 = team.getPlayers().iterator(); continue; tplayer = (PlayersManager.TucPlayer)((Iterator)localObject2).next();
        Utils.resetPlayer(tplayer.getPlayer());
        tplayer.getPlayer().teleport(team.getSpawn());
        tplayer.applyKit();
        tplayer.getPlayer().setScoreboard(team.getScoreboard());
      }
 
      PlayersManager.TucPlayer tplayer = (localObject2 = TeamsManager.TeamColor.values()).length; for (localObject1 = 0; localObject1 < tplayer; localObject1++) { TeamsManager.TeamColor color = localObject2[localObject1];
        TeamsManager.getInstance().refreshTeam(TeamsManager.getInstance().getTeam(color));
      }
 
      Bukkit.broadcastMessage(Lang.get("START_PREPARATION"));
    }
    else if (this.m_gameState == GameState.GAME)
    {
      Data.getInstance().breakWalls();
 
      Bukkit.broadcastMessage(Lang.get("START_GAME"));
    }
    else if (this.m_gameState != GameState.END)
    {
      if (this.m_gameState == GameState.RESTART)
      {
        Object player;
        if (TeamsManager.getInstance().getTeams().size() == 1) {
          TeamsManager.TucTeam winner = (TeamsManager.TucTeam)TeamsManager.getInstance().getTeams().get(0);
          for (localObject1 = Bukkit.getOnlinePlayers().iterator(); ((Iterator)localObject1).hasNext(); ) { player = (Player)((Iterator)localObject1).next();
            Utils.kick((Player)player, Lang.get("KICK_WIN")
              .replaceAll("<team_color>", winner.getColor().getChatColor().toString())
              .replaceAll("<team>", winner.getColor().getTeamName())); }
        }
        else
        {
          for (player = Bukkit.getOnlinePlayers().iterator(); ((Iterator)player).hasNext(); ) { Player player = (Player)((Iterator)player).next();
            Utils.kick(player, Lang.get("KICK_END")); }
        }
      }
    }
  }
 
  public static int getInt(String key)
  {
    return instance.getConfig().getInt(key); } 
  public static boolean getBoolean(String key) { return instance.getConfig().getBoolean(key); } 
  public static String getString(String key) { return instance.getConfig().getString(key); } 
  public static int getPlayerMax() { return getInt("players-by-team") * TeamsManager.TeamColor.values().length; }
 
  public static enum GameState {
    CONFIG, 
    LOBBY, 
    PREPARATION, 
    GAME, 
    END, 
    RESTART;
 
    public boolean isGameStarted() {
      return (this == PREPARATION) || (this == GAME);
    }
  }
}

Opublikowano

[19:11:07] [server thread/ERROR]: Error occurred while enabling MegaWalls v0.5 (Is it up to date?)

java.lang.NullPointerException
at com.gregoiretaja.MegaWalls.Utils.Data.getTeamData(Data.java:60) ~[?:?]
at com.gregoiretaja.MegaWalls.Managers.TeamsManager$TucTeam.<init>(TeamsManager.java:164) ~[?:?]
at com.gregoiretaja.MegaWalls.Managers.TeamsManager$TucTeam.<init>(TeamsManager.java:161) ~[?:?]
at com.gregoiretaja.MegaWalls.Managers.TeamsManager.<init>(TeamsManager.java:41) ~[?:?]
at com.gregoiretaja.MegaWalls.Managers.TeamsManager.getInstance(TeamsManager.java:35) ~[?:?]
at com.gregoiretaja.MegaWalls.MegaWalls.onEnable(MegaWalls.java:74) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot.jar:git-Spigot-db6de12-18fbb24]
at us.Myles.PWP.TransparentListeners.PerWorldPluginLoader.enablePlugin(PerWorldPluginLoader.java:145) [PerWorldPlugins.jar:?]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525) [spigot.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_66]
[19:11:07] [server thread/INFO]: [EssentialsSpawn] Enabling EssentialsSpawn vTeamCity
Tutaj log
Opublikowano

 

[19:11:07] [server thread/ERROR]: Error occurred while enabling MegaWalls v0.5 (Is it up to date?)

java.lang.NullPointerException
at com.gregoiretaja.MegaWalls.Utils.Data.getTeamData(Data.java:60) ~[?:?]
at com.gregoiretaja.MegaWalls.Managers.TeamsManager$TucTeam.<init>(TeamsManager.java:164) ~[?:?]
at com.gregoiretaja.MegaWalls.Managers.TeamsManager$TucTeam.<init>(TeamsManager.java:161) ~[?:?]
at com.gregoiretaja.MegaWalls.Managers.TeamsManager.<init>(TeamsManager.java:41) ~[?:?]
at com.gregoiretaja.MegaWalls.Managers.TeamsManager.getInstance(TeamsManager.java:35) ~[?:?]
at com.gregoiretaja.MegaWalls.MegaWalls.onEnable(MegaWalls.java:74) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot.jar:git-Spigot-db6de12-18fbb24]
at us.Myles.PWP.TransparentListeners.PerWorldPluginLoader.enablePlugin(PerWorldPluginLoader.java:145) [PerWorldPlugins.jar:?]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525) [spigot.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_66]
[19:11:07] [server thread/INFO]: [EssentialsSpawn] Enabling EssentialsSpawn vTeamCity
Tutaj log

 

no to błąd co dokladnie okresla co i gdzie jest źle.

 

Coś do czego się odwołujesz jest nullem:

at com.gregoiretaja.MegaWalls.Utils.Data.getTeamData(Data.java:60) ~[?:?]

masz tu klasę, metodą i numer linijki, a każda kolejna linijka bledu to miejsce skąd metoda wyżej została wywołana.

1438614356923701010629.png

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...