mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-11 21:06:55 +00:00
added combat tracker
This commit is contained in:
@@ -37,7 +37,7 @@ public final class TogglePvP extends JavaPlugin {
|
|||||||
sqLite = new DatabaseSQLite("jdbc:sqlite:plugins/TogglePvP/TogglePvP.db", dbFile);
|
sqLite = new DatabaseSQLite("jdbc:sqlite:plugins/TogglePvP/TogglePvP.db", dbFile);
|
||||||
sqLite.createDatabaseFile();
|
sqLite.createDatabaseFile();
|
||||||
if (!sqLite.testConnection()) {
|
if (!sqLite.testConnection()) {
|
||||||
getLogger().severe("Error with accessing database.");
|
getLogger().severe("Error with accessing database. Check if server has write rights.");
|
||||||
getLogger().severe("Plugin will now disable.");
|
getLogger().severe("Plugin will now disable.");
|
||||||
getServer().getPluginManager().disablePlugin(this);
|
getServer().getPluginManager().disablePlugin(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,12 @@ public class ConfigCache {
|
|||||||
@Getter private final double lava_and_fire_stopper_radius;
|
@Getter private final double lava_and_fire_stopper_radius;
|
||||||
@Getter private final boolean channeling_enchant_disabled;
|
@Getter private final boolean channeling_enchant_disabled;
|
||||||
@Getter private final long cache_time;
|
@Getter private final long cache_time;
|
||||||
|
@Getter private final long combat_time;
|
||||||
|
@Getter private final boolean punish_for_combat_logout;
|
||||||
|
@Getter private final boolean punish_for_combat_logout_announce;
|
||||||
|
@Getter private final String punish_for_combat_logout_message;
|
||||||
|
@Getter private final String entering_combat;
|
||||||
|
@Getter private final String leaving_combat;
|
||||||
|
|
||||||
public ConfigCache() {
|
public ConfigCache() {
|
||||||
|
|
||||||
@@ -34,6 +40,11 @@ public class ConfigCache {
|
|||||||
|
|
||||||
this.channeling_enchant_disabled = config.getBoolean("settings.channeling_enchant_disabled", true);
|
this.channeling_enchant_disabled = config.getBoolean("settings.channeling_enchant_disabled", true);
|
||||||
|
|
||||||
|
this.combat_time = config.getLong("settings.combat_time", 25L);
|
||||||
|
this.punish_for_combat_logout = config.getBoolean("settings.punish_for_combat_logout.enabled", 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.cache_time = config.getLong("settings.cache_time", 30L);
|
this.cache_time = config.getLong("settings.cache_time", 30L);
|
||||||
|
|
||||||
// Messages
|
// Messages
|
||||||
@@ -46,6 +57,9 @@ public class ConfigCache {
|
|||||||
this.no_permission = config.getString("messages.no_permission", "&cYou don't have permission to use that.");
|
this.no_permission = config.getString("messages.no_permission", "&cYou don't have permission to use that.");
|
||||||
this.no_such_command = config.getString("messages.no_such_command", "&cNo such command.");
|
this.no_such_command = config.getString("messages.no_such_command", "&cNo such command.");
|
||||||
this.pvp_enabled_other = config.getString("messages.pvp_enabled_others", "&cYou've enabled %player%'s PvP.");
|
this.pvp_enabled_other = config.getString("messages.pvp_enabled_others", "&cYou've enabled %player%'s PvP.");
|
||||||
this.pvp_disabled_other =config.getString("messages.pvp_disabled_others", "&cYou've disabled %player%'s PvP.");
|
this.pvp_disabled_other = config.getString("messages.pvp_disabled_others", "&cYou've disabled %player%'s PvP.");
|
||||||
|
this.entering_combat = config.getString("messages.entering_combat", "&cEntering combat");
|
||||||
|
this.leaving_combat = config.getString("messages.leaving_combat", "&cLeaving combat");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package eu.endermite.togglepvp.listeners.player;
|
|||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -37,7 +38,9 @@ public class PlayerAttackListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
@@ -3,6 +3,7 @@ package eu.endermite.togglepvp.listeners.player;
|
|||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.*;
|
import org.bukkit.entity.*;
|
||||||
import org.bukkit.entity.minecart.ExplosiveMinecart;
|
import org.bukkit.entity.minecart.ExplosiveMinecart;
|
||||||
@@ -42,6 +43,7 @@ public class PlayerHitByExplosionListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damageruuid, victim.getUniqueId());
|
||||||
}
|
}
|
||||||
} catch (NullPointerException | IndexOutOfBoundsException ignored) {}
|
} catch (NullPointerException | IndexOutOfBoundsException ignored) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
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.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Firework;
|
import org.bukkit.entity.Firework;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -31,7 +32,9 @@ public class PlayerHitByFireworkListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvP.getPlugin().getConfigCache().getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvP.getPlugin().getConfigCache().getCannot_attack_victim());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -2,6 +2,7 @@ package eu.endermite.togglepvp.listeners.player;
|
|||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Projectile;
|
import org.bukkit.entity.Projectile;
|
||||||
@@ -28,12 +29,9 @@ public class PlayerHitByProjectileListener implements Listener {
|
|||||||
if (damager == victim) {
|
if (damager == victim) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
|
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
||||||
|
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
||||||
@@ -42,7 +40,9 @@ public class PlayerHitByProjectileListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -2,6 +2,7 @@ package eu.endermite.togglepvp.listeners.player;
|
|||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -58,7 +59,9 @@ public class PlayerHitBySplashPotionListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setIntensity(victim, 0);
|
event.setIntensity(victim, 0);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-3
@@ -1,33 +1,45 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.player;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import java.time.Instant;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PlayerJoinAndLeaveListener implements Listener {
|
public class PlayerJoinAndLeaveListener implements Listener {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This event is here to get players saved options on join
|
* This event is here to get players saved options on join
|
||||||
*/
|
*/
|
||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) {
|
public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) {
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
HashMap<String, Object> playerData;
|
HashMap<String, Object> playerData;
|
||||||
playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(player.getUniqueId());
|
playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(player.getUniqueId());
|
||||||
playerData.put("cachetime", TogglePvP.getPlugin().getPlayerManager().refreshedCacheTime());
|
playerData.put("cachetime", TogglePvP.getPlugin().getPlayerManager().refreshedCacheTime());
|
||||||
|
playerData.put("combattime", Instant.now().getEpochSecond()-1);
|
||||||
TogglePvP.getPlugin().getPlayerManager().addPlayer(player.getUniqueId(), playerData);
|
TogglePvP.getPlugin().getPlayerManager().addPlayer(player.getUniqueId(), playerData);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* This event is here to dump player's saved options from memory
|
* This event is here to dump player's saved options from memory
|
||||||
|
* Also punishes players who log out during combat
|
||||||
*/
|
*/
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerLeave(org.bukkit.event.player.PlayerQuitEvent event) {
|
public void onPlayerLeave(org.bukkit.event.player.PlayerQuitEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
TogglePvP.getPlugin().getSqLite().updatePlayerInfo(player.getUniqueId(), TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()));
|
TogglePvP.getPlugin().getSqLite().updatePlayerInfo(player.getUniqueId(), TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()));
|
||||||
|
if (TogglePvP.getPlugin().getConfigCache().isPunish_for_combat_logout()) {
|
||||||
|
long now = Instant.now().getEpochSecond();
|
||||||
|
long combatTime = (long) TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()).get("combattime");
|
||||||
|
if (combatTime > now) {
|
||||||
|
player.setHealth(0);
|
||||||
|
if (TogglePvP.getPlugin().getConfigCache().isPunish_for_combat_logout_announce()) {
|
||||||
|
PluginMessages.broadcastMessage(player, TogglePvP.getPlugin().getConfigCache().getPunish_for_combat_logout_message());
|
||||||
|
}
|
||||||
|
TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()).replace("combattime", now-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package eu.endermite.togglepvp.listeners.player;
|
|||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Wolf;
|
import org.bukkit.entity.Wolf;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
@@ -27,10 +28,10 @@ public class WolfAttackPlayerListener implements Listener {
|
|||||||
if (!victimPvpEnabled || !damagerPvpEnabled) {
|
if (!victimPvpEnabled || !damagerPvpEnabled) {
|
||||||
wolf.setAngry(false);
|
wolf.setAngry(false);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} catch (NullPointerException e) {
|
CombatTimer.refreshPlayersCombatTime(wolf.getOwner().getUniqueId(), victim.getUniqueId());
|
||||||
return;
|
} catch (NullPointerException ignored) {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-1
@@ -3,6 +3,7 @@ package eu.endermite.togglepvp.listeners.unspecific;
|
|||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -56,7 +57,9 @@ public class AreaEffectCloudApplyListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
it.remove();
|
it.remove();
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
} else if (entity instanceof Wolf) {
|
} else if (entity instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) entity;
|
Wolf victim = (Wolf) entity;
|
||||||
if (victim.getOwner() == null) {
|
if (victim.getOwner() == null) {
|
||||||
@@ -73,11 +76,12 @@ public class AreaEffectCloudApplyListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
it.remove();
|
it.remove();
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -46,14 +46,11 @@ public class EntityHitByLightningListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onLightningStrike(LightningStrikeEvent event){
|
public void onLightningStrike(LightningStrikeEvent event){
|
||||||
if(event.getCause() == LightningStrikeEvent.Cause.TRIDENT){
|
if(event.getCause() == LightningStrikeEvent.Cause.TRIDENT){
|
||||||
|
|
||||||
if (TogglePvP.getPlugin().getConfigCache().isChanneling_enchant_disabled()) {
|
if (TogglePvP.getPlugin().getConfigCache().isChanneling_enchant_disabled()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
event.getLightning().setMetadata("TRIDENT", new FixedMetadataValue(TogglePvP.getPlugin(), event.getLightning().getLocation()));
|
event.getLightning().setMetadata("TRIDENT", new FixedMetadataValue(TogglePvP.getPlugin(), event.getLightning().getLocation()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package eu.endermite.togglepvp.listeners.unspecific;
|
|||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Wolf;
|
import org.bukkit.entity.Wolf;
|
||||||
@@ -36,7 +37,9 @@ public class FishingListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
} else if (event.getCaught() instanceof Wolf) {
|
} else if (event.getCaught() instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) event.getCaught();
|
Wolf victim = (Wolf) event.getCaught();
|
||||||
if (victim.getOwner() == null) {
|
if (victim.getOwner() == null) {
|
||||||
@@ -53,8 +56,9 @@ public class FishingListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -4,6 +4,7 @@ import eu.endermite.togglepvp.TogglePvP;
|
|||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
import eu.endermite.togglepvp.util.BoundingBoxUtil;
|
import eu.endermite.togglepvp.util.BoundingBoxUtil;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -51,6 +52,7 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
}
|
}
|
||||||
} else if (entity instanceof Wolf) {
|
} else if (entity instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) entity;
|
Wolf victim = (Wolf) entity;
|
||||||
@@ -70,6 +72,7 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
||||||
} catch (NullPointerException ignored) {}
|
} catch (NullPointerException ignored) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -106,6 +109,7 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
}
|
}
|
||||||
} else if (entity instanceof Wolf) {
|
} else if (entity instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) entity;
|
Wolf victim = (Wolf) entity;
|
||||||
@@ -125,6 +129,7 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
||||||
} catch (NullPointerException ignored) {}
|
} catch (NullPointerException ignored) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -4,6 +4,7 @@ import eu.endermite.togglepvp.TogglePvP;
|
|||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
import eu.endermite.togglepvp.util.BoundingBoxUtil;
|
import eu.endermite.togglepvp.util.BoundingBoxUtil;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -22,15 +23,12 @@ public class PlaceWitherRoseListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onPlayerWitherRosePlace(org.bukkit.event.block.BlockPlaceEvent event) {
|
public void onPlayerWitherRosePlace(org.bukkit.event.block.BlockPlaceEvent event) {
|
||||||
|
|
||||||
if (!TogglePvP.getPlugin().getConfigCache().isLava_and_fire_stopper_enabled())
|
if (!TogglePvP.getPlugin().getConfigCache().isLava_and_fire_stopper_enabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(event.getBlock().getType().equals(Material.WITHER_ROSE)) {
|
if(event.getBlock().getType().equals(Material.WITHER_ROSE)) {
|
||||||
|
|
||||||
Location location = event.getBlockPlaced().getLocation();
|
Location location = event.getBlockPlaced().getLocation();
|
||||||
double radius = config.getLava_and_fire_stopper_radius();
|
double radius = config.getLava_and_fire_stopper_radius();
|
||||||
|
|
||||||
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
||||||
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
||||||
if (entity instanceof Player) {
|
if (entity instanceof Player) {
|
||||||
@@ -49,6 +47,7 @@ public class PlaceWitherRoseListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
}
|
}
|
||||||
} else if (entity instanceof Wolf) {
|
} else if (entity instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) entity;
|
Wolf victim = (Wolf) entity;
|
||||||
@@ -68,6 +67,7 @@ public class PlaceWitherRoseListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package eu.endermite.togglepvp.listeners.wolf;
|
|||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Wolf;
|
import org.bukkit.entity.Wolf;
|
||||||
@@ -37,13 +38,10 @@ public class PlayerAttackWolfListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), wolf.getOwner().getUniqueId());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package eu.endermite.togglepvp.listeners.wolf;
|
|||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Projectile;
|
import org.bukkit.entity.Projectile;
|
||||||
@@ -38,7 +39,9 @@ public class PlayerHitWolfWithProjectile implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package eu.endermite.togglepvp.listeners.wolf;
|
|||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Wolf;
|
import org.bukkit.entity.Wolf;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
@@ -40,10 +41,10 @@ public class WolfHitByExplosionListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_victim());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} catch (NullPointerException | IndexOutOfBoundsException ignored) {
|
CombatTimer.refreshPlayersCombatTime(damageruuid, victim.getOwner().getUniqueId());
|
||||||
}
|
} catch (NullPointerException | IndexOutOfBoundsException ignored) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package eu.endermite.togglepvp.listeners.wolf;
|
package eu.endermite.togglepvp.listeners.wolf;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Firework;
|
import org.bukkit.entity.Firework;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -32,7 +33,9 @@ public class WolfHitByFireworkListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvP.getPlugin().getConfigCache().getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager.getUniqueId(), TogglePvP.getPlugin().getConfigCache().getCannot_attack_pets_victim());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package eu.endermite.togglepvp.listeners.wolf;
|
|||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import eu.endermite.togglepvp.config.ConfigCache;
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
import eu.endermite.togglepvp.players.SmartCache;
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -63,7 +64,9 @@ public class WolfHitBySplashPotionListener implements Listener {
|
|||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setIntensity(victim, 0);
|
event.setIntensity(victim, 0);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getOwner().getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,10 +29,21 @@ public class PlayerManager {
|
|||||||
return Instant.now().getEpochSecond()+cacheTime;
|
return Instant.now().getEpochSecond()+cacheTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long refreshedCombatTime() {
|
||||||
|
long combatTime = TogglePvP.getPlugin().getConfigCache().getCombat_time();
|
||||||
|
return Instant.now().getEpochSecond()+combatTime;
|
||||||
|
}
|
||||||
|
|
||||||
public void refreshPlayersCacheTime(UUID uuid) {
|
public void refreshPlayersCacheTime(UUID uuid) {
|
||||||
playerList.get(uuid).replace("cachetime", refreshedCacheTime());
|
playerList.get(uuid).replace("cachetime", refreshedCacheTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void refreshPlayersCombatTime(UUID uuid) {
|
||||||
|
try {
|
||||||
|
playerList.get(uuid).replace("combattime", refreshedCombatTime());
|
||||||
|
} catch (Exception ignored) {}
|
||||||
|
}
|
||||||
|
|
||||||
public HashMap<String, Object> getPlayer(UUID uuid) {
|
public HashMap<String, Object> getPlayer(UUID uuid) {
|
||||||
return playerList.get(uuid);
|
return playerList.get(uuid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ public class SmartCache {
|
|||||||
HashMap<String, Object> playerData;
|
HashMap<String, Object> playerData;
|
||||||
playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(uuid);
|
playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(uuid);
|
||||||
playerData.put("cachetime", TogglePvP.getPlugin().getPlayerManager().refreshedCacheTime());
|
playerData.put("cachetime", TogglePvP.getPlugin().getPlayerManager().refreshedCacheTime());
|
||||||
|
playerData.put("combattime", Instant.now().getEpochSecond()-1);
|
||||||
TogglePvP.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
|
TogglePvP.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
|
||||||
return playerData;
|
return playerData;
|
||||||
} catch (NullPointerException ex) {
|
} catch (NullPointerException ex) {
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package eu.endermite.togglepvp.util;
|
||||||
|
|
||||||
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.players.SmartCache;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class CombatTimer {
|
||||||
|
|
||||||
|
public static void refreshPlayersCombatTime(UUID uuid) {
|
||||||
|
try {
|
||||||
|
long now = Instant.now().getEpochSecond();
|
||||||
|
long combattime = (long) SmartCache.getPlayerData(uuid).get("combattime");
|
||||||
|
if (combattime < now) {
|
||||||
|
PluginMessages.sendActionBar(uuid, TogglePvP.getPlugin().getConfigCache().getEntering_combat());
|
||||||
|
}
|
||||||
|
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid);
|
||||||
|
} catch (Exception ignored) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void refreshPlayersCombatTime(UUID attacker_uuid, UUID victim_uuid) {
|
||||||
|
refreshPlayersCombatTime(attacker_uuid);
|
||||||
|
refreshPlayersCombatTime(victim_uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -34,4 +34,11 @@ public class PluginMessages {
|
|||||||
return parseMessage(message);
|
return parseMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void broadcastMessage(Player player, String message) {
|
||||||
|
message = parsePlayerName(player, message);
|
||||||
|
message = parseMessage(message);
|
||||||
|
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
|
||||||
|
Bukkit.spigot().broadcast(component);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,15 @@ settings:
|
|||||||
# You may want to keep it disabled because players with pvp off can use it to attack players with pvp on
|
# You may want to keep it disabled because players with pvp off can use it to attack players with pvp on
|
||||||
channeling_enchant_disabled: false
|
channeling_enchant_disabled: false
|
||||||
|
|
||||||
|
# Time (in seconds) to keep player in combat
|
||||||
|
combat_time: 25
|
||||||
|
|
||||||
|
# Kill the player if they log out during combat
|
||||||
|
punish_for_combat_logout:
|
||||||
|
enabled: true
|
||||||
|
announce: true
|
||||||
|
message: "&f%player% logged out while in combat. What a loser."
|
||||||
|
|
||||||
# Time (in seconds) to keep player data in memory when players goes offline.
|
# Time (in seconds) to keep player data in memory when players goes offline.
|
||||||
# This is used for checking if offline players pvp state.
|
# This is used for checking if offline players pvp state.
|
||||||
# Adjust only if you know what you're doing. NEVER set to less than 6.
|
# Adjust only if you know what you're doing. NEVER set to less than 6.
|
||||||
@@ -27,3 +36,5 @@ messages:
|
|||||||
no_such_command: "&cNo such command."
|
no_such_command: "&cNo such command."
|
||||||
pvp_enabled_others: "&cYou've enabled %player%'s PvP."
|
pvp_enabled_others: "&cYou've enabled %player%'s PvP."
|
||||||
pvp_disabled_others: "&cYou've disabled %player%'s PvP."
|
pvp_disabled_others: "&cYou've disabled %player%'s PvP."
|
||||||
|
entering_combat: "&cEntering combat"
|
||||||
|
leaving_combat: "&cLeaving combat"
|
||||||
|
|||||||
Reference in New Issue
Block a user