- Tham gia
- 14/12/2023
- Bài viết
- 30
Đây là mã nguồn mở để code Giftcode
Mik tự code / đừng ném đá nhé
Mã:
import net.milkbowl.vault.economy.Economy;
import org.black_ixx.playerpoints.PlayerPoints;
import org.black_ixx.playerpoints.PlayerPointsAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class GiftCodePlugin extends JavaPlugin implements CommandExecutor, Listener {
private Map<Player, String> playerGiveCodeMap = new HashMap<>();
private Economy economy;
private PlayerPointsAPI playerPointsAPI;
@Override
public void onEnable() {
getCommand("givecode").setExecutor(this);
getServer().getPluginManager().registerEvents(this, this);
// Thiết lập tích hợp kinh tế
if (Bukkit.getPluginManager().getPlugin("Vault") != null) {
setupEconomy();
} else {
getLogger().severe("Vault không được tìm thấy! Tích hợp kinh tế sẽ không hoạt động.");
}
// Thiết lập tích hợp PlayerPoints
if (Bukkit.getPluginManager().isPluginEnabled("PlayerPoints")) {
playerPointsAPI = Bukkit.getServicesManager().getRegistration(PlayerPoints.class).getProvider();
getLogger().info("PlayerPoints tích hợp thành công.");
} else {
getLogger().severe("PlayerPoints không được tìm thấy! Hệ thống điểm sẽ không hoạt động.");
}
}
private boolean setupEconomy() {
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
if (rsp != null) {
economy = rsp.getProvider();
getLogger().info("Tích hợp kinh tế thành công.");
return true;
} else {
getLogger().severe("Không thể thiết lập tích hợp kinh tế. Vault không được hỗ trợ?");
return false;
}
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) {
Player player = (Player) sender;
playerGiveCodeMap.put(player, ""); // Khởi tạo hoặc xóa mã give code của người chơi
openGiveCodeGUI(player);
} else {
sender.sendMessage("Lệnh này chỉ có thể được thực hiện bởi một người chơi.");
}
return true;
}
private void openGiveCodeGUI(Player player) {
Inventory gui = getServer().createInventory(null, 9, "Nhập Mã Quà");
// Thêm một mục vào GUI để nhập mã give code
ItemStack giveCodeItem = new ItemStack(Material.NAME_TAG);
gui.setItem(3, giveCodeItem);
player.openInventory(gui);
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (event.getView().getTitle().equals("Nhập Mã Quà")) {
event.setCancelled(true);
Player player = (Player) event.getWhoClicked();
ItemStack clickedItem = event.getCurrentItem();
if (clickedItem != null && clickedItem.getType() == Material.NAME_TAG) {
player.closeInventory();
player.sendMessage("Vui lòng nhập mã give code vào chat.");
}
} else if (event.getView().getTitle().equals("Menu Quà Tặng")) {
event.setCancelled(true);
Player player = (Player) event.getWhoClicked();
ItemStack clickedItem = event.getCurrentItem();
if (clickedItem != null && clickedItem.getType() != Material.AIR) {
handleGiftItem(player, clickedItem);
}
}
}
// Xử lý sự kiện chat của người chơi để nhập give code
@EventHandler
public void onPlayerChat(org.bukkit.event.player.AsyncPlayerChatEvent event) {
Player player = event.getPlayer();
String message = event.getMessage();
if (playerGiveCodeMap.containsKey(player) && playerGiveCodeMap.get(player).isEmpty()) {
playerGiveCodeMap.put(player, message);
player.sendMessage("Mã give code được thiết lập thành: " + message);
event.setCancelled(true); // Hủy sự kiện chat để tránh gửi tin nhắn đến máy chủ
openGiftGUI(player);
}
}
private void openGiftGUI(Player player) {
String giveCode = playerGiveCodeMap.get(player);
if ("diamon".equalsIgnoreCase(giveCode)) { // Thay đổi giá trị này thành mã give code thực tế của bạn
Inventory giftGUI = getServer().createInventory(null, 9, "Menu Quà Tặng");
// Thêm các ô trống để đặt quà tặng
for (int i = 0; i < 9; i++) {
ItemStack emptySlot = new ItemStack(Material.AIR);
giftGUI.setItem(i, emptySlot);
}
// Thêm các mục vào GUI cho các quà tặng khác nhau
ItemStack goldItem = createGiftItem(Material.GOLD_INGOT, "Vàng", "Nhấp chuột phải để thêm 10k tiền");
ItemStack diamondItem = createGiftItem(Material.DIAMOND, "Kim Cương", "Nhấp chuột phải để thêm 5 điểm");
ItemStack xpBottleItem = createGiftItem(Material.EXPERIENCE_BOTTLE, "Lọ Kinh Nghiệm", "Nhấp chuột phải để thêm 10k XP");
giftGUI.setItem(0, goldItem);
giftGUI.setItem(4, diamondItem);
giftGUI.setItem(8, xpBottleItem);
player.openInventory(giftGUI);
} else {
player.sendMessage("Mã give code không hợp lệ. Vui lòng thử lại.");
}
}
private ItemStack createGiftItem(Material material, String displayName, String lore) {
ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(displayName);
meta.setLore(Collections.singletonList(lore));
item.setItemMeta(meta);
return item;
}
private void handleGiftItem(Player player, ItemStack giftItem) {
String itemName = giftItem.getItemMeta().getDisplayName();
switch (itemName) {
case "Vàng":
if (economy != null) {
economy.depositPlayer(player, 10000);
player.sendMessage("Bạn đã nhận được 10k tiền!");
} else {
player.sendMessage("Tích hợp kinh tế không khả dụng. Không thể thêm tiền.");
}
break;
case "Kim Cương":
if (playerPointsAPI != null) {
playerPointsAPI.give(player.getUniqueId(), 5); // Thêm 5 điểm khi nhận được Kim Cương
player.sendMessage("Bạn đã nhận được 5 điểm!");
} else {
player.sendMessage("Tích hợp PlayerPoints không khả dụng. Không thể thêm điểm.");
}
break;
case "Lọ Kinh Nghiệm":
player.giveExp(10000);
player.sendMessage("Bạn đã nhận được 10k XP!");
break;
// Các case khác...
default:
break;
}
}
}




