Allow placing of skulls (#480)
* Allow placing of skulls * Fix incorrect position when checking wither spawn * Fix rotation, and format with idea's default formatter.
This commit is contained in:
@@ -3,10 +3,8 @@ package refinedstorage.container.slot;
|
|||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.item.ItemBlock;
|
import net.minecraft.item.*;
|
||||||
import net.minecraft.item.ItemBlockSpecial;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraftforge.common.IPlantable;
|
import net.minecraftforge.common.IPlantable;
|
||||||
@@ -38,7 +36,7 @@ public class SlotSpecimen extends SlotItemHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValid(ItemStack stack) {
|
public boolean isItemValid(ItemStack stack) {
|
||||||
return super.isItemValid(stack) && (isBlockOnly() ? (stack.getItem() instanceof ItemBlock || stack.getItem() instanceof ItemBlockSpecial || stack.getItem() instanceof IPlantable) : true);
|
return super.isItemValid(stack) && (isBlockOnly() ? (stack.getItem() instanceof ItemBlock || stack.getItem() instanceof ItemBlockSpecial || stack.getItem() instanceof IPlantable || stack.getItem() instanceof ItemSkull) : true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -74,6 +72,8 @@ public class SlotSpecimen extends SlotItemHandler {
|
|||||||
return (((ItemBlock) item).getBlock()).getDefaultState();
|
return (((ItemBlock) item).getBlock()).getDefaultState();
|
||||||
} else if (item instanceof IPlantable) {
|
} else if (item instanceof IPlantable) {
|
||||||
return ((IPlantable) item).getPlant(world, pos);
|
return ((IPlantable) item).getPlant(world, pos);
|
||||||
|
} else if (item instanceof ItemSkull) {
|
||||||
|
return Blocks.SKULL.getDefaultState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package refinedstorage.tile;
|
package refinedstorage.tile;
|
||||||
|
|
||||||
|
import com.mojang.authlib.GameProfile;
|
||||||
import mcmultipart.microblock.IMicroblock;
|
import mcmultipart.microblock.IMicroblock;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.BlockSkull;
|
||||||
import net.minecraft.block.SoundType;
|
import net.minecraft.block.SoundType;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
|
import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
|
||||||
@@ -9,7 +11,10 @@ import net.minecraft.dispenser.PositionImpl;
|
|||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.nbt.NBTUtil;
|
||||||
import net.minecraft.network.datasync.DataSerializers;
|
import net.minecraft.network.datasync.DataSerializers;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.tileentity.TileEntitySkull;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.SoundCategory;
|
import net.minecraft.util.SoundCategory;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@@ -148,6 +153,30 @@ public class TileConstructor extends TileMultipartNode implements IComparable, I
|
|||||||
// From ItemBlock#onItemUse
|
// From ItemBlock#onItemUse
|
||||||
SoundType blockSound = block.getBlock().getSoundType(state, worldObj, pos, null);
|
SoundType blockSound = block.getBlock().getSoundType(state, worldObj, pos, null);
|
||||||
worldObj.playSound(null, front, blockSound.getPlaceSound(), SoundCategory.BLOCKS, (blockSound.getVolume() + 1.0F) / 2.0F, blockSound.getPitch() * 0.8F);
|
worldObj.playSound(null, front, blockSound.getPlaceSound(), SoundCategory.BLOCKS, (blockSound.getVolume() + 1.0F) / 2.0F, blockSound.getPitch() * 0.8F);
|
||||||
|
|
||||||
|
if (block.getBlock() == Blocks.SKULL) {
|
||||||
|
worldObj.setBlockState(front, worldObj.getBlockState(front).withProperty(BlockSkull.FACING, getDirection()));
|
||||||
|
TileEntity tile = worldObj.getTileEntity(front);
|
||||||
|
if (tile instanceof TileEntitySkull) {
|
||||||
|
TileEntitySkull skullTile = (TileEntitySkull) tile;
|
||||||
|
if (item.getItemDamage() == 3) {
|
||||||
|
GameProfile playerInfo = null;
|
||||||
|
if (item.hasTagCompound()) {
|
||||||
|
NBTTagCompound tagCompound = item.getTagCompound();
|
||||||
|
if (tagCompound.hasKey("SkullOwner", 10)) {
|
||||||
|
playerInfo = NBTUtil.readGameProfileFromNBT(tagCompound.getCompoundTag("SkullOwner"));
|
||||||
|
} else if (tagCompound.hasKey("SkullOwner", 8) && !tagCompound.getString("SkullOwner").isEmpty()) {
|
||||||
|
playerInfo = new GameProfile(null, tagCompound.getString("SkullOwner"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
skullTile.setPlayerProfile(playerInfo);
|
||||||
|
} else {
|
||||||
|
skullTile.setType(item.getMetadata());
|
||||||
|
}
|
||||||
|
Blocks.SKULL.checkWitherSpawn(worldObj, front, skullTile);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||||
ItemStack craft = itemFilters.getStackInSlot(0);
|
ItemStack craft = itemFilters.getStackInSlot(0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user