Skip to content

Commit

Permalink
Fixed the ability to set world borders with negative size
Browse files Browse the repository at this point in the history
  • Loading branch information
OmerBenGera committed Apr 13, 2023
1 parent 5c58c08 commit 16d02ad
Show file tree
Hide file tree
Showing 10 changed files with 296 additions and 304 deletions.
Expand Up @@ -128,46 +128,45 @@ public void listenSpawner(Location location, IntFunction<Integer> delayChangeCal

@Override
public void setWorldBorder(SuperiorPlayer superiorPlayer, Island island) {
try {
if (!plugin.getSettings().isWorldBorders())
return;
if (!plugin.getSettings().isWorldBorders())
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();

boolean disabled = !superiorPlayer.hasWorldBorderEnabled();
if (world == null || player == null)
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();
int islandSize = island == null ? 0 : island.getIslandSize();

if (world == null || player == null)
return;
boolean disabled = !superiorPlayer.hasWorldBorderEnabled() || islandSize < 0;

ServerLevel serverLevel = ((CraftWorld) world).getHandle();
ServerLevel serverLevel = ((CraftWorld) world).getHandle();

WorldBorder worldBorder;
WorldBorder worldBorder;

if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;
if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;

org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);
org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);

worldBorder.setWarningBlocks(0);
worldBorder.setSize((island.getIslandSize() * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());
worldBorder.setWarningBlocks(0);
worldBorder.setSize((islandSize * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());

double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}
double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
} catch (NullPointerException ignored) {
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
}

@Override
Expand Down
Expand Up @@ -129,46 +129,45 @@ public void listenSpawner(Location location, IntFunction<Integer> delayChangeCal

@Override
public void setWorldBorder(SuperiorPlayer superiorPlayer, Island island) {
try {
if (!plugin.getSettings().isWorldBorders())
return;
if (!plugin.getSettings().isWorldBorders())
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();

boolean disabled = !superiorPlayer.hasWorldBorderEnabled();
if (world == null || player == null)
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();
int islandSize = island == null ? 0 : island.getIslandSize();

if (world == null || player == null)
return;
boolean disabled = !superiorPlayer.hasWorldBorderEnabled() || islandSize < 0;

ServerLevel serverLevel = ((CraftWorld) world).getHandle();
ServerLevel serverLevel = ((CraftWorld) world).getHandle();

WorldBorder worldBorder;
WorldBorder worldBorder;

if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;
if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;

org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);
org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);

worldBorder.setWarningBlocks(0);
worldBorder.setSize((island.getIslandSize() * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());
worldBorder.setWarningBlocks(0);
worldBorder.setSize((islandSize * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());

double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}
double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
} catch (NullPointerException ignored) {
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
}

@Override
Expand Down
Expand Up @@ -129,46 +129,45 @@ public void listenSpawner(Location location, IntFunction<Integer> delayChangeCal

@Override
public void setWorldBorder(SuperiorPlayer superiorPlayer, Island island) {
try {
if (!plugin.getSettings().isWorldBorders())
return;
if (!plugin.getSettings().isWorldBorders())
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();

boolean disabled = !superiorPlayer.hasWorldBorderEnabled();
if (world == null || player == null)
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();
int islandSize = island == null ? 0 : island.getIslandSize();

if (world == null || player == null)
return;
boolean disabled = !superiorPlayer.hasWorldBorderEnabled() || islandSize < 0;

ServerLevel serverLevel = ((CraftWorld) world).getHandle();
ServerLevel serverLevel = ((CraftWorld) world).getHandle();

WorldBorder worldBorder;
WorldBorder worldBorder;

if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;
if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;

org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);
org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);

worldBorder.setWarningBlocks(0);
worldBorder.setSize((island.getIslandSize() * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());
worldBorder.setWarningBlocks(0);
worldBorder.setSize((islandSize * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());

double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}
double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
} catch (NullPointerException ignored) {
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
}

@Override
Expand Down
Expand Up @@ -129,46 +129,45 @@ public void listenSpawner(Location location, IntFunction<Integer> delayChangeCal

@Override
public void setWorldBorder(SuperiorPlayer superiorPlayer, Island island) {
try {
if (!plugin.getSettings().isWorldBorders())
return;
if (!plugin.getSettings().isWorldBorders())
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();

boolean disabled = !superiorPlayer.hasWorldBorderEnabled();
if (world == null || player == null)
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();
int islandSize = island == null ? 0 : island.getIslandSize();

if (world == null || player == null)
return;
boolean disabled = !superiorPlayer.hasWorldBorderEnabled() || islandSize < 0;

ServerLevel serverLevel = ((CraftWorld) world).getHandle();
ServerLevel serverLevel = ((CraftWorld) world).getHandle();

WorldBorder worldBorder;
WorldBorder worldBorder;

if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;
if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;

org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);
org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);

worldBorder.setWarningBlocks(0);
worldBorder.setSize((island.getIslandSize() * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());
worldBorder.setWarningBlocks(0);
worldBorder.setSize((islandSize * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());

double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}
double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
} catch (NullPointerException ignored) {
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
}

@Override
Expand Down
Expand Up @@ -129,46 +129,45 @@ public void listenSpawner(Location location, IntFunction<Integer> delayChangeCal

@Override
public void setWorldBorder(SuperiorPlayer superiorPlayer, Island island) {
try {
if (!plugin.getSettings().isWorldBorders())
return;
if (!plugin.getSettings().isWorldBorders())
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();

boolean disabled = !superiorPlayer.hasWorldBorderEnabled();
if (world == null || player == null)
return;

Player player = superiorPlayer.asPlayer();
org.bukkit.World world = superiorPlayer.getWorld();
int islandSize = island == null ? 0 : island.getIslandSize();

if (world == null || player == null)
return;
boolean disabled = !superiorPlayer.hasWorldBorderEnabled() || islandSize < 0;

ServerLevel serverLevel = ((CraftWorld) world).getHandle();
ServerLevel serverLevel = ((CraftWorld) world).getHandle();

WorldBorder worldBorder;
WorldBorder worldBorder;

if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;
if (disabled || island == null || (!plugin.getSettings().getSpawn().isWorldBorder() && island.isSpawn())) {
worldBorder = serverLevel.getWorldBorder();
} else {
worldBorder = new WorldBorder();
worldBorder.world = serverLevel;

org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);
org.bukkit.World.Environment environment = world.getEnvironment();
Location center = island.getCenter(environment);

worldBorder.setWarningBlocks(0);
worldBorder.setSize((island.getIslandSize() * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());
worldBorder.setWarningBlocks(0);
worldBorder.setSize((islandSize * 2) + 1);
worldBorder.setCenter(center.getX(), center.getZ());

double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}
double worldBorderSize = worldBorder.getSize();
switch (superiorPlayer.getBorderColor()) {
case GREEN -> worldBorder.lerpSizeBetween(worldBorderSize - 0.1D, worldBorderSize, Long.MAX_VALUE);
case RED -> worldBorder.lerpSizeBetween(worldBorderSize, worldBorderSize - 1.0D, Long.MAX_VALUE);
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
} catch (NullPointerException ignored) {
}

ClientboundInitializeBorderPacket initializeBorderPacket = new ClientboundInitializeBorderPacket(worldBorder);
((CraftPlayer) player).getHandle().connection.send(initializeBorderPacket);
}

@Override
Expand Down

0 comments on commit 16d02ad

Please sign in to comment.