- Версия(и) Minecraft
- 1.12+
Доброго времени суток Земляне и Чужие!
Сегодня я расскажу как разблокировать рецепт созданный через код в книге знаний.
Как видите в
Сегодня я расскажу как разблокировать рецепт созданный через код в книге знаний.
Рецепт
Для начала сделаем самый обычный форменный рецепт для получения кольчужных ботинок:
Java:
GameRegistry.addShapedRecipe(new ResourceLocation(Reference.MODID + ":" + "chainmail_boots"), new ResourceLocation(Reference.MODID + ":" + "chainmail_boots"),
new ItemStack(Items.CHAINMAIL_BOOTS),new Object[]{
" ",
"N N",
"ILI",
'N', Items.IRON_NUGGET,
'I', Items.IRON_INGOT,
'L', Items.LEATHER_BOOTS
});
new ResourceLocation
мы указали наш Reference.MODID
, а сделали мы это для того что бы в будущем можно было разблокировать только рецепты с нашим Reference.MODID
.Разблокировка рецептов в книге знаний
Этим способом со мной поделился пользователь @Thunder в беседе, у его способа был лишь один недостаток: Его способ разблокировал рецепты при каждом заходе в мир. Я же доработал его способ, и теперь можно при заходе в мир как это делают многие крупные моды, разблокировать свой рецепты в книге знаний. Давайте же узнаем как это сделать, а делается это очень просто, через событие входа в мир:
Java:
@SubscribeEvent
public void onBookUnlock(PlayerEvent.PlayerLoggedInEvent event) {
NBTTagCompound entityData = event.player.getEntityData(); //НБТ
EntityPlayer player = event.player; //Игрок
List<IRecipe> recipe = new ArrayList<>(); //Списочный массив
String key = "unlockBookRecipesPlusPlus"; //"Ключ"
if (!player.world.isRemote) { //Проверка на сервер
if (!entityData.getBoolean(key)) { //Проверка на "ключ"
for (Map.Entry<ResourceLocation, IRecipe> entry : ForgeRegistries.RECIPES.getEntries()) { //Достаём рецепты
if (entry.getKey().toString().startsWith(Reference.MODID)) { //Проверка на то что у рецептов есть наш modid
recipe.add(entry.getValue()); //Добавляется значение из сохранненого
}
}
entityData.setBoolean(key, true); //Ставим значение нашего ключа на true
player.unlockRecipes(recipe); //Открываем рецепты
}
}
}
Конец!
Всё, теперь при первом заходе в мир у игрока будут автоматически разблокироваться наши рецепты !