Skip to content

Commit

Permalink
packet interceptor late loader
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Jun 15, 2021
1 parent eb842f6 commit a6f0f85
Show file tree
Hide file tree
Showing 46 changed files with 196 additions and 171 deletions.
11 changes: 8 additions & 3 deletions plugin/src/main/java/com/denizenscript/denizen/Denizen.java
Expand Up @@ -36,13 +36,13 @@
import com.denizenscript.denizen.utilities.flags.WorldFlagHandler;
import com.denizenscript.denizen.utilities.implementation.DenizenCoreImplementation;
import com.denizenscript.denizen.utilities.maps.DenizenMapManager;
import com.denizenscript.denizen.utilities.packets.DenizenPacketHandler;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.interfaces.FakeArrow;
import com.denizenscript.denizen.nms.interfaces.FakePlayer;
import com.denizenscript.denizen.nms.interfaces.ItemProjectile;
import com.denizenscript.denizen.npc.TraitRegistry;
import com.denizenscript.denizen.npc.DenizenNPCHelper;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizen.utilities.world.VoidGenerator;
import com.denizenscript.denizencore.DenizenCore;
import com.denizenscript.denizencore.events.OldEventManager;
Expand Down Expand Up @@ -361,8 +361,13 @@ else if (javaVersion.startsWith("9") || javaVersion.startsWith("1.9") || javaVer
catch (Exception e) {
Debug.echoError(e);
}
if (Settings.packetInterception()) {
NMSHandler.getInstance().enablePacketInterception(new DenizenPacketHandler());
try {
if (Settings.cache_packetInterceptAutoInit) {
NetworkInterceptHelper.enable();
}
}
catch (Exception e) {
Debug.echoError(e);
}
try {
if (supportsPaper) {
Expand Down
Expand Up @@ -3,6 +3,7 @@
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
Expand Down Expand Up @@ -88,6 +89,8 @@ public String getName() {
return "PlayerHoldsShield";
}

public boolean enabled = false;

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(player, null);
Expand All @@ -103,6 +106,17 @@ public ObjectTag getContext(String name) {

public static HashSet<UUID> raisedShields = new HashSet<>();

@Override
public void init() {
NetworkInterceptHelper.enable();
enabled = true;
}

@Override
public void destroy() {
enabled = false;
}

public static void signalDidRaise(Player player) {
if (raisedShields.contains(player.getUniqueId())) {
return;
Expand Down
Expand Up @@ -3,6 +3,7 @@
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
Expand Down Expand Up @@ -71,6 +72,7 @@ public String getName() {

@Override
public void init() {
NetworkInterceptHelper.enable();
loaded = true;
}

Expand Down
Expand Up @@ -4,6 +4,7 @@
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
Expand Down Expand Up @@ -88,6 +89,7 @@ public String getName() {

@Override
public void init() {
NetworkInterceptHelper.enable();
enabled = true;
}

Expand Down
Expand Up @@ -3,6 +3,7 @@
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
Expand Down Expand Up @@ -40,6 +41,19 @@ public boolean couldMatch(ScriptPath path) {
return path.eventLower.startsWith("resource pack status");
}

public boolean enabled;

@Override
public void init() {
NetworkInterceptHelper.enable();
enabled = true;
}

@Override
public void destroy() {
enabled = false;
}

@Override
public String getName() {
return "ResourcePackStatus";
Expand Down
Expand Up @@ -10,7 +10,6 @@
import com.denizenscript.denizen.nms.abstracts.ParticleHelper;
import com.denizenscript.denizen.nms.abstracts.ProfileEditor;
import com.denizenscript.denizen.nms.abstracts.Sidebar;
import com.denizenscript.denizen.utilities.packets.DenizenPacketHandler;
import com.denizenscript.denizencore.utilities.ReflectionHelper;
import net.md_5.bungee.api.chat.HoverEvent;
import org.bukkit.Location;
Expand Down Expand Up @@ -168,8 +167,6 @@ public boolean isCorrectMappingsCode() {

public abstract double[] getRecentTps();

public abstract void enablePacketInterception(DenizenPacketHandler packetHandler);

public abstract CompoundTag createCompoundTag(Map<String, Tag> value);

public abstract int getPort();
Expand Down
Expand Up @@ -2,6 +2,7 @@

import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.utilities.blocks.ChunkCoordinate;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
Expand Down Expand Up @@ -34,6 +35,7 @@ public Chunk getChunk() {
}

protected BlockLight(Location location, long ticks) {
NetworkInterceptHelper.enable();
this.block = location.getBlock();
this.chunk = location.getChunk();
this.chunkCoord = new ChunkCoordinate(chunk);
Expand Down
Expand Up @@ -67,6 +67,8 @@ public interface PacketHelper {

void forceSpectate(Player player, Entity entity);

void setNetworkManagerFor(Player player);

default void sendRename(Player player, Entity entity, String name, boolean listMode) {
throw new UnsupportedOperationException();
}
Expand Down
@@ -1,7 +1,5 @@
package com.denizenscript.denizen.nms.interfaces.packets;

import java.util.UUID;

public interface PacketOutSpawnEntity {

int getEntityId();
Expand Down
@@ -1,6 +1,7 @@
package com.denizenscript.denizen.npc.traits;
import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.nms.abstracts.ProfileEditor;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import net.citizensnpcs.api.event.DespawnReason;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.persistence.Persist;
Expand Down Expand Up @@ -43,6 +44,7 @@ public void respawn() {
}

public void mirrorOn() {
NetworkInterceptHelper.enable();
UUID uuid = getUUID(npc);
if (!ProfileEditor.mirrorUUIDs.contains(uuid)) {
ProfileEditor.mirrorUUIDs.add(uuid);
Expand Down
Expand Up @@ -18,6 +18,7 @@
import com.denizenscript.denizen.utilities.packets.DenizenPacketHandler;
import com.denizenscript.denizen.utilities.packets.HideParticles;
import com.denizenscript.denizen.utilities.packets.ItemChangeMessage;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.flags.AbstractFlagTracker;
import com.denizenscript.denizencore.flags.FlaggableObject;
import com.denizenscript.denizencore.objects.*;
Expand Down Expand Up @@ -1426,8 +1427,10 @@ else if (obj instanceof EntityTag) {
// @description
// Returns the brand of the client, as sent via the "minecraft:brand" packet.
// On normal clients, will say "vanilla". On broken clients, will say "unknown". Modded clients will identify themselves (though not guaranteed!).
// It may be ideal to change setting "Packets.Auto init" in the Denizen config to "true" to guarantee this tag functions as expected.
// -->
registerOnlineOnlyTag("client_brand", (attribute, object) -> {
NetworkInterceptHelper.enable();
return new ElementTag(NMSHandler.getPlayerHelper().getPlayerBrand(object.getPlayerEntity()), true);
});

Expand Down Expand Up @@ -2340,8 +2343,10 @@ else if (foodLevel / maxHunger < 1) {
// @returns ElementTag(Number)
// @description
// Returns a total count of how many network packets have been sent to this player while they have been online.
// It may be ideal to change setting "Packets.Auto init" in the Denizen config to "true" to guarantee this tag functions as expected.
// -->
registerOnlineOnlyTag("packets_sent", (attribute, object) -> {
NetworkInterceptHelper.enable();
return new ElementTag(NMSHandler.getPacketHelper().getPacketStats(object.getPlayerEntity(), true));
});

Expand All @@ -2350,8 +2355,10 @@ else if (foodLevel / maxHunger < 1) {
// @returns ElementTag(Number)
// @description
// Returns a total count of how many network packets have been received from this player while they have been online.
// It may be ideal to change setting "Packets.Auto init" in the Denizen config to "true" to guarantee this tag functions as expected.
// -->
registerOnlineOnlyTag("packets_received", (attribute, object) -> {
NetworkInterceptHelper.enable();
return new ElementTag(NMSHandler.getPacketHelper().getPacketStats(object.getPlayerEntity(), false));
});
}
Expand Down Expand Up @@ -3204,14 +3211,8 @@ else if (split.length > 1) {
}
}

// <--[mechanism]
// @object PlayerTag
// @name item_message
// @input ElementTag
// @description
// Shows the player an item message as if the item they are carrying had changed names to the input message.
// -->
if (mechanism.matches("item_message")) {
Deprecations.itemMessage.warn(mechanism.context);
ItemChangeMessage.sendMessage(getPlayerEntity(), mechanism.getValue().asString());
}

Expand Down Expand Up @@ -3698,6 +3699,7 @@ else if (bal > goal) {
HideParticles.hidden.remove(getUUID());
}
else {
NetworkInterceptHelper.enable();
HashSet<Particle> particles = HideParticles.hidden.computeIfAbsent(getUUID(), k -> new HashSet<>());
Particle particle = Particle.valueOf(mechanism.getValue().asString().toUpperCase());
particles.add(particle);
Expand Down
Expand Up @@ -7,6 +7,7 @@
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.exceptions.InvalidArgumentsException;
import com.denizenscript.denizencore.objects.Argument;
import com.denizenscript.denizencore.objects.ArgumentHelper;
Expand Down Expand Up @@ -163,6 +164,7 @@ public void copyFrom(EquipmentOverride override) {

@Override
public void execute(ScriptEntry scriptEntry) {
NetworkInterceptHelper.enable();
EquipmentOverride equipment = (EquipmentOverride) scriptEntry.getObject("equipment");
List<EntityTag> entities = (List<EntityTag>) scriptEntry.getObject("entities");
List<PlayerTag> playersFor = (List<PlayerTag>) scriptEntry.getObject("for");
Expand Down
Expand Up @@ -9,6 +9,7 @@
import com.denizenscript.denizen.utilities.AdvancedTextImpl;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.exceptions.InvalidArgumentsException;
import com.denizenscript.denizencore.objects.Argument;
import com.denizenscript.denizencore.objects.ArgumentHelper;
Expand Down Expand Up @@ -130,6 +131,7 @@ public void execute(final ScriptEntry scriptEntry) {
ListTag targets = scriptEntry.getObjectTag("targets");
List<PlayerTag> players = (List<PlayerTag>) scriptEntry.getObject("players");
if (perPlayer != null && perPlayer.asBoolean()) {
NetworkInterceptHelper.enable();
if (scriptEntry.dbCallShouldDebug()) {
Debug.report(scriptEntry, getName(), name.debug()
+ targets.debug()
Expand Down Expand Up @@ -262,6 +264,7 @@ public static boolean hasAnyDynamicRenames() {
}

public static void addDynamicRename(Entity bukkitEntity, Player forPlayer, RenameData rename) {
NetworkInterceptHelper.enable();
HashMap<UUID, RenameData> playerToFuncMap = customNames.computeIfAbsent(bukkitEntity.getUniqueId(), k -> new HashMap<>());
playerToFuncMap.put(forPlayer == null ? null : forPlayer.getUniqueId(), rename);
if (forPlayer == null) {
Expand Down
Expand Up @@ -5,6 +5,7 @@
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.exceptions.InvalidArgumentsException;
import com.denizenscript.denizencore.objects.Argument;
import com.denizenscript.denizencore.objects.ArgumentHelper;
Expand Down Expand Up @@ -99,6 +100,7 @@ else if (arg.matchesArgumentList(EntityTag.class)
public static HashMap<UUID, HashMap<UUID, Boolean>> forceSetSneak = new HashMap<>();

public static void updateFakeSneak(UUID entity, UUID player, boolean shouldSneak, boolean start) {
NetworkInterceptHelper.enable();
HashMap<UUID, Boolean> subMap = forceSetSneak.get(entity);
if (subMap == null) {
if (!start) {
Expand Down
Expand Up @@ -7,6 +7,7 @@
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.utilities.entity.FakeEntity;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.exceptions.InvalidArgumentsException;
import com.denizenscript.denizencore.objects.Argument;
import com.denizenscript.denizencore.objects.ArgumentHelper;
Expand Down Expand Up @@ -307,6 +308,7 @@ public void onMove(PlayerMoveEvent event) {

@Override
public void execute(ScriptEntry scriptEntry) {
NetworkInterceptHelper.enable();
EntityTag entity = scriptEntry.getObjectTag("entity");
EntityTag as = scriptEntry.getObjectTag("as");
ElementTag cancel = scriptEntry.getElement("cancel");
Expand Down
Expand Up @@ -4,6 +4,7 @@
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.utilities.depends.Depends;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.exceptions.InvalidArgumentsException;
import com.denizenscript.denizencore.objects.Argument;
import com.denizenscript.denizencore.objects.core.ElementTag;
Expand Down Expand Up @@ -93,6 +94,7 @@ else if (!scriptEntry.hasObject("glowing")

@Override
public void execute(ScriptEntry scriptEntry) {
NetworkInterceptHelper.enable();
final ArrayList<EntityTag> entities = (ArrayList<EntityTag>) scriptEntry.getObject("entities");
ElementTag glowing = scriptEntry.getElement("glowing");
if (scriptEntry.dbCallShouldDebug()) {
Expand Down
Expand Up @@ -6,6 +6,7 @@
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.objects.MaterialTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.exceptions.InvalidArgumentsException;
import com.denizenscript.denizencore.objects.*;
import com.denizenscript.denizencore.objects.core.DurationTag;
Expand Down Expand Up @@ -131,6 +132,7 @@ else if (!scriptEntry.hasObject("locations")

@Override
public void execute(ScriptEntry scriptEntry) {
NetworkInterceptHelper.enable();
DurationTag duration = scriptEntry.getObjectTag("duration");
ElementTag cancel = scriptEntry.getElement("cancel");
List<MaterialTag> materials = (List<MaterialTag>) scriptEntry.getObject("materials");
Expand Down
Expand Up @@ -5,6 +5,7 @@
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.interfaces.PlayerHelper;
import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper;
import com.denizenscript.denizencore.exceptions.InvalidArgumentsException;
import com.denizenscript.denizencore.objects.Argument;
import com.denizenscript.denizencore.objects.core.ElementTag;
Expand Down Expand Up @@ -141,6 +142,7 @@ public void execute(ScriptEntry scriptEntry) {
boolean silentBool = silent.asBoolean();
Player player = Utilities.getEntryPlayer(scriptEntry).getPlayerEntity();
if (silentBool) {
NetworkInterceptHelper.enable();
silencedPlayers.add(player.getUniqueId());
}
player.performCommand(pcpe.getMessage().startsWith("/") ?
Expand Down Expand Up @@ -172,6 +174,7 @@ public void execute(ScriptEntry scriptEntry) {
if (!pcpe.isCancelled()) {
boolean silentBool = silent.asBoolean();
if (silentBool) {
NetworkInterceptHelper.enable();
silencedPlayers.add(player.getUniqueId());
}
player.performCommand(pcpe.getMessage().startsWith("/") ?
Expand Down

0 comments on commit a6f0f85

Please sign in to comment.