Перейти к содержанию
Если у вас техническая проблема с модом или их сборкой, то создавайте тему в разделе "Технические проблемы".
В разделе "Моды" запрещено набирать игроков на свой сервер и искать друзей для игры.

Как сделать пузырёк после употребления?


AlmaFox

Рекомендуемые сообщения

В теме 6 сообщений

Здравствуйте, я новичок в разработке модов! Скажите пожалуйста, как сделать так чтобы после того как я выпил для примера - бутылку яблочного сока (создание) чтобы после того как я его выпил, пузырёк не исчезал вместе с соком а сок исчез, а пузырёк остался! Как?

Ссылка на комментарий
Поделиться на другие сайты

Сделать шот по типу когда ты выпиваешь сок, то спавнилась бутылка под тобой (Я в этом вообще не шарю но как-то так)

Ссылка на комментарий
Поделиться на другие сайты

Только что, I'm hate world сказал:

Сделать шот по типу когда ты выпиваешь сок, то спавнилась бутылка под тобой (Я в этом вообще не шарю но как-то так)

Ну типо знаешь, как в ванильном майнкрафте - выпиваешь пузырёк с водой и получается обычный пустой пузырёк! Тоже самое я хочу сделать и в моде, ато выпивается пузырёк сока вместе с бутылкой, както не логично!

Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, FoxGamesMC сказал:

Ну типо знаешь, как в ванильном майнкрафте - выпиваешь пузырёк с водой и получается обычный пустой пузырёк! Тоже самое я хочу сделать и в моде, ато выпивается пузырёк сока вместе с бутылкой, както не логично!

опа, а что за мод такой? скинешь в лс мне этот мод (можно бета-версию)

Ссылка на комментарий
Поделиться на другие сайты

  • 5 лет спустя...
В 04.09.2020 в 22:14, AlmaFox сказал:

Здравствуйте, я новичок в разработке модов! Скажите пожалуйста, как сделать так чтобы после того как я выпил для примера - бутылку яблочного сока (создание) чтобы после того как я его выпил, пузырёк не исчезал вместе с соком а сок исчез, а пузырёк остался! Как?

Скинь пожалуйста как ты регистрируешь свои предметы. 
Если ты изначально регистрируешь предмет как зелье, аля что типа этого:
 

public class HardModeItems {

    public static final RegistryEntry<Potion> TEST_POTION = registerPotion("test_potion",
        new Potion("test_potion", new StatusEffectInstance(StatusEffects.INSTANT_DAMAGE, 1, 1))); // тут может быть любой эффект

    private static RegistryEntry<Potion> registerPotion(String name, Potion potion) {
        return Registry.registerReference(Registries.POTION, Identifier.of(HardMode.MOD_ID, name), potion); // HardMode.MOD_ID это id твоего мода
    }

    public static void registerHardModeItems() {
        HardMode.LOGGER.info("РЕГИСТРАЦИЯ ПРЕДМЕТОВ");

        ItemGroupEvents.modifyEntriesEvent(ItemGroups.FOOD_AND_DRINK).register(entries -> {
            entries.add(
                    PotionContentsComponent.createStack(
                            Items.POTION,
                            HardModeItems.TEST_POTION
                    )
            );
        });
    }
}

то у тебя уже сразу же после выпивания будет оставаться бутылочка.


Если же ты регистрируешь сок как обычный предмет:

public class HardModeFood {

    public record FoodEffect(
            StatusEffectInstance effect,
            float chance
    ) {}


    public static final Item TEST_DRINK =
            registerDrink(
                    "test_drink",
                    new FoodEffect(new StatusEffectInstance(StatusEffects.STRENGTH, 600), 0.5F), // последнее число это шанс на срабатывание эфекта
                    new FoodEffect(new StatusEffectInstance(StatusEffects.SPEED, 600), 0.2F)     // 1.0F = 100% , 0.5F = 50%
            );


    private static Item registerDrink(
            String name,
            FoodEffect... effects
    ) {
        Item.Settings settings = new Item.Settings()
                .registryKey(RegistryKey.of(RegistryKeys.ITEM, Identifier.of(HardMode.MOD_ID, name)))
                .useRemainder(Items.GLASS_BOTTLE) // это и отвечает за то какой предмет останется после выпивания
                .maxCount(1)
                .component(DataComponentTypes.CONSUMABLE, ConsumableComponents.DRINK);

        if (effects.length > 0) {
            var builder = ConsumableComponents.drink();

            for (FoodEffect effect : effects) {
                builder.consumeEffect(
                        new ApplyEffectsConsumeEffect(
                                effect.effect(),
                                effect.chance()
                        )
                );
            }

            settings.component(
                    DataComponentTypes.CONSUMABLE, // да тут немного повторений кода, но мне лень было, решил на всякий не убирать
                    builder.build()
            );
        }

        return Registry.register(
                Registries.ITEM,
                Identifier.of(HardMode.MOD_ID, name),
                new Item(settings)
        );
    }

    public static void registerHardModeFood() {
        ItemGroupEvents.modifyEntriesEvent(ItemGroups.FOOD_AND_DRINK).register(entries -> {
            entries.add(TEST_DRINK);
        });

    }


}
public class HardMode implements ModInitializer { 




    public static final String MOD_ID = "твой_id";
    public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);



    @Override
    public void onInitialize() {
       HardModeFood.registerHardModeFood();
    }

}

 

то можно указать .useRemainder(Items.GLASS_BOTTLE) и это будет возвращать бутылочку воды после выпивания

версия на которой делал я 1 21 11 фабрик, на других скорее всего будет отличаться но там в принципе не должно быть сложно исправить))) сорян за непонятное объяснение)
 

 

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, Zarist сказал:

Скинь пожалуйста как ты регистрируешь свои предметы. 
Если ты изначально регистрируешь предмет как зелье, аля что типа этого:
 

public class HardModeItems {

    public static final RegistryEntry<Potion> TEST_POTION = registerPotion("test_potion",
        new Potion("test_potion", new StatusEffectInstance(StatusEffects.INSTANT_DAMAGE, 1, 1))); // тут может быть любой эффект

    private static RegistryEntry<Potion> registerPotion(String name, Potion potion) {
        return Registry.registerReference(Registries.POTION, Identifier.of(HardMode.MOD_ID, name), potion); // HardMode.MOD_ID это id твоего мода
    }

    public static void registerHardModeItems() {
        HardMode.LOGGER.info("РЕГИСТРАЦИЯ ПРЕДМЕТОВ");

        ItemGroupEvents.modifyEntriesEvent(ItemGroups.FOOD_AND_DRINK).register(entries -> {
            entries.add(
                    PotionContentsComponent.createStack(
                            Items.POTION,
                            HardModeItems.TEST_POTION
                    )
            );
        });
    }
}

то у тебя уже сразу же после выпивания будет оставаться бутылочка.


Если же ты регистрируешь сок как обычный предмет:

public class HardModeFood {

    public record FoodEffect(
            StatusEffectInstance effect,
            float chance
    ) {}


    public static final Item TEST_DRINK =
            registerDrink(
                    "test_drink",
                    new FoodEffect(new StatusEffectInstance(StatusEffects.STRENGTH, 600), 0.5F), // последнее число это шанс на срабатывание эфекта
                    new FoodEffect(new StatusEffectInstance(StatusEffects.SPEED, 600), 0.2F)     // 1.0F = 100% , 0.5F = 50%
            );


    private static Item registerDrink(
            String name,
            FoodEffect... effects
    ) {
        Item.Settings settings = new Item.Settings()
                .registryKey(RegistryKey.of(RegistryKeys.ITEM, Identifier.of(HardMode.MOD_ID, name)))
                .useRemainder(Items.GLASS_BOTTLE) // это и отвечает за то какой предмет останется после выпивания
                .maxCount(1)
                .component(DataComponentTypes.CONSUMABLE, ConsumableComponents.DRINK);

        if (effects.length > 0) {
            var builder = ConsumableComponents.drink();

            for (FoodEffect effect : effects) {
                builder.consumeEffect(
                        new ApplyEffectsConsumeEffect(
                                effect.effect(),
                                effect.chance()
                        )
                );
            }

            settings.component(
                    DataComponentTypes.CONSUMABLE, // да тут немного повторений кода, но мне лень было, решил на всякий не убирать
                    builder.build()
            );
        }

        return Registry.register(
                Registries.ITEM,
                Identifier.of(HardMode.MOD_ID, name),
                new Item(settings)
        );
    }

    public static void registerHardModeFood() {
        ItemGroupEvents.modifyEntriesEvent(ItemGroups.FOOD_AND_DRINK).register(entries -> {
            entries.add(TEST_DRINK);
        });

    }


}
public class HardMode implements ModInitializer { 




    public static final String MOD_ID = "твой_id";
    public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);



    @Override
    public void onInitialize() {
       HardModeFood.registerHardModeFood();
    }

}

 

то можно указать .useRemainder(Items.GLASS_BOTTLE) и это будет возвращать бутылочку воды после выпивания

версия на которой делал я 1 21 11 фабрик, на других скорее всего будет отличаться но там в принципе не должно быть сложно исправить))) сорян за непонятное объяснение)
 

 

БРАТАН ТЫ ЧЁ УГАРАЕШЬ 6 ЛЕТ ПРОШЛО

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...