Created
July 28, 2013 03:32
-
-
Save aadnk/6097257 to your computer and use it in GitHub Desktop.
How to intercept and modify Packet44UpdateAttributes in ProtocolLib 2.5.1. This example modifies the sprint speed to be 200% faster.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.comphenix.example; | |
import java.util.List; | |
import java.util.Set; | |
import java.util.UUID; | |
import org.bukkit.plugin.java.JavaPlugin; | |
import com.comphenix.protocol.Packets; | |
import com.comphenix.protocol.ProtocolLibrary; | |
import com.comphenix.protocol.events.ConnectionSide; | |
import com.comphenix.protocol.events.PacketAdapter; | |
import com.comphenix.protocol.events.PacketEvent; | |
import com.comphenix.protocol.wrappers.WrappedAttribute; | |
import com.comphenix.protocol.wrappers.WrappedAttributeModifier; | |
import com.comphenix.protocol.wrappers.WrappedAttributeModifier.Operation; | |
import com.google.common.collect.Sets; | |
public class UpdateAttributes extends JavaPlugin { | |
private static final UUID SPRITING_SPEED = UUID.fromString("662a6b8d-da3e-4c1c-8813-96ea6097278d"); | |
private static final UUID SUPER_SPRINTING = UUID.fromString("d64c79c2-a459-446c-9308-409e1b6b3340"); | |
@Override | |
public void onEnable() { | |
ProtocolLibrary.getProtocolManager().addPacketListener( | |
new PacketAdapter(this, ConnectionSide.SERVER_SIDE, Packets.Server.UPDATE_ATTRIBUTES) { | |
public void onPacketSending(PacketEvent event) { | |
List<WrappedAttribute> list = event.getPacket().getAttributeCollectionModifier().read(0); | |
for (int i = 0; i < list.size(); i++) { | |
WrappedAttribute attribute = list.get(i); | |
// See if we should add the super sprinting attribute | |
if (attribute.hasModifier(SPRITING_SPEED) && !attribute.hasModifier(SUPER_SPRINTING)) { | |
Set<WrappedAttributeModifier> modifiers = Sets.newHashSet(attribute.getModifiers()); | |
// Add the new super sprinting too | |
modifiers.add(WrappedAttributeModifier.newBuilder(). | |
name("Super Sprinting"). | |
uuid(SUPER_SPRINTING). | |
amount(2). | |
operation(Operation.ADD_PERCENTAGE).build()); | |
list.set(i, attribute.withModifiers(modifiers)); | |
} | |
} | |
event.getPacket().getAttributeCollectionModifier().write(0, list); | |
} | |
} | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment