mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +00:00
fixed bugs with events
This commit is contained in:
@@ -10,7 +10,8 @@ public class ConfigCache {
|
|||||||
private final TogglePvp plugin = TogglePvp.getPlugin();
|
private final TogglePvp plugin = TogglePvp.getPlugin();
|
||||||
|
|
||||||
@Getter private final boolean pvp_enabled_by_default, lava_and_fire_stopper_enabled, channeling_enchant_disabled,
|
@Getter private final boolean pvp_enabled_by_default, lava_and_fire_stopper_enabled, channeling_enchant_disabled,
|
||||||
punish_for_combat_logout, punish_for_combat_logout_announce, only_owner_can_interact_with_pet;
|
punish_for_combat_logout, punish_for_combat_logout_announce, only_owner_can_interact_with_pet,
|
||||||
|
snowballs_knockback, egg_knockback;
|
||||||
@Getter private final String pvp_enabled, pvp_disabled, cannot_attack_victim, cannot_attack_attacker,
|
@Getter private final String pvp_enabled, pvp_disabled, cannot_attack_victim, cannot_attack_attacker,
|
||||||
cannot_attack_pets_victim, cannot_attack_pets_attacker, no_permission, no_such_command, pvp_enabled_other,
|
cannot_attack_pets_victim, cannot_attack_pets_attacker, no_permission, no_such_command, pvp_enabled_other,
|
||||||
pvp_disabled_other, punish_for_combat_logout_message, entering_combat, leaving_combat,
|
pvp_disabled_other, punish_for_combat_logout_message, entering_combat, leaving_combat,
|
||||||
@@ -45,6 +46,10 @@ public class ConfigCache {
|
|||||||
addDefault("settings.punish_for_combat_logout.announce", "true");
|
addDefault("settings.punish_for_combat_logout.announce", "true");
|
||||||
addDefault("settings.punish_for_combat_logout.message", "&f%player% logged out while in combat. What a loser.");
|
addDefault("settings.punish_for_combat_logout.message", "&f%player% logged out while in combat. What a loser.");
|
||||||
|
|
||||||
|
addDefault("settings.snowballs_do_knockback", false, "Set to true if snowballs should cause knockback to players");
|
||||||
|
|
||||||
|
addDefault("settings.eggs_do_knockback", false, "Set to true if eggs should cause knockback to players");
|
||||||
|
|
||||||
addDefault("settings.cache_time", "30", "Time (in seconds) to keep player data in memory when players goes offline.\nThis is used for checking if offline players pvp state.\nAdjust only if you know what you're doing. NEVER set to less than 6.");
|
addDefault("settings.cache_time", "30", "Time (in seconds) to keep player data in memory when players goes offline.\nThis is used for checking if offline players pvp state.\nAdjust only if you know what you're doing. NEVER set to less than 6.");
|
||||||
|
|
||||||
addDefault("messages.pvp_enabled", "&cYou enabled PvP!");
|
addDefault("messages.pvp_enabled", "&cYou enabled PvP!");
|
||||||
@@ -83,6 +88,10 @@ public class ConfigCache {
|
|||||||
this.punish_for_combat_logout_announce = config.getBoolean("settings.punish_for_combat_logout.announce", true);
|
this.punish_for_combat_logout_announce = config.getBoolean("settings.punish_for_combat_logout.announce", true);
|
||||||
this.punish_for_combat_logout_message = config.getString("settings.punish_for_combat_logout.message", "&f%player% logged out while in combat. What a loser.");
|
this.punish_for_combat_logout_message = config.getString("settings.punish_for_combat_logout.message", "&f%player% logged out while in combat. What a loser.");
|
||||||
this.only_owner_can_interact_with_pet = config.getBoolean("settings.only_owner_can_interact_with_pet", false);
|
this.only_owner_can_interact_with_pet = config.getBoolean("settings.only_owner_can_interact_with_pet", false);
|
||||||
|
|
||||||
|
this.snowballs_knockback = config.getBoolean("settings.snowballs_do_knockback", false);
|
||||||
|
this.egg_knockback = config.getBoolean("settings.eggs_do_knockback", false);
|
||||||
|
|
||||||
this.cache_time = config.getLong("settings.cache_time", 30L);
|
this.cache_time = config.getLong("settings.cache_time", 30L);
|
||||||
|
|
||||||
this.login_protection_time = config.getLong("settings.login_protection_time", 0);
|
this.login_protection_time = config.getLong("settings.login_protection_time", 0);
|
||||||
|
|||||||
+23
-2
@@ -2,8 +2,7 @@ package eu.endermite.togglepvp.listeners.player;
|
|||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvp;
|
import eu.endermite.togglepvp.TogglePvp;
|
||||||
import eu.endermite.togglepvp.util.CombatTimer;
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.*;
|
||||||
import org.bukkit.entity.Projectile;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -24,10 +23,32 @@ public class PlayerHitByProjectileListener implements Listener {
|
|||||||
UUID damager = ((Player) projectile.getShooter()).getUniqueId();
|
UUID damager = ((Player) projectile.getShooter()).getUniqueId();
|
||||||
UUID victim = event.getEntity().getUniqueId();
|
UUID victim = event.getEntity().getUniqueId();
|
||||||
|
|
||||||
|
if (TogglePvp.getPlugin().getConfigCache().isSnowballs_knockback() && event.getDamager() instanceof Snowball) {
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
|
||||||
|
((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter());
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
} else {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (TogglePvp.getPlugin().getConfigCache().isEgg_knockback() && event.getDamager() instanceof Egg) {
|
||||||
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
|
||||||
|
((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter());
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
|
} else {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Ender pearls and other self-damage
|
// Ender pearls and other self-damage
|
||||||
if (damager == victim)
|
if (damager == victim)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (event.getDamage() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public class PlayerData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setLoginTimestamp(long loginTimestamp) {
|
public void setLoginTimestamp(long loginTimestamp) {
|
||||||
this.loginTimestamp = loginTimestamp + TogglePvp.getPlugin().getConfigCache().getLogin_protection_time();
|
this.loginTimestamp = loginTimestamp + TogglePvp.getPlugin().getConfigCache().getLogin_protection_time()-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getLoginTimestamp() {
|
public long getLoginTimestamp() {
|
||||||
@@ -63,7 +63,7 @@ public class PlayerData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setTeleportTimestamp(long teleportTimestamp) {
|
public void setTeleportTimestamp(long teleportTimestamp) {
|
||||||
this.teleportTimestamp = teleportTimestamp + TogglePvp.getPlugin().getConfigCache().getTeleport_protection_time();
|
this.teleportTimestamp = teleportTimestamp + TogglePvp.getPlugin().getConfigCache().getTeleport_protection_time()-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getTeleportTimestamp() {
|
public long getTeleportTimestamp() {
|
||||||
|
|||||||
@@ -34,16 +34,17 @@ public class PlayerManager {
|
|||||||
if (!CombatTimer.isInCombat(uuid)) {
|
if (!CombatTimer.isInCombat(uuid)) {
|
||||||
if (playerData.getLastCombatCheck()) {
|
if (playerData.getLastCombatCheck()) {
|
||||||
PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(Bukkit.getPlayer(uuid));
|
PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(Bukkit.getPlayer(uuid));
|
||||||
|
Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> {
|
||||||
Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent);
|
Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent);
|
||||||
|
|
||||||
if (playerLeaveCombatEvent.isCancelled()) {
|
if (playerLeaveCombatEvent.isCancelled()) {
|
||||||
|
playerData.setLastCombatCheck(true);
|
||||||
playerData.refreshCombatTime();
|
playerData.refreshCombatTime();
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
playerData.setLastCombatCheck(false);
|
playerData.setLastCombatCheck(false);
|
||||||
playerData.setInCombat(false);
|
playerData.setInCombat(false);
|
||||||
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getLeaving_combat());
|
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getLeaving_combat());
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
set.getValue().setLastCombatCheck(true);
|
set.getValue().setLastCombatCheck(true);
|
||||||
|
|||||||
@@ -14,16 +14,22 @@ public class CombatTimer {
|
|||||||
try {
|
try {
|
||||||
long now = Instant.now().getEpochSecond();
|
long now = Instant.now().getEpochSecond();
|
||||||
long combattime = TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).getCombattime();
|
long combattime = TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).getCombattime();
|
||||||
if (combattime < now) {
|
|
||||||
Player player = Bukkit.getPlayer(uuid);
|
Player player = Bukkit.getPlayer(uuid);
|
||||||
|
Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> {
|
||||||
PlayerEnterCombatEvent playerEnterCombatEvent = new PlayerEnterCombatEvent(player);
|
PlayerEnterCombatEvent playerEnterCombatEvent = new PlayerEnterCombatEvent(player);
|
||||||
Bukkit.getPluginManager().callEvent(playerEnterCombatEvent);
|
Bukkit.getPluginManager().callEvent(playerEnterCombatEvent);
|
||||||
if (playerEnterCombatEvent.isCancelled())
|
if (playerEnterCombatEvent.isCancelled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TogglePvp.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid);
|
TogglePvp.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid);
|
||||||
|
|
||||||
|
if (combattime <= now) {
|
||||||
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getEntering_combat());
|
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getEntering_combat());
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,7 +40,7 @@ public class CombatTimer {
|
|||||||
|
|
||||||
public static boolean isInCombat(UUID uuid) {
|
public static boolean isInCombat(UUID uuid) {
|
||||||
try {
|
try {
|
||||||
return TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid).isInCombat();
|
return TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid).getCombattime() >= Instant.now().getEpochSecond();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user