Pickup notification

This commit is contained in:
Christian committed 2012-08-19 00:26:55 -04:00
1 parent ce276375b2
commit a1385f4797
7 files changed
+71 -1

No files matched your search

@@ -13,7 +13,10 @@
*/
package cpw.mods.fml.common;
import net.minecraft.src.EntityItem;
import net.minecraft.src.EntityPlayer;
public interface IPickupNotifier
{
void notifyPickup(Object... pickupData);
void notifyPickup(EntityItem item, EntityPlayer player);
}
@@ -80,4 +80,6 @@ public interface BaseModProxy
public abstract void receiveCustomPacket(Packet250CustomPayload packet);
public abstract void receiveChatPacket(String text);
public abstract void onItemPickup(EntityPlayer player, ItemStack item);
}
@@ -22,6 +22,7 @@ import net.minecraft.src.BaseMod;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.ICraftingHandler;
import cpw.mods.fml.common.IFuelHandler;
import cpw.mods.fml.common.IPickupNotifier;
import cpw.mods.fml.common.IWorldGenerator;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.TickType;
@@ -137,4 +138,9 @@ public class ModLoaderHelper
{
return new ModLoaderConnectionHandler(mod);
}
public static IPickupNotifier buildPickupHelper(BaseModProxy mod)
{
return new ModLoaderPickupNotifier(mod);
}
}
@@ -505,6 +505,7 @@ public class ModLoaderModContainer implements ModContainer
GameRegistry.registerWorldGenerator(ModLoaderHelper.buildWorldGenHelper(mod));
GameRegistry.registerFuelHandler(ModLoaderHelper.buildFuelHelper(mod));
GameRegistry.registerCraftingHandler(ModLoaderHelper.buildCraftingHelper(mod));
GameRegistry.registerPickupHandler(ModLoaderHelper.buildPickupHelper(mod));
NetworkRegistry.instance().registerConnectionHandler(ModLoaderHelper.buildConnectionHelper(mod));
}
catch (Exception e)
@@ -0,0 +1,23 @@
package cpw.mods.fml.common.modloader;
import net.minecraft.src.EntityItem;
import net.minecraft.src.EntityPlayer;
import cpw.mods.fml.common.IPickupNotifier;
public class ModLoaderPickupNotifier implements IPickupNotifier
{
private BaseModProxy mod;
public ModLoaderPickupNotifier(BaseModProxy mod)
{
this.mod = mod;
}
@Override
public void notifyPickup(EntityItem item, EntityPlayer player)
{
mod.onItemPickup(player, item.field_70294_a);
}
}
@@ -7,6 +7,7 @@ import java.util.logging.Level;
import net.minecraft.src.BiomeGenBase;
import net.minecraft.src.CraftingManager;
import net.minecraft.src.EntityItem;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.FurnaceRecipes;
import net.minecraft.src.IChunkProvider;
@@ -27,6 +28,7 @@ import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.ICraftingHandler;
import cpw.mods.fml.common.IDispenseHandler;
import cpw.mods.fml.common.IFuelHandler;
import cpw.mods.fml.common.IPickupNotifier;
import cpw.mods.fml.common.IWorldGenerator;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.LoaderException;
@@ -42,6 +44,7 @@ public class GameRegistry
private static List<IFuelHandler> fuelHandlers = Lists.newArrayList();
private static List<ICraftingHandler> craftingHandlers = Lists.newArrayList();
private static List<IDispenseHandler> dispenserHandlers = Lists.newArrayList();
private static List<IPickupNotifier> pickupHandlers = Lists.newArrayList();
/**
* Register a world generator - something that inserts new block types into the world
@@ -244,4 +247,16 @@ public class GameRegistry
}
}
public static void registerPickupHandler(IPickupNotifier handler)
{
pickupHandlers.add(handler);
}
public static void onPickupNotification(EntityPlayer player, EntityItem item)
{
for (IPickupNotifier notify : pickupHandlers)
{
notify.notifyPickup(item, player);
}
}
}
@@ -0,0 +1,20 @@
--- ../src-base/common/net/minecraft/src/EntityItem.java
+++ ../src-work/common/net/minecraft/src/EntityItem.java
@@ -1,6 +1,8 @@
package net.minecraft.src;
import java.util.Iterator;
+
+import cpw.mods.fml.common.registry.GameRegistry;
public class EntityItem extends Entity
{
@@ -225,6 +227,8 @@
p_70100_1_.func_71029_a(AchievementList.field_76027_z);
}
+ GameRegistry.onPickupNotification(p_70100_1_, this);
+
this.field_70170_p.func_72956_a(this, "random.pop", 0.2F, ((this.field_70146_Z.nextFloat() - this.field_70146_Z.nextFloat()) * 0.7F + 1.0F) * 2.0F);
p_70100_1_.func_71001_a(this, var2);