157 lines
3.2 KiB
Java
157 lines
3.2 KiB
Java
package com.rsscripting.itemmagnet.managers;
|
|
|
|
import com.rsscripting.itemmagnet.config.ConfigManager;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.block.Block;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
public class RSConversionManager {
|
|
|
|
private static final Map<UUID, PendingConversion>
|
|
pendingConversions =
|
|
new HashMap<>();
|
|
|
|
private static final Map<UUID, PendingTargetAssignment>
|
|
pendingTargetAssignments =
|
|
new HashMap<>();
|
|
|
|
public static boolean containsFilterItem(
|
|
Block block,
|
|
ItemStack item
|
|
) {
|
|
|
|
Map<Integer, ItemStack> filterItems =
|
|
MachineManager.getAllFilterItems(
|
|
block
|
|
);
|
|
|
|
for (ItemStack filterItem
|
|
: filterItems.values()) {
|
|
|
|
if (filterItem == null) {
|
|
continue;
|
|
}
|
|
|
|
if (filterItem.isSimilar(
|
|
item
|
|
)) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| PENDING CONVERSION
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
public static void startPendingConversion(
|
|
Player player,
|
|
Block lodestone
|
|
) {
|
|
|
|
long timeoutMillis =
|
|
ConfigManager.getConversionTimeout()
|
|
* 1000L;
|
|
|
|
pendingConversions.put(
|
|
|
|
player.getUniqueId(),
|
|
|
|
new PendingConversion(
|
|
|
|
lodestone,
|
|
|
|
System.currentTimeMillis()
|
|
+ timeoutMillis
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
public static PendingConversion getPendingConversion(
|
|
Player player
|
|
) {
|
|
|
|
return pendingConversions.get(
|
|
player.getUniqueId()
|
|
);
|
|
|
|
}
|
|
|
|
public static void removePendingConversion(
|
|
Player player
|
|
) {
|
|
|
|
pendingConversions.remove(
|
|
player.getUniqueId()
|
|
);
|
|
|
|
}
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| PENDING TARGET ASSIGNMENT
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
public static void startPendingTargetAssignment(
|
|
Player player,
|
|
Block lodestone
|
|
) {
|
|
|
|
long timeoutMillis =
|
|
ConfigManager.getConversionTimeout()
|
|
* 1000L;
|
|
|
|
pendingTargetAssignments.put(
|
|
|
|
player.getUniqueId(),
|
|
|
|
new PendingTargetAssignment(
|
|
|
|
lodestone,
|
|
|
|
System.currentTimeMillis()
|
|
+ timeoutMillis
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
public static PendingTargetAssignment getPendingTargetAssignment(
|
|
Player player
|
|
) {
|
|
|
|
return pendingTargetAssignments.get(
|
|
player.getUniqueId()
|
|
);
|
|
|
|
}
|
|
|
|
public static void removePendingTargetAssignment(
|
|
Player player
|
|
) {
|
|
|
|
pendingTargetAssignments.remove(
|
|
player.getUniqueId()
|
|
);
|
|
|
|
}
|
|
|
|
} |