#java #plugins #minecraft #bukkit
#java #Плагины #Minecraft #bukkit
Вопрос:
Я создаю плагин для жилья (Bukkit 1.6.4) на java для мод-компании, в которой я работаю. Для этого мне нужно использовать NPC. Я пытался использовать Cizizens API, но когда я пытаюсь создать его, он всегда выдает мне ошибку:
java.lang.NullPointerException
at com.packagenamehere.npc.HouseShopNPC.<init>(HouseShopNPC.java:23)
at com.packagenamehere.houses.House.createNPCS(House.java:88)
at com.packagenamehere.data.HouseDataLoader.loadData(HouseDataLoader.java:80)
at com.packagenamehere.data.HouseDataLoader.<init>(HouseDataLoader.java:20)
at com.packagenamehere.data.DataSetUp.checkFirstRun(DataSetUp.java:24)
at com.packagenamehere.data.DataSetUp.<init>(DataSetUp.java:16)
at com.packagenamehere.main.Main.onEnable(Main.java:205)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.java:284)
at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.java:266)
at net.minecraft.server.v1_6_R3.MinecraftServer.l(MinecraftServer.java:315)
at net.minecraft.server.v1_6_R3.MinecraftServer.f(MinecraftServer.java:292)
at net.minecraft.server.v1_6_R3.MinecraftServer.a(MinecraftServer.java:252)
at net.minecraft.server.v1_6_R3.DedicatedServer.init(DedicatedServer.java:152)
at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:393)
at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
Plugins.yml:
depend: [Multiverse-Core]
name: Housing
description: This is a plugin for housing.
version: 1.0
main: com.packagenamehere.main.Main
Authors: MaxR
commands:
h:
usage: /<command>
description: type /house help for a list of cmds
HouseShopNPC:
package com.packagenamehere.npc;
import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.event.NPCClickEvent;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.npc.NPCRegistry;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class HouseShopNPC implements Listener{
public HouseShopNPC(Location loc){
World hWorld = Bukkit.getWorld("HouseWorld");
NPCRegistry registry = CitizensAPI.getNPCRegistry();
NPC hNpc = registry.createNPC(EntityType.PLAYER, "Shop");
hNpc.spawn(Bukkit.getWorlds().get(0).getSpawnLocation());
}
@EventHandler
public void onClickEvent(NPCClickEvent e){
Player plr = e.getClicker();
plr.sendMessage("sdfsdf");
}
}
Я также включил CitizensAPI.setImplementation(new CitizensPlugin()) {...}
в свой main.java файл, потому что это дало бы мне исключение illegalargumentexception, если бы я не включил эту строку.
Кто-нибудь знает, как я мог бы это исправить?
Спасибо
Ответ №1:
Не совсем уверен во всех деталях Citizens API, но из ошибки java я бы сделал вывод, что переменная registry (объект NPCRegistry) равна null.
Кроме того, я помню из моего времени работы с Mincraft, что вам нужно добавить API, от которого вы хотите, чтобы ваш плагин зависел, в plugin.yml. В вашем случае это означает, что вам нужно изменить первую строку вашего plugin.yml на это:
depend: [Citizens, Multiverse-Core]
Если вы сделаете это, вы обычно сможете выполнить свой код таким, какой он есть.
Дополнительную информацию вы можете найти здесь (в разделе «Подключение к Citizens):
https://wiki.citizensnpcs.co/API
Cobra_8
Комментарии:
1. nmv исправил это, удалив CitizensAPI.setImplementation(новый CitizensPlugin()) {…} из main.java
2. Я рад, что смог хотя бы немного помочь, удачи с вашим плагином!