Skip to content

Commit

Permalink
Send packets when a hat is dismounted.
Browse files Browse the repository at this point in the history
Pet hats were also being secretly dismounted, so we block dismounts not done by SonarPets.
Fixes #21
  • Loading branch information
Techcable committed Apr 12, 2016
1 parent 7f223ac commit 8764e46
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,18 @@ public SpawnEggItemData createSpawnEggData(EntityType entityType, ItemMeta meta)
public void mount(org.bukkit.entity.Entity bukkitRider, org.bukkit.entity.Entity bukkitVehicle) {
Entity rider = NMS.getHandle(Objects.requireNonNull(bukkitRider, "Null rider"));
if (bukkitVehicle == null) {
rider.stopRiding();
Entity vehicle = rider.getVehicle(); // This is how you *really* get the vehicle :/
if (rider instanceof EntityPet) {
((EntityPet) rider).reallyStopRiding(); // normally we block dismounting, but now we really do want to dismount
} else {
rider.stopRiding();
}
if (vehicle != null) {
Packet packet = new PacketPlayOutMount(vehicle);
for (EntityHuman human : rider.world.players) {
((EntityPlayer) human).playerConnection.sendPacket(packet);
}
}
} else {
Preconditions.checkArgument(bukkitRider.getWorld().equals(bukkitVehicle.getWorld()), "Rider is in world %s, while vehicle is in world %s", bukkitRider.getWorld().getName(), bukkitVehicle.getWorld().getName());
Entity vehicle = NMS.getHandle(bukkitVehicle);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,13 @@ public PetType getEntityPetType() {
return null;
}

@Override
public void stopRiding() {} // Pets are being secretly dismounted, so we have to block it here

public void reallyStopRiding() {
super.stopRiding();
}

@Override
public void resizeBoundingBox(boolean flag) {
EntitySize es = this.getClass().getAnnotation(EntitySize.class);
Expand Down

0 comments on commit 8764e46

Please sign in to comment.