Advertisement
Guest User

V10TrackerEntry

a guest
Apr 25th, 2012
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.06 KB | None | 0 0
  1. package de.V10lator.V10Name;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.util.Iterator;
  5.  
  6. import net.minecraft.server.Block;
  7. import net.minecraft.server.Entity;
  8. import net.minecraft.server.EntityArrow;
  9. import net.minecraft.server.EntityBoat;
  10. import net.minecraft.server.EntityEgg;
  11. import net.minecraft.server.EntityEnderCrystal;
  12. import net.minecraft.server.EntityEnderDragon;
  13. import net.minecraft.server.EntityEnderPearl;
  14. import net.minecraft.server.EntityEnderSignal;
  15. import net.minecraft.server.EntityExperienceOrb;
  16. import net.minecraft.server.EntityFallingBlock;
  17. import net.minecraft.server.EntityFireball;
  18. import net.minecraft.server.EntityFishingHook;
  19. import net.minecraft.server.EntityHuman;
  20. import net.minecraft.server.EntityItem;
  21. import net.minecraft.server.EntityLiving;
  22. import net.minecraft.server.EntityMinecart;
  23. import net.minecraft.server.EntityPainting;
  24. import net.minecraft.server.EntityPlayer;
  25. import net.minecraft.server.EntityPotion;
  26. import net.minecraft.server.EntitySmallFireball;
  27. import net.minecraft.server.EntitySnowball;
  28. import net.minecraft.server.EntityTNTPrimed;
  29. import net.minecraft.server.EntityThrownExpBottle;
  30. import net.minecraft.server.EntityTrackerEntry;
  31. import net.minecraft.server.IAnimal;
  32. import net.minecraft.server.ItemStack;
  33. import net.minecraft.server.MathHelper;
  34. import net.minecraft.server.MobEffect;
  35. import net.minecraft.server.Packet;
  36. import net.minecraft.server.Packet17EntityLocationAction;
  37. import net.minecraft.server.Packet20NamedEntitySpawn;
  38. import net.minecraft.server.Packet21PickupSpawn;
  39. import net.minecraft.server.Packet23VehicleSpawn;
  40. import net.minecraft.server.Packet24MobSpawn;
  41. import net.minecraft.server.Packet25EntityPainting;
  42. import net.minecraft.server.Packet26AddExpOrb;
  43. import net.minecraft.server.Packet28EntityVelocity;
  44. import net.minecraft.server.Packet29DestroyEntity;
  45. import net.minecraft.server.Packet41MobEffect;
  46. import net.minecraft.server.Packet5EntityEquipment;
  47.  
  48. public class V10TrackerEntry extends EntityTrackerEntry
  49. {
  50.   private final Field f;
  51.   private final V10Name plugin;
  52.  
  53.   public V10TrackerEntry(Entity entity, int i, int j, boolean flag, V10Name plugin)
  54.   {
  55.     super(entity, i, j, flag);
  56.     Field f;
  57.     try
  58.     {
  59.       f = EntityTrackerEntry.class.getDeclaredField("isMoving");
  60.     }
  61.     catch(Exception e)
  62.     {
  63.       f = null;
  64.       e.printStackTrace();
  65.     }
  66.     this.f = f;
  67.     this.f.setAccessible(true);
  68.     this.plugin = plugin;
  69.   }
  70.  
  71.   public void updatePlayer(EntityPlayer entityplayer)
  72.   {
  73.     if(entityplayer != this.tracker)
  74.     {
  75.       double d0 = entityplayer.locX - (double) (this.xLoc / 32);
  76.       double d1 = entityplayer.locZ - (double) (this.zLoc / 32);
  77.  
  78.       if(d0 >= (double) (-this.b) && d0 <= (double) this.b && d1 >= (double) (-this.b) && d1 <= (double) this.b)
  79.       {
  80.         if(!this.trackedPlayers.contains(entityplayer))
  81.         {
  82.           if (tracker instanceof EntityPlayer)
  83.           {
  84.             org.bukkit.entity.Player player = ((EntityPlayer) tracker).getBukkitEntity();
  85.             if(!entityplayer.getBukkitEntity().canSee(player))
  86.             {
  87.               return;
  88.             }
  89.           }
  90.           this.trackedPlayers.add(entityplayer);
  91.           entityplayer.netServerHandler.sendPacket(this.b());
  92.           try
  93.           {
  94.             if(f.getBoolean(this))
  95.               entityplayer.netServerHandler.sendPacket(new Packet28EntityVelocity(this.tracker.id, this.tracker.motX, this.tracker.motY, this.tracker.motZ));
  96.           }
  97.           catch(Exception e)
  98.           {
  99.             e.printStackTrace();
  100.           }
  101.  
  102.           ItemStack[] aitemstack = this.tracker.getEquipment();
  103.  
  104.           if(aitemstack != null)
  105.             for(int i = 0; i < aitemstack.length; ++i)
  106.               entityplayer.netServerHandler.sendPacket(new Packet5EntityEquipment(this.tracker.id, i, aitemstack[i]));
  107.  
  108.           if(this.tracker instanceof EntityHuman)
  109.           {
  110.             EntityHuman entityhuman = (EntityHuman)this.tracker;
  111.  
  112.             if(entityhuman.isSleeping())
  113.               entityplayer.netServerHandler.sendPacket(new Packet17EntityLocationAction(this.tracker, 0, MathHelper.floor(this.tracker.locX), MathHelper.floor(this.tracker.locY), MathHelper.floor(this.tracker.locZ)));
  114.           }
  115.  
  116.           if(this.tracker instanceof EntityLiving)
  117.           {
  118.             EntityLiving entityliving = (EntityLiving) this.tracker;
  119.             Iterator iterator = entityliving.getEffects().iterator();
  120.  
  121.             while(iterator.hasNext())
  122.             {
  123.               MobEffect mobeffect = (MobEffect) iterator.next();
  124.  
  125.               entityplayer.netServerHandler.sendPacket(new Packet41MobEffect(this.tracker.id, mobeffect));
  126.             }
  127.           }
  128.         }
  129.       }
  130.       else if(this.trackedPlayers.contains(entityplayer))
  131.       {
  132.         this.trackedPlayers.remove(entityplayer);
  133.         entityplayer.netServerHandler.sendPacket(new Packet29DestroyEntity(this.tracker.id));
  134.       }
  135.     }
  136.   }
  137.  
  138.   private Packet b()
  139.   {
  140.     if(this.tracker.dead)
  141.       System.out.println("Fetching addPacket for removed entity: " + this.tracker.getBukkitEntity().toString());
  142.  
  143.     if(this.tracker instanceof EntityItem)
  144.     {
  145.       EntityItem entityitem = (EntityItem) this.tracker;
  146.       Packet21PickupSpawn packet21pickupspawn = new Packet21PickupSpawn(entityitem);
  147.  
  148.       entityitem.locX = (double) packet21pickupspawn.b / 32.0D;
  149.       entityitem.locY = (double) packet21pickupspawn.c / 32.0D;
  150.       entityitem.locZ = (double) packet21pickupspawn.d / 32.0D;
  151.       return packet21pickupspawn;
  152.     }
  153.     if(this.tracker instanceof EntityPlayer)
  154.     {
  155.       EntityPlayer ep = (EntityPlayer)this.tracker;
  156.       Packet20NamedEntitySpawn packet20 = new Packet20NamedEntitySpawn(ep);
  157.       if(plugin.changedNames.containsKey(ep.name))
  158.         packet20.b = plugin.changedNames.get(ep.name);
  159.       return packet20;
  160.     }
  161.     if(this.tracker instanceof EntityPlayer)
  162.       return new Packet20NamedEntitySpawn((EntityHuman) this.tracker);
  163.     if(this.tracker instanceof EntityMinecart)
  164.     {
  165.       EntityMinecart entityminecart = (EntityMinecart) this.tracker;
  166.  
  167.       if(entityminecart.type == 0)
  168.         return new Packet23VehicleSpawn(this.tracker, 10);
  169.  
  170.       if(entityminecart.type == 1)
  171.         return new Packet23VehicleSpawn(this.tracker, 11);
  172.  
  173.       if(entityminecart.type == 2)
  174.         return new Packet23VehicleSpawn(this.tracker, 12);
  175.     }
  176.  
  177.     if(this.tracker instanceof EntityBoat)
  178.       return new Packet23VehicleSpawn(this.tracker, 1);
  179.     if(this.tracker instanceof IAnimal)
  180.       return new Packet24MobSpawn((EntityLiving) this.tracker);
  181.     if(this.tracker instanceof EntityEnderDragon)
  182.       return new Packet24MobSpawn((EntityLiving) this.tracker);
  183.     if(this.tracker instanceof EntityFishingHook)
  184.       return new Packet23VehicleSpawn(this.tracker, 90);
  185.     if(this.tracker instanceof EntityArrow)
  186.     {
  187.       Entity entity = ((EntityArrow) this.tracker).shooter;
  188.  
  189.       return new Packet23VehicleSpawn(this.tracker, 60, entity != null ? entity.id : this.tracker.id);
  190.     }
  191.     if(this.tracker instanceof EntitySnowball)
  192.       return new Packet23VehicleSpawn(this.tracker, 61);
  193.     if(this.tracker instanceof EntityPotion)
  194.       return new Packet23VehicleSpawn(this.tracker, 73, ((EntityPotion) this.tracker).getPotionValue());
  195.     if(this.tracker instanceof EntityThrownExpBottle)
  196.       return new Packet23VehicleSpawn(this.tracker, 75);
  197.     if (this.tracker instanceof EntityEnderPearl)
  198.       return new Packet23VehicleSpawn(this.tracker, 65);
  199.     if(this.tracker instanceof EntityEnderSignal)
  200.       return new Packet23VehicleSpawn(this.tracker, 72);
  201.    
  202.     Packet23VehicleSpawn packet23vehiclespawn = null;
  203.  
  204.     if(this.tracker instanceof EntitySmallFireball)
  205.     {
  206.       EntitySmallFireball entitysmallfireball = (EntitySmallFireball)this.tracker;
  207.  
  208.       if(entitysmallfireball.shooter != null)
  209.         packet23vehiclespawn = new Packet23VehicleSpawn(this.tracker, 64, entitysmallfireball.shooter.id);
  210.       else
  211.         packet23vehiclespawn = new Packet23VehicleSpawn(this.tracker, 64, 0);
  212.  
  213.       packet23vehiclespawn.e = (int)(entitysmallfireball.dirX * 8000.0D);
  214.       packet23vehiclespawn.f = (int)(entitysmallfireball.dirY * 8000.0D);
  215.       packet23vehiclespawn.g = (int)(entitysmallfireball.dirZ * 8000.0D);
  216.     }
  217.     else if(this.tracker instanceof EntityFireball)
  218.     {
  219.       EntityFireball entityfireball = (EntityFireball) this.tracker;
  220.  
  221.       if(entityfireball.shooter != null)
  222.         packet23vehiclespawn = new Packet23VehicleSpawn(this.tracker, 63, ((EntityFireball) this.tracker).shooter.id);
  223.       else
  224.         packet23vehiclespawn = new Packet23VehicleSpawn(this.tracker, 63, 0);
  225.  
  226.       packet23vehiclespawn.e = (int)(entityfireball.dirX * 8000.0D);
  227.       packet23vehiclespawn.f = (int)(entityfireball.dirY * 8000.0D);
  228.       packet23vehiclespawn.g = (int)(entityfireball.dirZ * 8000.0D);
  229.     }
  230.     else if(this.tracker instanceof EntityEgg)
  231.       packet23vehiclespawn = new Packet23VehicleSpawn(this.tracker, 62);
  232.     if(this.tracker instanceof EntityTNTPrimed)
  233.       packet23vehiclespawn = new Packet23VehicleSpawn(this.tracker, 50);
  234.     if(this.tracker instanceof EntityEnderCrystal)
  235.       packet23vehiclespawn = new Packet23VehicleSpawn(this.tracker, 51);
  236.     if(packet23vehiclespawn != null)
  237.       return packet23vehiclespawn;
  238.     if(this.tracker instanceof EntityFallingBlock)
  239.     {
  240.       EntityFallingBlock entityfallingblock = (EntityFallingBlock)this.tracker;
  241.  
  242.       if(entityfallingblock.id == Block.SAND.id)
  243.         return new Packet23VehicleSpawn(this.tracker, 70);
  244.       if(entityfallingblock.id == Block.GRAVEL.id)
  245.         return new Packet23VehicleSpawn(this.tracker, 71);
  246.       if(entityfallingblock.id == Block.DRAGON_EGG.id)
  247.         return new Packet23VehicleSpawn(this.tracker, 74);
  248.     }
  249.    
  250.     if(this.tracker instanceof EntityPainting)
  251.       return new Packet25EntityPainting((EntityPainting) this.tracker);
  252.     if(this.tracker instanceof EntityExperienceOrb)
  253.       return new Packet26AddExpOrb((EntityExperienceOrb) this.tracker);
  254.     throw new IllegalArgumentException("Don\'t know how to add " + this.tracker.getClass() + "!");
  255.   }
  256. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement