package vorquel.mod.similsaxtranstructors;
import net.minecraft.init.Items;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import static vorquel.mod.similsaxtranstructors.Config.showOverlay;
@Mod(modid = SimilsaxTranstructors.MOD_ID, name = "Similsax Transtructors", version = "@MOD_VERSION@")
public class SimilsaxTranstructors {
public static final String MOD_ID = "SimilsaxTranstructors";
public static final ItemDummy itemDummy = new ItemDummy("similsaxTranstructor");
public static final ItemSimilsaxTranstructor itemBasic = new ItemSimilsaxTranstructor("Basic");
public static final ItemSimilsaxTranstructor itemAdvanced = new ItemSimilsaxTranstructor("Advanced");
@SidedProxy(clientSide = "vorquel.mod.similsaxtranstructors.ClientProxy", serverSide = "vorquel.mod.similsaxtranstructors.Proxy")
static Proxy proxy;
static Logger log = LogManager.getLogger(MOD_ID);
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
Config.init(event.getSuggestedConfigurationFile());
ConfigSynchonizer.init();
GameRegistry.register(itemDummy, new ResourceLocation(MOD_ID, "similsaxTranstructor"));
GameRegistry.register(itemBasic, new ResourceLocation(MOD_ID, "similsaxTranstructorBasic"));
GameRegistry.register(itemAdvanced, new ResourceLocation(MOD_ID, "similsaxTranstructorAdvanced"));
proxy.registerItemModel();
}
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
if(showOverlay) proxy.registerBlockOverlay();
MinecraftForge.EVENT_BUS.register(new ConfigSynchonizer());
GameRegistry.addRecipe(new ItemStack(itemBasic),
"x x",
"xox",
" / ",
'x', Items.IRON_INGOT,
'o', Items.ENDER_PEARL,
'/', Items.STICK);
GameRegistry.addRecipe(new ItemStack(itemAdvanced),
"o o",
"oxo",
" x ",
'x', Items.DIAMOND,
'o', Items.ENDER_PEARL);
GameRegistry.addRecipe(new IRecipe() {
@Override
public boolean matches(InventoryCrafting inventory, World worldIn) {
int count = 0;
for(int i = 0; i < inventory.getSizeInventory(); ++i) {
if(inventory.getStackInSlot(i) == null)
continue;
if(inventory.getStackInSlot(i).getItem() != itemDummy)
return false;
++count;
}
return count == 1;
}
@Override
public ItemStack getCraftingResult(InventoryCrafting inventory) {
for(int i = 0; i < inventory.getSizeInventory(); ++i) {
ItemStack stack = inventory.getStackInSlot(i);
if(stack == null || stack.getItem() != itemDummy) continue;
int damage = stack.getItemDamage();
if(damage < 0x1000)
return new ItemStack(itemBasic, 1, damage);
else
return new ItemStack(itemAdvanced, 1, damage - 0x1000);
}
return new ItemStack(itemBasic);
}
@Override
public int getRecipeSize() {
return 1;
}
@Override
public ItemStack getRecipeOutput() {
return null;
}
@Override
public ItemStack[] getRemainingItems(InventoryCrafting p_179532_1_) {
return ForgeHooks.defaultRecipeGetRemainingItems(p_179532_1_);
}
});
}
@Mod.EventHandler
public void serverStarting(FMLServerStartingEvent event) {
log.info("Syncing Server configs");
itemBasic.setUses(Config.basicUses);
itemAdvanced.setUses(Config.advancedUses);
itemBasic.range = Config.basicRange;
itemAdvanced.range = Config.advancedRange;
}
}