Помогите Пару вопросов по созданию плагина.

MaрШутЧик

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
serega100
1. Как выдать игроку предметы?
2. Как вывести надпись в чат при поломке блока(например - эндер сундука)?
3. Как положить предмет игроку в эндер сундук?
 
1)Если только в один слот:
Код:
for(int i=0;i<36;i++){
            if(player.getInventory().getItem(i).getType()==Material.AIR){
                player.getInventory().setItem(i, Material.Бла_Бла_Бла);
                return;
            }
        }
Если во все:
Код:
for(int i=0;i<36;i++){
            if(player.getInventory().getItem(i).getType()==Material.AIR){
                player.getInventory().setItem(i, Material.Бла_Бла_Бла);
            }
        }
2)
Код:
public void onBreakBlock(BlockBreakEvent e){
        if(e.getBlock().getType()==Material.ENDER_CHEST){
            e.getPlayer().sendMessage("Тут message");
        }
    }
3)
Код:
        for(int i=0;i<27;i++){
            if(player.getEnderChest().getItem(i).getType()==Material.AIR){
                player.getEnderChest().setItem(i, Material.Тут_Предмет);
            }
        }
 
1)Если только в один слот:
Код:
for(int i=0;i<36;i++){
            if(player.getInventory().getItem(i).getType()==Material.AIR){
                player.getInventory().setItem(i, Material.Бла_Бла_Бла);
                return;
            }
        }
Если во все:
Код:
for(int i=0;i<36;i++){
            if(player.getInventory().getItem(i).getType()==Material.AIR){
                player.getInventory().setItem(i, Material.Бла_Бла_Бла);
            }
        }
2)
Код:
public void onBreakBlock(BlockBreakEvent e){
        if(e.getBlock().getType()==Material.ENDER_CHEST){
            e.getPlayer().sendMessage("Тут message");
        }
    }
3)
Код:
        for(int i=0;i<27;i++){
            if(player.getEnderChest().getItem(i).getType()==Material.AIR){
                player.getEnderChest().setItem(i, Material.Тут_Предмет);
            }
        }
Ты в 1 и 3 создаёшь бесполезные циклы.Можно выдавать предметы ,не проверяя слоты:

player.getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
 
Ты в 1 и 3 создаёшь бесполезные циклы.Можно выдавать предметы ,не проверяя слоты:

p.getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
Мне так удобнее
Ты в 1 и 3 создаёшь бесполезные циклы.Можно выдавать предметы ,не проверяя слоты:

player.getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
Я этим буду пользоваться, когда нужно будет выдать определенное кол-во предметов
 
А чему равен player?
У меня ничего не работает
Код:
package serega100.GriefIslands;

import java.util.logging.Logger;

import org.bukkit.Material;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class mainClass extends JavaPlugin{
    Logger log = getLogger();
    public void onEnable(){
        log.info("GriferIslands for gameserver was enabled!");
    }
    public void onDisable(){
        log.info("GriferIslands for gameserver was disabled!");
    }
    public void onJoin(PlayerJoinEvent p){
        p.getPlayer().getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
        p.getPlayer().getEnderChest().addItem(new ItemStack(Material.DIAMOND_SWORD,1));
        
    }
    public void onBreakBlock(BlockBreakEvent e){
        if(e.getBlock().getType()==Material.ENDER_CHEST){
            e.getPlayer().sendMessage("Тут message");
        }
    }
}
 
А чему равен player?
У меня ничего не работает
Код:
package serega100.GriefIslands;

import java.util.logging.Logger;

import org.bukkit.Material;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class mainClass extends JavaPlugin{
    Logger log = getLogger();
    public void onEnable(){
        log.info("GriferIslands for gameserver was enabled!");
    }
    public void onDisable(){
        log.info("GriferIslands for gameserver was disabled!");
    }
    public void onJoin(PlayerJoinEvent p){
        p.getPlayer().getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
        p.getPlayer().getEnderChest().addItem(new ItemStack(Material.DIAMOND_SWORD,1));
       
    }
    public void onBreakBlock(BlockBreakEvent e){
        if(e.getBlock().getType()==Material.ENDER_CHEST){
            e.getPlayer().sendMessage("Тут message");
        }
    }
}
player - это сам игрок, его я не стал показывать, как доставать.
 
А чему равен player?
У меня ничего не работает
Код:
package serega100.GriefIslands;

import java.util.logging.Logger;

import org.bukkit.Material;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class mainClass extends JavaPlugin{
    Logger log = getLogger();
    public void onEnable(){
        log.info("GriferIslands for gameserver was enabled!");
    }
    public void onDisable(){
        log.info("GriferIslands for gameserver was disabled!");
    }
    public void onJoin(PlayerJoinEvent p){
        p.getPlayer().getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
        p.getPlayer().getEnderChest().addItem(new ItemStack(Material.DIAMOND_SWORD,1));
       
    }
    public void onBreakBlock(BlockBreakEvent e){
        if(e.getBlock().getType()==Material.ENDER_CHEST){
            e.getPlayer().sendMessage("Тут message");
        }
    }
}
У тебя класс не зарегистрирован как слушатель + нету @EventHandler
И ещё вроде-как на рубаките есть туториал про ивенты и на часто используемые классы как Player.
 
У тебя класс не зарегистрирован как слушатель + нету @EventHandler
И ещё вроде-как на рубаките есть туториал про ивенты и на часто используемые классы как Player.
А еще есть вот эта тема, которую, как видимо я писал для слабаков...
 
Ты в 1 и 3 создаёшь бесполезные циклы.Можно выдавать предметы ,не проверяя слоты:

player.getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
Ты серьёзно? Этим методом ты выдашь игроку эндер сундук.
 
Может кто скажет, чему равен player, а то я в яве особо не секу.
 
Может кто скажет, чему равен player, а то я в яве особо не секу.
Это Bukkit API, player - это экземпляр класса Player,полученный из ивента.
Это Bukkit API, player - это экземпляр класса Player,полученный из ивента.
Player p = e.getPlayer();//написал без среды,может не работать
 
Код:
    public void onJoin(PlayerJoinEvent p){
        p.getPlayer().getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
        p.getPlayer().getEnderChest().addItem(new ItemStack(Material.DIAMOND_SWORD,1));
Player player = p.getPlayer();
      
    }
И p.getplayer будет работать во всём классе?
переменные можно хоть где сохранять,главное знать как.
 
Код:
    public void onJoin(PlayerJoinEvent p){
        p.getPlayer().getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
        p.getPlayer().getEnderChest().addItem(new ItemStack(Material.DIAMOND_SWORD,1));
Player player = p.getPlayer();
     
    }
И p.getplayer будет работать во всём классе?
Нет,тебе в главном классе надо создать переменную player и в методе использовать this.player = e.getPlayer();
 
@EventHandler не помог
Код:
package serega100.GriefIslands;

import java.util.logging.Logger;

import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class mainClass extends JavaPlugin implements Listener{
    Logger log = getLogger();
    public void onEnable(){
        log.info("GriferIslands 2 for gameserver was enabled!");
    }
    public void onDisable(){
        log.info("GriferIslands 2 for gameserver was disabled!");
    }
    @EventHandler
    public void onJoin(PlayerJoinEvent p){
        p.getPlayer().getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
        p.getPlayer().getEnderChest().addItem(new ItemStack(Material.DIAMOND_SWORD,1));
        log.info(p.getPlayer().getName() + "Зашёл на сервер");
    }
    public void onBreakBlock(BlockBreakEvent e){
        if(e.getBlock().getType()==Material.ENDER_CHEST){
            log.info(e.getPlayer().getName() + "сломал эндерсундук");
            e.getPlayer().sendMessage("Тут message");
        }
    }
}

У тебя класс не зарегистрирован
Что значит "Не зарегистрирован????". OnEnable и OnDisable работают .
 
@EventHandler не помог
Код:
package serega100.GriefIslands;

import java.util.logging.Logger;

import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class mainClass extends JavaPlugin implements Listener{
    Logger log = getLogger();
    public void onEnable(){
        log.info("GriferIslands 2 for gameserver was enabled!");
    }
    public void onDisable(){
        log.info("GriferIslands 2 for gameserver was disabled!");
    }
    @EventHandler
    public void onJoin(PlayerJoinEvent p){
        p.getPlayer().getInventory().addItem(new ItemStack(Material.ENDER_CHEST,1));
        p.getPlayer().getEnderChest().addItem(new ItemStack(Material.DIAMOND_SWORD,1));
        log.info(p.getPlayer().getName() + "Зашёл на сервер");
    }
    public void onBreakBlock(BlockBreakEvent e){
        if(e.getBlock().getType()==Material.ENDER_CHEST){
            log.info(e.getPlayer().getName() + "сломал эндерсундук");
            e.getPlayer().sendMessage("Тут message");
        }
    }
}


Что значит "Не зарегистрирован????". OnEnable и OnDisable работают .
Не вырывай без контекста,я написал,что он не зарегистророван как слушатель тебе надо реализовать интерфейс Listener ( implement Listener) - это позволит в классе отлавливать ивенты через @EventHandler
 
"public class mainClass extends JavaPlugin implements Listener"
Вас читать учили?
 
Назад
Верх