Помогите Работа с инвентарём

  • Автор темы Автор темы Meferis
  • Дата начала Дата начала

Meferis

Участник
Пользователь
Баллы
31
Имя в Minecraft
Meferis
В чём ошибка в коде? Подозреваю, что такого пространства имён, как player.GetInventory не существует, но, к сожалению, я не смог найти инфу на эту тему. Может здесь кто-нибудь поможет с первым плагином
Код:
package ru.dmitriymx.bukkit.tutorial;

import org.bukkit.plugin.java.JavaPlugin;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.getInventory;

public class DmxFirstPlugin extends JavaPlugin implements Listener {
       public static final Logger _log = Logger.getLogger("Minecraft");
   
   
    @Override
       public void onEnable() {
           _log.info("Anti-Items Start");
           Bukkit.getPluginManager().registerEvents(this, this);
       }
    @EventHandler
        public void getInventory{
        player.removeItem (new ItemStack (169, 64, 0));
        player.addItem (new ItemStack (0, 1, 0));
    }
}
 
  • public void getInventory{
  • player.removeItem (new ItemStack (169, 64, 0));
  • player.addItem (new ItemStack (0, 1, 0));
  • }
Вобещм...
Во первых...
Это доглжно выглядеть так :

Код:
    public void getInventory(Player player){ //Где Player - игрок которому заменяем предмет
        player.removeItem (new ItemStack (169, 64, 0));
        player.addItem (new ItemStack (0, 1, 0));
    }
И @EventHandler там не нужен, а вообще, ты круто замахнулся сразу с инвентарем, отправь для начала при входе сообщение игроку
 
Слегка удивлен, что по этим старым туториалам еще кто-то учиться. Но для начала вам лучше стоит подучить синтаксис явы (или сишки).
 
Отправить сообщение игроку при входе:

Код:
@EventHandler //Регистрация Event'a
public void onJoin(PlayerJoinEvent e){ //Сам Event
Player p = e.getPlayer(); //Определяем игрока, который зашел
p.sendMessage("hellscoder"); //Отправит сообщение
}
 
Вобещм...
Во первых...
Это доглжно выглядеть так :

Код:
    public void getInventory(Player player){ //Где Player - игрок которому заменяем предмет
        player.removeItem (new ItemStack (169, 64, 0));
        player.addItem (new ItemStack (0, 1, 0));
    }
И @EventHandler там не нужен, а вообще, ты круто замахнулся сразу с инвентарем, отправь для начала при входе сообщение игроку

А под Player нужно указывать конкретный ник? Или же это относится ко всем игрокам на сервере?
P.S. Знаю, что прыгнула выше головы. Java знаю на крайне низком уровне и только-только начинаю учить. Просто нужно было до завтра сделать что-то подобное, вот и решилась :D
 
А под Player нужно указывать конкретный ник? Или же это относится ко всем игрокам на сервере?
P.S. Знаю, что прыгнула выше головы. Java знаю на крайне низком уровне и только-только начинаю учить. Просто нужно было до завтра сделать что-то подобное, вот и решилась :D
Твой метод, требует входящих аргументов, в данном случаи это сущность (Player), его можно получить из эвэнта, я уже показывал как, вобщем, в краце, что ты хочешь сделать...

Код:
public void onJoin(PlayerJoinEvent e){
Player p = e.getPlayer();
getInventory(p); //Как раз таки, передаюм аргумент
}
public void getInventory(Player p){ //Ловит входящий аргумент, и делает что-то с ним
p.getInventory().addItem(new ItemStak(Material.STONE));
}
Все это, при входе игрока на сервер, даст камень, далее по аналогии...
 
Твой метод, требует входящих аргументов, в данном случаи это сущность (Player), его можно получить из эвэнта, я уже показывал как, вобщем, в краце, что ты хочешь сделать...

Код:
public void onJoin(PlayerJoinEvent e){
Player p = e.getPlayer();
getInventory(p); //Как раз таки, передаюм аргумент
}
public void getInventory(Player p){ //Ловит входящий аргумент, и делает что-то с ним
p.getInventory().addItem(new ItemStak(Material.STONE));
}
Все это, при входе игрока на сервер, даст камень, далее по аналогии...

Видимо, вы правы. Я совсем глупая раз даже в этом запуталась. Eclipse ругается на ItemStack.
Код:
public void onJoin(PlayerJoinEvent e){
        Player p = e.getPlayer();
        getInventory(p);
        }
        public void getInventory(Player p){
        p.getInventory().removeItem (new ItemStack (4125, 64));
        }
}

Что с этим делать? Мне просто нужно, чтобы игрок никак не мог получить предмет. Ни из креатива, ни скрафтить, никак. А вот что с этим делать, я не знаю D:
 
Видимо, вы правы. Я совсем глупая раз даже в этом запуталась. Eclipse ругается на ItemStack.
Код:
public void onJoin(PlayerJoinEvent e){
        Player p = e.getPlayer();
        getInventory(p);
        }
        public void getInventory(Player p){
        p.getInventory().removeItem (new ItemStack (4125, 64));
        }
}

Что с этим делать? Мне просто нужно, чтобы игрок никак не мог получить предмет. Ни из креатива, ни скрафтить, никак. А вот что с этим делать, я не знаю D:
Вам проще заказать плагин...
 
Я пыталась, но человек взял аванс и ушёл, удалив страницу. Так что вот и пытаюсь теперь...
Интересно кто-же это был...

В общем... Это не один эвэнт, и не 2, можно вообще шедуллером, не думаю, что с такими глубокими знаниями Java вы сможете написать это, вполне возможно, что такой плагин уже есть... Поищите в интернете
 
Если расскажешь, что требуется, напишу по доброте душевной (нет)
 
Это был сарказм. Говори, что вообще нужно сделать.
Есть список запрещённых предметов. Нужно удалять эти предметы, как только они попадают в инвентарь игрока. Причём не важно какого игрока, хоть модера, хоть гл. админа. Вооот....
 
Есть список запрещённых предметов. Нужно удалять эти предметы, как только они попадают в инвентарь игрока. Причём не важно какого игрока, хоть модера, хоть гл. админа. Вооот....
Через телефон писать, словно лечить геморрой народными средствами. Завтра и напишу, когда буду у ПеКа
 
Ну а словами можно описать. Создаем хешмеп Стринг материал. Создаем метод, в котором мы заносим все предметы, которые хотим запретить. Этот метод вызываем в гк, когда плагин включается и с помощью шедулера, как упомянул ледзимазед мы чекаем, есть ли у игрока этот айтемстак. Если есть - удаляем. Весь принцип. Зы. Игроков ищем через луп, а именно всех бакитских игроков.
 
Ну а словами можно описать. Создаем хешмеп Стринг материал. Создаем метод, в котором мы заносим все предметы, которые хотим запретить. Этот метод вызываем в гк, когда плагин включается и с помощью шедулера, как упомянул ледзимазед мы чекаем, есть ли у игрока этот айтемстак. Если есть - удаляем. Весь принцип. Зы. Игроков ищем через луп, а именно всех бакитских игроков.

Да.... Я действительно глупая, помогите пожалуйста, я заплачу)
 
Назад
Верх