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

Версия Minecraft
1.7.10
1,173
28
168
Как правильно создать экземпляр своего класса, чтобы вызвать в нем метод? В другом классе.
Есть метод, который возвращает нбт значение, с аргументом ItemStack itemstack
В другом классе в методе markDirty() (думаю вы уже поняли что просто так итемстак я нигде не возьму), я хочу вызывать метод из первого.
Но во первых, мне надо взять откуда то текущий итем стак (!не новый!)
Во вторых, надо взять экземпляр своего класса, чтобы вызвать метод (он не статический)
Может я что то и напутал в названиях, но пытался изобразить примерно что хочу сделать.
Как это сделать? У меня в этом полный пробел...
Я читал учебники по джаве, но ничего из них мне не помогло... Видимо еще туповат.
 
1,038
57
229
Создай в этом же классе ещё один метод с таким же именем
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);
}
 
1,038
57
229
Ну ты хочешь вызвать метод, для чего? просто вопрос не особо понятен.
Можно сделать вот так, но надо будет добавить проверку
Java:
public void method_name(){     
    this.method_name(null);
}

public void method_name(ItemStack itemstack){     
    if(itemstack != null)
        itemstack.getTagCompound().setInteger("IntegerName", type.durability);
}
Но тогда на кой черт его вообще вызывать?
 
1,038
57
229
А вон чего,
53501edc80.jpg

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


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

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