Acid/Grog related bucket fix from 1.6, forgot the code migrated to another class in 1.7 while merging.

This commit is contained in:
Florian Nücke 2014-05-16 13:59:00 +02:00
parent 2bae20fea1
commit 71325242aa

View File

@ -97,37 +97,12 @@ object EventHandler {
@SubscribeEvent @SubscribeEvent
def onCrafting(e: ItemCraftedEvent) = { def onCrafting(e: ItemCraftedEvent) = {
val player = e.player if (e.crafting.isItemEqual(Items.upgradeNavigation.createItemStack())) {
val craftedStack = e.crafting Registry.itemDriverFor(e.crafting) match {
val inventory = e.craftMatrix
if (craftedStack.isItemEqual(Items.acid.createItemStack())) {
for (i <- 0 until inventory.getSizeInventory) {
val stack = inventory.getStackInSlot(i)
if (stack != null && stack.getItem == net.minecraft.init.Items.water_bucket) {
stack.stackSize = 0
inventory.setInventorySlotContents(i, null)
}
}
}
if (craftedStack.isItemEqual(Items.pcb.createItemStack())) {
for (i <- 0 until inventory.getSizeInventory) {
val stack = inventory.getStackInSlot(i)
if (stack != null && stack.isItemEqual(Items.acid.createItemStack())) {
val container = new ItemStack(net.minecraft.init.Items.bucket, 1)
if (!player.inventory.addItemStackToInventory(container)) {
player.entityDropItem(container, 0)
}
}
}
}
if (craftedStack.isItemEqual(Items.upgradeNavigation.createItemStack())) {
Registry.itemDriverFor(craftedStack) match {
case Some(driver) => case Some(driver) =>
var oldMap = None: Option[ItemStack] var oldMap = None: Option[ItemStack]
for (i <- 0 until inventory.getSizeInventory) { for (i <- 0 until e.craftMatrix.getSizeInventory) {
val stack = inventory.getStackInSlot(i) val stack = e.craftMatrix.getStackInSlot(i)
if (stack != null) { if (stack != null) {
if (stack.isItemEqual(Items.upgradeNavigation.createItemStack())) { if (stack.isItemEqual(Items.upgradeNavigation.createItemStack())) {
// Restore the map currently used in the upgrade. // Restore the map currently used in the upgrade.
@ -136,9 +111,9 @@ object EventHandler {
} }
else if (stack.getItem == net.minecraft.init.Items.map) { else if (stack.getItem == net.minecraft.init.Items.map) {
// Store information of the map used for crafting in the result. // Store information of the map used for crafting in the result.
val nbt = driver.dataTag(craftedStack) val nbt = driver.dataTag(e.crafting)
val map = stack.getItem.asInstanceOf[ItemMap] val map = stack.getItem.asInstanceOf[ItemMap]
val info = map.getMapData(stack, player.getEntityWorld) val info = map.getMapData(stack, e.player.getEntityWorld)
nbt.setInteger(Settings.namespace + "xCenter", info.xCenter) nbt.setInteger(Settings.namespace + "xCenter", info.xCenter)
nbt.setInteger(Settings.namespace + "zCenter", info.zCenter) nbt.setInteger(Settings.namespace + "zCenter", info.zCenter)
nbt.setInteger(Settings.namespace + "scale", 128 * (1 << info.scale)) nbt.setInteger(Settings.namespace + "scale", 128 * (1 << info.scale))
@ -148,8 +123,8 @@ object EventHandler {
} }
if (oldMap.isDefined) { if (oldMap.isDefined) {
val map = oldMap.get val map = oldMap.get
if (!player.inventory.addItemStackToInventory(map)) { if (!e.player.inventory.addItemStackToInventory(map)) {
player.dropPlayerItemWithRandomChoice(map, false) e.player.dropPlayerItemWithRandomChoice(map, false)
} }
} }
case _ => case _ =>