- 116
- 0
В общем из названия все ясно, хочу сделать, чтобы когда отлетаешь например на 15 блоков от блока эффект снимался, вообще не знаю как это сделать, вот что намудрил, просьба не смеятся:
package assets.armorness.src.blocks;
import java.util.Random;
import assets.armorness.src.armorness;
import assets.armorness.src.renderblock.TileEntityObsidianObelisk;
import assets.armorness.src.renderblock.TileEntityObsidianObelisk;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class ObsidianObelisk extends Block implements ITileEntityProvider {
public ObsidianObelisk() {
super(Material.piston);
this.setHardness(2.0F);
this.setBlockTextureName("iron_block");
this.setCreativeTab(armorness.armornesstab);
this.setBlockBounds(0, 0, 0, 1.0F, 2F, 1.0F);
}
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_)
{
if(player.getCurrentEquippedItem() == null){
if(world.getBlock(x+2, y, z) != null && world.getBlock(x+2, y, z) == armorness.ObsidianShard &&
world.getBlock(x-2, y, z) != null && world.getBlock(x-2, y, z) == armorness.ObsidianShard &&
world.getBlock(x, y, z+2) != null && world.getBlock(x, y, z+2) == armorness.ObsidianShard &&
world.getBlock(x, y, z-2) != null && world.getBlock(x, y, z-2) == armorness.ObsidianShard){
player.addPotionEffect(new PotionEffect(armorness.Fly.id, 20*30, 0));
}
}
return false;
}
public void onUpdate(ItemStack is, World world, Entity entity, int p_77663_4_, boolean p_77663_5_) {
if(entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) entity;
int x = (int) Math.round(player.posX +- 15f);
int y = (int) Math.round(player.posY +- 30f);
int z = (int) Math.round(player.posZ +- 15f);
if(world.getBlock(x, y, z) != armorness.ObsidianObelisk){
player.removePotionEffect(armorness.Fly.id);
}
}
}
@Override
public Item getItemDropped(int par1, Random par2Random, int par3)
{
return armorness.RedDiamond;
}
@Override
public TileEntity createNewTileEntity(World world, int metadata) {
return new TileEntityObsidianObelisk();
}
public int getRenderType() {
return -1;
}
public boolean isOpaqueCube() {
return false;
}
public boolean renderAsNormalBlock() {
return false;
}
}
package assets.armorness.src.blocks;
import java.util.Random;
import assets.armorness.src.armorness;
import assets.armorness.src.renderblock.TileEntityObsidianObelisk;
import assets.armorness.src.renderblock.TileEntityObsidianObelisk;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class ObsidianObelisk extends Block implements ITileEntityProvider {
public ObsidianObelisk() {
super(Material.piston);
this.setHardness(2.0F);
this.setBlockTextureName("iron_block");
this.setCreativeTab(armorness.armornesstab);
this.setBlockBounds(0, 0, 0, 1.0F, 2F, 1.0F);
}
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_)
{
if(player.getCurrentEquippedItem() == null){
if(world.getBlock(x+2, y, z) != null && world.getBlock(x+2, y, z) == armorness.ObsidianShard &&
world.getBlock(x-2, y, z) != null && world.getBlock(x-2, y, z) == armorness.ObsidianShard &&
world.getBlock(x, y, z+2) != null && world.getBlock(x, y, z+2) == armorness.ObsidianShard &&
world.getBlock(x, y, z-2) != null && world.getBlock(x, y, z-2) == armorness.ObsidianShard){
player.addPotionEffect(new PotionEffect(armorness.Fly.id, 20*30, 0));
}
}
return false;
}
public void onUpdate(ItemStack is, World world, Entity entity, int p_77663_4_, boolean p_77663_5_) {
if(entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) entity;
int x = (int) Math.round(player.posX +- 15f);
int y = (int) Math.round(player.posY +- 30f);
int z = (int) Math.round(player.posZ +- 15f);
if(world.getBlock(x, y, z) != armorness.ObsidianObelisk){
player.removePotionEffect(armorness.Fly.id);
}
}
}
@Override
public Item getItemDropped(int par1, Random par2Random, int par3)
{
return armorness.RedDiamond;
}
@Override
public TileEntity createNewTileEntity(World world, int metadata) {
return new TileEntityObsidianObelisk();
}
public int getRenderType() {
return -1;
}
public boolean isOpaqueCube() {
return false;
}
public boolean renderAsNormalBlock() {
return false;
}
}