Skip to content

Commit

Permalink
futureproof min/max Y height check
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Jun 16, 2021
1 parent 94da63d commit 8c536bf
Show file tree
Hide file tree
Showing 9 changed files with 31 additions and 10 deletions.
Expand Up @@ -2,6 +2,7 @@

import com.denizenscript.denizen.objects.BiomeTag;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.LocationTag;
Expand Down Expand Up @@ -117,8 +118,7 @@ public void onPlayerEntersExitsBiome(PlayerMoveEvent event) {
if (LocationTag.isSameBlock(event.getFrom(), event.getTo())) {
return;
}
if (event.getFrom().getBlockY() < 0 || event.getFrom().getBlockY() > 255
|| event.getTo().getBlockY() < 0 || event.getTo().getBlockY() > 255) {
if (!Utilities.isLocationYSafe(event.getFrom()) || !Utilities.isLocationYSafe(event.getTo())) {
return;
}
from = new LocationTag(event.getFrom());
Expand Down
@@ -1,6 +1,7 @@
package com.denizenscript.denizen.events.player;

import com.denizenscript.denizen.objects.*;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizencore.objects.ObjectTag;
Expand Down Expand Up @@ -104,7 +105,7 @@ public void onPlayerStepsOn(PlayerMoveEvent event) {
return;
}
location = new LocationTag(event.getTo().clone().subtract(0, 1, 0));
if (location.getBlockY() < 0 || location.getBlockY() > 255) {
if (!Utilities.isLocationYSafe(location)) {
return;
}
previous_location = new LocationTag(event.getFrom());
Expand Down
Expand Up @@ -2,6 +2,7 @@

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.notable.NotableManager;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.utilities.depends.Depends;
import com.denizenscript.denizen.utilities.flags.LocationFlagSearchHelper;
Expand Down Expand Up @@ -524,7 +525,7 @@ public List<LocationTag> getBlocks_internal(String matcher, Attribute attribute)
for (int y = 0; y != y_distance + 1; y++) {
for (int z = 0; z != z_distance + 1; z++) {
loc = new LocationTag(loc_1.clone().add(x, y, z));
if (loc.getY() < 0 || loc.getY() > 255) {
if (!Utilities.isLocationYSafe(loc)) {
continue;
}
if (BukkitScriptEvent.tryMaterial(loc.getBlockTypeForTag(attribute), matcher)) {
Expand Down
Expand Up @@ -2255,7 +2255,7 @@ else if (yaw < 315) {
fullloop:
for (int y = -radiusInt; y <= radiusInt; y++) {
double newY = y + tstartY;
if (newY < 0 || newY > 255) {
if (!Utilities.isLocationYSafe(newY, object.getWorld())) {
continue;
}
for (int x = -radiusInt; x <= radiusInt; x++) {
Expand Down Expand Up @@ -2305,7 +2305,7 @@ else if (yaw < 315) {
for (int x = -radiusInt; x <= radiusInt; x++) {
for (int y = -radiusInt; y <= radiusInt; y++) {
double newY = y + tstartY;
if (newY < 0 || newY > 255) {
if (!Utilities.isLocationYSafe(newY, object.getWorld())) {
continue;
}
for (int z = -radiusInt; z <= radiusInt; z++) {
Expand Down
Expand Up @@ -301,6 +301,6 @@ public void run() {
}

public static boolean isSafeBlock(Location loc) {
return loc.getBlockY() < 0 || loc.getBlockY() > 255 || !loc.getBlock().getType().isSolid();
return !Utilities.isLocationYSafe(loc) || !loc.getBlock().getType().isSolid();
}
}
@@ -1,6 +1,7 @@
package com.denizenscript.denizen.scripts.commands.world;

import com.denizenscript.denizen.objects.notable.NotableManager;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.abstracts.BlockLight;
Expand Down Expand Up @@ -110,7 +111,7 @@ public void execute(ScriptEntry scriptEntry) {

}

if (location.getY() < 0 || location.getY() > 255) {
if (!Utilities.isLocationYSafe(location)) {
Debug.echoError(scriptEntry.getResidingQueue(), "Invalid light location!");
return;
}
Expand Down
@@ -1,7 +1,9 @@
package com.denizenscript.denizen.scripts.commands.world;

import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizen.objects.*;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.interfaces.WorldHelper;
Expand Down Expand Up @@ -443,7 +445,7 @@ public static void setBlock(Location location, MaterialTag material, boolean phy
block_physics.add(location);
physitick = tick;
}
if (location.getY() < 0 || location.getY() > 255) {
if (!Utilities.isLocationYSafe(location)) {
Debug.echoError("Invalid modifyblock location: " + new LocationTag(location).toString());
return;
}
Expand Down
@@ -1,5 +1,6 @@
package com.denizenscript.denizen.utilities;

import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizen.objects.*;
import com.denizenscript.denizen.objects.properties.material.MaterialDirectional;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
Expand Down Expand Up @@ -488,4 +489,18 @@ public static PlayerTag getEntryPlayer(ScriptEntry entry) {
public static NPCTag getEntryNPC(ScriptEntry entry) {
return getEntryData(entry).getNPC();
}

public static boolean isLocationYSafe(Location loc) {
return isLocationYSafe(loc.getBlockY(), loc.getWorld());
}

public static boolean isLocationYSafe(double y, World world) {
if (NMSHandler.getVersion().isAtMost(NMSVersion.v1_16)) {
return y >= 0 && y <= 255;
}
if (world == null) {
return true;
}
return y >= world.getMinHeight() && y <= world.getMaxHeight();
}
}
Expand Up @@ -3,6 +3,7 @@
import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.objects.*;
import com.denizenscript.denizen.scripts.commands.world.SchematicCommand;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.core.ElementTag;
Expand Down Expand Up @@ -203,7 +204,7 @@ public void setBlockSingle(FullBlockData block, int x, int y, int z, InputParams
return;
}
int finalY = input.centerLocation.getBlockY() + y - center_y;
if (finalY < 0 || finalY > 255) {
if (!Utilities.isLocationYSafe(finalY, input.centerLocation.getWorld())) {
return;
}
Block destBlock = input.centerLocation.clone().add(x - center_x, y - center_y, z - center_z).getBlock();
Expand Down

0 comments on commit 8c536bf

Please sign in to comment.