Guest User

AnimalFarming.java

a guest
Jul 10th, 2019
185
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package animalFarming;
  2.  
  3. import net.risingworld.api.Plugin;
  4. import net.risingworld.api.Server;
  5. import net.risingworld.api.World;
  6. import net.risingworld.api.events.EventMethod;
  7. import net.risingworld.api.events.Listener;
  8. import net.risingworld.api.events.player.PlayerNpcInteractionEvent;
  9. import net.risingworld.api.objects.Inventory;
  10. import net.risingworld.api.objects.Item;
  11. import net.risingworld.api.objects.Npc;
  12. import net.risingworld.api.objects.Player;
  13. import net.risingworld.api.utils.Vector3f;
  14.  
  15. public class AnimalFarming extends Plugin implements Listener
  16. {
  17.     World world;
  18.     Server server;
  19.     int[] supportedAnimals = new int[] { 1, 2, 3, 4, 8, 9, 10, 19, 22, 28, 29 };
  20.     int lureItemID = 497;
  21.     int breedItemID = 494;
  22.     int breedItemCost = 64;
  23.  
  24.     @Override
  25.     public void onEnable()
  26.     {
  27.         registerEventListener(this);
  28.         world = getWorld();
  29.         server = getServer();
  30.     }
  31.  
  32.     @EventMethod
  33.     public void onPlayerNpcInteraction(PlayerNpcInteractionEvent event)
  34.     {
  35.         Npc npc = event.getNpc();
  36.         Player player = event.getPlayer();
  37.  
  38.         // Check if the player has an item equipped and if the NPC is an animal
  39.         if (player.getEquippedItem() != null && npc.getType() == Npc.Type.Animal)
  40.         {
  41.             Boolean isAnimalSupported = false;
  42.             int animalID = npc.getTypeID();
  43.             int equippedItemID = player.getEquippedItem().getTypeID();
  44.  
  45.             for (int i = 0; i < supportedAnimals.length; i++)
  46.             {
  47.                 if (supportedAnimals[i] == animalID)
  48.                     isAnimalSupported = true;
  49.             }
  50.  
  51.             if (isAnimalSupported)
  52.             {
  53.                 // Animal Luring Behaviour
  54.                 if (equippedItemID == lureItemID)
  55.                 {
  56.                     npc.setGroupID(-1);
  57.                     npc.moveTo(player.getPosition());
  58.                 }
  59.  
  60.                 // Animal Breeding Behaviour
  61.                 if (equippedItemID == breedItemID)
  62.                 {
  63.                     int breedItemsInInventoryCount = 0;
  64.                     Inventory inventory = player.getInventory();
  65.  
  66.                     // Count amount of breeding items in quickslots
  67.                     for (int i = 0; i < 5; i++)
  68.                     {
  69.                         Item item = inventory.getItem(i, Inventory.SlotType.Quickslot);
  70.                         if (item != null)
  71.                         {
  72.                             if (item.getTypeID() == breedItemID)
  73.                                 breedItemsInInventoryCount += item.getStacksize();
  74.                         }
  75.                     }
  76.  
  77.                     // Count amount of breed items in inventory
  78.                     for (int i = 0; i < 32; i++)
  79.                     {
  80.                         Item item = inventory.getItem(i, Inventory.SlotType.Inventory);
  81.                         if (item != null)
  82.                         {
  83.                             if (item.getTypeID() == breedItemID)
  84.                                 breedItemsInInventoryCount += item.getStacksize();
  85.                         }
  86.                     }
  87.  
  88.                     // Breed new animal and delete breed items from inventory
  89.                     // if player has enough breed items in his inventory to pay for the cost
  90.                     if (breedItemsInInventoryCount >= breedItemCost)
  91.                     {
  92.                         int breedItemCostLeft = breedItemCost;
  93.  
  94.                         // Delete breed items from inventory first
  95.                         for (int i = 0; i < 32; i++)
  96.                         {
  97.                             if (breedItemCostLeft <= 0)
  98.                                 break;
  99.  
  100.                             Item item = inventory.getItem(i, Inventory.SlotType.Inventory);
  101.                             if (item != null)
  102.                             {
  103.                                 if (item.getTypeID() == breedItemID)
  104.                                 {
  105.                                     if (item.getStacksize() > breedItemCostLeft)
  106.                                     {
  107.                                         breedItemCostLeft -= breedItemCostLeft - breedItemCostLeft;
  108.                                         inventory.removeItem(i, Inventory.SlotType.Inventory, breedItemCostLeft);
  109.                                     }
  110.                                     else
  111.                                     {
  112.                                         breedItemCostLeft -= item.getStacksize();
  113.                                         inventory.removeItem(i, Inventory.SlotType.Inventory, item.getStacksize());
  114.                                     }
  115.                                 }
  116.                             }
  117.                         }
  118.  
  119.                         // Delete breed items from quickslots second
  120.                         for (int i = 0; i < 5; i++)
  121.                         {
  122.                             if (breedItemCostLeft <= 0)
  123.                                 break;
  124.  
  125.                             Item item = inventory.getItem(i, Inventory.SlotType.Quickslot);
  126.                             if (item != null)
  127.                             {
  128.                                 if (item.getTypeID() == breedItemID)
  129.                                 {
  130.                                     if (item.getStacksize() > breedItemCostLeft)
  131.                                     {
  132.                                         breedItemCostLeft -= breedItemCostLeft;
  133.                                         inventory.removeItem(i, Inventory.SlotType.Quickslot, breedItemCostLeft);
  134.                                     }
  135.                                     else
  136.                                     {
  137.                                         breedItemCostLeft -= item.getStacksize();
  138.                                         inventory.removeItem(i, Inventory.SlotType.Quickslot, item.getStacksize());
  139.                                     }
  140.                                 }
  141.                             }
  142.                         }
  143.  
  144.                         // Spawn animal if all breed cost has been paid
  145.                         if (breedItemCostLeft <= 0)
  146.                         {
  147.                             Vector3f spawnPosition = new Vector3f(npc.getPosition().x, npc.getPosition().y, npc.getPosition().z);
  148.                             world.spawnNpc((short)npc.getTypeID(), (byte)0, spawnPosition, npc.getRotation());
  149.                         }
  150.                     }
  151.                 }
  152.             }
  153.         }
  154.     }
  155.  
  156.     @Override
  157.     public void onDisable()
  158.     {
  159.  
  160.     }
  161. }
RAW Paste Data