Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package org.mcservernetwork.client.event;

import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.mcservernetwork.commons.net.Sector;

/**
* @author barpec12 on 23.06.2020
*/
public class PlayerTransferEvent extends Event {
private static final HandlerList handlers = new HandlerList();

private boolean isCancelled = false;
private Location from;
private Location to;
private Sector sectorTo;
private Player player;

public PlayerTransferEvent(Location from, Location to, Sector sectorTo, Player player){
this.from = from;
this.to = to;
this.sectorTo = sectorTo;
this.player = player;
}

public boolean isCancelled() {
return this.isCancelled;
}
public void setCancelled(boolean isCancelled) {
this.isCancelled = isCancelled;
}
public Location getFrom(){
return from;
}
public Location getTo(){
return to;
}
public Sector getSectorTo(){
return sectorTo;
}

@Override
public HandlerList getHandlers() {
return handlers;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.mcservernetwork.client.Client;
import org.mcservernetwork.client.event.PlayerTransferEvent;
import org.mcservernetwork.client.util.ColorUtils;
import org.mcservernetwork.client.util.PlayerUtils;
import org.mcservernetwork.client.util.SectorLocationUtils;
Expand Down Expand Up @@ -88,6 +89,13 @@ public void onPlayerMove(PlayerMoveEvent event) {
return;
}

PlayerTransferEvent e = new PlayerTransferEvent(fromLocation, location, in, player);
Bukkit.getPluginManager().callEvent(e);

if(e.isCancelled()){
return;
}

PacketTransfer packet = new PacketTransfer();
packet.targetSectorName = in.getSectorName();
packet.uniqueId = player.getUniqueId().toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerPortalEvent;
import org.bukkit.event.player.PlayerTeleportEvent;

public class PlayerPortalListener implements Listener {

@EventHandler
public void onPortalUse(PlayerPortalEvent event) {
Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(event.getPlayer(),
Bukkit.getPluginManager().callEvent(new PlayerTeleportEvent(event.getPlayer(),
event.getFrom(), event.getTo()));
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,60 @@
package org.mcservernetwork.client.listener.bukkit;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.boss.BossBar;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.mcservernetwork.client.event.PlayerTransferEvent;
import org.mcservernetwork.client.util.PlayerUtils;
import org.mcservernetwork.client.util.SectorLocationUtils;
import org.mcservernetwork.client.util.manager.PlayerTransferManager;
import org.mcservernetwork.commons.NetworkAPI;
import org.mcservernetwork.commons.net.Channel;
import org.mcservernetwork.commons.net.Sector;
import org.mcservernetwork.commons.net.packet.PacketTransfer;

public class PlayerTeleportListener implements Listener {

@EventHandler
public void onPlayerTeleport(PlayerTeleportEvent event) {
Bukkit.getPluginManager().callEvent(new PlayerMoveEvent(event.getPlayer(),
event.getFrom(), event.getTo()));
Location location = event.getTo();
Location fromLocation = event.getFrom();
Player player = event.getPlayer();
Sector in = SectorLocationUtils.getSectorIn(location);
if (in == null)
return;

PlayerTransferEvent e = new PlayerTransferEvent(fromLocation, location, in, player);
Bukkit.getPluginManager().callEvent(e);

if(e.isCancelled()){
e.setCancelled(true);
return;
}
PacketTransfer packet = new PacketTransfer();
packet.targetSectorName = in.getSectorName();
packet.uniqueId = player.getUniqueId().toString();
packet.info = PlayerUtils.wrap(player, location);

PlayerTransferManager.setTransferring(player);

BossBar bossBar = PlayerMoveListener.BOSSBARS.get(player.getUniqueId());
if(bossBar != null){
bossBar.removeAll();
PlayerMoveListener.BOSSBARS.remove(player.getUniqueId());
}

Entity vehicle = player.getVehicle();

if (vehicle != null) {
vehicle.remove();
}
event.setCancelled(true);
NetworkAPI.Net.publish(Channel.TRANSFER_REQUEST, packet);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
public class PlayerUtils {

public static PacketPlayerInfo wrap(Player player) {
return wrap(player, player.getLocation());
}

public static PacketPlayerInfo wrap(Player player, Location location) {
PacketPlayerInfo info = new PacketPlayerInfo();

info.inventoryContents = BukkitSerializer.serializeItems(player.getInventory().getContents());
Expand All @@ -28,12 +32,12 @@ public static PacketPlayerInfo wrap(Player player) {

info.vehicleEntityType = player.getVehicle() != null ? player.getVehicle().getType().name() : null;

info.x = player.getLocation().getBlockX();
info.y = player.getLocation().getBlockY();
info.z = player.getLocation().getBlockZ();
info.yaw = player.getLocation().getYaw();
info.pitch = player.getLocation().getPitch();
info.world = player.getWorld().getName();
info.x = location.getBlockX();
info.y = location.getBlockY();
info.z = location.getBlockZ();
info.yaw = location.getYaw();
info.pitch = location.getPitch();
info.world = location.getWorld().getName();

info.allowFlight = player.getAllowFlight();
info.displayName = player.getDisplayName();
Expand Down