Ich habe Probleme beim Hinzufügen eines "onBlockActivated" -Ereignisses für den Block in meinem MC-Mod, der eine Kacheleinheit hat. Das Ereignis sollte es Ihnen ermöglichen, entweder ein bestimmtes Element innerhalb des Blocks zu speichern oder es zu übernehmen . aus dem Block habe ich den Rest des Codes eingerichtet, aber dieser Teil ist mir immer ich habe viele Tutorials zu diesem Thema, aber sie sind alle veraltet Hier ist der Code gesehen:..Wie sollte ich ein onBlockActivated-Ereignis hinzufügen, das meine Kachel-Entität in meinem MC-Mod aktiviert? (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();
}
}
fügen der Code, den ich im Antwortenabschnitt benötigen würde und es erklären