1
타일 엔티티가있는 MC mod의 블록에 "onBlockActivated"이벤트를 추가하는 데 문제가 있습니다.이 이벤트는 블록 안에 특정 항목을 저장하거나 . 블록에서 내가 설정 한 코드의 나머지 부분이 있지만, 한 부분이 나를 점점 나는 이것에 많은 자습서를 보았다,하지만 그들은 모두 오래된있어 여기에 코드입니다 :..내 MC Mod에서 내 타일 엔티티를 활성화하는 onBlockActivated 이벤트를 어떻게 추가해야합니까? (Forge for MC 1.11.2
//tile entity code
package com.cayoayt.musiccrafter.tileentity;
import com.cayoayt.musiccrafter.init.ModItems;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
public class TE_MusicPlayer extends TileEntity {
private int musicDiscs = 0;
//private String discName = "";
//adds a disc
public boolean addDisc() {
if (musicDiscs < 1) {
musicDiscs++;
System.out.println("Discs: " + musicDiscs);
return true;
}
return false;
}
//removes a disc
public void removeDisc() {
if (musicDiscs > 0) {
worldObj.spawnEntityInWorld(new EntityItem(worldObj, pos.getX() + 0.5, pos.getY() + 1.0, pos.getZ() + 0.5, new ItemStack(ModItems.exampleitem)));
musicDiscs--;
}
}
//writes to memory
@Override
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
super.writeToNBT(compound);
compound.setInteger("musicDiscs", this.musicDiscs);
return compound;
}
//reads from memory
@Override
public void readFromNBT(NBTTagCompound compound) {
super.readFromNBT(compound);
this.musicDiscs = compound.getInteger("musicDiscs");
}
}
//block code
package com.cayoayt.musiccrafter.blocks;
import java.util.List;
import java.util.Random;
import com.cayoayt.musiccrafter.MusicCrafter;
import com.cayoayt.musiccrafter.Reference;
import com.cayoayt.musiccrafter.init.ModBlocks;
import com.cayoayt.musiccrafter.init.ModItems;
import com.cayoayt.musiccrafter.tileentity.TE_MusicPlayer;
import net.minecraft.block.Block;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
public class music_player extends BlockHorizontal implements ITileEntityProvider {
public static final AxisAlignedBB COLLISION_BOX = new AxisAlignedBB(4 * 0.0625, 0, 3 * 0.0625, 12 * 0.0625, 4 * 0.0625, 13 * 0.0625);
public static final AxisAlignedBB BOUNDING_BOX = new AxisAlignedBB(3 * 0.0625, 0, 2 * 0.0625, 13 * 0.0625, 5 * 0.0625, 14 * 0.0625);
public music_player() {
//material
super(Material.GROUND);
//names
setRegistryName(Reference.MusicCrafterBlocks.MUSICPLAYER.getRegistryName());
setUnlocalizedName(Reference.MusicCrafterBlocks.MUSICPLAYER.getUnlocalizedName());
//creative tab
setCreativeTab(MusicCrafter.CREATIVE_TAB);
//default state
setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
}
//item dropped
public Item getItemDropped() {
return Item.getItemFromBlock(ModBlocks.music_player);
}
//color on map
public MapColor getMapColor() {
return MapColor.BLACK;
}
//determines if full cube or not
@Override
public boolean isFullCube(IBlockState state) {
return false;
}
//defines if opaque
@Override
public boolean isOpaqueCube(IBlockState state) {
return false;
}
//defines that block is cutout of whole block
@Override
public BlockRenderLayer getBlockLayer() {
return BlockRenderLayer.CUTOUT;
}
//outline of box
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
return BOUNDING_BOX;
}
//collision detection
@Override
public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, Entity entityIn) {
super.addCollisionBoxToList(pos, entityBox, collidingBoxes, COLLISION_BOX);
}
//sets direction
@Override
public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) {
IBlockState state = super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer);
return state.withProperty(FACING, placer.getHorizontalFacing());
}
//meta from state
@Override
public int getMetaFromState(IBlockState state) {
return state.getValue(FACING).getHorizontalIndex();
}
//state from meta
@Override
public IBlockState getStateFromMeta(int meta) {
return getDefaultState().withProperty(FACING, EnumFacing.getHorizontal(meta));
}
//creating block state
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, FACING);
}
//AREA OF FOCUS
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing heldItem, float side, float hitX, float hitY) {
//CODE HERE
}
//END OF AREA OF FOCUS
//makes container
@Override
public TileEntity createNewTileEntity(World worldIn, int meta) {
return new TE_MusicPlayer();
}
}
붙여주세요 답변 섹션에 필요한 코드가 무엇입니까? 많은 도움이 될 것입니다