Изменить количество выпадаемых семян

Версия Minecraft
1.12.2
API
Forge
37
1
3
Делаю растение по учебнику, получаю семена через getSeed(). Таким образом выпадает 1-3 семемян, как можно изменить это количество, чтобы выпадало одно семя? В базовом классе растения BlockCrops есть метод getDrops(), который и определяет это количество, но я не понимаю, что значит p_getDrops_1/2/3/4/5_ и как можно переопределить этот метод в моём растении.


Получаю семена:
protected Item getSeed()
    {
        return ModItems.LABATIUM_CORN_SEED;
    }

метод getDrops() в классе BlockCrops:
public void getDrops(NonNullList<ItemStack> p_getDrops_1_, IBlockAccess p_getDrops_2_, BlockPos p_getDrops_3_, IBlockState p_getDrops_4_, int p_getDrops_5_) {
        super.getDrops(p_getDrops_1_, p_getDrops_2_, p_getDrops_3_, p_getDrops_4_, 0);
        int age = this.getAge(p_getDrops_4_);
        Random rand = p_getDrops_2_ instanceof World ? ((World)p_getDrops_2_).rand : new Random();
        if (age >= this.getMaxAge()) {
            int k = 3 + p_getDrops_5_;

            for(int i = 0; i < 3 + p_getDrops_5_; ++i) {
                if (rand.nextInt(2 * this.getMaxAge()) <= age) {
                    p_getDrops_1_.add(new ItemStack(this.getSeed(), 1, 0));
                }
            }
        }

    }
 
7,099
324
1,510
Обфусцированные имена параметров, конечно, создают некоторое препеятствие для понимания. Однако смысл параметров может быть понят из сигнатуры метода. Например:
getDrops ничего не возвращает, следовательно, значения итемстаков для дропа возвращается через какой-то мутабельный аргумент. Смотрим на аргументы и видим там единственный аргумент с типом NonNullList<ItemStack>, список стаков, скорее всего, именно через него можно вернуть дроп блока.
Смысл остальных аргументов также можно понять исходя из их типов.
IBlockAccess - это интерфейс мира.
BlockPos - позиция блока.
IBlockState - стейт блока.
int p_getDrops_5_ - хз, че это такое, вангую, что это значение лвл зачарования удачи на инструменте. Можно определить это экспериментально.
выпадает 1-3 семемян
Ищем где в коде фигурирует значение 3 и рассматриваем эти части:
for(int i = 0; i < 3 + p_getDrops_5_; ++i) { if (rand.nextInt(2 * this.getMaxAge()) <= age) { p_getDrops_1_.add(new ItemStack(this.getSeed(), 1, 0)); } }
 
37
1
3
Окей, я переопределил методы, в которых встречался getSeed(), в итоге стало выпадать моё кастомное семя и несколько семян обычной пшеницы, даже тогда, когда я везде выставлял null. Впрочем, это уже не важно, ведь я решил сделать мод хардкорнее и не возвращать семена вовсе.
 
Сверху