Spawning fake players

Discussion in 'Plugin Development' started by Dako, Apr 26, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Dako

    How do i spawn a faked player, which is accesibble like a normal player or a basic entity? I know, i will have to use the PlayOutSpawn...packet, but how do i generate a fake player for/from it?
     
  2. Offline

    Serializator

  3. Offline

    Dako

    Serializator Thx, but i forgot to say, that would like to avoid the uasage of an API
     
  4. Offline

    Serializator

    It is possible but you need to do allot. If you want to spawn them and do nothing with it you maybe can use packets.
     
  5. Offline

    LavaisWatery

    I found this online, I don't really remember the poster sorry ;/

    Code:java
    1. import java.lang.reflect.Field;
    2. import java.util.ArrayList;
    3. import java.util.List;
    4. import java.util.Random;
    5.  
    6. import net.minecraft.server.v1_7_R1.DataWatcher;
    7. import net.minecraft.server.v1_7_R1.EntityHuman;
    8. import net.minecraft.server.v1_7_R1.PacketPlayOutRelEntityMove;
    9. import net.minecraft.server.v1_7_R1.PacketPlayOutAnimation;
    10. import net.minecraft.server.v1_7_R1.PacketPlayOutEntity;
    11. import net.minecraft.server.v1_7_R1.PacketPlayOutNamedEntitySpawn;
    12. import net.minecraft.server.v1_7_R1.PacketPlayOutEntityDestroy;
    13. import net.minecraft.server.v1_7_R1.PacketPlayOutEntityTeleport;
    14. import net.minecraft.server.v1_7_R1.PacketPlayOutEntityHeadRotation;
    15. import net.minecraft.server.v1_7_R1.PacketPlayOutEntityMetadata;
    16. import net.minecraft.server.v1_7_R1.PacketPlayOutEntityEquipment;
    17. import net.minecraft.server.v1_7_R1.PacketPlayOutRelEntityMoveLook;
    18. import net.minecraft.util.com.mojang.authlib.GameProfile;
    19.  
    20. import org.bukkit.Bukkit;
    21. import org.bukkit.Color;
    22. import org.bukkit.Location;
    23. import org.bukkit.World;
    24. import org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer;
    25. import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftItemStack;
    26. import org.bukkit.entity.Player;
    27. import org.bukkit.inventory.ItemStack;
    28.  
    29. public class Human {
    30. String name;
    31. World world;
    32. public int id;
    33. Location l;
    34. int itemInHand;
    35.  
    36. private List<Integer> ids = new ArrayList<Integer>();
    37.  
    38. private void setPrivateField(@SuppressWarnings("rawtypes") Class type, Object object, String name, Object value) {
    39. try {
    40. Field f = type.getDeclaredField(name);
    41. f.setAccessible(true);
    42. f.set(object, value);
    43. f.setAccessible(false);
    44. } catch (Exception ex) {
    45. ex.printStackTrace();
    46. }
    47. }
    48.  
    49. public void setPitch(float pitch) {
    50. this.walk(0.0d, 0.0d, 0.0d, l.getYaw(), pitch);
    51. }
    52.  
    53. public void setYaw(float yaw) {
    54. this.walk(0.0d, 0.0d, 0.0d, yaw, l.getPitch());
    55. }
    56.  
    57. public Human(World w, String name, int id, Location l, int itemInHand) {
    58. this.name = name;
    59. this.world = w;
    60. this.id = id;
    61. this.l = l;
    62. this.itemInHand = itemInHand;
    63. DataWatcher d = new DataWatcher(null);
    64. d.a(0, (Object) (byte) 0);
    65. d.a(1, (Object) (short) 0);
    66. d.a(8, (Object) (byte) 0);
    67. PacketPlayOutNamedEntitySpawn spawn = new PacketPlayOutNamedEntitySpawn();
    68. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "a", id);
    69. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "b", new GameProfile("", name));
    70. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "c", ((int) l.getX() * 32));
    71. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "d", ((int) l.getY() * 32));
    72. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "e", ((int) l.getZ() * 32));
    73. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "f", getCompressedAngle(l.getYaw()));
    74. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "g", getCompressedAngle(l.getPitch()));
    75. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "h", itemInHand);
    76. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "i", d);
    77.  
    78. PacketPlayOutEntityTeleport tp = new PacketPlayOutEntityTeleport();
    79. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "a", id);
    80. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "b", ((int) l.getX() * 32));
    81. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "c", ((int) l.getY() * 32));
    82. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "d", ((int) l.getZ() * 32));
    83. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "e", getCompressedAngle(l.getYaw()));
    84. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "f", getCompressedAngle(l.getPitch()));
    85.  
    86. for (Player p : Bukkit.getOnlinePlayers()) {
    87. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(spawn);
    88. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(tp);
    89. }
    90. ids.add(id);
    91. }
    92.  
    93. public Human(EntityHuman h) {
    94. PacketPlayOutNamedEntitySpawn spawn = new PacketPlayOutNamedEntitySpawn(h);
    95. int id = new Random().nextInt(5000 - 1000) + 1000;
    96. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "a", id);
    97. this.id = id;
    98. PacketPlayOutEntityEquipment armor1 = new PacketPlayOutEntityEquipment(id, 1, h.inventory.getArmorContents()[0]);
    99. PacketPlayOutEntityEquipment armor2 = new PacketPlayOutEntityEquipment(id, 2, h.inventory.getArmorContents()[1]);
    100. PacketPlayOutEntityEquipment armor3 = new PacketPlayOutEntityEquipment(id, 3, h.inventory.getArmorContents()[2]);
    101. PacketPlayOutEntityEquipment armor4 = new PacketPlayOutEntityEquipment(id, 4, h.inventory.getArmorContents()[3]);
    102. PacketPlayOutEntityEquipment sword = new PacketPlayOutEntityEquipment(id, 0, h.inventory.getItem(0));
    103. for (Player p : Bukkit.getOnlinePlayers()) {
    104. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(spawn);
    105. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(armor1);
    106. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(armor2);
    107. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(armor3);
    108. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(armor4);
    109. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(sword);
    110. }
    111. }
    112.  
    113. public void teleport(Location loc) {
    114. PacketPlayOutEntityTeleport tp = new PacketPlayOutEntityTeleport();
    115. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "a", id);
    116. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "b", ((int) (loc.getX() * 32)));
    117. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "c", ((int) (loc.getY() * 32)));
    118. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "d", ((int) (loc.getZ() * 32)));
    119. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "e", getCompressedAngle(loc.getYaw()));
    120. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "f", getCompressedAngle(loc.getPitch()));
    121. this.l = loc;
    122. for (Player p : Bukkit.getOnlinePlayers()) {
    123. ((CraftPlayer)p).getHandle().playerConnection.sendPacket(tp);
    124. }
    125. }
    126.  
    127. private byte getCompressedAngle(float value) {
    128. return (byte) ((value * 256.0F) / 360.0F);
    129. }
    130.  
    131. private byte getCompressedAngle2(float value) {
    132. return (byte) ((value * 256.0F) / 360.0F);
    133. }
    134.  
    135. public void remove() {
    136. PacketPlayOutEntityDestroy packet = new PacketPlayOutEntityDestroy(id);
    137. for (Player p : Bukkit.getOnlinePlayers()) {
    138. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet);
    139. }
    140. }
    141.  
    142. public void updateItems(ItemStack hand, ItemStack boots, ItemStack legs, ItemStack chest, ItemStack helmet) {
    143.  
    144. PacketPlayOutEntityEquipment[] ps = new PacketPlayOutEntityEquipment[]{
    145. new PacketPlayOutEntityEquipment(id, 1, CraftItemStack.asNMSCopy(boots)),
    146. new PacketPlayOutEntityEquipment(id, 2, CraftItemStack.asNMSCopy(legs)),
    147. new PacketPlayOutEntityEquipment(id, 3, CraftItemStack.asNMSCopy(chest)),
    148. new PacketPlayOutEntityEquipment(id, 4, CraftItemStack.asNMSCopy(helmet)),
    149. new PacketPlayOutEntityEquipment(id, 0, CraftItemStack.asNMSCopy(hand))
    150. };
    151. for (PacketPlayOutEntityEquipment pack : ps) {
    152. for (Player p : Bukkit.getOnlinePlayers()) {
    153. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(pack);
    154. }
    155. }
    156. }
    157.  
    158. @Deprecated
    159. public void setName(String s) {
    160. DataWatcher d = new DataWatcher(null);
    161. d.a(0, (Object) (byte) 0);
    162. d.a(1, (Object) (short) 0);
    163. d.a(8, (Object) (byte) 0);
    164. d.a(10, (Object) (String) s);
    165. //d.a(11, (Object) (byte) 0);
    166. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, d, true);
    167. for (Player p : Bukkit.getOnlinePlayers()) {
    168. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    169. }
    170. }
    171.  
    172. public void hideForPlayer(Player p) {
    173. DataWatcher d = new DataWatcher(null);
    174. d.a(0, (Object) (byte) 32);
    175. d.a(1, (Object) (short) 0);
    176. d.a(8, (Object) (byte) 0);
    177. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, d, true);
    178. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    179. }
    180.  
    181. public void showForPlayer(Player p) {
    182. DataWatcher d = new DataWatcher(null);
    183. d.a(0, (Object) (byte) 0);
    184. d.a(1, (Object) (short) 0);
    185. d.a(8, (Object) (byte) 0);
    186. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, d, true);
    187. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    188. }
    189.  
    190. public void addPotionColor(Color r) {
    191. int color = r.asBGR();
    192. final DataWatcher dw = new DataWatcher(null);
    193. dw.a(7, Integer.valueOf(color));
    194. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, dw, true);
    195. for (Player p : Bukkit.getOnlinePlayers()) {
    196. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    197. }
    198. }
    199.  
    200. public void addPotionColor(int color) {
    201. final DataWatcher dw = new DataWatcher(null);
    202. dw.a(7, Integer.valueOf(color));
    203. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, dw, true);
    204. for (Player p : Bukkit.getOnlinePlayers()) {
    205. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    206. }
    207. }
    208.  
    209. public void walk(double a, double b, double c) {
    210. walk(a, b, c, l.getYaw(), l.getPitch());
    211. }
    212.  
    213. public void walk(double a, double b, double c, float yaw, float pitch) {
    214. byte x = (byte) a;
    215. byte y = (byte) b;
    216. byte z = (byte) c;
    217. PacketPlayOutRelEntityMoveLook packet = new PacketPlayOutRelEntityMoveLook();
    218. setPrivateField(PacketPlayOutEntity.class, packet, "a", id);
    219. setPrivateField(PacketPlayOutEntity.class, packet, "b", x);
    220. setPrivateField(PacketPlayOutEntity.class, packet, "c", y);
    221. setPrivateField(PacketPlayOutEntity.class, packet, "d", z);
    222. setPrivateField(PacketPlayOutEntity.class, packet, "e", getCompressedAngle(yaw));
    223. setPrivateField(PacketPlayOutEntity.class, packet, "f", getCompressedAngle2(pitch));
    224.  
    225. PacketPlayOutEntityHeadRotation p2 = new PacketPlayOutEntityHeadRotation();
    226. setPrivateField(PacketPlayOutEntityHeadRotation.class, p2, "a", id);
    227. setPrivateField(PacketPlayOutEntityHeadRotation.class, p2, "b", getCompressedAngle(yaw));
    228.  
    229. for (Player p : Bukkit.getOnlinePlayers()) {
    230. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet);
    231. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(p2);
    232. }
    233. l.setPitch(pitch);
    234. l.setYaw(yaw);
    235. l.add(a, b, c);
    236. }
    237.  
    238. public void sendtoplayer(Player who) {
    239. DataWatcher d = new DataWatcher(null);
    240. d.a(0, (Object) (byte) 0);
    241. d.a(1, (Object) (short) 0);
    242. d.a(8, (Object) (byte) 0);
    243. PacketPlayOutNamedEntitySpawn spawn = new PacketPlayOutNamedEntitySpawn();
    244. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "a", id);
    245. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "b", new GameProfile("", name));
    246. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "c", ((int) (l.getX() * 32)));
    247. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "d", ((int) (l.getY() * 32)));
    248. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "e", ((int) (l.getZ() * 32)));
    249. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "f", getCompressedAngle(l.getYaw()));
    250. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "g", getCompressedAngle(l.getPitch()));
    251. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "h", itemInHand);
    252. setPrivateField(PacketPlayOutNamedEntitySpawn.class, spawn, "i", d);
    253.  
    254. PacketPlayOutEntityTeleport tp = new PacketPlayOutEntityTeleport();
    255. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "a", id);
    256. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "b", ((int) (l.getX() * 32)));
    257. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "c", ((int) (l.getY() * 32)));
    258. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "d", ((int) (l.getZ() * 32)));
    259. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "e", getCompressedAngle(l.getYaw()));
    260. setPrivateField(PacketPlayOutEntityTeleport.class, tp, "f", getCompressedAngle(l.getPitch()));
    261.  
    262. ((CraftPlayer) who).getHandle().playerConnection.sendPacket(spawn);
    263. ((CraftPlayer) who).getHandle().playerConnection.sendPacket(tp);
    264. }
    265.  
    266. public void setInvisible() {
    267. DataWatcher d = new DataWatcher(null);
    268. d.a(0, (Object) (byte) 32);
    269. d.a(1, (Object) (short) 0);
    270. d.a(8, (Object) (byte) 0);
    271. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, d, true);
    272. for (Player p : Bukkit.getOnlinePlayers()) {
    273. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    274. }
    275. }
    276.  
    277. public void setCrouched() {
    278. DataWatcher d = new DataWatcher(null);
    279. d.a(0, (Object) (byte) 2);
    280. d.a(1, (Object) (short) 0);
    281. d.a(8, (Object) (byte) 0);
    282. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, d, true);
    283. for (Player p : Bukkit.getOnlinePlayers()) {
    284. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    285. }
    286. }
    287.  
    288. public void reset() {
    289. DataWatcher d = new DataWatcher(null);
    290. d.a(0, (Object) (byte) 0);
    291. d.a(1, (Object) (short) 0);
    292. d.a(8, (Object) (byte) 0);
    293. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, d, true);
    294. for (Player p : Bukkit.getOnlinePlayers()) {
    295. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    296. }
    297. }
    298.  
    299. public void sprint() {
    300. DataWatcher d = new DataWatcher(null);
    301. d.a(0, (Object) (byte) 8);
    302. d.a(1, (Object) (short) 0);
    303. d.a(8, (Object) (byte) 0);
    304. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, d, true);
    305. for (Player p : Bukkit.getOnlinePlayers()) {
    306. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    307. }
    308. }
    309.  
    310. @Deprecated
    311. public void block() {
    312. DataWatcher d = new DataWatcher(null);
    313. d.a(0, (Object) (byte) 16);
    314. d.a(1, (Object) (short) 0);
    315. d.a(6, (Object) (byte) 0);
    316. PacketPlayOutEntityMetadata packet40 = new PacketPlayOutEntityMetadata(id, d, true);
    317. for (Player p : Bukkit.getOnlinePlayers()) {
    318. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet40);
    319. }
    320. }
    321.  
    322. public void damage() {
    323. PacketPlayOutAnimation packet18 = new PacketPlayOutAnimation();
    324. setPrivateField(PacketPlayOutAnimation.class, packet18, "a", id);
    325. setPrivateField(PacketPlayOutAnimation.class, packet18, "b", 2);
    326. for (Player p : Bukkit.getOnlinePlayers()) {
    327. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet18);
    328. }
    329. }
    330.  
    331. public void swingArm() {
    332. PacketPlayOutAnimation packet18 = new PacketPlayOutAnimation();
    333. setPrivateField(PacketPlayOutAnimation.class, packet18, "a", id);
    334. setPrivateField(PacketPlayOutAnimation.class, packet18, "b", 0);
    335. for (Player p : Bukkit.getOnlinePlayers()) {
    336. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet18);
    337. }
    338. }
    339.  
    340. @Deprecated
    341. public void eatInHand() {
    342. PacketPlayOutAnimation packet18 = new PacketPlayOutAnimation();
    343. setPrivateField(PacketPlayOutAnimation.class, packet18, "a", id);
    344. setPrivateField(PacketPlayOutAnimation.class, packet18, "b", 5);
    345. for (Player p : Bukkit.getOnlinePlayers()) {
    346. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet18);
    347. }
    348. }
    349.  
    350. public void sleep() {
    351. PacketPlayOutRelEntityMove packet17 = new PacketPlayOutRelEntityMove();
    352. setPrivateField(PacketPlayOutRelEntityMove.class, packet17, "a", id);
    353. setPrivateField(PacketPlayOutRelEntityMove.class, packet17, "b", (int) getX());
    354. setPrivateField(PacketPlayOutRelEntityMove.class, packet17, "c", (int) getY());
    355. setPrivateField(PacketPlayOutRelEntityMove.class, packet17, "d", (int) getZ());
    356. setPrivateField(PacketPlayOutRelEntityMove.class, packet17, "e", 0);
    357. for (Player p : Bukkit.getOnlinePlayers()) {
    358. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet17);
    359. }
    360. }
    361.  
    362. public double getX() {
    363. return l.getX();
    364. }
    365.  
    366. public double getY() {
    367. return l.getY();
    368. }
    369.  
    370. public double getZ() {
    371. return l.getZ();
    372. }
    373.  
    374. public Location getLocation() {
    375. return l;
    376. }
    377.  
    378. }
     
Thread Status:
Not open for further replies.

Share This Page