Fix up dispenser handling, add in new params for the dispenser: breaks IDispenseHandler, sorry

This commit is contained in:
Christian committed 2012-08-20 21:44:54 -04:00
1 parent 38f4a22bc4
commit 6e6436ee41
8 files changed
+52 -7

No files matched your search

+3 -2
View File
@@ -195,9 +195,10 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseModPr
* @param item
* @return
*/
public boolean dispenseEntity(World world, double x, double y, double z, int xVel, int zVel, ItemStack item)
@Override
public int dispenseEntity(World world, ItemStack item, Random rnd, double x, double y, double z, int xVel, int zVel, double entX, double entY, double entZ)
{
return false;
return -1;
}
/**
@@ -12,6 +12,8 @@
*/
package cpw.mods.fml.common;
import java.util.Random;
import net.minecraft.src.ItemStack;
import net.minecraft.src.World;
@@ -21,13 +23,19 @@ public interface IDispenseHandler
/**
* Return -1 if you don't want to dispense anything. the other values seem to have specific meanings
* to blockdispenser.
*
* @param x
* @param y
* @param z
* @param xVelocity
* @param zVelocity
* @param data
* @param world
* @param item
* @param random
* @param entX
* @param entY
* @param entZ
* @return
*/
int dispense(double x, double y, double z, int xVelocity, int zVelocity, World world, ItemStack item);
int dispense(double x, double y, double z, int xVelocity, int zVelocity, World world, ItemStack item, Random random, double entX, double entY, double entZ);
}
@@ -85,4 +85,7 @@ public interface BaseModProxy
public abstract void receiveChatPacket(String text);
public abstract void onItemPickup(EntityPlayer player, ItemStack item);
public abstract int dispenseEntity(World world, ItemStack item, Random rnd, double x, double y, double z, int xVel, int zVel, double entX,
double entY, double entZ);
}
@@ -0,0 +1,26 @@
package cpw.mods.fml.common.modloader;
import java.util.Random;
import net.minecraft.src.ItemStack;
import net.minecraft.src.World;
import cpw.mods.fml.common.IDispenseHandler;
public class ModLoaderDispenseHelper implements IDispenseHandler
{
private BaseModProxy mod;
public ModLoaderDispenseHelper(BaseModProxy mod)
{
this.mod = mod;
}
@Override
public int dispense(double x, double y, double z, int xVelocity, int zVelocity, World world, ItemStack item, Random random, double entX, double entY,
double entZ)
{
return mod.dispenseEntity(world, item, random, x, y, z, xVelocity, zVelocity, entX, entY, entZ);
}
}
@@ -24,6 +24,7 @@ import net.minecraft.src.Container;
import net.minecraft.src.EntityPlayer;
import cpw.mods.fml.common.FMLCommonHandler;
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;
@@ -145,4 +146,9 @@ public class ModLoaderHelper
}
return null;
}
public static IDispenseHandler buildDispenseHelper(BaseModProxy mod)
{
return new ModLoaderDispenseHelper(mod);
}
}
@@ -514,6 +514,7 @@ public class ModLoaderModContainer implements ModContainer
GameRegistry.registerFuelHandler(ModLoaderHelper.buildFuelHelper(mod));
GameRegistry.registerCraftingHandler(ModLoaderHelper.buildCraftingHelper(mod));
GameRegistry.registerPickupHandler(ModLoaderHelper.buildPickupHelper(mod));
GameRegistry.registerDispenserHandler(ModLoaderHelper.buildDispenseHelper(mod));
NetworkRegistry.instance().registerConnectionHandler(ModLoaderHelper.buildConnectionHelper(mod));
}
catch (Exception e)
@@ -104,11 +104,11 @@ public class GameRegistry
* @param item
* @return
*/
public static int tryDispense(World world, double x, double y, double z, int xVelocity, int zVelocity, ItemStack item)
public static int tryDispense(World world, double x, double y, double z, int xVelocity, int zVelocity, ItemStack item, Random random, double entX, double entY, double entZ)
{
for (IDispenseHandler handler : dispenserHandlers)
{
int dispensed = handler.dispense(x, y, z, xVelocity, zVelocity, world, item);
int dispensed = handler.dispense(x, y, z, xVelocity, zVelocity, world, item, random, entX, entY, entZ);
if (dispensed>-1)
{
return dispensed;
@@ -14,7 +14,7 @@
float var15 = 1.1F;
byte var16 = 6;
-
+ int modDispense = GameRegistry.tryDispense(p_72283_1_, p_72283_9_, p_72283_11_, p_72283_13_, p_72283_7_, p_72283_8_, p_72283_2_);
+ int modDispense = GameRegistry.tryDispense(p_72283_1_, p_72283_9_, p_72283_11_, p_72283_13_, p_72283_7_, p_72283_8_, p_72283_2_, p_72283_3_, p_72283_9_, p_72283_11_, p_72283_13_);
+ if (modDispense > -1)
+ {
+ return modDispense;