Fix compile error, add some wander waypoint API

This commit is contained in:
fullwall 2019-01-19 00:33:05 +08:00
parent 52b3902aca
commit a0aaefcbea
2 changed files with 46 additions and 4 deletions

View File

@ -134,7 +134,8 @@ public class EventListen implements Listener {
}
private Iterable<NPC> getAllNPCs() {
return Iterables.filter(Iterables.<NPC> concat(CitizensAPI.getNPCRegistry(), Iterables.concat(registries.values())),
return Iterables.filter(
Iterables.<NPC> concat(CitizensAPI.getNPCRegistry(), Iterables.concat(registries.values())),
Predicates.notNull());
}
@ -186,7 +187,7 @@ public class EventListen implements Listener {
*/
@EventHandler
public void onEntityCombust(EntityCombustEvent event) {
NPC npc = npcRegistry.getNPC(event.getEntity());
NPC npc = CitizensAPI.getNPCRegistry().getNPC(event.getEntity());
if (npc == null)
return;
event.setCancelled(npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true));
@ -414,7 +415,8 @@ public class EventListen implements Listener {
@EventHandler(ignoreCancelled = true)
public void onPlayerFish(PlayerFishEvent event) {
if (CitizensAPI.getNPCRegistry().isNPC(event.getCaught()) && CitizensAPI.getNPCRegistry().getNPC(event.getCaught()).isProtected()) {
if (CitizensAPI.getNPCRegistry().isNPC(event.getCaught())
&& CitizensAPI.getNPCRegistry().getNPC(event.getCaught()).isProtected()) {
event.setCancelled(true);
}
}
@ -473,7 +475,8 @@ public class EventListen implements Listener {
@EventHandler(ignoreCancelled = true)
public void onPlayerTeleport(final PlayerTeleportEvent event) {
if (event.getCause() == TeleportCause.PLUGIN && !event.getPlayer().hasMetadata("citizens-force-teleporting")
&& CitizensAPI.getNPCRegistry().getNPC(event.getPlayer()) != null && Setting.TELEPORT_DELAY.asInt() > 0) {
&& CitizensAPI.getNPCRegistry().getNPC(event.getPlayer()) != null
&& Setting.TELEPORT_DELAY.asInt() > 0) {
event.setCancelled(true);
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {
@Override

View File

@ -14,6 +14,7 @@ import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.metadata.FixedMetadataValue;
import com.google.common.base.Supplier;
import com.google.common.collect.ForwardingList;
import com.google.common.collect.Lists;
import net.citizensnpcs.api.CitizensAPI;
@ -160,6 +161,10 @@ public class WanderWaypointProvider implements WaypointProvider, Supplier<QuadTr
return regionCentres.isEmpty() ? null : tree;
}
public List<Location> getRegionCentres() {
return new RecalculateList();
}
@Override
public boolean isPaused() {
return paused;
@ -201,6 +206,40 @@ public class WanderWaypointProvider implements WaypointProvider, Supplier<QuadTr
this.paused = paused;
}
private class RecalculateList extends ForwardingList<Location> {
@Override
public void add(int idx, Location loc) {
super.add(idx, loc);
recalculateTree();
}
@Override
public boolean add(Location loc) {
boolean val = super.add(loc);
recalculateTree();
return val;
}
@Override
protected List<Location> delegate() {
return regionCentres;
}
@Override
public Location remove(int idx) {
Location val = super.remove(idx);
recalculateTree();
return val;
}
@Override
public Location set(int idx, Location idx2) {
Location val = super.set(idx, idx2);
recalculateTree();
return val;
}
}
private static final int DEFAULT_XRANGE = 3;
private static final int DEFAULT_YRANGE = 25;
}