@@ -337,6 +337,126 @@ public void run() {
337337 addLocation (lnew , e .getPlayer ());
338338 }
339339
340+ if (
341+ Bukkit .getVersion ().contains ("1.16" ) ||
342+ Bukkit .getVersion ().contains ("1.17" ) ||
343+ Bukkit .getVersion ().contains ("1.18" ) ||
344+ Bukkit .getVersion ().contains ("1.19" ) ||
345+ Bukkit .getVersion ().contains ("1.20" ) ||
346+ Bukkit .getVersion ().contains ("1.21" )
347+ ) {
348+ //deal with weeping vines
349+ if (e .getBlock ().getType () == Material .WEEPING_VINES_PLANT || e .getBlock ().getRelative (BlockFace .DOWN ).getType () == Material .WEEPING_VINES_PLANT ) {
350+ Location lnew = l .clone ();
351+ do {
352+ lnew .setY (lnew .getY () - 1 );
353+ if (lnew .getBlock ().getType () == Material .WEEPING_VINES_PLANT ) {
354+ addLocation (lnew , e .getPlayer ());
355+ } else {
356+ break ;
357+ }
358+ } while (true );
359+ addLocation (lnew , e .getPlayer ());
360+ } else if (e .getBlock ().getType () == Material .WEEPING_VINES || e .getBlock ().getRelative (BlockFace .DOWN ).getType () == Material .WEEPING_VINES ) {
361+ Location lnew = l .clone ();
362+ do {
363+ lnew .setY (lnew .getY () - 1 );
364+ if (lnew .getBlock ().getType () == Material .WEEPING_VINES ) {
365+ addLocation (lnew , e .getPlayer ());
366+ } else {
367+ break ;
368+ }
369+ } while (true );
370+ addLocation (lnew , e .getPlayer ());
371+ }
372+
373+ //deal with twisting vines
374+ if (e .getBlock ().getType () == Material .TWISTING_VINES_PLANT || e .getBlock ().getRelative (BlockFace .UP ).getType () == Material .TWISTING_VINES_PLANT ) {
375+ Location lnew = l .clone ();
376+ do {
377+ lnew .setY (lnew .getY () + 1 );
378+ if (lnew .getBlock ().getType () == Material .TWISTING_VINES_PLANT ) {
379+ addLocation (lnew , e .getPlayer ());
380+ } else {
381+ break ;
382+ }
383+ } while (true );
384+ addLocation (lnew , e .getPlayer ());
385+ } else if (e .getBlock ().getType () == Material .TWISTING_VINES || e .getBlock ().getRelative (BlockFace .UP ).getType () == Material .TWISTING_VINES ) {
386+ Location lnew = l .clone ();
387+ do {
388+ lnew .setY (lnew .getY () + 1 );
389+ if (lnew .getBlock ().getType () == Material .TWISTING_VINES ) {
390+ addLocation (lnew , e .getPlayer ());
391+ } else {
392+ break ;
393+ }
394+ } while (true );
395+ addLocation (lnew , e .getPlayer ());
396+ }
397+
398+ if (!Bukkit .getVersion ().contains ("1.16" )) {
399+ //deal with glow berries
400+ if (e .getBlock ().getType () == Material .CAVE_VINES_PLANT || e .getBlock ().getRelative (BlockFace .DOWN ).getType () == Material .CAVE_VINES_PLANT ) {
401+ Location lnew = l .clone ();
402+ do {
403+ lnew .setY (lnew .getY () - 1 );
404+ if (lnew .getBlock ().getType () == Material .CAVE_VINES_PLANT ) {
405+ addLocation (lnew , e .getPlayer ());
406+ } else {
407+ break ;
408+ }
409+ } while (true );
410+ addLocation (lnew , e .getPlayer ());
411+ } else if (e .getBlock ().getType () == Material .CAVE_VINES || e .getBlock ().getRelative (BlockFace .DOWN ).getType () == Material .CAVE_VINES ) {
412+ Location lnew = l .clone ();
413+ do {
414+ lnew .setY (lnew .getY () - 1 );
415+ if (lnew .getBlock ().getType () == Material .CAVE_VINES ) {
416+ addLocation (lnew , e .getPlayer ());
417+ } else {
418+ break ;
419+ }
420+ } while (true );
421+ addLocation (lnew , e .getPlayer ());
422+ }
423+
424+ //deal with dripleafs
425+ if (e .getBlock ().getType () == Material .BIG_DRIPLEAF_STEM || e .getBlock ().getRelative (BlockFace .UP ).getType () == Material .BIG_DRIPLEAF_STEM ) {
426+ Location lnew = l .clone ();
427+ double y = lnew .getY ();
428+ do {
429+ lnew .setY (lnew .getY () + 1 );
430+ if (lnew .getBlock ().getType () == Material .BIG_DRIPLEAF_STEM ) {
431+ addLocation (lnew , e .getPlayer ());
432+ } else if (lnew .getBlock ().getType () == Material .BIG_DRIPLEAF ) {
433+ addLocation (lnew , e .getPlayer ());
434+ } else {
435+ y --;
436+ lnew .setY (y );
437+ if (lnew .getBlock ().getType () == Material .BIG_DRIPLEAF_STEM ) {
438+ addLocation (lnew , e .getPlayer ());
439+ } else {
440+ break ;
441+ }
442+ }
443+ } while (true );
444+ addLocation (lnew , e .getPlayer ());
445+ } else if (e .getBlock ().getType () == Material .BIG_DRIPLEAF || e .getBlock ().getRelative (BlockFace .UP ).getType () == Material .BIG_DRIPLEAF ) {
446+ Location lnew = l .clone ();
447+ do {
448+ lnew .setY (lnew .getY () - 1 );
449+ if (lnew .getBlock ().getType () == Material .BIG_DRIPLEAF ) {
450+ addLocation (lnew , e .getPlayer ());
451+ } else {
452+ break ;
453+ }
454+ } while (true );
455+ addLocation (lnew , e .getPlayer ());
456+ }
457+ }
458+ }
459+
340460 // TEST END
341461
342462 if (verticalReq .contains (e .getBlock ().getType ()) || verticalReqDown .contains (e .getBlock ().getType ())) {
0 commit comments