321 lines
8.1 KiB
Java
321 lines
8.1 KiB
Java
package com.rsscripting.rswarehouse.variantsdamaged;
|
|
|
|
import com.rsscripting.rswarehouse.variants.dao.DamagedVariantsDAO;
|
|
import com.rsscripting.rswarehouse.menuholder.RSMenuHolder;
|
|
import com.rsscripting.rswarehouse.utils.ItemStackUtils;
|
|
import com.rsscripting.rswarehouse.utils.RSMenuUtils;
|
|
import com.rsscripting.rswarehouse.model.DamagedVariant;
|
|
import net.kyori.adventure.text.Component;
|
|
import net.kyori.adventure.text.format.NamedTextColor;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.Inventory;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
|
|
import java.util.List;
|
|
|
|
public class DamagedVariantsTransactionMenu {
|
|
|
|
public static void open(
|
|
Player player,
|
|
int damagedVariantId,
|
|
int amount
|
|
) {
|
|
|
|
String title;
|
|
|
|
if (amount > 0) {
|
|
|
|
title =
|
|
"Deposit: "
|
|
+ String.format(
|
|
"%,d",
|
|
amount
|
|
);
|
|
|
|
}
|
|
|
|
else if (amount < 0) {
|
|
|
|
title =
|
|
"Withdraw: "
|
|
+ String.format(
|
|
"%,d",
|
|
Math.abs(
|
|
amount
|
|
)
|
|
);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
title =
|
|
"Amount: 0";
|
|
|
|
}
|
|
|
|
Inventory menu =
|
|
Bukkit.createInventory(
|
|
new RSMenuHolder(
|
|
"DAMAGED_ITEM_ACTION"
|
|
),
|
|
27,
|
|
Component.text(
|
|
title
|
|
).color(
|
|
NamedTextColor.BLUE
|
|
)
|
|
);
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| FILLER
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
for (int i = 0; i < menu.getSize(); i++) {
|
|
|
|
menu.setItem(
|
|
i,
|
|
RSMenuUtils.createFillerPane()
|
|
);
|
|
|
|
}
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| CENTER ITEM
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
DamagedVariant damagedVariant =
|
|
DamagedVariantsDAO.getDamagedVariantById(
|
|
damagedVariantId
|
|
);
|
|
|
|
if (damagedVariant != null) {
|
|
|
|
ItemStack item =
|
|
ItemStackUtils.deserialize(
|
|
damagedVariant.serializedItem()
|
|
);
|
|
|
|
if (item != null) {
|
|
|
|
ItemMeta meta =
|
|
item.getItemMeta();
|
|
|
|
if (meta != null) {
|
|
|
|
long playerHas =
|
|
getPlayerItemCount(
|
|
player,
|
|
item
|
|
);
|
|
|
|
meta.lore(
|
|
List.of(
|
|
Component.text(
|
|
"In Stock: "
|
|
+ String.format(
|
|
"%,d",
|
|
damagedVariant.quantity()
|
|
)
|
|
).color(
|
|
NamedTextColor.LIGHT_PURPLE
|
|
),
|
|
|
|
Component.text(
|
|
"Player Has: "
|
|
+ String.format(
|
|
"%,d",
|
|
playerHas
|
|
)
|
|
).color(
|
|
NamedTextColor.GREEN
|
|
),
|
|
|
|
Component.text(
|
|
" "
|
|
),
|
|
|
|
Component.text(
|
|
"Click to complete transaction."
|
|
).color(
|
|
NamedTextColor.YELLOW
|
|
)
|
|
)
|
|
);
|
|
|
|
item.setItemMeta(
|
|
meta
|
|
);
|
|
|
|
}
|
|
|
|
menu.setItem(
|
|
13,
|
|
item
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| WITHDRAW
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
ItemStack subtract64 =
|
|
RSMenuUtils.createMenuItem(
|
|
Material.RED_WOOL,
|
|
"§cSubtract 64"
|
|
);
|
|
|
|
subtract64.setAmount(
|
|
64
|
|
);
|
|
|
|
menu.setItem(
|
|
9,
|
|
subtract64
|
|
);
|
|
|
|
ItemStack subtract16 =
|
|
RSMenuUtils.createMenuItem(
|
|
Material.RED_WOOL,
|
|
"§cSubtract 16"
|
|
);
|
|
|
|
subtract16.setAmount(
|
|
16
|
|
);
|
|
|
|
menu.setItem(
|
|
10,
|
|
subtract16
|
|
);
|
|
|
|
|
|
ItemStack subtract1 =
|
|
RSMenuUtils.createMenuItem(
|
|
Material.RED_WOOL,
|
|
"§cSubtract 1"
|
|
);
|
|
|
|
subtract1.setAmount(
|
|
1
|
|
);
|
|
|
|
menu.setItem(
|
|
11,
|
|
subtract1
|
|
);
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| DEPOSIT
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
ItemStack add1 =
|
|
RSMenuUtils.createMenuItem(
|
|
Material.GREEN_WOOL,
|
|
"§cAdd 1"
|
|
);
|
|
|
|
add1.setAmount(
|
|
1
|
|
);
|
|
|
|
menu.setItem(
|
|
15,
|
|
add1
|
|
);
|
|
|
|
ItemStack add16 =
|
|
RSMenuUtils.createMenuItem(
|
|
Material.GREEN_WOOL,
|
|
"§cAdd 16"
|
|
);
|
|
|
|
add16.setAmount(
|
|
16
|
|
);
|
|
|
|
menu.setItem(
|
|
16,
|
|
add16
|
|
);
|
|
|
|
ItemStack add64 =
|
|
RSMenuUtils.createMenuItem(
|
|
Material.GREEN_WOOL,
|
|
"§cAdd 64"
|
|
);
|
|
|
|
add64.setAmount(
|
|
64
|
|
);
|
|
|
|
menu.setItem(
|
|
17,
|
|
add64
|
|
);
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| BACK
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
menu.setItem(
|
|
4,
|
|
RSMenuUtils.createMenuItem(
|
|
Material.OAK_DOOR,
|
|
"§eReturn to main menu."
|
|
)
|
|
);
|
|
|
|
player.openInventory(
|
|
menu
|
|
);
|
|
|
|
}
|
|
|
|
public static long getPlayerItemCount(
|
|
Player player,
|
|
ItemStack target
|
|
) {
|
|
|
|
long count = 0;
|
|
|
|
for (ItemStack item : player.getInventory().getContents()) {
|
|
|
|
if (item == null) {
|
|
continue;
|
|
}
|
|
|
|
if (
|
|
item.isSimilar(
|
|
target
|
|
)
|
|
) {
|
|
|
|
count += item.getAmount();
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
return count;
|
|
|
|
}
|
|
|
|
} |