diff --git a/BetterRTPAddons/pom.xml b/BetterRTPAddons/pom.xml
index 1a30fb3..c877dd7 100644
--- a/BetterRTPAddons/pom.xml
+++ b/BetterRTPAddons/pom.xml
@@ -101,6 +101,7 @@
com.comphenix.protocol
ProtocolLib
4.5.0
+ provided
\ No newline at end of file
diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCache.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCache.java
index 8ec4ad8..5b6cbdb 100644
--- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCache.java
+++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCache.java
@@ -1,8 +1,24 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
+import com.comphenix.protocol.PacketType;
+import com.comphenix.protocol.ProtocolLibrary;
+import com.comphenix.protocol.ProtocolManager;
+import com.comphenix.protocol.events.PacketContainer;
+import com.comphenix.protocol.wrappers.BlockPosition;
+import com.comphenix.protocol.wrappers.ChunkCoordIntPair;
+import com.comphenix.protocol.wrappers.MultiBlockChangeInfo;
+import com.comphenix.protocol.wrappers.WrappedBlockData;
+import io.papermc.lib.PaperLib;
+import me.SuperRonanCraft.BetterRTPAddons.Main;
+import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.WrapperPlayServerBlockChange;
+import org.bukkit.Bukkit;
+import org.bukkit.Chunk;
import org.bukkit.Location;
+import org.bukkit.Material;
import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
+import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
public class PortalsCache {
@@ -21,10 +37,66 @@ public class PortalsCache {
PortalsCreation portal;
if (portalsBeingCreated.containsKey(p)) {
portal = portalsBeingCreated.get(p);
- } else
+ } else {
portal = new PortalsCreation(p);
+ portalsBeingCreated.put(p, portal);
+ }
+ Location old_loc1 = portal.loc_1;
+ Location old_loc2 = portal.loc_1;
if (loc2) portal.loc_2 = loc;
else portal.loc_1 = loc;
+ if (Bukkit.getPluginManager().isPluginEnabled("ProtocolLib")) {
+ ProtocolManager pm = ProtocolLibrary.getProtocolManager();
+ WrapperPlayServerBlockChange block = new WrapperPlayServerBlockChange(pm.createPacket(PacketType.Play.Server.BLOCK_CHANGE));
+ block.setBlockData(WrappedBlockData.createData(Material.GLOWSTONE));
+ block.setLocation(new BlockPosition(loc.toVector()));
+ block.sendPacket(p);
+
+
+ }
+
+ if (portal.loc_1 != null && portal.loc_2 != null) {
+ //if (Math.abs(portal.loc_1.getBlockX() - portal.loc_2.getBlockX()) <= 10)
+ //if (Math.abs(portal.loc_1.getBlockZ() - portal.loc_2.getBlockZ()) <= 10)
+ //if (Math.abs(portal.loc_1.getBlockY() - portal.loc_2.getBlockY()) <= 10) {
+ preview(portal.loc_1, portal.loc_2);
+ //}
+ } else {
+ p.sendMessage((portal.loc_1 == null) + " " + (portal.loc_2 == null));
+ }
+ }
+
+ private void preview(Location loc1, Location loc2) {
+ ProtocolManager pm = ProtocolLibrary.getProtocolManager();
+ Bukkit.getScheduler().runTask(Main.getInstance(), () -> {
+ PacketContainer packet = pm
+ .createPacket(PacketType.Play.Server.MULTI_BLOCK_CHANGE);
+ Chunk chunk = loc1.getChunk();
+ ChunkCoordIntPair chunkcoords = new ChunkCoordIntPair(chunk.getX(),
+ chunk.getZ());
+ MultiBlockChangeInfo[] change = new MultiBlockChangeInfo[256];
+
+
+ for (int x = 0; x <= 15; x++) {
+ for(int z = 0; z <= 15; z++) {
+ change[(16 * x) + z] = new MultiBlockChangeInfo(new Location(loc1.getWorld(), loc1.getX() + x, 100, loc1.getZ() + z), WrappedBlockData.createData(Material.GOLD_BLOCK));
+ }
+ }
+
+ packet.getChunkCoordIntPairs().write(0, chunkcoords);
+ packet.getMultiBlockChangeInfoArrays().write(0, change);
+
+
+ for (Player player : Bukkit.getOnlinePlayers()) {
+ try {
+ pm.sendServerPacket(player, packet);
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ });
}
public PortalsCreation getPortal(Player p) {
diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc1.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc1.java
index 76b4e0b..5a0a59d 100644
--- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc1.java
+++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc1.java
@@ -4,8 +4,10 @@ import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.events.PacketContainer;
+import com.comphenix.protocol.wrappers.BlockPosition;
import com.comphenix.protocol.wrappers.WrappedBlockData;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
+import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
@@ -22,18 +24,6 @@ public class PortalsCommand_Loc1 implements PortalsCommands, LocationFinder {
Player p = (Player) sendi;
Location loc = getTargetBlock(p, 10).getLocation();
addonPortals.getPortals().setPortal(p, loc, false);
- sendi.sendMessage("Location 1 set to this location " + loc.toString());
- //p.sendBlockChange(loc, Material.GLOWSTONE, (byte) 0);
-
- ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager();
- WrapperPlayServerBlockChange fakeBlock = new WrapperPlayServerBlockChange();
- fakeBlock.setLocation(BlockLocation);
- try {
- //System.out.println(fakeBlock.toString());
- protocolManager.sendServerPacket(p, fakeBlock);
- } catch (InvocationTargetException e) {
- throw new RuntimeException(
- "Cannot send packet " + fakeBlock, e);
- }
+ sendi.sendMessage("Location 1 set to this location!");
}
}
diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc2.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc2.java
index 96b33a4..62c477f 100644
--- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc2.java
+++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc2.java
@@ -15,6 +15,6 @@ public class PortalsCommand_Loc2 implements PortalsCommands, LocationFinder {
Player p = (Player) sendi;
Location loc = getTargetBlock(p, 10).getLocation();
addonPortals.getPortals().setPortal(p, loc, true);
- sendi.sendMessage("Location 2 set to this location " + loc.toString());
+ sendi.sendMessage("Location 2 set to this location!");
}
}
diff --git a/BetterRTPAddons/src/main/resources/plugin.yml b/BetterRTPAddons/src/main/resources/plugin.yml
index f5bb48d..9eff143 100644
--- a/BetterRTPAddons/src/main/resources/plugin.yml
+++ b/BetterRTPAddons/src/main/resources/plugin.yml
@@ -3,6 +3,7 @@ version: 1.0
api-version: '1.13'
name: BetterRTPAddons
depend: [BetterRTP]
+softdepend: [ProtocolLib]
permissions:
betterrtp.addon.portals: