Помогите Ошибка [?:?]

  • Автор темы Автор темы Rubinks
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Rubinks

Новичок
Баллы
6
Имя в Minecraft
Rubinks
Создаю плагин мини игру но когда его загружаю на сервер вылезает ошибка:
at Monster.Hunter.RunMobSpawner.run(RunMobSpawner.java:14) ~[?:?]
at org.bukkit.craftbukkit.v1_13_R1.scheduler.CraftTask.run(CraftTask.java:58) ~[craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at org.bukkit.craftbukkit.v1_13_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:360) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.MinecraftServer.w(MinecraftServer.java:821) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.DedicatedServer.w(DedicatedServer.java:376) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.MinecraftServer.v(MinecraftServer.java:780) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.MinecraftServer.run(MinecraftServer.java:683) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at java.lang.Thread.run(Unknown Source) [?:?]

Вот класс RunMobSpawner:
package Monster.Hunter;
import org.bukkit.scheduler.BukkitRunnable;
public class RunMobSpawner extends BukkitRunnable{

private MonsterHunter plugin;
public RunMobSpawner(MonsterHunter pludin) {
this.plugin = plugin;
}


@Override
public void run() {
for(String name : plugin.getArenas().keySet()) {
plugin.getArenas().get(name).spawnMobs();
}
}
}

Вот основной класс(MonsterHunter):
package Monster.Hunter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import Monster.Hunter.MiniPlayer;
import Monster.Hunter.Arena;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.ItemFrame;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
public class MonsterHunter extends JavaPlugin implements Listener{
int diamond_axe = 300;
boolean Diamond_axe = false;
public static Random rnd = new Random();
private HashMap<String, MiniPlayer> miniPlayers = new HashMap<String, MiniPlayer>();
private HashMap<String, Arena> arenas = new HashMap<String, Arena>();
public void onEnable(){
getLogger().info("RUN");

RunMobSpawner spawner = new RunMobSpawner(this);
spawner.runTaskTimer(this, 150L, 150L);

}
public void onDisable() {
getLogger().info("STOP");

}

@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {
miniPlayers.put(e.getPlayer().getDisplayName(), new MiniPlayer());
}
@EventHandler
public void onPlayerExit(PlayerQuitEvent e) {
miniPlayers.remove(e.getPlayer().getDisplayName());
}

@EventHandler
public void onPlayerDeath(PlayerDeathEvent e) {
e.setDroppedExp(0);
}
@EventHandler
public void onEntityDeath(EntityDeathEvent e) {
e.getDrops().clear();
e.setDroppedExp(0);
if(e.getEntity().getKiller() != null) {
String nikename = e.getEntity().getKiller().getDisplayName();
if(miniPlayers.containsKey(nikename)) {
miniPlayers.get(nikename).addMoney(10);
}
e.getEntity().getKiller().sendMessage("You got 10 coins" );
}
}
@EventHandler
public void onPlayerInteractEntity(PlayerInteractEntityEvent e) {
if(!miniPlayers.containsKey(e.getPlayer().getDisplayName())) {
return;
}
MiniPlayer miniPlayer = miniPlayers.get(e.getPlayer().getDisplayName());
if(e.getRightClicked().getType() == EntityType.ITEM_FRAME) {
ItemStack item = ((ItemFrame) e.getRightClicked()).getItem();
ItemMeta meta = item.getItemMeta();
if(meta.getLore() != null && meta.getLore().get(0) != null && meta.getLore().get(0) != "") {
int price = Integer.parseInt(meta.getLore().get(0));
e.getPlayer().sendMessage(price + "");
if(miniPlayer.getMoney() >= price) {
miniPlayer.setMoney(miniPlayer.getMoney() - price );
miniPlayer.addPlayerItem(item);
e.getPlayer().sendMessage("Ok");
}
}
}

}


public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
Player player = (Player) sender;

if(command.getName().equalsIgnoreCase("/addArena")) {

if(args != null && args.length >= 3) {
String[] minLocation = args[1].split(",");
Location min = new Location(player.getWorld(),
Integer.parseInt(minLocation[0]),
Integer.parseInt(minLocation[1]),
Integer.parseInt(minLocation[2]));
String[] maxLocation = args[2].split(",");
Location max = new Location(player.getWorld(),
Integer.parseInt(maxLocation[0]),
Integer.parseInt(maxLocation[1]),
Integer.parseInt(maxLocation[2]));
Location spawn = player.getLocation();


arenas.put(args[0], new Arena(min, max, spawn));
return true;
}
}else if(command.getName().equalsIgnoreCase("/goArena")) {

for(ItemStack item : miniPlayers.get(player.getDisplayName()).getPlayerItems()) {
player.getInventory().addItem(item);
}
if(args != null) {
if(arenas.containsKey(args[0])) {
player.teleport(arenas.get(args[0]).getSpawnLocation());
return true;

}else {
player.sendMessage("There is no arena with name" + args[0]);
}
}
}else if(command.getName().equalsIgnoreCase("/buyMHI")) {
if(args != null && args.length >= 2) {
ItemStack ItemToGive = new ItemStack(Material.getMaterial(args[0]));
ItemMeta meta = ItemToGive.getItemMeta();
List<String> newLore = new ArrayList<String>();
for(int i = 0; i <args.length; i++) {
newLore.add(args);
}
meta.setLore(newLore);
ItemToGive.setItemMeta(meta);
player.getInventory().addItem(ItemToGive);
}
}
return false;
}
public HashMap<String, Arena> getArenas(){
return arenas;
}
}


Класс Arena:
package Monster.Hunter;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Drowned;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Zombie;
import org.*********ventory.ItemStack;
public class Arena {

private Location minLocation, maxLocation, spawnLocation;

public Arena(Location minLocation, Location maxLocation, Location spawnLocation) {
this.setMinLocation(minLocation);
this.setMaxLocation(maxLocation);
this.setSpawnLocation(spawnLocation);
}

public void spawnMobs() {
Location randomLocation = new Location(minLocation.getWorld(),
minLocation.getX() + (int) (Math.random() * (maxLocation.getBlockX() - minLocation.getBlockX()) +1),
minLocation.getY() +(int) (Math.random() * (maxLocation.getBlockY() - minLocation.getBlockY()) +1),
minLocation.getZ() + (int) (Math.random() * (maxLocation.getBlockZ() - minLocation.getBlockZ())+1));
Zombie drowned =(Zombie) randomLocation.getWorld().spawnEntity(randomLocation, EntityType.ZOMBIE);
drowned.setCustomName("undead");
drowned.getEquipment().setItemInHand(new ItemStack(Material.WOOD_SWORD));
}
public Location getMinLocation() {
return minLocation;
}
public void setMinLocation(Location minLocation) {
this.minLocation = minLocation;
}
public Location getMaxLocation() {
return maxLocation;
}
public void setMaxLocation(Location maxLocation) {
this.maxLocation = maxLocation;
}
public Location getSpawnLocation() {
return spawnLocation;
}
public void setSpawnLocation(Location spawnLocation) {
this.spawnLocation = spawnLocation;
}
}


Класс Mini Player:
package Monster.Hunter;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.*********ventory.ItemStack;
public class MiniPlayer {
public static int money = 0;
private List<ItemStack> playerItems = new ArrayList<ItemStack>();

public MiniPlayer() {
playerItems.add(new ItemStack(Material.IRON_SWORD));
}

public int getMoney(){
return money;
}
public void setMoney(int i) {
this.money = money;
}

public void addMoney(int money ) {
this.money += money;
}

public List<ItemStack> getPlayerItems() {
return playerItems;
}
public void setPlayerItems(List<ItemStack> playerItems) {
this.playerItems = playerItems;
}

public void addPlayerItem(ItemStack item) {
playerItems.add(item);
}
}
 
Все, что могу сказать по той инфе, что ты предоставил, ошибка в данном участке кода
Код:
@Override
public void run() {
  for(String name : plugin.getArenas().keySet()) {
    plugin.getArenas().get(name).spawnMobs();
  }
}

Скорее всего, тут
Код:
plugin.getArenas().get(name).spawnMobs();
Учитесь читать ошибки, это не так сложно)
Ну или хотя бы вставляйте полные ошибки, а то вы предоставили только стек вызова. Ни типа ошибки, ни сообщения нет.
 
Еще не тестировали код на двух и более игроках?)
Напоритесь на ошибку в коде, а именно в MiniPlayer. Изменяете статик переменную в каждом инстансе объекта.
 
Все, что могу сказать по той инфе, что ты предоставил, ошибка в данном участке кода
Код:
@Override
public void run() {
  for(String name : plugin.getArenas().keySet()) {
    plugin.getArenas().get(name).spawnMobs();
  }
}

Скорее всего, тут
Код:
plugin.getArenas().get(name).spawnMobs();
Учитесь читать ошибки, это не так сложно)
Ну или хотя бы вставляйте полные ошибки, а то вы предоставили только стек вызова. Ни типа ошибки, ни сообщения нет.


[11:44:13 WARN]: [MonsterHunter] Task #5 for MonsterHunter v1.0 generated an exception
java.lang.NullPointerException: null
at Monster.Hunter.RunMobSpawner.run(RunMobSpawner.java:14) ~[?:?]
at org.bukkit.craftbukkit.v1_13_R1.scheduler.CraftTask.run(CraftTask.java:58) ~[craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at org.bukkit.craftbukkit.v1_13_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:360) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.MinecraftServer.w(MinecraftServer.java:821) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.DedicatedServer.w(DedicatedServer.java:376) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.MinecraftServer.v(MinecraftServer.java:780) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.MinecraftServer.run(MinecraftServer.java:683) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at java.lang.Thread.run(Unknown Source) [?:?]
 
[11:44:13 WARN]: [MonsterHunter] Task #5 for MonsterHunter v1.0 generated an exception
java.lang.NullPointerException: null
at Monster.Hunter.RunMobSpawner.run(RunMobSpawner.java:14) ~[?:?]
at org.bukkit.craftbukkit.v1_13_R1.scheduler.CraftTask.run(CraftTask.java:58) ~[craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at org.bukkit.craftbukkit.v1_13_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:360) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.MinecraftServer.w(MinecraftServer.java:821) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.DedicatedServer.w(DedicatedServer.java:376) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.MinecraftServer.v(MinecraftServer.java:780) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at net.minecraft.server.v1_13_R1.MinecraftServer.run(MinecraftServer.java:683) [craftbukkit-1.13.jar:git-Bukkit-1c7adf7]
at java.lang.Thread.run(Unknown Source) [?:?]
Так лень найти 14 строчку в классе RunMobSpawner и посмотреть какая переменная там null?
И код лучше под спойлер давать, можно и обернуть в
Код:
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх