package eiteam.esteemedinnovation.book;
import eiteam.esteemedinnovation.api.book.*;
import eiteam.esteemedinnovation.commons.init.ContentModule;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import java.util.HashSet;
import java.util.Set;
import static eiteam.esteemedinnovation.commons.EsteemedInnovation.channel;
import static eiteam.esteemedinnovation.commons.OreDictEntries.ORE_COPPER;
import static eiteam.esteemedinnovation.commons.OreDictEntries.ORE_ZINC;
public class BookModule extends ContentModule {
public static Item BOOK;
/**
* A list of all the pieces' base names that have hints. This does not contain ".name" or ".hint". For example,
* the MetalCasting section would be in this list as "section.MetalCasting".
*/
public static final Set<String> ALL_UNLOCALIZED_PIECES_WITH_HINTS = new HashSet<>();
@Override
public void create(Side side) {
channel.registerMessage(BookPieceUnlockedStateChangePacketHandler.class, BookPieceUnlockedStateChangePacket.class, 4, Side.CLIENT);
BOOK = setup(new ItemEsteemedInnovationJournal(), "book");
}
@Override
public void recipes(Side side) {
BookRecipeRegistry.addRecipe("book", new ShapelessOreRecipe(BOOK, Items.BOOK, ORE_COPPER, ORE_ZINC));
}
public static void generateAllHints() {
for (BookSection section : BookPageRegistry.sections.values()) {
addHint(section);
for (BookCategory category : section.getCategories()) {
addHint(category);
for (BookEntry entry : category.getEntries()) {
addHint(entry);
}
}
}
}
private static void addHint(BookPiece bookPiece) {
String hint = bookPiece.getUnlocalizedHint();
if (hint != null) {
hint = hint.replace(".hint", "");
ALL_UNLOCALIZED_PIECES_WITH_HINTS.add(hint);
}
}
@SideOnly(Side.CLIENT)
@Override
public void preInitClient() {
registerModel(BOOK);
}
}