Экземпляр своего класса

Сообщения
935
Лучшие ответы
18
Реакции
75
Версия Minecraft
1.7.10
Как правильно создать экземпляр своего класса, чтобы вызвать в нем метод? В другом классе.
Есть метод, который возвращает нбт значение, с аргументом ItemStack itemstack
В другом классе в методе markDirty() (думаю вы уже поняли что просто так итемстак я нигде не возьму), я хочу вызывать метод из первого.
Но во первых, мне надо взять откуда то текущий итем стак (!не новый!)
Во вторых, надо взять экземпляр своего класса, чтобы вызвать метод (он не статический)
Может я что то и напутал в названиях, но пытался изобразить примерно что хочу сделать.
Как это сделать? У меня в этом полный пробел...
Я читал учебники по джаве, но ничего из них мне не помогло... Видимо еще туповат.
 
Сообщения
935
Лучшие ответы
18
Реакции
75
Java:
public void method_name(ItemStack itemstack){       
        itemstack.getTagCompound().setInteger("IntegerName", type.durability);
    }
Мне нужно вызвать этот метод в другом классе, в методе, где нет аргумента ItemStack itemstack.
 
Сообщения
590
Лучшие ответы
25
Реакции
105
Создай в этом же классе ещё один метод с таким же именем
Java:
ItemStack itemStack; //значение для того кто будет вызывать без передачи

//В конструкторе или ещё где
public ClassName()
{
itemStack = ...
//...
}

//...

public void method_name(){      
    this.method_name(this.itemStack);
}

public void method_name(ItemStack itemstack){      
    itemstack.getTagCompound().setInteger("IntegerName", type.durability);
}
 
Сообщения
935
Лучшие ответы
18
Реакции
75
Про конструктор не понял. Зачем еще один itemStack?
 
Сообщения
935
Лучшие ответы
18
Реакции
75
Вот и именно что я не знаю как мне обьявить этот itemStack, ибо полный ноль
 
Сообщения
590
Лучшие ответы
25
Реакции
105
Ну ты хочешь вызвать метод, для чего? просто вопрос не особо понятен.
Можно сделать вот так, но надо будет добавить проверку
Java:
public void method_name(){     
    this.method_name(null);
}

public void method_name(ItemStack itemstack){     
    if(itemstack != null)
        itemstack.getTagCompound().setInteger("IntegerName", type.durability);
}
Но тогда на кой черт его вообще вызывать?
 
Сообщения
590
Лучшие ответы
25
Реакции
105
А вон чего,

ты в блокноте что ли пилишь код?


Код:
// 10 яблок
ItemStack itemStack = new ItemStack(Items.APPLE, 10);
 
Сообщения
935
Лучшие ответы
18
Реакции
75
Мне не надо создавать новый стак, а взять откуда то текущий...
 
Сообщения
590
Лучшие ответы
25
Реакции
105
Откуда ты хочешь взять текущий? из рук игрока?

для 1.7
Java:
ItemStack itemStack = ModLoader.getMinecraftInstance().thePlayer.getCurrentEquippedItem();
 
Сообщения
935
Лучшие ответы
18
Реакции
75
Что такое вообще модлоадер?
Разве юз класса Minecraft не приведет к крашу на сервере?
 
Сообщения
935
Лучшие ответы
18
Реакции
75
Для 1.7 нету гетмайнкрафтинстанс

Это майнкрафт.гетМайнкрафт
 
Сообщения
590
Лучшие ответы
25
Реакции
105
Ну об этом надо было написать сразу. На сервере этот код даст ошибку.
Блин опять тороплюсь, нет же сейчас ModLoader.
Щас ещё поищу
Java:
@SubscribeEvent
public void onPlayerInteraction(PlayerInteractEvent event) {
    if(event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
        EntityPlayer player = event.entityPlayer;
        ItemStack itemStack = player.getHeldItem();
        if( itemStack != null && itemStack.getItem() == Items.milk_bucket) {
            if(!player.capabilities.isCreativeMode) {
                //
            }
        }
    }
}
Ещё там было что-то вроде MinecraftForge.getServer().getPlayers(), нашел

Код:
List<EntityPlayerMP> allPlayers = MinecraftServer.getServer().getConfigurationManager().playerEntityList;
    for (EntityPlayerMP player : allPlayers)
    {
        ItemStack itemStack = player.getHeldItem();
        if( itemStack != null)
{
}
    }
Просто твой вопрос изначально вообще не об этом, а про какие то методы которые нужно вызвать через другой класс да ещё и без параметров.
 
Последнее редактирование:
Сообщения
935
Лучшие ответы
18
Реакции
75
Мне просто надо достать текущий гребаный итемстак... В инвентаре.
Как в методе моем method_name(ItemStack stack)
 
Сообщения
590
Лучшие ответы
25
Реакции
105
я поправил сообщение, посмотри ещё раз
 
Сообщения
935
Лучшие ответы
18
Реакции
75
Ну об этом надо было написать сразу. На сервере этот код даст ошибку.
Блин опять тороплюсь, нет же сейчас ModLoader.
Щас ещё поищу
Java:
@SubscribeEvent
public void onPlayerInteraction(PlayerInteractEvent event) {
    if(event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
        EntityPlayer player = event.entityPlayer;
        ItemStack itemStack = player.getHeldItem();
        if( itemStack != null && itemStack.getItem() == Items.milk_bucket) {
            if(!player.capabilities.isCreativeMode) {
                //
            }
        }
    }
}
Ещё там было что-то вроде MinecraftForge.getServer().getPlayers(), нашел

Код:
List<EntityPlayerMP> allPlayers = MinecraftServer.getServer().getConfigurationManager().playerEntityList;
    for (EntityPlayerMP player : allPlayers)
    {
        ItemStack itemStack = player.getHeldItem();
        if( itemStack != null)
{
}
    }
Просто твой вопрос изначально вообще не об этом, а про какие то методы которые нужно вызвать через другой класс да ещё и без параметров.
Просто мне надо делать такую хрень
Если в мое гуи с единственным слотом помещен мой айтем с нбт меньшим, чем изначальное (1500/2000)
То мне надо добавлять 500 единиц
Но где мне взять итемстак? Чтобы юзать это нбт
 
Сообщения
590
Лучшие ответы
25
Реакции
105
оу, это вообще третий вопрос.
GUI на стороне клиента, если что...
ну жди ответов от других.
А в следующий раз пиши сразу что у тебя и чего ты хочешь добиться... а то изначально выбрал не правильную цель, задал не правильные вопросы..
В GUI я тебе не помогу, это было слишком давно.
 
Сообщения
935
Лучшие ответы
18
Реакции
75
У меня просто было несколько путей. Менять нбт через метод в моем итеме, который я вызывал в гуишке, но мне не хватало аргумента итемстак.
И для этого надо было создать экземпляр моего итема, иначе выдало бы ошибку.
Но если сетать нбт в гуи, то оно не будет попросту обновляться, и будет старое
Я не знаю что делать... Иначе мне нбт не нужно изменять
 
Сообщения
590
Лучшие ответы
25
Реакции
105
Просто мне надо делать такую хрень
Если в мое гуи с единственным слотом помещен мой айтем с нбт меньшим, чем изначальное (1500/2000)
То мне надо добавлять 500 единиц
Но где мне взять итемстак? Чтобы юзать это нбт
Лучше создай новую тему: как получить itemstack из слота GUI, и вот добавь эту речь.
А эту тему лучше грохни
 
Сверху