From 5d069629cf47cd04f2002b3b9a2c32b0ea73c26e Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 28 Dec 2013 18:04:30 -0500 Subject: [PATCH] Allow itemstacks for furnace recipe inputs. Allow passing extra arguments through registerblock into the itemblock constructor. --- .../network/handshake/NetworkDispatcher.java | 3 --- .../mods/fml/common/registry/GameRegistry.java | 18 +++++++++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/java/cpw/mods/fml/common/network/handshake/NetworkDispatcher.java b/src/main/java/cpw/mods/fml/common/network/handshake/NetworkDispatcher.java index 7ed17a94b6..b1f880a773 100644 --- a/src/main/java/cpw/mods/fml/common/network/handshake/NetworkDispatcher.java +++ b/src/main/java/cpw/mods/fml/common/network/handshake/NetworkDispatcher.java @@ -10,18 +10,15 @@ import io.netty.util.AttributeKey; import io.netty.util.concurrent.Future; import io.netty.util.concurrent.GenericFutureListener; import io.netty.util.concurrent.ScheduledFuture; - import java.net.SocketAddress; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; - import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.EnumConnectionState; import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; -import net.minecraft.network.play.INetHandlerPlayClient; import net.minecraft.network.play.client.C17PacketCustomPayload; import net.minecraft.network.play.server.S3FPacketCustomPayload; import net.minecraft.network.play.server.S40PacketDisconnect; diff --git a/src/main/java/cpw/mods/fml/common/registry/GameRegistry.java b/src/main/java/cpw/mods/fml/common/registry/GameRegistry.java index b2dd603b46..06ad4e5ed6 100644 --- a/src/main/java/cpw/mods/fml/common/registry/GameRegistry.java +++ b/src/main/java/cpw/mods/fml/common/registry/GameRegistry.java @@ -38,6 +38,7 @@ import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.google.common.collect.ObjectArrays; import com.google.common.collect.Sets; import com.google.common.primitives.Ints; @@ -165,7 +166,7 @@ public class GameRegistry * @param name The mod-unique name to register it with * @param modId The modId that will own the block name. null defaults to the active modId */ - public static Block registerBlock(Block block, Class itemclass, String name, String modId) + public static Block registerBlock(Block block, Class itemclass, String name, String modId, Object... itemCtorArgs) { if (Loader.instance().isInState(LoaderState.CONSTRUCTING)) { @@ -177,8 +178,14 @@ public class GameRegistry ItemBlock i = null; if (itemclass != null) { - Constructor itemCtor = itemclass.getConstructor(Block.class); - i = itemCtor.newInstance(block); + Class[] ctorArgClasses = new Class[itemCtorArgs.length + 1]; + ctorArgClasses[0] = Block.class; + for (int idx = 1; idx < ctorArgClasses.length; idx++) + { + ctorArgClasses[idx] = itemCtorArgs[idx-1].getClass(); + } + Constructor itemCtor = itemclass.getConstructor(ctorArgClasses); + i = itemCtor.newInstance(ObjectArrays.concat(block, itemCtorArgs)); } if (i != null) { @@ -228,6 +235,11 @@ public class GameRegistry FurnaceRecipes.func_77602_a().func_151396_a(input, output, xp); } + public static void addSmelting(ItemStack input, ItemStack output, float xp) + { + FurnaceRecipes.func_77602_a().func_151394_a(input, output, xp); + } + public static void registerTileEntity(Class tileEntityClass, String id) { TileEntity.func_145826_a(tileEntityClass, id);