Skip to content

Commit 2a3a673

Browse files
committed
Kinda Late, but my plugin now prevents Log4J
1 parent d93b722 commit 2a3a673

File tree

9 files changed

+69
-35
lines changed

9 files changed

+69
-35
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>me.krymz0n</groupId>
88
<artifactId>SimpleExploitFixer</artifactId>
9-
<version>1.5</version>
9+
<version>1.6</version>
1010
<packaging>jar</packaging>
1111

1212
<name>SimpleExploitFixer</name>

src/main/java/me/krymz0n/simpleexploitfixer/Main.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import me.krymz0n.simpleexploitfixer.commands.Reload;
55
import me.krymz0n.simpleexploitfixer.listener.*;
66
import me.krymz0n.simpleexploitfixer.listener.exploit.BowBomb;
7+
import me.krymz0n.simpleexploitfixer.listener.exploit.Log4J;
78
import me.krymz0n.simpleexploitfixer.listener.exploit.TabComplete;
89
import me.krymz0n.simpleexploitfixer.listener.lag.*;
910
import me.krymz0n.simpleexploitfixer.listener.misc.Chat;
@@ -45,7 +46,8 @@ public void onEnable() {
4546
pm.registerEvents(new Rail(this), this);
4647
pm.registerEvents(new Chat(this), this);
4748
pm.registerEvents(new BowBomb(this), this);
48-
pm.registerEvents(new TabComplete(this), this);
49+
//pm.registerEvents(new TabComplete(this), this);
50+
pm.registerEvents(new Log4J(this), this);
4951

5052
Objects.requireNonNull(getCommand("sef")).setExecutor(new Reload(this));
5153

src/main/java/me/krymz0n/simpleexploitfixer/listener/ProtocolLib.java

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -46,35 +46,6 @@ public void onPacketReceiving(PacketEvent event) {
4646
}
4747
}
4848
});
49-
50-
protocolManager.addPacketListener(
51-
new PacketAdapter(plugin, ListenerPriority.NORMAL, PacketType.Play.Client.TAB_COMPLETE) {
52-
53-
@Override
54-
public void onPacketReceiving(PacketEvent event) {
55-
if (event.getPacketType() == PacketType.Play.Client.TAB_COMPLETE) {
56-
System.out.println("0");
57-
PacketContainer packet = event.getPacket();
58-
String command = packet.getStrings().read(0); // reads the amount of strings that are sent on the packet.
59-
if (command.equals("/")) {
60-
event.setCancelled(true);
61-
System.out.println("1");
62-
if (plugin.getConfig().getBoolean("SendFakePlugins")) {
63-
Player player = event.getPlayer();
64-
PacketContainer response = new PacketContainer(PacketType.Play.Server.TAB_COMPLETE);
65-
response.getStringArrays().write(0, Utils.formatPlugins());
66-
try {
67-
Main.getInstance().getProtocolManager().sendServerPacket(player, response);
68-
} catch (Exception e) {
69-
e.printStackTrace();
70-
}
71-
}
72-
73-
}
74-
}
75-
}
76-
}
77-
);
7849
}
7950
}
8051
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package me.krymz0n.simpleexploitfixer.listener.exploit;
2+
3+
import me.krymz0n.simpleexploitfixer.Main;
4+
import org.bukkit.event.EventHandler;
5+
import org.bukkit.event.EventPriority;
6+
import org.bukkit.event.Listener;
7+
import org.bukkit.event.entity.PlayerDeathEvent;
8+
import org.bukkit.event.player.AsyncPlayerChatEvent;
9+
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
10+
11+
import java.util.Objects;
12+
13+
public class Log4J implements Listener {
14+
private final Main plugin;
15+
16+
public Log4J(Main plugin) {
17+
this.plugin = plugin;
18+
}
19+
20+
@EventHandler
21+
public void onChat(AsyncPlayerChatEvent evt) {
22+
if (plugin.getConfig().getBoolean("Log4J") && evt.getMessage().startsWith("${")) {
23+
evt.setCancelled(true);
24+
}
25+
}
26+
27+
28+
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
29+
public void onCommandPreprocess(PlayerCommandPreprocessEvent evt) {
30+
if (plugin.getConfig().getBoolean("Log4J") && evt.getMessage().contains("${")) {
31+
evt.setCancelled(true);
32+
}
33+
}
34+
35+
@EventHandler
36+
public void onDeathMessage(PlayerDeathEvent evt) {
37+
if (plugin.getConfig().getBoolean("Log4J") && Objects.requireNonNull(evt.getDeathMessage()).contains("${")) {
38+
evt.setCancelled(true);
39+
}
40+
}
41+
}

src/main/java/me/krymz0n/simpleexploitfixer/listener/exploit/TabComplete.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,15 @@ public TabComplete(Main plugin) {
1414
this.plugin = plugin;
1515
}
1616

17-
@EventHandler // should work as a patch, however I need more testing before I make a new release.
17+
@EventHandler
18+
public void onTabComplete(PlayerCommandSendEvent evt) {
19+
evt.getCommands().clear();
20+
System.out.println("Cleared plugins list");
21+
evt.getCommands().add("test");
22+
23+
}
24+
25+
@EventHandler
1826
public void onTabComplete(TabCompleteEvent evt) {
1927
System.out.println("test");
2028
if (evt.getBuffer().equalsIgnoreCase("/")) {

src/main/java/me/krymz0n/simpleexploitfixer/listener/misc/Chat.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,12 @@ private void onChat(AsyncPlayerChatEvent evt) {
2727
evt.setCancelled(true);
2828
}
2929

30-
if (evt.getMessage().contains("discord.gg") || evt.getMessage().contains("discord.com") || evt.getMessage().contains("discord.media") || evt.getMessage().contains("discordapp.com") || evt.getMessage().contains("discordapp.net") || evt.getMessage().contains("discordstatus.com")) {
30+
if (evt.getMessage().contains("discord.gg")
31+
|| evt.getMessage().contains("discord.com")
32+
|| evt.getMessage().contains("discord.media")
33+
|| evt.getMessage().contains("discordapp.com")
34+
|| evt.getMessage().contains("discordapp.net")
35+
|| evt.getMessage().contains("discordstatus.com")) {
3136
evt.setCancelled(true);
3237
}
3338
}

src/main/java/me/krymz0n/simpleexploitfixer/listener/misc/InteractEvent.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,17 @@ public InteractEvent(Main plugin) {
2727
public void onInteract(PlayerInteractEvent evt) {
2828
if (plugin.getConfig().getBoolean("DisableRespawnAnchorExplosions")) {
2929
Player p = evt.getPlayer();
30+
3031
if (evt.getAction() == Action.RIGHT_CLICK_BLOCK) {
3132
Block block = evt.getClickedBlock();
3233
assert block != null;
34+
3335
if (block.getType().equals(Material.RESPAWN_ANCHOR)) {
34-
final RespawnAnchor ra = (RespawnAnchor) block.getBlockData();
36+
final RespawnAnchor ra = (RespawnAnchor) block.getBlockData(); // Getting the block data
37+
3538
if (evt.getMaterial().equals(Material.GLOWSTONE) && ra.getCharges() >= ra.getMaximumCharges() || !evt.getMaterial().equals(Material.GLOWSTONE) && ra.getCharges() > 0 && !p.getWorld().getEnvironment().equals(World.Environment.NETHER)) {
3639
evt.setCancelled(true);
37-
Audience.audience(p).sendActionBar(Component.text(ChatColor.RED + "Due to a poll in the discord, respawn anchor explosions have been disabled"));
40+
Audience.audience(p).sendActionBar(Component.text(ChatColor.RED + "Due to a poll in the discord, respawn anchor explosions have been disabled")); //sending action bar
3841
}
3942
}
4043
}

src/main/java/me/krymz0n/simpleexploitfixer/util/Utils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package me.krymz0n.simpleexploitfixer.util;
22

33
import me.krymz0n.simpleexploitfixer.Main;
4+
import org.bukkit.ChatColor;
45
import org.bukkit.entity.Entity;
56

67
import java.util.ArrayList;

src/main/resources/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ DelayOfRailClock: 1
7373
PreventBowBombExploit: true
7474
MaxBowSquaredVelocity: 15
7575

76+
# Log4Shell
77+
Log4J: true
78+
7679
# ProtocolLib
7780
DisableAllProtocolLib: false
7881
PreventNoComCoordinateExploit: true

0 commit comments

Comments
 (0)