@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack is) {
TileEntity te = world.getBlockTileEntity(x, y, z);
NBTTagCompound tag = is.getTagCompound();
if (te != null && te instanceof TECnstorDoors && tag != null) {
if (tag.hasKey("SubID")) {((TECnstorDoors)te).setSubID((int)tag.getByte("SubID"));}
if (tag.hasKey("ColorBlock")) {((TECnstorDoors)te).setColorBlock(tag.getInteger("ColorBlock"));}
if (entity instanceof EntityPlayer) {((TECnstorDoors)te).setOwner(((EntityPlayer)entity).username);}
}
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
int ib = 0;//Сделал два варианта условий, но не метода
TileEntity te = world.getBlockTileEntity(x, y, z);
if (te == null || player.isSneaking()) {return false;}//Если Блок не имеет TileEntity или наш игрок идёт ползком (который вызывается по-умолчанию по shift'у [мой блок таков])
if (te != null && te instanceof TECnstorDoors) {//Если TileEntity не равен нулю и имеет наш класс TECnstorDoors, то...
ItemStack current = player.getCurrentEquippedItem();//Это то что находить или не находиться в руке игрока
if (ib == 0) {//Первый вариант
if (current != null && current.getItem() == PackFurniture.proxy.items_for_furniture) {//Если рука не пуста и имеет в руке наш предмет, то...
NBTTagCompound tag = current.getTagCompound();
if (tag != null && tag.hasKey("CordX") && tag.hasKey("CordY") && tag.hasKey("CordZ")) {//Если тег нашего предмета не пуст и имеет нужные теги, то...
if (tag.getInteger("CordX") == x && tag.getInteger("CordY") == y && tag.getInteger("CordZ") == z) {//При условии, что значения тегов из предмета ровна координатам нашего блока, то...
((TECnstorDoors)te).openDoor(true);//Дверь откроеться...
} else {
if (world.isRemote) {player.addChatMessage("This key does not fit into this door.");}//Если координаты нашего условия не совпали, то пишет в чат игрока, то что ключ не подходит.
return false;
}
} else {//Если наш предмет не имеет нужных тегов, то мы их задаём...
if (tag == null) {tag = new NBTTagCompound();}//Если ранее у него не было тагов, то ему задаём новые...
tag.setInteger("CordX", x);//Сохраняет в теге "CordX" значение "x"
tag.setInteger("CordY", y);//Сохраняет в теге "CordY" значение "y"
tag.setInteger("CordZ", z);//Сохраняет в теге "CordZ" значение "z"
current.setTagCompound(tag);//И сохраняем эти значение...
//Хотя лучше, чтобы он создавал новый предмет с тегами и удалял предмет без тего, это лучше если этот предмет стакаеться.
}
}
}//
if (ib == 1) {//Второй вариант...
if (world.provider.isDaytime()) {//Если в мире день, то...
if (player.username.equals(((TECnstorDoors)te).getOwner())) {//Если игрок является овнером этого блока, то...
((TECnstorDoors)te).openDoor(true);//Дверь откроется...
} else {
return false;//Если не овнер, не откроется...
}
} else {
((TECnstorDoors)te).openDoor(true);//Если ночь, то всем будет открываться...
}
}//
//Место топора можно, что-то другое, просто не стал сейчас создавать новый инструмент.
if (current != null && current.getItem() == Item.axeIron) {//Если рука не пуста и имеет железный топор, то...
current.setItemDamage(current.getItemDamage() + 1);//Предмет повреждаеться,
((TECnstorDoors)te).breakDoor(true);//Дверь ломается,
}
return true;
}
return false;
}
@SideOnly(Side.CLIENT)
public void getSubBlocks(int id, CreativeTabs table, List list) {
list.add(addTag(id, 0, 0xFFFFFF));
}
private static ItemStack addTag(int par1, int par2, int par3) {
ItemStack is = new ItemStack(par1, 1, 0);
NBTTagCompound tag = new NBTTagCompound();
tag.setByte("SubID", (byte)par2);
tag.setInteger("ColorBlock", par3);
is.setTagCompound(tag);
return is;
}