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

Версия Minecraft
1.7.10
1,075
22
129
Как правильно создать экземпляр своего класса, чтобы вызвать в нем метод? В другом классе.
Есть метод, который возвращает нбт значение, с аргументом ItemStack itemstack
В другом классе в методе markDirty() (думаю вы уже поняли что просто так итемстак я нигде не возьму), я хочу вызывать метод из первого.
Но во первых, мне надо взять откуда то текущий итем стак (!не новый!)
Во вторых, надо взять экземпляр своего класса, чтобы вызвать метод (он не статический)
Может я что то и напутал в названиях, но пытался изобразить примерно что хочу сделать.
Как это сделать? У меня в этом полный пробел...
Я читал учебники по джаве, но ничего из них мне не помогло... Видимо еще туповат.
 
1,075
22
129
Java:
public void method_name(ItemStack itemstack){       
        itemstack.getTagCompound().setInteger("IntegerName", type.durability);
    }
Мне нужно вызвать этот метод в другом классе, в методе, где нет аргумента ItemStack itemstack.
 
590
25
107
Создай в этом же классе ещё один метод с таким же именем
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);
}
 
590
25
107
Ну ты хочешь вызвать метод, для чего? просто вопрос не особо понятен.
Можно сделать вот так, но надо будет добавить проверку
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
107
А вон чего,

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


Код:
// 10 яблок
ItemStack itemStack = new ItemStack(Items.APPLE, 10);
 
590
25
107
Откуда ты хочешь взять текущий? из рук игрока?

для 1.7
Java:
ItemStack itemStack = ModLoader.getMinecraftInstance().thePlayer.getCurrentEquippedItem();
 
590
25
107
Ну об этом надо было написать сразу. На сервере этот код даст ошибку.
Блин опять тороплюсь, нет же сейчас 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)
{
}
    }
Просто твой вопрос изначально вообще не об этом, а про какие то методы которые нужно вызвать через другой класс да ещё и без параметров.
 
Последнее редактирование:
1,075
22
129
Мне просто надо достать текущий гребаный итемстак... В инвентаре.
Как в методе моем method_name(ItemStack stack)
 
590
25
107
я поправил сообщение, посмотри ещё раз
 
1,075
22
129
Ну об этом надо было написать сразу. На сервере этот код даст ошибку.
Блин опять тороплюсь, нет же сейчас 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
107
оу, это вообще третий вопрос.
GUI на стороне клиента, если что...
ну жди ответов от других.
А в следующий раз пиши сразу что у тебя и чего ты хочешь добиться... а то изначально выбрал не правильную цель, задал не правильные вопросы..
В GUI я тебе не помогу, это было слишком давно.
 
1,075
22
129
У меня просто было несколько путей. Менять нбт через метод в моем итеме, который я вызывал в гуишке, но мне не хватало аргумента итемстак.
И для этого надо было создать экземпляр моего итема, иначе выдало бы ошибку.
Но если сетать нбт в гуи, то оно не будет попросту обновляться, и будет старое
Я не знаю что делать... Иначе мне нбт не нужно изменять
 
590
25
107
Просто мне надо делать такую хрень
Если в мое гуи с единственным слотом помещен мой айтем с нбт меньшим, чем изначальное (1500/2000)
То мне надо добавлять 500 единиц
Но где мне взять итемстак? Чтобы юзать это нбт
Лучше создай новую тему: как получить itemstack из слота GUI, и вот добавь эту речь.
А эту тему лучше грохни
 
Сверху