mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-12-26 19:18:37 +01:00
not working
This commit is contained in:
parent
057e28d600
commit
0de701800c
@ -1,9 +1,7 @@
|
|||||||
package net.citizensnpcs;
|
package net.citizensnpcs;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import net.citizensnpcs.Settings.Setting;
|
import net.citizensnpcs.Settings.Setting;
|
||||||
@ -35,6 +33,7 @@ import net.citizensnpcs.storage.Storage;
|
|||||||
import net.citizensnpcs.storage.YamlStorage;
|
import net.citizensnpcs.storage.YamlStorage;
|
||||||
import net.citizensnpcs.trait.Inventory;
|
import net.citizensnpcs.trait.Inventory;
|
||||||
import net.citizensnpcs.trait.LookClose;
|
import net.citizensnpcs.trait.LookClose;
|
||||||
|
import net.citizensnpcs.trait.Sneak;
|
||||||
import net.citizensnpcs.util.Messaging;
|
import net.citizensnpcs.util.Messaging;
|
||||||
import net.citizensnpcs.util.StringHelper;
|
import net.citizensnpcs.util.StringHelper;
|
||||||
|
|
||||||
@ -45,8 +44,6 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
import org.bukkit.entity.CreatureType;
|
import org.bukkit.entity.CreatureType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.permissions.Permission;
|
|
||||||
import org.bukkit.permissions.PermissionDefault;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
@ -56,7 +53,7 @@ public class Citizens extends JavaPlugin {
|
|||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private static final List<Class<? extends Trait>> defaultTraits = Lists.newArrayList(Owner.class, Spawned.class,
|
private static final List<Class<? extends Trait>> defaultTraits = Lists.newArrayList(Owner.class, Spawned.class,
|
||||||
LookClose.class, SpawnLocation.class, Inventory.class);
|
LookClose.class, SpawnLocation.class, Inventory.class, Sneak.class);
|
||||||
|
|
||||||
private volatile CitizensNPCManager npcManager;
|
private volatile CitizensNPCManager npcManager;
|
||||||
private final DefaultInstanceFactory<Character> characterManager = new DefaultInstanceFactory<Character>();
|
private final DefaultInstanceFactory<Character> characterManager = new DefaultInstanceFactory<Character>();
|
||||||
@ -188,9 +185,8 @@ public class Citizens extends JavaPlugin {
|
|||||||
// Register events
|
// Register events
|
||||||
getServer().getPluginManager().registerEvents(new EventListen(npcManager), this);
|
getServer().getPluginManager().registerEvents(new EventListen(npcManager), this);
|
||||||
|
|
||||||
// Register commands and permissions
|
// Register commands
|
||||||
registerCommands();
|
registerCommands();
|
||||||
registerPermissions();
|
|
||||||
|
|
||||||
// Register default traits
|
// Register default traits
|
||||||
traitManager.registerAll(defaultTraits);
|
traitManager.registerAll(defaultTraits);
|
||||||
@ -245,22 +241,6 @@ public class Citizens extends JavaPlugin {
|
|||||||
cmdManager.register(HelpCommands.class);
|
cmdManager.register(HelpCommands.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerPermissions() {
|
|
||||||
// TODO There has to be a better way than this (maybe use Permission
|
|
||||||
// annotation to register permissions?)
|
|
||||||
Map<String, Boolean> children = new HashMap<String, Boolean>();
|
|
||||||
children.put("citizens.npc.create", true);
|
|
||||||
children.put("citizens.npc.spawn", true);
|
|
||||||
children.put("citizens.npc.despawn", true);
|
|
||||||
children.put("citizens.npc.select", true);
|
|
||||||
children.put("citizens.npc.tp", true);
|
|
||||||
children.put("citizens.npc.tphere", true);
|
|
||||||
children.put("citizens.npc.look-close", true);
|
|
||||||
|
|
||||||
Permission perm = new Permission("citizens.*", PermissionDefault.OP, children);
|
|
||||||
getServer().getPluginManager().addPermission(perm);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void saveNPCs() {
|
private void saveNPCs() {
|
||||||
for (NPC npc : npcManager)
|
for (NPC npc : npcManager)
|
||||||
npc.save(saves.getKey("npc." + npc.getId()));
|
npc.save(saves.getKey("npc." + npc.getId()));
|
||||||
|
@ -15,6 +15,7 @@ import net.citizensnpcs.command.annotation.Command;
|
|||||||
import net.citizensnpcs.command.annotation.Requirements;
|
import net.citizensnpcs.command.annotation.Requirements;
|
||||||
import net.citizensnpcs.npc.CitizensNPCManager;
|
import net.citizensnpcs.npc.CitizensNPCManager;
|
||||||
import net.citizensnpcs.trait.LookClose;
|
import net.citizensnpcs.trait.LookClose;
|
||||||
|
import net.citizensnpcs.trait.Sneak;
|
||||||
import net.citizensnpcs.util.Messaging;
|
import net.citizensnpcs.util.Messaging;
|
||||||
import net.citizensnpcs.util.StringHelper;
|
import net.citizensnpcs.util.StringHelper;
|
||||||
|
|
||||||
@ -180,6 +181,22 @@ public class NPCCommands {
|
|||||||
npc.setCharacter(character);
|
npc.setCharacter(character);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Command(
|
||||||
|
aliases = { "npc" },
|
||||||
|
usage = "sneak",
|
||||||
|
desc = "Toggle whether an NPC should sneak",
|
||||||
|
modifiers = { "sneak" },
|
||||||
|
min = 1,
|
||||||
|
max = 1,
|
||||||
|
permission = "npc.sneak")
|
||||||
|
public void toggleSneak(CommandContext args, Player player, NPC npc) {
|
||||||
|
Sneak trait = npc.getTrait(Sneak.class);
|
||||||
|
trait.toggle();
|
||||||
|
String msg = StringHelper.wrap(npc.getName()) + " will "
|
||||||
|
+ (trait.isSneaking() ? "now sneak" : "no longer sneak");
|
||||||
|
Messaging.send(player, msg += ".");
|
||||||
|
}
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
aliases = { "npc" },
|
aliases = { "npc" },
|
||||||
usage = "spawn [id]",
|
usage = "spawn [id]",
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package net.citizensnpcs.npc.entity;
|
package net.citizensnpcs.npc.entity;
|
||||||
|
|
||||||
|
import net.citizensnpcs.api.DataKey;
|
||||||
|
import net.citizensnpcs.api.exception.NPCLoadException;
|
||||||
import net.citizensnpcs.npc.CitizensNPC;
|
import net.citizensnpcs.npc.CitizensNPC;
|
||||||
import net.citizensnpcs.npc.CitizensNPCManager;
|
import net.citizensnpcs.npc.CitizensNPCManager;
|
||||||
import net.citizensnpcs.resource.lib.EntityHumanNPC;
|
import net.citizensnpcs.resource.lib.EntityHumanNPC;
|
||||||
import net.citizensnpcs.util.StringHelper;
|
import net.citizensnpcs.util.StringHelper;
|
||||||
|
|
||||||
import net.minecraft.server.EntityLiving;
|
import net.minecraft.server.EntityLiving;
|
||||||
import net.minecraft.server.ItemInWorldManager;
|
import net.minecraft.server.ItemInWorldManager;
|
||||||
import net.minecraft.server.WorldServer;
|
import net.minecraft.server.WorldServer;
|
||||||
@ -23,6 +26,11 @@ public class CitizensHumanNPC extends CitizensNPC {
|
|||||||
return (Player) getHandle().getBukkitEntity();
|
return (Player) getHandle().getBukkitEntity();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityHumanNPC getHandle() {
|
||||||
|
return (EntityHumanNPC) mcEntity;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
super.update();
|
super.update();
|
||||||
@ -47,4 +55,9 @@ public class CitizensHumanNPC extends CitizensNPC {
|
|||||||
handle.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
|
handle.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
|
||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(DataKey key) throws NPCLoadException {
|
||||||
|
super.load(key);
|
||||||
|
}
|
||||||
}
|
}
|
63
src/net/citizensnpcs/trait/Sneak.java
Normal file
63
src/net/citizensnpcs/trait/Sneak.java
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
package net.citizensnpcs.trait;
|
||||||
|
|
||||||
|
import net.citizensnpcs.api.DataKey;
|
||||||
|
import net.citizensnpcs.api.exception.NPCLoadException;
|
||||||
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
|
import net.citizensnpcs.api.npc.trait.SaveId;
|
||||||
|
import net.citizensnpcs.api.npc.trait.Trait;
|
||||||
|
import net.citizensnpcs.npc.entity.CitizensHumanNPC;
|
||||||
|
|
||||||
|
import net.minecraft.server.DataWatcher;
|
||||||
|
import net.minecraft.server.Packet40EntityMetadata;
|
||||||
|
|
||||||
|
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@SaveId("sneak")
|
||||||
|
public class Sneak extends Trait implements Runnable {
|
||||||
|
private final NPC npc;
|
||||||
|
private boolean sneak;
|
||||||
|
|
||||||
|
public Sneak(NPC npc) {
|
||||||
|
this.npc = npc;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(DataKey key) throws NPCLoadException {
|
||||||
|
sneak = key.getBoolean("");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void save(DataKey key) {
|
||||||
|
key.setBoolean("", sneak);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (npc instanceof CitizensHumanNPC) {
|
||||||
|
((Player) npc.getBukkitEntity()).setSneaking(sneak);
|
||||||
|
DataWatcher dw = ((CitizensHumanNPC) npc).getHandle().getDataWatcher();
|
||||||
|
dw.watch(1, sneak);
|
||||||
|
for (Player player : npc.getBukkitEntity().getServer().getOnlinePlayers())
|
||||||
|
((CraftPlayer) player).getHandle().netServerHandler.sendPacket(new Packet40EntityMetadata(npc
|
||||||
|
.getBukkitEntity().getEntityId(), dw));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSneaking(boolean sneak) {
|
||||||
|
this.sneak = sneak;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSneaking() {
|
||||||
|
return sneak;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void toggle() {
|
||||||
|
sneak = !sneak;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Sneak{" + sneak + "}";
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user