Skip to content
Open
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
25 changes: 17 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -134,17 +134,20 @@
</repository>

<!-- MurderMystery, BuildBattle and VillageDefense -->
<!-- Broken -->
<!--<repository>
<id>plajerlair-repo</id>
<url>https://maven.plajer.xyz/minecraft</url>
</repository>-->
<repository>
<id>plugilyprojects-snapshots</id>
<url>https://maven.plugily.xyz/snapshots</url>
</repository>

<!-- dynmap -->
<repository>
<id>MikeRepo</id>
<url>https://repo.mikeprimm.com/</url>
</repository>
<repository>
<id>packetevents-repo</id>
<url>https://repo.retrooper.dev/public/</url>
</repository>
</repositories>

<dependencies>
Expand Down Expand Up @@ -484,10 +487,9 @@

<!-- VillageDefense -->
<dependency>
<groupId>pl.plajer</groupId>
<groupId>plugily.projects</groupId>
<artifactId>villagedefense</artifactId>
<version>4.4.2</version>
<scope>provided</scope>
<version>4.7.0-SNAPSHOT7</version>
</dependency>

<!-- Craftconomy3 -->
Expand Down Expand Up @@ -525,6 +527,13 @@
<artifactId>Konquest</artifactId>
<version>0.12.0</version>
</dependency>

<!-- PacketEvents -->
<dependency>
<groupId>com.github.retrooper</groupId>
<artifactId>packetevents-spigot</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>

<build>
Expand Down
1 change: 1 addition & 0 deletions src/au/com/addstar/pandora/MasterPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ private void registerModules() {
registerModule("RPlaceDynmap", "au.com.addstar.pandora.modules.RPlaceDynmap", "dynmap", "RPlace");
registerModule("Konquest", "au.com.addstar.pandora.modules.Konquest", "Konquest");
registerModule("MineChessHelper", "au.com.addstar.pandora.modules.MineChessHelper","MineChessPlus", "ChatControl");
registerModule("OverworldHijack", "au.com.addstar.pandora.modules.OverworldHijack", "PacketEvents");
}

@Override
Expand Down
79 changes: 79 additions & 0 deletions src/au/com/addstar/pandora/modules/OverworldHijack.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package au.com.addstar.pandora.modules;

import au.com.addstar.pandora.AbstractModule;
import au.com.addstar.pandora.AutoConfig;
import au.com.addstar.pandora.ConfigField;
import au.com.addstar.pandora.MasterPlugin;
import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.event.PacketListener;
import com.github.retrooper.packetevents.event.PacketSendEvent;
import com.github.retrooper.packetevents.packettype.PacketType;
import com.github.retrooper.packetevents.protocol.world.DimensionType;
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerJoinGame;
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerRespawn;
import org.bukkit.entity.Player;
import java.io.File;

public class OverworldHijack extends AbstractModule implements PacketListener {

private MasterPlugin plugin;
private Config config;

@Override
public void onEnable() {
if (config != null && config.load()) {
config.save();
debug = config.debug;
}
PacketEvents.get().getEventManager().registerListener(this);
}

@Override
public void onDisable() {
PacketEvents.get().getEventManager().unregisterListener(this);
plugin = null;
config = null;
}

@Override
public void setPandoraInstance(MasterPlugin plugin) {
this.plugin = plugin;
this.config = new Config(new File(plugin.getDataFolder(), "OverworldHijack.yml"));
}

@Override
public void onPacketSend(PacketSendEvent event) {
if (event.getPacketType() == PacketType.Play.Server.JOIN_GAME) {
WrapperPlayServerJoinGame packet = new WrapperPlayServerJoinGame(event);
handle(packet, event.getPlayer());
} else if (event.getPacketType() == PacketType.Play.Server.RESPAWN) {
WrapperPlayServerRespawn packet = new WrapperPlayServerRespawn(event);
handle(packet, event.getPlayer());
}
}

private void handle(WrapperPlayServerJoinGame packet, Player player) {
DimensionType dim = packet.getDimensionType();
if (dim != DimensionType.NETHER && dim != DimensionType.END) {
debugLog("Spoofing join dimension for " + player.getName());
packet.setDimensionType(DimensionType.OVERWORLD);
packet.setDimension(DimensionType.OVERWORLD);
}
}

private void handle(WrapperPlayServerRespawn packet, Player player) {
DimensionType dim = packet.getDimensionType();
if (dim != DimensionType.NETHER && dim != DimensionType.END) {
debugLog("Spoofing respawn dimension for " + player.getName());
packet.setDimensionType(DimensionType.OVERWORLD);
packet.setDimension(DimensionType.OVERWORLD);
}
}

private class Config extends AutoConfig {
public Config(File file) { super(file); }

@ConfigField(comment = "Enable debugging")
public boolean debug = false;
}
}
2 changes: 2 additions & 0 deletions src/resources/OverworldHijack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Enable debug logging
#debug: true
2 changes: 1 addition & 1 deletion src/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: ${project.description}

main: ${mainClass}

softdepend: [geSuitHomes, Multiverse-Core, My_Worlds, GriefPrevention, QuickShop, VanishNoPacket, Citizens, Votifier, Monolith, Minigames, MurderMystery, BuildBattle, VillageDefense, PrisonMines, ChatControl, RPlace, Konquest, Treasures, Slimefun]
softdepend: [geSuitHomes, Multiverse-Core, My_Worlds, GriefPrevention, QuickShop, VanishNoPacket, Citizens, Votifier, Monolith, Minigames, MurderMystery, BuildBattle, VillageDefense, PrisonMines, ChatControl, RPlace, Konquest, Treasures, Slimefun, PacketEvents]

loadbefore: [CommandHelper]

Expand Down