Skip to content
Closed
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
3 changes: 2 additions & 1 deletion Essentials/src/com/earth2me/essentials/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import net.ess3.api.events.AfkStatusChangeEvent;
import net.ess3.api.events.JailStatusChangeEvent;
import net.ess3.api.events.MuteStatusChangeEvent;
import net.ess3.api.events.TempMuteStatusChangeEvent;
import net.ess3.api.events.UserBalanceUpdateEvent;
import net.ess3.nms.refl.ReflUtil;

Expand Down Expand Up @@ -585,7 +586,7 @@ public boolean checkJailTimeout(final long currentTime) {
//Returns true if status expired during this check
public boolean checkMuteTimeout(final long currentTime) {
if (getMuteTimeout() > 0 && getMuteTimeout() < currentTime && isMuted()) {
final MuteStatusChangeEvent event = new MuteStatusChangeEvent(this, null, false, getMuteTimeout(), getMuteReason());
final MuteStatusChangeEvent event = new TempMuteStatusChangeEvent(this, null, getMuteReason(), getMuteTimeout());
ess.getServer().getPluginManager().callEvent(event);

if (!event.isCancelled()) {
Expand Down
24 changes: 16 additions & 8 deletions Essentials/src/com/earth2me/essentials/commands/Commandban.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.earth2me.essentials.OfflinePlayer;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.FormatUtil;
import net.ess3.api.events.BanStatusChangeEvent;
import org.bukkit.BanList;
import org.bukkit.Server;

Expand Down Expand Up @@ -51,18 +52,25 @@ public void run(final Server server, final CommandSource sender, final String co
banReason = tl("defaultBanReason");
}

ess.getServer().getBanList(BanList.Type.NAME).addBan(user.getName(), banReason, null, senderName);
final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null;
BanStatusChangeEvent event = new BanStatusChangeEvent(user, controller, true, banReason);
ess.getServer().getPluginManager().callEvent(event);

String banDisplay = tl("banFormat", banReason, senderName);
if(!event.isCancelled()) {
banReason = event.getReason();
ess.getServer().getBanList(BanList.Type.NAME).addBan(user.getName(), banReason, null, senderName);

user.getBase().kickPlayer(banDisplay);
server.getLogger().log(Level.INFO, tl("playerBanned", senderName, user.getName(), banDisplay));
String banDisplay = tl("banFormat", banReason, senderName);

if (nomatch) {
sender.sendMessage(tl("userUnknown", user.getName()));
}
user.getBase().kickPlayer(banDisplay);
server.getLogger().log(Level.INFO, tl("playerBanned", senderName, user.getName(), banDisplay));

if (nomatch) {
sender.sendMessage(tl("userUnknown", user.getName()));
}

ess.broadcastMessage("essentials.ban.notify", tl("playerBanned", senderName, user.getName(), banReason));
ess.broadcastMessage("essentials.ban.notify", tl("playerBanned", senderName, user.getName(), banReason));
}
}

@Override
Expand Down
24 changes: 16 additions & 8 deletions Essentials/src/com/earth2me/essentials/commands/Commandbanip.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.earth2me.essentials.Console;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.FormatUtil;
import net.ess3.api.events.IpBanStatusChangeEvent;
import org.bukkit.BanList;
import org.bukkit.Server;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -51,18 +52,25 @@ public void run(final Server server, final CommandSource sender, final String co
banReason = tl("defaultBanReason");
}

String banDisplay = tl("banFormat", banReason, senderName);
final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null;
IpBanStatusChangeEvent event = new IpBanStatusChangeEvent(ipAddress, controller, true, banReason);
ess.getServer().getPluginManager().callEvent(event);

ess.getServer().getBanList(BanList.Type.IP).addBan(ipAddress, banReason, null, senderName);
server.getLogger().log(Level.INFO, tl("playerBanIpAddress", senderName, ipAddress, banReason));
if (!event.isCancelled()) {
banReason = event.getReason();
String banDisplay = tl("banFormat", banReason, senderName);

for (Player player : ess.getServer().getOnlinePlayers()) {
if (player.getAddress().getAddress().getHostAddress().equalsIgnoreCase(ipAddress)) {
player.kickPlayer(banDisplay);
ess.getServer().getBanList(BanList.Type.IP).addBan(ipAddress, banReason, null, senderName);
server.getLogger().log(Level.INFO, tl("playerBanIpAddress", senderName, ipAddress, banReason));

for (Player player : ess.getServer().getOnlinePlayers()) {
if (player.getAddress().getAddress().getHostAddress().equalsIgnoreCase(ipAddress)) {
player.kickPlayer(banDisplay);
}
}
}

ess.broadcastMessage("essentials.banip.notify", tl("playerBanIpAddress", senderName, ipAddress, banReason));
ess.broadcastMessage("essentials.banip.notify", tl("playerBanIpAddress", senderName, ipAddress, banReason));
}
}

@Override
Expand Down
18 changes: 15 additions & 3 deletions Essentials/src/com/earth2me/essentials/commands/Commandmute.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.DateUtil;
import net.ess3.api.events.MuteStatusChangeEvent;
import net.ess3.api.events.TempMuteStatusChangeEvent;
import org.bukkit.Server;

import java.util.GregorianCalendar;
Expand Down Expand Up @@ -60,13 +61,23 @@ public void run(final Server server, final CommandSource sender, final String co
throw new NoChargeException();
}
}

final boolean willMute = (args.length > 1) || !user.getMuted();
final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null;
final MuteStatusChangeEvent event = new MuteStatusChangeEvent(user, controller, willMute, muteTimestamp, muteReason);
final MuteStatusChangeEvent event;
if (muteTimestamp == 0) {
event = new MuteStatusChangeEvent(user, controller, willMute, muteReason);
} else {
event = new TempMuteStatusChangeEvent(user, controller, muteReason, muteTimestamp);
}
ess.getServer().getPluginManager().callEvent(event);

if (!event.isCancelled()) {
muteReason = event.getReason();
if (event instanceof TempMuteStatusChangeEvent) {
muteTimestamp = ((TempMuteStatusChangeEvent) event).getTimestamp();
}

if (muteReason != null) {
user.setMuteReason(muteReason.isEmpty() ? null : muteReason);
user.setMuted(true);
Expand All @@ -76,6 +87,7 @@ public void run(final Server server, final CommandSource sender, final String co
user.setMuteReason(null);
}
}

user.setMuteTimeout(muteTimestamp);
final boolean muted = user.getMuted();
String muteTime = DateUtil.formatDateDiff(muteTimestamp);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.earth2me.essentials.Console;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.DateUtil;
import net.ess3.api.events.TempBanStatusChangeEvent;
import org.bukkit.BanList;
import org.bukkit.Server;

Expand Down Expand Up @@ -38,7 +39,7 @@ public void run(final Server server, final CommandSource sender, final String co
}
}
final String time = getFinalArg(args, 1);
final long banTimestamp = DateUtil.parseDateDiff(time, true);
long banTimestamp = DateUtil.parseDateDiff(time, true);
String banReason = DateUtil.removeTimePattern(time);

final long maxBanLength = ess.getSettings().getMaxTempban() * 1000;
Expand All @@ -51,16 +52,24 @@ public void run(final Server server, final CommandSource sender, final String co
banReason = tl("defaultBanReason");
}

final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
ess.getServer().getBanList(BanList.Type.NAME).addBan(user.getName(), banReason, new Date(banTimestamp), senderName);
final String expiry = DateUtil.formatDateDiff(banTimestamp);
final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null;
TempBanStatusChangeEvent event = new TempBanStatusChangeEvent(user, controller, banReason, banTimestamp);
ess.getServer().getPluginManager().callEvent(event);

final String banDisplay = tl("tempBanned", expiry, senderName, banReason);
user.getBase().kickPlayer(banDisplay);
if(!event.isCancelled()) {
banReason = event.getReason();
banTimestamp = event.getTimestamp();
final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
ess.getServer().getBanList(BanList.Type.NAME).addBan(user.getName(), banReason, new Date(banTimestamp), senderName);
final String expiry = DateUtil.formatDateDiff(banTimestamp);

final String message = tl("playerTempBanned", senderName, user.getName(), expiry, banReason);
server.getLogger().log(Level.INFO, message);
ess.broadcastMessage("essentials.ban.notify", message);
final String banDisplay = tl("tempBanned", expiry, senderName, banReason);
user.getBase().kickPlayer(banDisplay);

final String message = tl("playerTempBanned", senderName, user.getName(), expiry, banReason);
server.getLogger().log(Level.INFO, message);
ess.broadcastMessage("essentials.ban.notify", message);
}
}

@Override
Expand Down
32 changes: 19 additions & 13 deletions Essentials/src/com/earth2me/essentials/commands/Commandunban.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.Console;
import com.earth2me.essentials.OfflinePlayer;
import com.earth2me.essentials.User;
import net.ess3.api.events.BanStatusChangeEvent;
import org.bukkit.BanList;
import org.bukkit.OfflinePlayer;
import org.bukkit.Server;

import java.util.logging.Level;
Expand All @@ -22,23 +23,28 @@ public void run(final Server server, final CommandSource sender, final String co
if (args.length < 1) {
throw new NotEnoughArgumentsException();
}
String name;

User user;
try {
final User user = getPlayer(server, args, 0, true, true);
name = user.getName();
ess.getServer().getBanList(BanList.Type.NAME).pardon(name);
} catch (NoSuchFieldException e) {
final OfflinePlayer player = server.getOfflinePlayer(args[0]);
name = player.getName();
if (!player.isBanned()) {
user = getPlayer(server, args, 0, true, true);
} catch (PlayerNotFoundException e) {
user = ess.getUser(new OfflinePlayer(args[0], ess.getServer()));
if (!user.getBase().isBanned()) {
throw new Exception(tl("playerNotFound"), e);
}
ess.getServer().getBanList(BanList.Type.NAME).pardon(name);
}

final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
server.getLogger().log(Level.INFO, tl("playerUnbanned", senderName, name));
final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null;
BanStatusChangeEvent event = new BanStatusChangeEvent(user, controller, false, null);
ess.getServer().getPluginManager().callEvent(event);

if (!event.isCancelled()) {
ess.getServer().getBanList(BanList.Type.NAME).pardon(user.getName());

ess.broadcastMessage("essentials.ban.notify", tl("playerUnbanned", senderName, name));
final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
server.getLogger().log(Level.INFO, tl("playerUnbanned", senderName, user.getName()));

ess.broadcastMessage("essentials.ban.notify", tl("playerUnbanned", senderName, user.getName()));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.earth2me.essentials.Console;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.FormatUtil;
import net.ess3.api.events.IpBanStatusChangeEvent;
import org.bukkit.BanList;
import org.bukkit.Server;

Expand Down Expand Up @@ -39,11 +40,16 @@ public void run(final Server server, final CommandSource sender, final String co
throw new PlayerNotFoundException();
}

final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null;
IpBanStatusChangeEvent event = new IpBanStatusChangeEvent(ipAddress, controller, false, null);
ess.getServer().getPluginManager().callEvent(event);

ess.getServer().getBanList(BanList.Type.IP).pardon(ipAddress);
final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
server.getLogger().log(Level.INFO, tl("playerUnbanIpAddress", senderName, ipAddress));
if (!event.isCancelled()) {
ess.getServer().getBanList(BanList.Type.IP).pardon(ipAddress);
final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
server.getLogger().log(Level.INFO, tl("playerUnbanIpAddress", senderName, ipAddress));

ess.broadcastMessage("essentials.banip.notify", tl("playerUnbanIpAddress", senderName, ipAddress));
ess.broadcastMessage("essentials.banip.notify", tl("playerUnbanIpAddress", senderName, ipAddress));
}
}
}
9 changes: 9 additions & 0 deletions Essentials/src/net/ess3/api/events/BanStatusChangeEvent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package net.ess3.api.events;

import net.ess3.api.IUser;

public class BanStatusChangeEvent extends ReasonedStatusChangeEvent {
public BanStatusChangeEvent(IUser affected, IUser controller, boolean value, String reason) {
super(affected, controller, value, reason);
}
}
61 changes: 61 additions & 0 deletions Essentials/src/net/ess3/api/events/IpBanStatusChangeEvent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package net.ess3.api.events;

import net.ess3.api.IUser;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

public class IpBanStatusChangeEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled = false;
String affectedIp;
IUser controller;
private String reason;
private boolean newValue;

public IpBanStatusChangeEvent(String affectedIp, IUser controller, boolean newValue, String reason) {
this.affectedIp = affectedIp;
this.controller = controller;
this.newValue = newValue;
this.reason = reason;
}

public String getAffectedIp() {
return affectedIp;
}

public IUser getController() {
return controller;
}

@Override
public HandlerList getHandlers() {
return handlers;
}

public static HandlerList getHandlerList() {
return handlers;
}

@Override
public boolean isCancelled() {
return cancelled;
}

@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}

public boolean getValue() {
return newValue;
}

public String getReason() {
return reason;
}

public void setReason(String reason) {
this.reason = reason;
}
}
28 changes: 3 additions & 25 deletions Essentials/src/net/ess3/api/events/MuteStatusChangeEvent.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,8 @@

import net.ess3.api.IUser;

import java.util.Optional;


public class MuteStatusChangeEvent extends StatusChangeEvent {
private Long timestamp;
private String reason;

public MuteStatusChangeEvent(IUser affected, IUser controller, boolean value, Long timestamp, String reason) {
super(affected, controller, value);
this.timestamp = timestamp;
this.reason = reason == null ? null : (reason.isEmpty() ? null : reason);
}

/**
* @return If the mute is temporary, returns a present optional with the timestamp; if permanent or unknown, returns an empty optional.
*/
public Optional<Long> getTimestamp() {
return Optional.ofNullable(timestamp <= 0 ? null : timestamp);
}

/**
* @return Returns the reason if provided, otherwise null.
*/
public String getReason() {
return reason;
public class MuteStatusChangeEvent extends ReasonedStatusChangeEvent {
public MuteStatusChangeEvent(IUser affected, IUser controller, boolean value, String reason) {
super(affected, controller, value, reason);
}
}
Loading