mirror of
https://github.com/songoda/SongodaCore.git
synced 2025-03-29 06:45:55 +01:00
Replace SWorldBorder implementation and move it into NMS modules
This commit is contained in:
parent
5c15d66415
commit
9d7026ec27
Core/src/main/java/com/songoda/core
NMS
NMS-API/src/main/java/com/songoda/core/nms/world
NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world
NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world
NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world
NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world
NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world
NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world
NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world
NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world
NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world
NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world
NMS-v1_17_R1/src/main/java/com/songoda/core/nms/v1_17_R1/world
NMS-v1_18_R1/src/main/java/com/songoda/core/nms/v1_18_R1/world
NMS-v1_18_R2/src/main/java/com/songoda/core/nms/v1_18_R2/world
NMS-v1_19_R1/src/main/java/com/songoda/core/nms/v1_19_R1/world
NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world
NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world
NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world
NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world
NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world
@ -3,6 +3,7 @@ package com.songoda.core.nms;
|
||||
import com.songoda.core.nms.anvil.AnvilCore;
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.nbt.NBTCore;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import com.songoda.core.nms.world.WorldCore;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
@ -16,6 +17,7 @@ public class NmsManager {
|
||||
private static final AnvilCore anvil;
|
||||
private static final NBTCore nbt;
|
||||
private static final WorldCore world;
|
||||
private static final NmsWorldBorder worldBorder;
|
||||
|
||||
static {
|
||||
switch (serverPackageVersion) {
|
||||
@ -24,114 +26,133 @@ public class NmsManager {
|
||||
anvil = new com.songoda.core.nms.v1_8_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_8_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_8_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_8_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_8_R2":
|
||||
player = new com.songoda.core.nms.v1_8_R2.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_8_R2.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_8_R2.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_8_R2.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_8_R2.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_8_R3":
|
||||
player = new com.songoda.core.nms.v1_8_R3.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_8_R3.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_8_R3.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_8_R3.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_8_R3.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_9_R1":
|
||||
player = new com.songoda.core.nms.v1_9_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_9_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_9_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_9_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_9_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_9_R2":
|
||||
player = new com.songoda.core.nms.v1_9_R2.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_9_R2.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_9_R2.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_9_R2.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_9_R2.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_10_R1":
|
||||
player = new com.songoda.core.nms.v1_10_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_10_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_10_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_10_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_10_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_11_R1":
|
||||
player = new com.songoda.core.nms.v1_11_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_11_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_11_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_11_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_11_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_12_R1":
|
||||
player = new com.songoda.core.nms.v1_12_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_12_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_12_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_12_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_12_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_13_R1":
|
||||
player = new com.songoda.core.nms.v1_13_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_13_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_13_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_13_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_13_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_13_R2":
|
||||
player = new com.songoda.core.nms.v1_13_R2.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_13_R2.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_13_R2.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_13_R2.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_13_R2.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_14_R1":
|
||||
player = new com.songoda.core.nms.v1_14_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_14_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_14_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_14_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_14_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_15_R1":
|
||||
player = new com.songoda.core.nms.v1_15_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_15_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_15_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_15_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_15_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_16_R1":
|
||||
player = new com.songoda.core.nms.v1_16_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_16_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_16_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_16_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_16_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_16_R2":
|
||||
player = new com.songoda.core.nms.v1_16_R2.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_16_R2.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_16_R2.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_16_R2.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_16_R2.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_16_R3":
|
||||
player = new com.songoda.core.nms.v1_16_R3.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_16_R3.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_16_R3.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_16_R3.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_16_R3.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_17_R1":
|
||||
player = new com.songoda.core.nms.v1_17_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_17_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_17_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_17_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_17_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_18_R1":
|
||||
player = new com.songoda.core.nms.v1_18_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_18_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_18_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_18_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_18_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_18_R2":
|
||||
player = new com.songoda.core.nms.v1_18_R2.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_18_R2.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_18_R2.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_18_R2.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_18_R2.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
case "v1_19_R1":
|
||||
player = new com.songoda.core.nms.v1_19_R1.entity.NMSPlayerImpl();
|
||||
anvil = new com.songoda.core.nms.v1_19_R1.anvil.AnvilCore();
|
||||
nbt = new com.songoda.core.nms.v1_19_R1.nbt.NBTCoreImpl();
|
||||
world = new com.songoda.core.nms.v1_19_R1.world.WorldCoreImpl();
|
||||
worldBorder = new com.songoda.core.nms.v1_19_R1.world.NmsWorldBorderImpl(player);
|
||||
break;
|
||||
default:
|
||||
Logger.getLogger(NmsManager.class.getName()).log(Level.SEVERE, "Failed to load NMS for this server version: version {0} not found", serverPackageVersion);
|
||||
@ -140,6 +161,7 @@ public class NmsManager {
|
||||
anvil = null;
|
||||
nbt = null;
|
||||
world = null;
|
||||
worldBorder = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -171,4 +193,8 @@ public class NmsManager {
|
||||
public static boolean hasWorld() {
|
||||
return world != null;
|
||||
}
|
||||
|
||||
public static NmsWorldBorder getWorldBorder() {
|
||||
return worldBorder;
|
||||
}
|
||||
}
|
||||
|
@ -1,99 +0,0 @@
|
||||
package com.songoda.core.world;
|
||||
|
||||
import com.songoda.core.compatibility.ClassMapping;
|
||||
import com.songoda.core.compatibility.MethodMapping;
|
||||
import com.songoda.core.compatibility.ServerVersion;
|
||||
import com.songoda.core.nms.NmsManager;
|
||||
import com.songoda.core.utils.NMSUtils;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public class SWorldBorder {
|
||||
private static Class<?> packetPlayOutWorldBorderEnumClass;
|
||||
private static Class<?> worldBorderClass;
|
||||
private static Class<?> craftWorldClass;
|
||||
private static Constructor<?> packetPlayOutWorldBorderConstructor;
|
||||
|
||||
private static Constructor<?> clientboundInitializeBorderPacketConstructor;
|
||||
|
||||
static {
|
||||
try {
|
||||
worldBorderClass = ClassMapping.WORLD_BORDER.getClazz();
|
||||
craftWorldClass = ClassMapping.CRAFT_WORLD.getClazz();
|
||||
|
||||
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_17)) {
|
||||
Class<?> clientboundInitializeBorderPacketClass = ClassMapping.CLIENTBOUND_INITIALIZE_BORDER_PACKET.getClazz();
|
||||
clientboundInitializeBorderPacketConstructor = clientboundInitializeBorderPacketClass.getConstructor(worldBorderClass);
|
||||
} else {
|
||||
Class<?> packetPlayOutWorldBorder = ClassMapping.PACKET_PLAY_OUT_WORLD_BORDER.getClazz();
|
||||
|
||||
if (packetPlayOutWorldBorder != null) {
|
||||
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11))
|
||||
packetPlayOutWorldBorderEnumClass = packetPlayOutWorldBorder.getDeclaredClasses()[0];
|
||||
else
|
||||
packetPlayOutWorldBorderEnumClass = packetPlayOutWorldBorder.getDeclaredClasses()[1];
|
||||
|
||||
packetPlayOutWorldBorderConstructor = packetPlayOutWorldBorder.getConstructor(worldBorderClass,
|
||||
packetPlayOutWorldBorderEnumClass);
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void send(Player player, Color color, double size, Location centerLocation) {
|
||||
try {
|
||||
if (centerLocation == null || centerLocation.getWorld() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Object worldBorder = worldBorderClass.getConstructor().newInstance();
|
||||
|
||||
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) {
|
||||
Object nmsWorld = MethodMapping.CB_GENERIC__GET_HANDLE.getMethod(ClassMapping.CRAFT_WORLD.getClazz()).invoke(centerLocation.getWorld());
|
||||
NMSUtils.setField(worldBorder, "world", nmsWorld, false);
|
||||
}
|
||||
|
||||
Method setCenter = MethodMapping.WORLD_BOARDER__SET_CENTER.getMethod(ClassMapping.WORLD_BORDER.getClazz());
|
||||
setCenter.invoke(worldBorder, centerLocation.getX(), centerLocation.getZ());
|
||||
|
||||
Method setSize = MethodMapping.WORLD_BOARDER__SET_SIZE.getMethod(ClassMapping.WORLD_BORDER.getClazz());
|
||||
setSize.invoke(worldBorder, size);
|
||||
|
||||
Method setWarningTime = MethodMapping.WORLD_BOARDER__SET_WARNING_TIME.getMethod(ClassMapping.WORLD_BORDER.getClazz());
|
||||
setWarningTime.invoke(worldBorder, 0);
|
||||
|
||||
Method setWarningDistance = MethodMapping.WORLD_BOARDER__SET_WARNING_DISTANCE.getMethod(ClassMapping.WORLD_BORDER.getClazz());
|
||||
setWarningDistance.invoke(worldBorder, 0);
|
||||
|
||||
Method transitionSizeBetween = MethodMapping.WORLD_BOARDER__TRANSITION_SIZE_BETWEEN.getMethod(ClassMapping.WORLD_BORDER.getClazz());
|
||||
|
||||
if (color == Color.Green) {
|
||||
transitionSizeBetween.invoke(worldBorder, size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == Color.Red) {
|
||||
transitionSizeBetween.invoke(worldBorder, size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_17)) {
|
||||
Object packet = clientboundInitializeBorderPacketConstructor.newInstance(worldBorder);
|
||||
NmsManager.getPlayer().sendPacket(player, packet);
|
||||
} else {
|
||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||
Object packet = packetPlayOutWorldBorderConstructor.newInstance(worldBorder,
|
||||
Enum.valueOf((Class<? extends Enum>) packetPlayOutWorldBorderEnumClass, "INITIALIZE"));
|
||||
NmsManager.getPlayer().sendPacket(player, packet);
|
||||
}
|
||||
} catch (InstantiationException | InvocationTargetException | NoSuchMethodException | IllegalAccessException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public enum Color {
|
||||
Blue, Green, Red
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.songoda.core.nms.world;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public interface NmsWorldBorder {
|
||||
void send(Player player, BorderColor color, double size, Location center);
|
||||
|
||||
enum BorderColor {
|
||||
BLUE, GREEN, RED
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_10_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_10_R1.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_10_R1.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_10_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_11_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_11_R1.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_11_R1.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_11_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_12_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_12_R1.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_12_R1.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_13_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_13_R1.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_13_R1.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_13_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_13_R2.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_13_R2.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_13_R2.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_13_R2.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_14_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_14_R1.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_14_R1.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_15_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_15_R1.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_15_R1.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_16_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_16_R1.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_16_R1.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_16_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_16_R2.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_16_R2.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_16_R2.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_16_R2.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_16_R3.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_16_R3.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_16_R3.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_17_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.network.protocol.game.ClientboundInitializeBorderPacket;
|
||||
import net.minecraft.world.level.border.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_17_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new ClientboundInitializeBorderPacket(worldBorder));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_18_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.network.protocol.game.ClientboundInitializeBorderPacket;
|
||||
import net.minecraft.world.level.border.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_18_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.c(center.getX(), center.getZ()); // setCenter
|
||||
worldBorder.a(size); // setSize
|
||||
worldBorder.b(0); // setWarningTime
|
||||
worldBorder.c(0); // setWarningDistance
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.a(size - 0.1D, size, Long.MAX_VALUE); // transitionSizeBetween
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.a(size, size - 1.0D, Long.MAX_VALUE); // transitionSizeBetween
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new ClientboundInitializeBorderPacket(worldBorder));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_18_R2.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.network.protocol.game.ClientboundInitializeBorderPacket;
|
||||
import net.minecraft.world.level.border.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningBlocks(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.lerpSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.lerpSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new ClientboundInitializeBorderPacket(worldBorder));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_19_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.network.protocol.game.ClientboundInitializeBorderPacket;
|
||||
import net.minecraft.world.level.border.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningBlocks(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.lerpSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.lerpSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new ClientboundInitializeBorderPacket(worldBorder));
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.songoda.core.nms.v1_8_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_8_R1.EnumWorldBorderAction;
|
||||
import net.minecraft.server.v1_8_R1.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_8_R1.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.c(center.getX(), center.getZ());
|
||||
worldBorder.a(size);
|
||||
worldBorder.b(0); // WarningTime
|
||||
worldBorder.c(0); // WarningBlocks
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.a(size - 0.1D, size, Long.MAX_VALUE); // transitionSizeBetween
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.a(size, size - 1.0D, Long.MAX_VALUE); // transitionSizeBetween
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package com.songoda.core.nms.v1_8_R2.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_8_R2.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_8_R2.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package com.songoda.core.nms.v1_8_R3.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_8_R3.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_8_R3.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_9_R1.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_9_R1.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_9_R1.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_9_R1.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.songoda.core.nms.v1_9_R2.world;
|
||||
|
||||
import com.songoda.core.nms.entity.NMSPlayer;
|
||||
import com.songoda.core.nms.world.NmsWorldBorder;
|
||||
import net.minecraft.server.v1_9_R2.PacketPlayOutWorldBorder;
|
||||
import net.minecraft.server.v1_9_R2.WorldBorder;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_9_R2.CraftWorld;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NmsWorldBorderImpl implements NmsWorldBorder {
|
||||
private final NMSPlayer nmsPlayer;
|
||||
|
||||
public NmsWorldBorderImpl(NMSPlayer nmsPlayer) {
|
||||
this.nmsPlayer = nmsPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Player player, BorderColor color, double size, @NotNull Location center) {
|
||||
Objects.requireNonNull(center.getWorld());
|
||||
|
||||
WorldBorder worldBorder = new WorldBorder();
|
||||
worldBorder.world = ((CraftWorld) center.getWorld()).getHandle();
|
||||
|
||||
worldBorder.setCenter(center.getX(), center.getZ());
|
||||
worldBorder.setSize(size);
|
||||
worldBorder.setWarningTime(0);
|
||||
worldBorder.setWarningDistance(0);
|
||||
|
||||
if (color == BorderColor.GREEN) {
|
||||
worldBorder.transitionSizeBetween(size - 0.1D, size, Long.MAX_VALUE);
|
||||
} else if (color == BorderColor.RED) {
|
||||
worldBorder.transitionSizeBetween(size, size - 1.0D, Long.MAX_VALUE);
|
||||
}
|
||||
|
||||
this.nmsPlayer.sendPacket(player, new PacketPlayOutWorldBorder(worldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user