Skip to content

Commit 2079e0e

Browse files
committed
Added event handling for command block changes.
Recoded TFM_CommandBlocker as TFM_CommandBlockerNew, will replace after evaulation.
1 parent 0e477f8 commit 2079e0e

6 files changed

Lines changed: 524 additions & 27 deletions

File tree

appinfo.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Sat, 20 Jul 2013 19:28:30 -0400
1+
#Sun, 21 Jul 2013 22:39:51 -0400
22

33
program.VERSION=2.21
4-
program.BUILDNUM=320
5-
program.BUILDDATE=07/20/2013 07\:28 PM
4+
program.BUILDNUM=329
5+
program.BUILDDATE=07/21/2013 10\:39 PM
66

buildnumber.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#Build Number for ANT. Do not edit!
2-
#Sat Jul 20 19:28:30 EDT 2013
3-
build.number=321
2+
#Sun Jul 21 22:39:51 EDT 2013
3+
build.number=330

src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import java.util.List;
77
import java.util.Map.Entry;
88
import java.util.regex.Pattern;
9-
import me.StevenLawson.TotalFreedomMod.TFM_CommandBlocker;
9+
import me.StevenLawson.TotalFreedomMod.TFM_CommandBlockerNew;
1010
import me.StevenLawson.TotalFreedomMod.TFM_LandmineData;
1111
import me.StevenLawson.TotalFreedomMod.TFM_Log;
1212
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
@@ -39,8 +39,6 @@
3939
import org.bukkit.event.player.PlayerLoginEvent;
4040
import org.bukkit.event.player.PlayerMoveEvent;
4141
import org.bukkit.event.player.PlayerQuitEvent;
42-
import org.bukkit.event.server.RemoteServerCommandEvent;
43-
import org.bukkit.event.server.ServerCommandEvent;
4442
import org.bukkit.event.server.ServerListPingEvent;
4543
import org.bukkit.inventory.ItemStack;
4644
import org.bukkit.util.Vector;
@@ -523,7 +521,7 @@ public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event)
523521
command = command.toLowerCase().trim();
524522

525523
// Blocked commands
526-
if (TFM_CommandBlocker.isCommandBlocked(command, event.getPlayer()))
524+
if (TFM_CommandBlockerNew.getInstance().isCommandBlocked(command, event.getPlayer()))
527525
{
528526
// CommandBlocker handles messages and broadcasts
529527
event.setCancelled(true);
@@ -541,24 +539,6 @@ public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event)
541539
}
542540
}
543541

544-
@EventHandler(priority = EventPriority.NORMAL)
545-
public void onRemoteServerCommand(RemoteServerCommandEvent event)
546-
{
547-
if (TFM_CommandBlocker.isCommandBlocked("/" + event.getCommand(), event.getSender()))
548-
{
549-
event.setCommand("");
550-
}
551-
}
552-
553-
@EventHandler(priority = EventPriority.NORMAL)
554-
public void onServerCommand(ServerCommandEvent event)
555-
{
556-
if (TFM_CommandBlocker.isCommandBlocked("/" + event.getCommand(), event.getSender()))
557-
{
558-
event.setCommand("");
559-
}
560-
}
561-
562542
@EventHandler(priority = EventPriority.NORMAL)
563543
public void onPlayerDropItem(PlayerDropItemEvent event)
564544
{
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
package me.StevenLawson.TotalFreedomMod.Listener;
2+
3+
import java.util.Set;
4+
import java.util.regex.Matcher;
5+
import java.util.regex.Pattern;
6+
import me.StevenLawson.TotalFreedomMod.TFM_CommandBlockerNew;
7+
import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList;
8+
import org.bukkit.ChatColor;
9+
import org.bukkit.Server;
10+
import org.bukkit.command.CommandSender;
11+
import org.bukkit.entity.Player;
12+
import org.bukkit.event.EventHandler;
13+
import org.bukkit.event.EventPriority;
14+
import org.bukkit.event.Listener;
15+
import org.bukkit.event.server.CommandBlockSetEvent;
16+
import org.bukkit.event.server.RemoteServerCommandEvent;
17+
import org.bukkit.event.server.ServerCommandEvent;
18+
import org.bukkit.permissions.Permission;
19+
import org.bukkit.permissions.PermissionAttachment;
20+
import org.bukkit.permissions.PermissionAttachmentInfo;
21+
import org.bukkit.plugin.Plugin;
22+
23+
public class TFM_ServerListener implements Listener
24+
{
25+
// CommandBlockSetEvent does not exist in "vanilla" Bukkit/CraftBukkit.
26+
// Comment this method out if you want to compile this without a custom CraftBukkit.
27+
// Just make sure that enable-command-block=false in server.properties.
28+
// -Madgeek
29+
@EventHandler(priority = EventPriority.NORMAL)
30+
public void onCommandBlockSet(CommandBlockSetEvent event)
31+
{
32+
Player player = event.getPlayer();
33+
String newCommandRaw = event.getNewCommand();
34+
35+
if (!TFM_SuperadminList.isSeniorAdmin(player, true))
36+
{
37+
player.sendMessage(ChatColor.GRAY + "Only senior admins may set command block commands.");
38+
event.setCancelled(true);
39+
return;
40+
}
41+
42+
Matcher matcher = Pattern.compile("^/?(\\S+)").matcher(newCommandRaw);
43+
if (matcher.find())
44+
{
45+
String topLevelCommand = matcher.group(1);
46+
if (topLevelCommand != null)
47+
{
48+
topLevelCommand = topLevelCommand.toLowerCase().trim();
49+
50+
//We need to make it look like the command is coming from the console, so keep the player's name without the Player instance via dummy:
51+
if (TFM_CommandBlockerNew.getInstance().isCommandBlocked(topLevelCommand, new TFM_ServerListener_DummyCommandSender(player.getName()), false))
52+
{
53+
player.sendMessage(ChatColor.GRAY + "That command is blocked.");
54+
event.setCancelled(true);
55+
}
56+
}
57+
}
58+
}
59+
60+
@EventHandler(priority = EventPriority.NORMAL)
61+
public void onRemoteServerCommand(RemoteServerCommandEvent event)
62+
{
63+
if (TFM_CommandBlockerNew.getInstance().isCommandBlocked(event.getCommand(), event.getSender()))
64+
{
65+
event.setCommand("");
66+
}
67+
}
68+
69+
@EventHandler(priority = EventPriority.NORMAL)
70+
public void onServerCommand(ServerCommandEvent event)
71+
{
72+
if (TFM_CommandBlockerNew.getInstance().isCommandBlocked(event.getCommand(), event.getSender()))
73+
{
74+
event.setCommand("");
75+
}
76+
}
77+
78+
private static class TFM_ServerListener_DummyCommandSender implements CommandSender
79+
{
80+
private final String senderName;
81+
82+
public TFM_ServerListener_DummyCommandSender(String senderName)
83+
{
84+
this.senderName = senderName;
85+
}
86+
87+
@Override
88+
public void sendMessage(String message)
89+
{
90+
}
91+
92+
@Override
93+
public void sendMessage(String[] messages)
94+
{
95+
}
96+
97+
@Override
98+
public Server getServer()
99+
{
100+
return null;
101+
}
102+
103+
@Override
104+
public String getName()
105+
{
106+
return senderName;
107+
}
108+
109+
@Override
110+
public boolean isPermissionSet(String name)
111+
{
112+
return true;
113+
}
114+
115+
@Override
116+
public boolean isPermissionSet(Permission perm)
117+
{
118+
return true;
119+
}
120+
121+
@Override
122+
public boolean hasPermission(String name)
123+
{
124+
return true;
125+
}
126+
127+
@Override
128+
public boolean hasPermission(Permission perm)
129+
{
130+
return true;
131+
}
132+
133+
@Override
134+
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value)
135+
{
136+
return null;
137+
}
138+
139+
@Override
140+
public PermissionAttachment addAttachment(Plugin plugin)
141+
{
142+
return null;
143+
}
144+
145+
@Override
146+
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks)
147+
{
148+
return null;
149+
}
150+
151+
@Override
152+
public PermissionAttachment addAttachment(Plugin plugin, int ticks)
153+
{
154+
return null;
155+
}
156+
157+
@Override
158+
public void removeAttachment(PermissionAttachment attachment)
159+
{
160+
}
161+
162+
@Override
163+
public void recalculatePermissions()
164+
{
165+
}
166+
167+
@Override
168+
public Set<PermissionAttachmentInfo> getEffectivePermissions()
169+
{
170+
return null;
171+
}
172+
173+
@Override
174+
public boolean isOp()
175+
{
176+
return true;
177+
}
178+
179+
@Override
180+
public void setOp(boolean value)
181+
{
182+
}
183+
}
184+
}

0 commit comments

Comments
 (0)