Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
fullwall committed Aug 20, 2019
2 parents 65f1a88 + a91e4cb commit 0c7b375
Showing 1 changed file with 33 additions and 17 deletions.
Expand Up @@ -2,16 +2,17 @@

import java.util.ListIterator;

import net.citizensnpcs.api.util.SpigotUtil;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState;
import org.bukkit.material.Door;

import net.citizensnpcs.api.astar.pathfinder.PathPoint.PathCallback;
import net.citizensnpcs.api.event.NPCOpenDoorEvent;
import net.citizensnpcs.api.npc.NPC;
import org.bukkit.block.data.type.Door;

public class DoorExaminer implements BlockExaminer {
@Override
Expand All @@ -36,23 +37,38 @@ public void run(NPC npc, Block point, ListIterator<Block> path) {
return;
if (npc.getStoredLocation().distanceSquared(point.getLocation().add(0.5, 0, 0.5)) > 4)
return;
BlockState state = point.getState();
Door door = (Door) state.getData();
boolean bottom = !door.isTopHalf();
Block set = bottom ? point : point.getRelative(BlockFace.DOWN);
state = set.getState();
door = (Door) state.getData();
if (door.isOpen()) {
return;
}
NPCOpenDoorEvent event = new NPCOpenDoorEvent(npc, point);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;

if(SpigotUtil.isUsing1_13API()) {
Door door = (Door) point.getBlockData();
if(door.isOpen()) {
return;
}
NPCOpenDoorEvent event = new NPCOpenDoorEvent(npc, point);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
door.setOpen(true);
point.setBlockData(door);
} else {
BlockState state = point.getState();
org.bukkit.material.Door door = (org.bukkit.material.Door) state.getData();
boolean bottom = !door.isTopHalf();
Block set = bottom ? point : point.getRelative(BlockFace.DOWN);
state = set.getState();
door = (org.bukkit.material.Door) state.getData();
if (door.isOpen()) {
return;
}
NPCOpenDoorEvent event = new NPCOpenDoorEvent(npc, point);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
door.setOpen(true);
state.setData(door);
state.update();
}
door.setOpen(true);
state.setData(door);
state.update();
}
}
}

0 comments on commit 0c7b375

Please sign in to comment.