ForgePatch/fml/client/net/minecraft/src/BaseMod.java

428 lines
10 KiB
Java
Raw Normal View History

2012-05-03 23:40:55 +00:00
/*
* 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;
2012-05-03 23:40:55 +00:00
import java.util.Map;
2012-05-03 23:40:55 +00:00
import java.util.Random;
2012-05-04 21:02:12 +00:00
import net.minecraft.client.Minecraft;
import cpw.mods.fml.client.FMLClientHandler;
2012-05-03 23:40:55 +00:00
import cpw.mods.fml.common.IConsoleHandler;
import cpw.mods.fml.common.ICraftingHandler;
import cpw.mods.fml.common.IDispenseHandler;
import cpw.mods.fml.common.INetworkHandler;
import cpw.mods.fml.common.IPickupNotifier;
import cpw.mods.fml.common.IPlayerTracker;
import cpw.mods.fml.common.IWorldGenerator;
2012-05-12 04:00:33 +00:00
import cpw.mods.fml.common.ModContainer.TickType;
2012-05-03 23:40:55 +00:00
2012-06-01 02:09:45 +00:00
public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseMod
2012-05-03 23:40:55 +00:00
{
// CALLBACK MECHANISMS
2012-05-04 21:02:12 +00:00
/**
* @param minecraftInstance
* @return
*/
2012-05-12 04:00:33 +00:00
public final boolean doTickInGame(TickType tick, boolean tickEnd, Object minecraftInstance, Object... data)
2012-05-04 21:02:12 +00:00
{
2012-05-07 04:54:18 +00:00
Minecraft mc = (Minecraft) minecraftInstance;
2012-05-12 04:00:33 +00:00
// World and render ticks
if ((tickEnd && tick==TickType.WORLD) || (tickEnd && tick==TickType.RENDER)) {
2012-05-07 04:54:18 +00:00
return onTickInGame((Float) data[0], mc);
} else if (((tickEnd && tick==TickType.WORLDGUI) || (tickEnd && tick==TickType.GUI))) {
2012-05-12 04:00:33 +00:00
return onTickInGUI((Float) data[0], mc, (GuiScreen)data[1]);
} else if (tick == TickType.WORLDLOADTICK) {
return onTickInGame(0.0f, mc);
} else if (tick == TickType.GUILOADTICK) {
return onTickInGUI(0.0f, mc, mc.field_6313_p);
}
return true;
2012-05-04 21:02:12 +00:00
}
/**
* @param renderers
*/
public final void onRenderHarvest(Map renderers)
{
addRenderer((Map<Class<? extends Entity>,Render>)renderers);
}
/**
*
*/
public final void onRegisterAnimations()
{
registerAnimation(FMLClientHandler.instance().getClient());
}
2012-05-03 23:40:55 +00:00
@Override
public final void onCrafting(Object... craftingParameters)
{
takenFromCrafting((EntityPlayer)craftingParameters[0], (ItemStack)craftingParameters[1], (IInventory)craftingParameters[2]);
2012-05-03 23:40:55 +00:00
}
@Override
public final void onSmelting(Object... smeltingParameters)
{
takenFromFurnace((EntityPlayer)smeltingParameters[0], (ItemStack)smeltingParameters[1]);
2012-05-03 23:40:55 +00:00
}
2012-05-07 04:54:18 +00:00
2012-05-03 23:40:55 +00:00
@Override
public final 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]);
2012-05-03 23:40:55 +00:00
}
@Override
public final boolean onChat(Object... data)
{
2012-05-11 01:30:06 +00:00
receiveChatPacket(((Packet3Chat)data[0]).field_517_a);
return true;
2012-05-03 23:40:55 +00:00
}
2012-05-07 04:54:18 +00:00
2012-05-11 01:30:06 +00:00
@Override
public final void onServerLogin(Object handler) {
serverConnect((NetClientHandler) handler);
}
public final void onServerLogout() {
serverDisconnect();
}
2012-05-03 23:40:55 +00:00
@Override
public final void onPlayerLogin(Object player)
{
onClientLogin((EntityPlayer) player);
}
@Override
public final void onPlayerLogout(Object player)
2012-05-03 23:40:55 +00:00
{
onClientLogout((EntityPlayer)player);
2012-05-03 23:40:55 +00:00
}
2012-05-07 04:54:18 +00:00
2012-05-03 23:40:55 +00:00
@Override
public final void onPlayerChangedDimension(Object player)
2012-05-03 23:40:55 +00:00
{
onClientDimensionChanged((EntityPlayer)player);
2012-05-03 23:40:55 +00:00
}
@Override
public final void onPacket250Packet(Object... data)
{
2012-05-11 01:30:06 +00:00
receiveCustomPacket((Packet250CustomPayload)data[0]);
2012-05-03 23:40:55 +00:00
}
@Override
public final void notifyPickup(Object... pickupData)
{
EntityItem item = (EntityItem) pickupData[0];
EntityPlayer player = (EntityPlayer) pickupData[1];
2012-05-04 21:02:12 +00:00
onItemPickup(player, item.field_801_a);
2012-05-03 23:40:55 +00:00
}
@Override
public final 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);
}
}
2012-05-04 21:02:12 +00:00
/**
* NO-OP on client side
*/
2012-05-03 23:40:55 +00:00
@Override
public final boolean handleCommand(String command, Object... data)
{
2012-05-04 21:02:12 +00:00
return false;
2012-05-03 23:40:55 +00:00
}
// BASEMOD API
/**
* Override if you wish to provide a fuel item for the furnace and return the fuel value of the item
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @param id
* @param metadata
* @return
*/
public int addFuel(int id, int metadata)
{
return 0;
}
2012-05-07 04:54:18 +00:00
public void addRenderer(Map<Class<? extends Entity>, Render> renderers)
{
}
2012-05-07 04:54:18 +00:00
2012-05-03 23:40:55 +00:00
/**
* Override if you wish to perform some action other than just dispensing the item from the dispenser
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @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
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @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
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @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
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @return
*/
public String getName()
{
return getClass().getSimpleName();
}
/**
* Get your mod priorities
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @return
*/
public String getPriorities()
{
return "";
2012-05-03 23:40:55 +00:00
}
/**
* Return the version of your mod
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @return
*/
public abstract String getVersion();
2012-05-07 04:54:18 +00:00
public void keyboardEvent(KeyBinding event)
{
}
2012-05-07 04:54:18 +00:00
/**
* Load your mod
*/
2012-05-03 23:40:55 +00:00
public abstract void load();
/**
* Finish loading your mod
*/
public void modsLoaded()
{
}
/**
* Handle item pickup
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @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)}
2012-05-07 04:54:18 +00:00
*
* @param time the rendering subtick time (0.0-1.0)
* @param minecraftInstance the client
2012-05-03 23:40:55 +00:00
* @return true to continue receiving ticks
*/
2012-05-07 04:54:18 +00:00
public boolean onTickInGame(float time, Minecraft minecraftInstance)
2012-05-03 23:40:55 +00:00
{
return false;
}
public boolean onTickInGUI(float tick, Minecraft game, GuiScreen gui)
{
return false;
}
2012-05-07 04:54:18 +00:00
2012-05-03 23:40:55 +00:00
/**
* Only implemented on the client side
2012-05-03 23:40:55 +00:00
* {@link #onChatMessageReceived(EntityPlayer, Packet3Chat)}
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @param text
*/
public void receiveChatPacket(String text)
{
2012-05-07 04:54:18 +00:00
// TODO
2012-05-03 23:40:55 +00:00
}
/**
* Only called on the client side
2012-05-03 23:40:55 +00:00
* {@link #onPacket250Received(EntityPlayer, Packet250CustomPayload)}
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @param packet
*/
public void receiveCustomPacket(Packet250CustomPayload packet)
{
2012-05-07 04:54:18 +00:00
// TODO
2012-05-03 23:40:55 +00:00
}
2012-05-07 04:54:18 +00:00
public void registerAnimation(Minecraft game)
{
}
2012-05-07 04:54:18 +00:00
public void renderInvBlock(RenderBlocks renderer, Block block, int metadata, int modelID)
{
}
2012-05-07 04:54:18 +00:00
public boolean renderWorldBlock(RenderBlocks renderer, IBlockAccess world, int x, int y, int z, Block block, int modelID)
{
return false;
2012-05-07 04:54:18 +00:00
}
2012-05-07 04:54:18 +00:00
2012-05-11 01:30:06 +00:00
public void serverConnect(NetClientHandler handler) {
}
public void serverDisconnect() {
}
2012-05-03 23:40:55 +00:00
/**
* Called when someone crafts an item from a crafting table
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @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
*
2012-05-03 23:40:55 +00:00
* @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();
}
/**
* Called when a 250 packet is received on a channel registered to this mod
*
2012-05-03 23:40:55 +00:00
* @param source
* @param payload
*/
public void onPacket250Received(EntityPlayer source, Packet250CustomPayload payload)
{
}
/**
* Called when a chat message is received. Return true to stop further processing
2012-05-07 04:54:18 +00:00
*
2012-05-03 23:40:55 +00:00
* @param source
* @param chat
* @return true if you want to consume the message so it is not available for further processing
2012-05-03 23:40:55 +00:00
*/
public boolean onChatMessageReceived(EntityPlayer source, Packet3Chat chat)
{
return false;
}
/**
* Called when a server command is received
* @param command
* @return true if you want to consume the message so it is not available for further processing
*/
public boolean onServerCommand(String command, String sender, Object listener)
{
return false;
}
2012-05-03 23:40:55 +00:00
/**
* Called when a new client logs in.
*
2012-05-07 04:54:18 +00:00
* @param player
2012-05-03 23:40:55 +00:00
*/
public void onClientLogin(EntityPlayer player)
{
}
/**
* Called when a client logs out of the server.
*
* @param player
*/
public void onClientLogout(EntityPlayer player)
{
2012-05-07 04:54:18 +00:00
2012-05-03 23:40:55 +00:00
}
/**
*
* Called when a client changes dimensions on the server.
*
* @param player
*/
public void onClientDimensionChanged(EntityPlayer player)
{
2012-05-07 04:54:18 +00:00
2012-05-03 23:40:55 +00:00
}
2012-05-03 23:40:55 +00:00
}