Advertisement
broken-arrow

Untitled

Sep 2nd, 2021
698
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.59 KB | None | 0 0
  1. import org.broken.cheststorage.ChestStorage;
  2. import org.broken.cheststorage.Crafting.FilterItems;
  3. import org.broken.cheststorage.cache.ContainerRegistry;
  4. import org.broken.cheststorage.containerholders.InventoryHolder;
  5. import org.broken.cheststorage.containerholders.InventoryHolderDefultchest;
  6. import org.broken.cheststorage.containerholders.InventoryHolderStorageUnit;
  7. import org.broken.cheststorage.util.MathCalations;
  8. import org.broken.cheststorage.util.YamlSettingsContainers;
  9. import org.bukkit.*;
  10. import org.bukkit.block.Barrel;
  11. import org.bukkit.block.Block;
  12. import org.bukkit.block.Chest;
  13. import org.bukkit.block.Hopper;
  14. import org.bukkit.entity.Entity;
  15. import org.bukkit.entity.Item;
  16. import org.bukkit.inventory.Inventory;
  17. import org.bukkit.inventory.ItemStack;
  18. import org.bukkit.scheduler.BukkitRunnable;
  19. import org.bukkit.scheduler.BukkitTask;
  20.  
  21. import java.util.*;
  22. import java.util.concurrent.ConcurrentLinkedDeque;
  23.  
  24. public class TeleportLinkItemsTask extends BukkitRunnable {
  25.  
  26.     private final ChestStorage plugin = ChestStorage.getInstance();
  27.     private BukkitTask task;
  28.     private World world;
  29.     private Inventory hopperInventory;
  30.  
  31.     private Inventory containerInventory;
  32.  
  33.     private List<Location> locations = new ArrayList<>();
  34.     private static final Queue<Location> workloadDeque = new ConcurrentLinkedDeque<>();
  35.     private static final Map<Integer, List<Location>> workloadmap = new HashMap<>();
  36.     private static final Map<Location, TeleportItems> hopersuctionTeleportmap = new HashMap<>();
  37.     private int conter = 0;
  38.     int delayItemPicupTeleport = 0;
  39.  
  40.     public void start() {
  41.         if (task != null && (Bukkit.getScheduler().isCurrentlyRunning(task.getTaskId()) || Bukkit.getScheduler().isQueued(task.getTaskId())))
  42.             Bukkit.getScheduler().cancelTask(task.getTaskId());
  43.         task = runTaskTimer(ChestStorage.getInstance(), 0L, 1L);
  44.     }
  45.  
  46.     public void tick() {
  47.  
  48.     }
  49.  
  50.     public void stop() {
  51.         task.cancel();
  52.     }
  53.  
  54.     private final ContainerRegistry registry = ContainerRegistry.getInstance();
  55.  
  56.     @Override
  57.     public void run() {
  58.         //System.out.println("test ");
  59.         task();
  60.  
  61.     }
  62.  
  63.     private void addvaluesMap() {
  64.         for (Location locations : registry.getContainerlocations()) {
  65.             List<Location> locationsList = new ArrayList<>();
  66.  
  67.  
  68.             if (!locations.getWorld().isChunkLoaded(locations.getBlockX() >> 4, locations.getBlockZ() >> 4))
  69.                 continue;
  70.  
  71.             ContainerRegistry.TypeOfContainer typeOfContainer = registry.getTypeofContainer(locations);
  72.             if (locations != null && Objects.equals(typeOfContainer, ContainerRegistry.TypeOfContainer.LINKEDCONTAINER)) {
  73.                 int secondsForPickupTeleport = YamlSettingsContainers.getSecondsForPickupTeleport(registry.getContainerFileName(locations), registry.getCurrentUpdate(locations));
  74.  
  75.                 if (workloadmap.containsKey(secondsForPickupTeleport * 20) && !workloadmap.get(secondsForPickupTeleport * 20).contains(locations)) {
  76.  
  77.                     locationsList.addAll(workloadmap.get(secondsForPickupTeleport * 20));
  78.  
  79.                 }
  80.                 locationsList.add(locations);
  81.                 workloadmap.put(secondsForPickupTeleport * 20, locationsList);
  82.             }
  83.         }
  84.     }
  85.  
  86.     private void task() {
  87.         delayItemPicupTeleport++;
  88.         addvaluesMap();
  89.  
  90.         if (!workloadmap.isEmpty()) {
  91.             for (Map.Entry<Integer, List<Location>> entitys : workloadmap.entrySet())
  92.                 for (Location location : entitys.getValue())
  93.                     if (!hopersuctionTeleportmap.containsKey(location))
  94.                         hopersuctionTeleportmap.put(location, new TeleportItems(entitys.getKey(), location));
  95.         }
  96.         if (!hopersuctionTeleportmap.isEmpty())
  97.             //System.out.println(hopersuctionTeleportmap);
  98.             hopersuctionTeleportmap.values().forEach(TeleportItems::run);
  99.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement