Skip to content

Commit f61fd87

Browse files
committed
🚧 Working on v0.4.4
- Fixed bug, with the entity destroy packet. 🐛 - Fixed bug, with PluginVersion. 🐛
1 parent 788220a commit f61fd87

File tree

5 files changed

+23
-4
lines changed

5 files changed

+23
-4
lines changed

dependency-reduced-pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.azortis</groupId>
55
<artifactId>protocolvanish</artifactId>
6-
<version>0.4.3-SNAPSHOT</version>
6+
<version>0.4.4-SNAPSHOT</version>
77
<build>
88
<finalName>ProtocolVanish</finalName>
99
<plugins>

src/main/java/com/azortis/protocolvanish/PluginVersion.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ public String getMessageFileVersion() {
5555
}
5656

5757
public static PluginVersion getVersionFromString(String versionString){
58-
return PluginVersion.valueOf("v" + versionString.replace(".", "_"));
58+
String enumKey = "v" + versionString.replace(".", "_");
59+
return PluginVersion.valueOf(enumKey);
5960
}
6061

6162
}

src/main/java/com/azortis/protocolvanish/visibility/VisibilityChanger.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.bukkit.potion.PotionEffectType;
3838

3939
import java.lang.reflect.InvocationTargetException;
40+
import java.util.ArrayList;
4041
import java.util.Collections;
4142
import java.util.UUID;
4243

@@ -110,7 +111,9 @@ private void sendSpawnPlayerPacket(Player receiver, Player vanishedPlayer) {
110111
private void sendEntityDestroyPacket(Player receiver, Player vanishedPlayer) {
111112
if (ProtocolLibrary.getProtocolManager().getEntityTrackers(vanishedPlayer).contains(receiver)) {
112113
PacketContainer packetContainer = new PacketContainer(PacketType.Play.Server.ENTITY_DESTROY);
113-
packetContainer.setMeta("ignoreFilter", true); // To make sure our packet doesn't get filtered
114+
if(!plugin.getVisibilityManager().getBypassFilterPackets().containsKey(receiver.getUniqueId()))
115+
plugin.getVisibilityManager().getBypassFilterPackets().put(receiver.getUniqueId(), new ArrayList<>());
116+
plugin.getVisibilityManager().getBypassFilterPackets().get(receiver.getUniqueId()).add(vanishedPlayer.getEntityId());
114117

115118
int[] entityId = new int[]{vanishedPlayer.getEntityId()};
116119
packetContainer.getIntegerArrays().write(0, entityId);

src/main/java/com/azortis/protocolvanish/visibility/VisibilityManager.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public class VisibilityManager {
4040
private Collection<UUID> vanishedPlayers = new ArrayList<>();
4141
private HashMap<Player, Collection<Player>> vanishedFromMap = new HashMap<>();
4242

43+
private HashMap<UUID, List<Integer>> bypassFilterPackets = new HashMap<>(); // For the entityDestroy packet.
44+
4345
public VisibilityManager(ProtocolVanish plugin) {
4446
this.plugin = plugin;
4547
this.visibilityChanger = new VisibilityChanger(plugin);
@@ -198,4 +200,13 @@ public Player getPlayerFromEntityID(int entityId, World world) {
198200
return null;
199201
}
200202

203+
/**
204+
* Get the HashMap of packets that should't be filtered.
205+
* Only for internal use.
206+
*
207+
* @return {@link HashMap} of packets that shouldn't be filtered.
208+
*/
209+
public HashMap<UUID, List<Integer>> getBypassFilterPackets() {
210+
return bypassFilterPackets;
211+
}
201212
}

src/main/java/com/azortis/protocolvanish/visibility/packetlisteners/GeneralEntityPacketListener.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,15 @@ public void onPacketSending(PacketEvent event) {
6161
} else if (packet.getType() == PacketType.Play.Server.ENTITY_DESTROY) {
6262
int[] entityIds = packet.getIntegerArrays().read(0);
6363
List<Integer> entityIdList = new ArrayList<>();
64+
HashMap<UUID, List<Integer>> bypassFilterPackets = plugin.getVisibilityManager().getBypassFilterPackets();
6465
for (int entityId : entityIds) {
6566
Player player = plugin.getVisibilityManager().getPlayerFromEntityID(entityId, viewer.getWorld());
6667
if (player == null) {
6768
entityIdList.add(entityId);
68-
} else if (packet.getMeta("ignoreFilter").isPresent() && (boolean) packet.getMeta("ignoreFilter").get()) {
69+
} else if (bypassFilterPackets.containsKey(viewer.getUniqueId())
70+
&& bypassFilterPackets.get(viewer.getUniqueId()).contains(entityId)) {
71+
bypassFilterPackets.get(viewer.getUniqueId()).remove(entityId);
72+
if(bypassFilterPackets.get(viewer.getUniqueId()).isEmpty())bypassFilterPackets.remove(viewer.getUniqueId());
6973
entityIdList.add(entityId);
7074
} else if (plugin.getVisibilityManager().isVanished(player.getUniqueId()) &&
7175
!plugin.getVisibilityManager().isVanishedFrom(player, viewer)) {

0 commit comments

Comments
 (0)