diff --git a/arenaregen/build.gradle b/arenaregen/build.gradle index 3c38b87..1ab32d3 100644 --- a/arenaregen/build.gradle +++ b/arenaregen/build.gradle @@ -27,6 +27,7 @@ dependencies { implementation project(':v1_16_R3') implementation project(':v1_17_R1') implementation project(':v1_18_R1') + implementation project(':v1_18_R2') } shadowJar { @@ -45,6 +46,7 @@ shadowJar { include(dependency(':v1_16_R3')) include(dependency(':v1_17_R1')) include(dependency(':v1_18_R1')) + include(dependency(':v1_18_R2')) } } diff --git a/arenaregen/src/main/java/me/realized/de/arenaregen/zone/ResetZone.java b/arenaregen/src/main/java/me/realized/de/arenaregen/zone/ResetZone.java index 645cdbf..e80cd20 100644 --- a/arenaregen/src/main/java/me/realized/de/arenaregen/zone/ResetZone.java +++ b/arenaregen/src/main/java/me/realized/de/arenaregen/zone/ResetZone.java @@ -384,9 +384,9 @@ public void run() { for (int z = min.getBlockZ(); z <= max.getBlockZ(); z++) { final Block block = min.getWorld().getBlockAt(x, y, z); - // if (block.getType() == Material.AIR || BlockUtil.isSurrounded(block)) { - // continue; - // } + if (block.getType() == Material.AIR || BlockUtil.isSurrounded(block)) { + continue; + } handler.updateLighting(block); } diff --git a/arenaregen/src/main/java/me/realized/de/arenaregen/zone/ResetZoneManager.java b/arenaregen/src/main/java/me/realized/de/arenaregen/zone/ResetZoneManager.java index 8eaebee..dafd361 100644 --- a/arenaregen/src/main/java/me/realized/de/arenaregen/zone/ResetZoneManager.java +++ b/arenaregen/src/main/java/me/realized/de/arenaregen/zone/ResetZoneManager.java @@ -129,21 +129,6 @@ public void on(final ChunkUnloadEvent event) { } } - @EventHandler - public void on(final PlayerDeathEvent event) { - final Arena arena = arenaManager.get(event.getEntity()); - final ResetZone zone; - - if (arena == null || (zone = get(arena.getName())) == null) { - return; - } - - zone.getSpawnedEntities().removeIf(entity -> { - entity.remove(); - return true; - }); - } - @EventHandler public void on(final MatchEndEvent event) { final Arena arena = event.getMatch().getArena(); @@ -152,7 +137,11 @@ public void on(final MatchEndEvent event) { if (zone == null) { return; } - + + for (final Entity entity : zone.getSpawnedEntities()) { + entity.remove(); + } + zone.getSpawnedEntities().clear(); zone.reset(null); } diff --git a/arenaregen/src/main/resources/config.yml b/arenaregen/src/main/resources/config.yml index 926244c..5f997dc 100644 --- a/arenaregen/src/main/resources/config.yml +++ b/arenaregen/src/main/resources/config.yml @@ -11,7 +11,7 @@ allow-arena-block-break: false # Allow breaking blocks in the reset zone that is not placed by a player in match. # default: auto -# available: [auto, fallback, v1_8_R3, v1_8_R3_paper, v1_12_R1, v1_14_R1, v1_15_R1, v1_16_R3, v1_17_R1, v1_18_R1] +# available: [auto, fallback, v1_8_R3, v1_8_R3_paper, v1_12_R1, v1_14_R1, v1_15_R1, v1_16_R3, v1_17_R1, v1_18_R1, v1_18_R2] block-reset-handler-version: auto # Remove dropped items in the reset zone when the match ends. diff --git a/settings.gradle b/settings.gradle index 0444c3f..048487c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,4 +9,5 @@ include 'v1_15_R1' include 'v1_16_R3' include 'v1_17_R1' include 'v1_18_R1' +include 'v1_18_R2' diff --git a/v1_18_R2/build.gradle b/v1_18_R2/build.gradle new file mode 100644 index 0000000..7fcf3e3 --- /dev/null +++ b/v1_18_R2/build.gradle @@ -0,0 +1,4 @@ +dependencies { + implementation 'org.spigotmc:spigot:1.18.2-R0.1-SNAPSHOT' + implementation project(':nms') +} \ No newline at end of file diff --git a/v1_18_R2/src/main/java/me/realized/de/arenaregen/nms/v1_18_R1/NMSHandler.java b/v1_18_R2/src/main/java/me/realized/de/arenaregen/nms/v1_18_R1/NMSHandler.java new file mode 100644 index 0000000..0c2eeb2 --- /dev/null +++ b/v1_18_R2/src/main/java/me/realized/de/arenaregen/nms/v1_18_R1/NMSHandler.java @@ -0,0 +1,42 @@ +package me.realized.de.arenaregen.nms.v1_18_R1; + +import me.realized.de.arenaregen.nms.NMS; +import net.minecraft.core.BlockPosition; +import net.minecraft.network.protocol.game.ClientboundLevelChunkWithLightPacket; +import net.minecraft.world.level.World; +import net.minecraft.world.level.block.state.IBlockData; +import net.minecraft.world.level.chunk.Chunk; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.craftbukkit.v1_18_R2.CraftChunk; +import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; +import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_18_R2.util.CraftMagicNumbers; +import org.bukkit.entity.Player; + +public class NMSHandler implements NMS { + + @Override + public void sendChunkUpdate(final Player player, final org.bukkit.Chunk chunk) { + final Chunk nmsChunk = ((CraftChunk) chunk).getHandle(); + ((CraftPlayer) player).getHandle().b.a(new ClientboundLevelChunkWithLightPacket(nmsChunk, nmsChunk.q.l_(), null, null, true)); + } + + @Override + public void setBlockFast(final Block bukkitBlock, final Material material, final int data) { + final int x = bukkitBlock.getX(), y = bukkitBlock.getY(), z = bukkitBlock.getZ(); + final BlockPosition position = new BlockPosition(x, y, z); + final Chunk chunk = ((CraftChunk) bukkitBlock.getChunk()).getHandle(); + final net.minecraft.world.level.block.Block block = CraftMagicNumbers.getBlock(material); + final IBlockData blockData = block.n(); + chunk.a(position, blockData, true); + } + + @Override + public void updateLighting(Block bukkitBlock) { + final int x = bukkitBlock.getX(), y = bukkitBlock.getY(), z = bukkitBlock.getZ(); + final BlockPosition position = new BlockPosition(x, y, z); + final World world = ((CraftWorld) bukkitBlock.getWorld()).getHandle(); + world.K().n().a(position); + } +}