fix: Issue where portal events activate too early in survival

Fixes #228
This commit is contained in:
Sekwah 2021-07-06 23:34:06 +01:00
parent e2b0723d24
commit 62307c6bcf
2 changed files with 14 additions and 14 deletions

View File

@ -73,8 +73,8 @@ public class AdvancedPortalsPlugin extends JavaPlugin {
for (Player player:
this.getServer().getOnlinePlayers()) {
player.removeMetadata("hasWarped", this);
player.removeMetadata("lavaWarped", this);
player.removeMetadata(Listeners.HAS_WARPED, this);
player.removeMetadata(Listeners.LAVA_WARPED, this);
}
// thanks to the new config accessor code the config.saveDefaultConfig(); will now

View File

@ -34,6 +34,9 @@ public class Listeners implements Listener {
private final AdvancedPortalsPlugin plugin;
public static String HAS_WARPED = "hasWarped";
public static String LAVA_WARPED = "lavaWarped";
@SuppressWarnings("deprecation")
public Listeners(AdvancedPortalsPlugin plugin) {
this.plugin = plugin;
@ -133,14 +136,11 @@ public class Listeners implements Listener {
for (Location loc : locations) {
if (delayed ? Portal.locationInPortal(portal, loc, 1)
: Portal.locationInPortalTrigger(portal, loc)) {
if (portal.getTriggers().contains(Material.NETHER_PORTAL)) {
if (player.getGameMode().equals(GameMode.CREATIVE)) {
player.setMetadata("hasWarped", new FixedMetadataValue(plugin, true));
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new RemoveWarpData(player), 10);
}
}
player.setMetadata(HAS_WARPED, new FixedMetadataValue(plugin, true));
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new RemoveWarpData(player), 10);
if (portal.getTriggers().contains(Material.LAVA)) {
player.setMetadata("lavaWarped", new FixedMetadataValue(plugin, true));
player.setMetadata(LAVA_WARPED, new FixedMetadataValue(plugin, true));
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new RemoveLavaData(player), 10);
}
if (portal.inPortal.contains(player.getUniqueId()))
@ -231,7 +231,7 @@ public class Listeners implements Listener {
@Override
public void run() {
player.removeMetadata("lavaWarped", plugin);
player.removeMetadata(LAVA_WARPED, plugin);
player.setFireTicks(0);
}
}
@ -247,7 +247,7 @@ public class Listeners implements Listener {
@Override
public void run() {
if (player != null && player.isOnline()) {
player.removeMetadata("hasWarped", plugin);
player.removeMetadata(HAS_WARPED, plugin);
}
}
}
@ -263,7 +263,7 @@ public class Listeners implements Listener {
if (event.getEntity() instanceof Player && (event.getCause() == EntityDamageEvent.DamageCause.LAVA
|| event.getCause() == EntityDamageEvent.DamageCause.FIRE
|| event.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK)) {
if (event.getEntity().hasMetadata("lavaWarped")
if (event.getEntity().hasMetadata(LAVA_WARPED)
| Portal.inPortalTriggerRegion(event.getEntity().getLocation()))
event.setCancelled(true);
}
@ -276,14 +276,14 @@ public class Listeners implements Listener {
}
Player player = event.getPlayer();
if (!player.hasMetadata("hasWarped")) {
if (!player.hasMetadata(HAS_WARPED)) {
Location loc = event.getFrom();
Location eyeLoc = new Location(loc.getWorld(), loc.getX(), loc.getY() + player.getEyeHeight(), loc.getZ());
checkTriggerLocations(player, true, loc, eyeLoc);
}
if (player.hasMetadata("hasWarped") | Portal.inPortalRegion(event.getFrom(), 1))
if (player.hasMetadata(HAS_WARPED) | Portal.inPortalRegion(event.getFrom(), 1))
event.setCancelled(true);
}