/* * The FML Forge Mod Loader suite. Copyright (C) 2012 cpw * * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package net.minecraft.src; import java.util.Random; import net.minecraft.server.MinecraftServer; import cpw.mods.fml.common.ICraftingHandler; import cpw.mods.fml.common.IDispenseHandler; import cpw.mods.fml.common.IPickupNotifier; import cpw.mods.fml.common.IWorldGenerator; public abstract class BaseMod implements IWorldGenerator, IPickupNotifier, IDispenseHandler, ICraftingHandler { // CALLBACK MECHANISMS @Override public void onCrafting(Object... craftingParameters) { takenFromCrafting((EntityPlayer)craftingParameters[0], (ItemStack)craftingParameters[1], (IInventory)craftingParameters[2]); } @Override public void onSmelting(Object... smeltingParameters) { takenFromFurnace((EntityPlayer)smeltingParameters[0], (ItemStack)smeltingParameters[1]); } @Override public boolean dispense(double x, double y, double z, byte xVelocity, byte zVelocity, Object... data) { return dispenseEntity((World)data[0], x, y, z, xVelocity, zVelocity, (ItemStack)data[1]); } @Override public void notifyPickup(Object... pickupData) { EntityItem item=(EntityItem) pickupData[0]; EntityPlayer player=(EntityPlayer) pickupData[1]; onItemPickup(player, item.field_429_a); } @Override public void generate(Random random, int chunkX, int chunkZ, Object... additionalData) { World w=(World) additionalData[0]; IChunkProvider cp=(IChunkProvider) additionalData[1]; if (cp instanceof ChunkProviderGenerate) { generateSurface(w, random, chunkX<<4, chunkZ<<4); } else if (cp instanceof ChunkProviderHell){ generateNether(w, random, chunkX<<4, chunkZ<<4); } } // BASEMOD API /** * Override if you wish to provide a fuel item for the furnace and return the fuel value of the item * @param id * @param metadata * @return */ public int addFuel(int id, int metadata) { return 0; } /** * Override if you wish to perform some action other than just dispensing the item from the dispenser * @param world * @param x * @param y * @param z * @param xVel * @param zVel * @param item * @return */ public boolean dispenseEntity(World world, double x, double y, double z, int xVel, int zVel, ItemStack item) { return false; } /** * Override if you wish to generate Nether (Hell biome) blocks * @param world * @param random * @param chunkX * @param chunkZ */ public void generateNether(World world, Random random, int chunkX, int chunkZ) { } /** * Override if you wish to generate Overworld (not hell or the end) blocks * @param world * @param random * @param chunkX * @param chunkZ */ public void generateSurface(World world, Random random, int chunkX, int chunkZ) { } /** * Return the name of your mod. Defaults to the class name * @return */ public String getName() { return getClass().getSimpleName(); } /** * Get your mod priorities * @return */ public String getPriorities() { return null; } /** * Return the version of your mod * @return */ public abstract String getVersion(); /** * Load your mod */ public abstract void load(); /** * Finish loading your mod */ public void modsLoaded() { } /** * Handle item pickup * @param player * @param item */ public void onItemPickup(EntityPlayer player, ItemStack item) { } /** * Ticked every game tick if you have subscribed to tick events through {@link ModLoader#setInGameHook(BaseMod, boolean, boolean)} * @param minecraftServer the server * @return true to continue receiving ticks */ public boolean onTickInGame(MinecraftServer minecraftServer) { return false; } /** * Not implemented because on the server you don't know who it's from * @param text */ @Deprecated public void receiveChatPacket(String text) { } /** * Not implemented because on the server you don't know who it's from * @param packet */ @Deprecated public void receiveCustomPacket(Packet250CustomPayload packet) { } /** * Called when someone crafts an item from a crafting table * @param player * @param item * @param matrix */ public void takenFromCrafting(EntityPlayer player, ItemStack item, IInventory matrix) { } /** * Called when someone takes a smelted item from a furnace * * @param player * @param item */ public void takenFromFurnace(EntityPlayer player, ItemStack item) { } /** * The identifier string for the mod- used in client<->server negotiation */ @Override public String toString() { return getName()+" "+getVersion(); } // Spare client junk // ------- // void addRenderer(Map, Render> renderers); // void registerAnimation(Minecraft game); // void renderInvBlock(RenderBlocks renderer, Block block, int metadata, int modelID); // boolean renderWorldBlock(RenderBlocks renderer, IBlockAccess world, int x, int y, int z, Block block, int modelID); // boolean onTickInGUI(float tick, Minecraft game, GuiScreen gui); // void keyboardEvent(KeyBinding event); }