mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-09-29 15:47:40 +02:00
changes and fixes to character handling
This commit is contained in:
parent
76d9b2b5c9
commit
3469f017f5
@ -42,6 +42,8 @@ public class Citizens extends JavaPlugin {
|
|||||||
public boolean onCommand(CommandSender sender, Command cmd, String cmdName, String[] args) {
|
public boolean onCommand(CommandSender sender, Command cmd, String cmdName, String[] args) {
|
||||||
if (args[0].equals("spawn")) {
|
if (args[0].equals("spawn")) {
|
||||||
NPC npc = npcManager.createNPC(ChatColor.GREEN + "aPunch");
|
NPC npc = npcManager.createNPC(ChatColor.GREEN + "aPunch");
|
||||||
|
// TODO remove
|
||||||
|
npc.setCharacter(characterManager.getInstance("test"));
|
||||||
npc.spawn(((Player) sender).getLocation());
|
npc.spawn(((Player) sender).getLocation());
|
||||||
((CitizensNPC) npc).save(saves);
|
((CitizensNPC) npc).save(saves);
|
||||||
} else if (args[0].equals("despawn")) {
|
} else if (args[0].equals("despawn")) {
|
||||||
@ -120,7 +122,7 @@ public class Citizens extends JavaPlugin {
|
|||||||
|
|
||||||
// Load the character if it exists, otherwise remove the character
|
// Load the character if it exists, otherwise remove the character
|
||||||
if (character != null)
|
if (character != null)
|
||||||
character.load(key.getRelative(character.getName()));
|
character.load(key.getRelative("characters." + character.getName()));
|
||||||
else {
|
else {
|
||||||
if (key.keyExists("character")) {
|
if (key.keyExists("character")) {
|
||||||
Messaging.debug("Character '" + key.getString("character")
|
Messaging.debug("Character '" + key.getString("character")
|
||||||
|
@ -87,15 +87,21 @@ public class EventListen implements Listener {
|
|||||||
|
|
||||||
NPC npc = manager.getNPC(event.getEntity());
|
NPC npc = manager.getNPC(event.getEntity());
|
||||||
Player player = (Player) event.getTarget();
|
Player player = (Player) event.getTarget();
|
||||||
if (manager.canSelect(player, npc)) {
|
if (!manager.hasSelected(player, npc)) {
|
||||||
manager.selectNPC(player, npc);
|
if (manager.canSelect(player, npc)) {
|
||||||
Messaging.sendWithNPC(player, Setting.SELECTION_MESSAGE.getString(), npc);
|
manager.selectNPC(player, npc);
|
||||||
} else {
|
Messaging.sendWithNPC(player, Setting.SELECTION_MESSAGE.getString(), npc);
|
||||||
if (npc.getCharacter() != null)
|
if (!Setting.QUICK_SELECT.getBoolean())
|
||||||
npc.getCharacter().onRightClick(npc, player);
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (npc.getCharacter() != null)
|
||||||
|
npc.getCharacter().onRightClick(npc, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Player events
|
||||||
|
*/
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
||||||
if (!manager.isNPC(event.getRightClicked()))
|
if (!manager.isNPC(event.getRightClicked()))
|
||||||
|
@ -33,7 +33,8 @@ public class Settings {
|
|||||||
DEBUG_MODE("general.debug-mode", false),
|
DEBUG_MODE("general.debug-mode", false),
|
||||||
USE_DATABASE("use-database", false),
|
USE_DATABASE("use-database", false),
|
||||||
SELECTION_ITEM("npc.selection.item", 280),
|
SELECTION_ITEM("npc.selection.item", 280),
|
||||||
SELECTION_MESSAGE("npc.selection.message", "<b>You selected <a><npc><b>!");
|
SELECTION_MESSAGE("npc.selection.message", "<b>You selected <a><npc><b>!"),
|
||||||
|
QUICK_SELECT("npc.selection.quick-select", false);
|
||||||
|
|
||||||
private String path;
|
private String path;
|
||||||
private Object value;
|
private Object value;
|
||||||
|
@ -7,6 +7,7 @@ import net.citizensnpcs.api.npc.AbstractNPC;
|
|||||||
import net.citizensnpcs.api.npc.ai.Navigator;
|
import net.citizensnpcs.api.npc.ai.Navigator;
|
||||||
import net.citizensnpcs.api.npc.trait.Trait;
|
import net.citizensnpcs.api.npc.trait.Trait;
|
||||||
import net.citizensnpcs.api.npc.trait.trait.SpawnLocation;
|
import net.citizensnpcs.api.npc.trait.trait.SpawnLocation;
|
||||||
|
import net.citizensnpcs.npc.ai.CitizensNavigator;
|
||||||
import net.citizensnpcs.resources.lib.CraftNPC;
|
import net.citizensnpcs.resources.lib.CraftNPC;
|
||||||
import net.citizensnpcs.storage.Storage;
|
import net.citizensnpcs.storage.Storage;
|
||||||
import net.citizensnpcs.util.Messaging;
|
import net.citizensnpcs.util.Messaging;
|
||||||
@ -51,8 +52,7 @@ public class CitizensNPC extends AbstractNPC {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Navigator getNavigator() {
|
public Navigator getNavigator() {
|
||||||
// TODO add default navigator
|
return new CitizensNavigator(this);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -101,7 +101,7 @@ public class CitizensNPC extends AbstractNPC {
|
|||||||
// Save the character if it exists
|
// Save the character if it exists
|
||||||
if (getCharacter() != null) {
|
if (getCharacter() != null) {
|
||||||
key.setString("character", getCharacter().getName());
|
key.setString("character", getCharacter().getName());
|
||||||
getCharacter().save(key.getRelative(getCharacter().getName()));
|
getCharacter().save(key.getRelative("characters." + getCharacter().getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save all existing traits
|
// Save all existing traits
|
||||||
|
@ -143,12 +143,15 @@ public class CitizensNPCManager implements NPCManager {
|
|||||||
selected.put(player.getName(), npc.getId());
|
selected.put(player.getName(), npc.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasSelected(Player player, NPC npc) {
|
||||||
|
if (!selected.containsKey(player.getName()))
|
||||||
|
return false;
|
||||||
|
return selected.get(player.getName()) == npc.getId();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean canSelect(Player player, NPC npc) {
|
public boolean canSelect(Player player, NPC npc) {
|
||||||
if (player.hasPermission("citizens.npc.select")) {
|
if (player.hasPermission("citizens.npc.select")) {
|
||||||
if (!selected.containsKey(player.getName()))
|
return player.getItemInHand().getTypeId() == Setting.SELECTION_ITEM.getInt();
|
||||||
return true;
|
|
||||||
return selected.get(player.getName()) != npc.getId()
|
|
||||||
&& player.getItemInHand().getTypeId() == Setting.SELECTION_ITEM.getInt();
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
28
src/net/citizensnpcs/npc/ai/CitizensNavigator.java
Normal file
28
src/net/citizensnpcs/npc/ai/CitizensNavigator.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package net.citizensnpcs.npc.ai;
|
||||||
|
|
||||||
|
import net.citizensnpcs.api.npc.ai.Navigator;
|
||||||
|
import net.citizensnpcs.api.npc.ai.NavigatorCallback;
|
||||||
|
import net.citizensnpcs.npc.CitizensNPC;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
|
||||||
|
public class CitizensNavigator implements Navigator {
|
||||||
|
private CitizensNPC npc;
|
||||||
|
|
||||||
|
public CitizensNavigator(CitizensNPC npc) {
|
||||||
|
this.npc = npc;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDestination(Location destination) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerCallback(NavigatorCallback callback) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTarget(Entity target, boolean aggressive) {
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ import net.citizensnpcs.util.ByIdArray;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public class ByIdArrayTest {
|
public class ByIdArrayTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testInsert() {
|
public void testInsert() {
|
||||||
ByIdArray<String> test = new ByIdArray<String>();
|
ByIdArray<String> test = new ByIdArray<String>();
|
||||||
|
@ -3,6 +3,7 @@ package net.citizensnpcs.test;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public class StorageTest {
|
public class StorageTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testYaml() {
|
public void testYaml() {
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user