// Path: src/main/java/com/dsh105/sparktrail/util/protocol/Packet.java
// public class Packet {
// 
//     private Class packetClass;
//     private Object packetHandle;
//     private Protocol protocol;
//     private Sender sender;
// 
//     public Packet(PacketFactory.PacketType packetType) {
//         this(packetType.getProtocol(), packetType.getSender(), packetType.getId(), packetType.getLegacyId());
//     }
// 
//     public Packet(Protocol protocol, Sender sender, int id, int legacyId) {
// 
//         if (SparkTrailPlugin.isUsingNetty) {
// 
//             this.packetClass = PacketUtil.getPacket(protocol, sender, id);
//             try {
//                 this.packetHandle = this.packetClass.newInstance();
//             } catch (InstantiationException e) {
//                 e.printStackTrace();
//             } catch (IllegalAccessException e) {
//                 e.printStackTrace();
//             }
//         } else {
//             FieldAccessor<Map> mapField = new SafeField<Map>(ReflectionUtil.getNMSClass("Packet"), "a");
//             Map map = mapField.get(null);
//             this.packetClass = (Class) MiscUtil.getKeyAtValue(map, legacyId);
//             try {
//                 this.packetHandle = this.packetClass.newInstance();
//             } catch (InstantiationException e) {
//                 e.printStackTrace();
//             } catch (IllegalAccessException e) {
//                 e.printStackTrace();
//             }
//         }
//     }
// 
//     public Object read(String fieldName) {
//         return ReflectionUtil.getField(getPacketClass(), fieldName, this.getPacketHandle());
//     }
// 
//     public void write(String fieldName, Object value) {
//         ReflectionUtil.setField(getPacketClass(), fieldName, getPacketHandle(), value);
//     }
// 
//     public void send(Player receiver) {
//         PlayerUtil.sendPacket(receiver, getPacketHandle());
//     }
// 
//     public Class getPacketClass() {
//         return this.packetClass;
//     }
// 
//     public Object getPacketHandle() {
//         return this.packetHandle;
//     }
// 
//     public Protocol getProtocol() {
//         return this.protocol;
//     }
// 
//     public Sender getSender() {
//         return this.sender;
//     }
// }
// 
// Path: src/main/java/com/dsh105/sparktrail/util/protocol/PacketFactory.java
// public class PacketFactory {
// 
//     public enum PacketType {
//         ENTITY_SPAWN(Protocol.PLAY, Sender.SERVER, 0x0E, 0x17),
//         ENTITY_LIVING_SPAWN(Protocol.PLAY, Sender.SERVER, 0x0F, 0x18),
//         ENTITY_DESTROY(Protocol.PLAY, Sender.SERVER, 0x13, 0x1D),
//         ENTITY_TELEPORT(Protocol.PLAY, Sender.SERVER, 0x18, 0x22),
//         ENTITY_ATTACH(Protocol.PLAY, Sender.SERVER, 0x1B, 0x27),
//         ENTITY_METADATA(Protocol.PLAY, Sender.SERVER, 0x1C, 0x28),
//         CHAT(Protocol.PLAY, Sender.SERVER, 0x02, 0x03),
//         NAMED_ENTITY_SPAWN(Protocol.PLAY, Sender.SERVER, 0x0C, 0x14),
//         WORLD_PARTICLES(Protocol.PLAY, Sender.SERVER, 0x2A, 0x3F);
// 
//         private Protocol protocol;
//         private Sender sender;
//         private int id;
//         private int legacyId;
// 
//         PacketType(Protocol protocol, Sender sender, int id, int legacyId) {
//             this.protocol = protocol;
//             this.sender = sender;
//             this.id = id;
//             this.legacyId = legacyId;
//         }
// 
//         public Protocol getProtocol() {
//             return protocol;
//         }
// 
//         public Sender getSender() {
//             return sender;
//         }
// 
//         public int getId() {
//             return id;
//         }
// 
//         public int getLegacyId() {
//             return this.legacyId;
//         }
//     }
// 
//     //TODO
// 
// }


import com.dsh105.sparktrail.util.protocol.Packet;
import com.dsh105.sparktrail.util.protocol.PacketFactory;
/*
 * This file is part of SparkTrail 3.
 *
 * SparkTrail 3 is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * SparkTrail 3 is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with SparkTrail 3.  If not, see <http://www.gnu.org/licenses/>.
 */

/*
 * This file is part of EchoPet.
 *
 * EchoPet is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * EchoPet is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with EchoPet.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.dsh105.sparktrail.util.protocol.wrapper;


public class WrapperPacketWorldParticles extends Packet {

    public WrapperPacketWorldParticles() {
// Path: src/main/java/com/dsh105/sparktrail/util/protocol/Packet.java
// public class Packet {
// 
//     private Class packetClass;
//     private Object packetHandle;
//     private Protocol protocol;
//     private Sender sender;
// 
//     public Packet(PacketFactory.PacketType packetType) {
//         this(packetType.getProtocol(), packetType.getSender(), packetType.getId(), packetType.getLegacyId());
//     }
// 
//     public Packet(Protocol protocol, Sender sender, int id, int legacyId) {
// 
//         if (SparkTrailPlugin.isUsingNetty) {
// 
//             this.packetClass = PacketUtil.getPacket(protocol, sender, id);
//             try {
//                 this.packetHandle = this.packetClass.newInstance();
//             } catch (InstantiationException e) {
//                 e.printStackTrace();
//             } catch (IllegalAccessException e) {
//                 e.printStackTrace();
//             }
//         } else {
//             FieldAccessor<Map> mapField = new SafeField<Map>(ReflectionUtil.getNMSClass("Packet"), "a");
//             Map map = mapField.get(null);
//             this.packetClass = (Class) MiscUtil.getKeyAtValue(map, legacyId);
//             try {
//                 this.packetHandle = this.packetClass.newInstance();
//             } catch (InstantiationException e) {
//                 e.printStackTrace();
//             } catch (IllegalAccessException e) {
//                 e.printStackTrace();
//             }
//         }
//     }
// 
//     public Object read(String fieldName) {
//         return ReflectionUtil.getField(getPacketClass(), fieldName, this.getPacketHandle());
//     }
// 
//     public void write(String fieldName, Object value) {
//         ReflectionUtil.setField(getPacketClass(), fieldName, getPacketHandle(), value);
//     }
// 
//     public void send(Player receiver) {
//         PlayerUtil.sendPacket(receiver, getPacketHandle());
//     }
// 
//     public Class getPacketClass() {
//         return this.packetClass;
//     }
// 
//     public Object getPacketHandle() {
//         return this.packetHandle;
//     }
// 
//     public Protocol getProtocol() {
//         return this.protocol;
//     }
// 
//     public Sender getSender() {
//         return this.sender;
//     }
// }
// 
// Path: src/main/java/com/dsh105/sparktrail/util/protocol/PacketFactory.java
// public class PacketFactory {
// 
//     public enum PacketType {
//         ENTITY_SPAWN(Protocol.PLAY, Sender.SERVER, 0x0E, 0x17),
//         ENTITY_LIVING_SPAWN(Protocol.PLAY, Sender.SERVER, 0x0F, 0x18),
//         ENTITY_DESTROY(Protocol.PLAY, Sender.SERVER, 0x13, 0x1D),
//         ENTITY_TELEPORT(Protocol.PLAY, Sender.SERVER, 0x18, 0x22),
//         ENTITY_ATTACH(Protocol.PLAY, Sender.SERVER, 0x1B, 0x27),
//         ENTITY_METADATA(Protocol.PLAY, Sender.SERVER, 0x1C, 0x28),
//         CHAT(Protocol.PLAY, Sender.SERVER, 0x02, 0x03),
//         NAMED_ENTITY_SPAWN(Protocol.PLAY, Sender.SERVER, 0x0C, 0x14),
//         WORLD_PARTICLES(Protocol.PLAY, Sender.SERVER, 0x2A, 0x3F);
// 
//         private Protocol protocol;
//         private Sender sender;
//         private int id;
//         private int legacyId;
// 
//         PacketType(Protocol protocol, Sender sender, int id, int legacyId) {
//             this.protocol = protocol;
//             this.sender = sender;
//             this.id = id;
//             this.legacyId = legacyId;
//         }
// 
//         public Protocol getProtocol() {
//             return protocol;
//         }
// 
//         public Sender getSender() {
//             return sender;
//         }
// 
//         public int getId() {
//             return id;
//         }
// 
//         public int getLegacyId() {
//             return this.legacyId;
//         }
//     }
// 
//     //TODO
// 
// }


// Path: src/main/java/com/dsh105/sparktrail/util/protocol/wrapper/WrapperPacketWorldParticles.java
import com.dsh105.sparktrail.util.protocol.Packet;
import com.dsh105.sparktrail.util.protocol.PacketFactory;

/*
 * This file is part of SparkTrail 3.
 *
 * SparkTrail 3 is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * SparkTrail 3 is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with SparkTrail 3.  If not, see <http://www.gnu.org/licenses/>.
 */

/*
 * This file is part of EchoPet.
 *
 * EchoPet is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * EchoPet is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with EchoPet.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.dsh105.sparktrail.util.protocol.wrapper;


public class WrapperPacketWorldParticles extends Packet {

    public WrapperPacketWorldParticles() {
        super(PacketFactory.PacketType.WORLD_PARTICLES);