@@ -104,18 +104,16 @@ public static BukkitElevator createLift(Block block, String cause){
104104 public static boolean isValidShaftBlock (Block checkBlock ){
105105 return (BukkitConfig .floorMaterials .contains (checkBlock .getType ())
106106 || checkBlock .isEmpty ()
107+ || !checkBlock .getType ().isSolid ()
107108 || checkBlock .getType () == Material .AIR
108109 || checkBlock .getType () == Material .LADDER
109110 || checkBlock .getType () == Material .SNOW
110- || checkBlock .getType () == Material .STATIONARY_WATER
111111 || checkBlock .getType () == Material .STONE_BUTTON
112112 || checkBlock .getType () == Material .TORCH
113113 || checkBlock .getType () == Material .VINE
114114 || checkBlock .getType () == Material .WALL_SIGN
115115 || checkBlock .getType () == Material .WATER
116- || checkBlock .getType () == Material .WOOD_BUTTON
117- || checkBlock .getType () == Material .CARPET
118- || checkBlock .getType () == Material .RAILS
116+ || checkBlock .getType () == Material .RAIL
119117 || checkBlock .getType () == Material .DETECTOR_RAIL
120118 || checkBlock .getType () == Material .ACTIVATOR_RAIL
121119 || checkBlock .getType () == Material .POWERED_RAIL
@@ -138,6 +136,18 @@ public static void scanBaseBlocks(Block block, BukkitElevator bukkitElevator){
138136 if (block .getRelative (BlockFace .WEST , 1 ).getType () == bukkitElevator .baseBlockType )
139137 scanBaseBlocks (block .getRelative (BlockFace .WEST ), bukkitElevator );
140138 }
139+
140+ public static boolean isButton (Block testBlock ){
141+ if (testBlock .getType ().toString ().contains ("BUTTON" ))
142+ return true ;
143+ return false ;
144+ }
145+
146+ public static boolean isCarpet (Block testBlock ){
147+ if (testBlock .getType ().toString ().contains ("CARPET" ))
148+ return true ;
149+ return false ;
150+ }
141151
142152 public static String constructFloors (BukkitElevator bukkitElevator ){
143153 String message = "" ;
@@ -165,7 +175,7 @@ public static String constructFloors(BukkitElevator bukkitElevator){
165175 plugin .logDebug ("Not valid shaft block" + x + " " + y1 + " " + z + " of type " + testBlock .getType ().toString ());
166176 break ;
167177 }
168- if (testBlock . getType () == Material . STONE_BUTTON || testBlock . getType () == Material . WOOD_BUTTON ){
178+ if (isButton ( testBlock ) ){
169179 if (BukkitConfig .checkFloor )
170180 if (!scanFloorAtY (currentWorld , testBlock .getY () - 2 , bukkitElevator )){
171181 break ;
@@ -224,6 +234,7 @@ public static void endLift(BukkitElevator bukkitElevator){
224234 Iterator <Entity > passengerIterator = bukkitElevator .getPassengers ();
225235 while (passengerIterator .hasNext ()){
226236 Entity e = passengerIterator .next ();
237+ e .setFallDistance (0 );
227238 fallers .remove (e );
228239 e .setVelocity (new Vector (0 , 0 , 0 ));
229240 if (e instanceof Player )
@@ -237,6 +248,7 @@ else if (e instanceof Minecart) {
237248 Iterator <Entity > holdersIterators = bukkitElevator .getHolders ();
238249 while (holdersIterators .hasNext ()){
239250 Entity passenger = holdersIterators .next ();
251+ passenger .setFallDistance (0 );
240252 if (passenger instanceof Player ){
241253 removePlayer ((Player ) passenger , holdersIterators );
242254 } else if (passenger instanceof Minecart ) {
@@ -259,32 +271,28 @@ else if (e instanceof Minecart) {
259271
260272 BlockFace directionFacing = sign .getFacing ();
261273 if (directionFacing == BlockFace .NORTH ){
262- if (s .getRelative (BlockFace .SOUTH ).getRelative (BlockFace .SOUTH ).getType () == Material .STONE_BUTTON
263- || s .getRelative (BlockFace .SOUTH ).getRelative (BlockFace .SOUTH ).getType () == Material .WOOD_BUTTON ){
274+ if (isButton (s .getRelative (BlockFace .SOUTH ).getRelative (BlockFace .SOUTH ))){
264275 BlockState state = s .getRelative (BlockFace .SOUTH ).getRelative (BlockFace .SOUTH ).getState ();
265276 ((org .bukkit .material .Button ) state .getData ()).setPowered (true );
266277 state .update ();
267278 new BukkitCancelRedstoneTask (s .getRelative (BlockFace .SOUTH ).getRelative (BlockFace .SOUTH )).runTaskLater (plugin , 10 );
268279 }
269280 } else if (directionFacing == BlockFace .EAST ){
270- if (s .getRelative (BlockFace .WEST ).getRelative (BlockFace .WEST ).getType () == Material .STONE_BUTTON
271- || s .getRelative (BlockFace .WEST ).getRelative (BlockFace .WEST ).getType () == Material .WOOD_BUTTON ){
281+ if (isButton (s .getRelative (BlockFace .WEST ).getRelative (BlockFace .WEST ))){
272282 BlockState state = s .getRelative (BlockFace .WEST ).getRelative (BlockFace .WEST ).getState ();
273283 ((org .bukkit .material .Button ) state .getData ()).setPowered (true );
274284 state .update ();
275285 new BukkitCancelRedstoneTask (s .getRelative (BlockFace .WEST ).getRelative (BlockFace .WEST )).runTaskLater (plugin , 10 );
276286 }
277287 } else if (directionFacing == BlockFace .SOUTH ){
278- if (s .getRelative (BlockFace .NORTH ).getRelative (BlockFace .NORTH ).getType () == Material .STONE_BUTTON
279- || s .getRelative (BlockFace .NORTH ).getRelative (BlockFace .NORTH ).getType () == Material .WOOD_BUTTON ){
288+ if (isButton (s .getRelative (BlockFace .NORTH ).getRelative (BlockFace .NORTH ))){
280289 BlockState state = s .getRelative (BlockFace .NORTH ).getRelative (BlockFace .NORTH ).getState ();
281290 ((org .bukkit .material .Button ) state .getData ()).setPowered (true );
282291 state .update ();
283292 new BukkitCancelRedstoneTask (s .getRelative (BlockFace .NORTH ).getRelative (BlockFace .NORTH )).runTaskLater (plugin , 10 );
284293 }
285294 } else if (directionFacing == BlockFace .WEST ){
286- if (s .getRelative (BlockFace .EAST ).getRelative (BlockFace .EAST ).getType () == Material .STONE_BUTTON
287- || s .getRelative (BlockFace .EAST ).getRelative (BlockFace .EAST ).getType () == Material .WOOD_BUTTON ){
295+ if (isButton (s .getRelative (BlockFace .EAST ).getRelative (BlockFace .EAST ))){
288296 BlockState state = s .getRelative (BlockFace .EAST ).getRelative (BlockFace .EAST ).getState ();
289297 ((org .bukkit .material .Button ) state .getData ()).setPowered (true );
290298 state .update ();
@@ -301,6 +309,7 @@ public static void removePlayer(Player player, Iterator<Entity> passengers){
301309 plugin .logDebug ("Scanning lift" );
302310 if (bukkitElevator .isInLift (player )){
303311 plugin .logDebug ("Removing player from lift" );
312+ player .setFallDistance (0 );
304313 restorePlayer (player );
305314 passengers .remove ();
306315 }
@@ -314,6 +323,7 @@ public static void removePlayer(Player player){
314323 if (bukkitElevator .isInLift (player )){
315324 plugin .logDebug ("Removing player from lift" );
316325 player .setVelocity (new Vector (0 , 0 , 0 ));
326+ player .setFallDistance (0 );
317327 restorePlayer (player );
318328 bukkitElevator .removePassenger (player );
319329 }
@@ -324,6 +334,7 @@ public static void removePassenger(Entity passenger){
324334 if (isPassenger (passenger )){
325335 plugin .logDebug ("Removing entity " + passenger .toString () + " from El: " + bukkitElevators .toString ());
326336 passenger .setVelocity (new Vector (0 , 0 , 0 ));
337+ passenger .setFallDistance (0 );
327338 if (passenger instanceof Player )
328339 removePlayer ((Player ) passenger );
329340 else
@@ -361,7 +372,7 @@ public static void setupPlayer(Player player){
361372 player .setAllowFlight (true );
362373
363374 if (BukkitConfig .useNoCheatPlus )
364- NCPExemptionManager .isExempted (player , fr .neatmonster .nocheatplus .checks .CheckType .FIGHT );
375+ NCPExemptionManager .exemptPermanently (player , fr .neatmonster .nocheatplus .checks .CheckType .FIGHT );
365376 }
366377
367378 static void restorePlayer (Player player ){
0 commit comments