• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
LinhDoraemon

Hướng dẫn BUKKIT CODING FOR NEWBIE || Cách làm đồ ăn theo kiểu Slimefun

Bài viết này có hữu ích không ?


  • Số thành viên bình chọn
    7

LinhDoraemon

THÀNH VIÊN
Tham gia
20/04/2017
Bài viết
11
Mã:
import java.util.ArrayList;
 
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.plugin.java.JavaPlugin;
 
public class StardewFoods extends JavaPlugin implements Listener {
 
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
    }
 
 

    // Tên đồ ăn là FRIED_CHICKEN. Có thể xem danh sách đồ ăn ở đây
    // https://minecraft-heads.com/player/heads/food-drinks
    public static ItemStack FRIED_CHICKEN() {
 
        // Tạo vật phẩm - KHÔNG ĐỔI GÌ
        ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3);
        // Phần đặt tên cho cái này - ĐỔI RA NGHĨA TIẾNG VIỆT
        // Dùng Google dịch. Ví dụ FRIED_CHICKEN = Gà rán
        // Chú ý dùng dấu "§" để ngi màu (Giống với &). Có thể nhấn nhanh dấu § bằng
        // Cách giữ Alt rồi nhấn 21
        SkullMeta mt = (SkullMeta) item.getItemMeta();
        mt.setDisplayName("§6§lGà Rán");
        // Tên skull ở https://minecraft-heads.com/player/heads/food-drinks.
        // Cách lấy tên : Nhấp vào thức ăn muốn làm. Tìm xuống Other: Playername. Copy
        // rồi paste
        // thay từ StarFirePrime
        mt.setOwner("StarFirePrime");
        // Lore : Chỉ thay đổi thông số.
        ArrayList<String> lore = new ArrayList<String>();
        // Dòng đầu trống
        lore.add("");
        // Dòng hồi máu
        lore.add("§a§l✙§6 7"); // 7 là số máu hồi khi ăn. 0.5 tim = 1 nên 7 = Hồi 3.5 tim
        // Dòng hồi thức ăn
        lore.add("§c§l✙§e 4"); // 4 là số thức ăn hồi khi ăn. 0.5 đùi gà = 1 nên 4 = hồi 2 đùi gà
        // Dòng thêm cho đẹp. GIỮ NGUYÊN
        lore.add("§d§l[Đồ ăn thức uống]");
        // Set lore cho item
        mt.setLore(lore);
        // Set item
        item.setItemMeta(mt);
 
        // Dòng kết thúc
        return item;
    }
 
    //Khi dùng lệnh sẽ đưa đồ ăn
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
       
        Player p = (Player) sender;
       
        //Nếu người chơi dùng /garan thì sẽ đưa gà rán cho người chơi
        if(cmd.getName().equalsIgnoreCase("garan")) {
            p.getInventory().addItem(FRIED_CHICKEN());
        }
       
        return true;
    }

    // Kiểm tra khi người chơi phải chuột với đồ ăn thì sẽ ăn - KHÔNG CHỈNH SỬA
    @EventHandler
    public void andoandominhtaonhehihi(PlayerInteractEvent e) {
 
        Player p = e.getPlayer();
 
        if (p.getInventory().getItemInMainHand() == null) {
            return;
        }
        if (p.getInventory().getItemInMainHand().getItemMeta() == null) {
            return;
        }
        if (p.getInventory().getItemInMainHand().getItemMeta().hasLore() == false) {
            return;
        }
        if (p.getInventory().getItemInMainHand().getItemMeta().getLore().contains("§d§l[Đồ ăn thức uống]") == false) {
            return;
        }
 
        String maulore = p.getInventory().getItemInMainHand().getItemMeta().getLore().get(1);
        String foodlore = p.getInventory().getItemInMainHand().getItemMeta().getLore().get(2);
 
        String maui = Character.toString(maulore.charAt(8));
        String foodi = Character.toString(foodlore.charAt(8));
 
        p.sendMessage(maulore);
        p.sendMessage(foodlore);
 
        int mau = Integer.parseInt(maui);
        int food = Integer.parseInt(foodi);
 
        if (20 - p.getHealth() >= mau) {
            p.setHealth(p.getHealth() + mau);
            p.getInventory().getItemInMainHand().setAmount(p.getInventory().getItemInMainHand().getAmount() - 1);
            p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1);
        } else {
            p.setHealth(20);
            p.getInventory().getItemInMainHand().setAmount(p.getInventory().getItemInMainHand().getAmount() - 1);
            p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1);
        }
 
        if (20 - p.getFoodLevel() >= food) {
            p.setFoodLevel(p.getFoodLevel() + food);
        } else {
            p.setFoodLevel(20);
        }
 
    }
 
}

Cái này yêu cầu các bạn dùng 100% não để đọc với ai mới học code ! Học rồi thì 0.5% cũng hiểu !
 
Hay³
Đọc được dòng chữ này thì quên đi vì đây chỉ là để đủ 10 kí tự
 
quăng vào Enum nó hợp lý hơn nhiều, đúng là newbie :j
 
thế cái này là gì?
qARV6eR.png
 
Fixed XD
*****Nội dung được bổ sung thêm*****

Slimeffun cũng dùng cách này đó thôi :(
Slimefun là cái mớ code hỗn độn nhất trong số các plugin thằng này từng gặp
 
Similar content Most view Xem thêm
Back
Top Bottom