perromercenary00 Posted January 14, 2015 Share Posted January 14, 2015 goo days i been working in this project, and to achive it i need to break masive amounts of blocks. heres the video heres happen but not all the times the hole make by the explosion just happen apparently in server only soo i cant get in the hole becose the local world think there is still blocks inside to cause this explosion and remove blocks im using the fill command but where im executing the code is inside a public void onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock) { } in the explosive block from then i execute chat.chatga(playerIn, "mundo="+worldIn_entrada.isRemote); net.minecraft.command.CommandFill fill = new net.minecraft.command.CommandFill(); //String [] comando= {"-136","41","215","-140","44","217","minecraft:glass"}; String [] comando= {xmin+"",ymin+"",zmin+"",xmax+"",ymax+"",zmax+"","minecraft:air","0","destroy"}; try { fill.execute(playerIn, comando); } catch (CommandException e) { e.printStackTrace(); } and the message part chat.chatga(playerIn, "mundo="+worldIn_entrada.isRemote); always return false on player screen this means this code only execute in server. to avoid this trouble i need to execute this in server and in local at same time ###### packets i alredy have a working class to send messages to server and local world but just allow to send strings from 6 to 14 char and to work the fill a need to send it to blocks coordentes or a String[] array exem: String [] comando= {xmin+"",ymin+"",zmin+"",xmax+"",ymax+"",zmax+"","minecraft:air","0","destroy"}; ?? is workaround to send complex packages to the server ?? Quote Link to comment Share on other sites More sharing options...
perromercenary00 Posted January 14, 2015 Author Share Posted January 14, 2015 i get it from the minecraft class doing the Minecraft mc = Minecraft.getMinecraft(); EntityPlayer playerIn= mc.thePlayer; but if its the guilty on the player where i could get the player entity? and from the packages i been triyng write the array directly to an execute.class then send to the server a message to execute the code in the execude class but in this case it only gets the array the server class. sounds legit i gonna try thath the class is long but here is package mercenarymod.blocks.explosivos; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.apache.logging.log4j.core.config.Property; import mercenarymod.Mercenary; import mercenarymod.blocks.MercenaryModBlocks; import net.minecraft.block.Block; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumWorldBlockLayer; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import mercenarymod.utilidades.chat; import net.minecraft.entity.EntityLivingBase; import mercenarymod.blocks.explosivos.tiempoDinamita; //import net.minecraft.command.CommandFill; public class dinamitaParaPerforaciones3 extends Block { public static String name = "dinamitaParaPerforaciones3"; public static final PropertyDirection FACING = PropertyDirection.create("facing"); public static int conteo=0; public static ArrayList<tiempoDinamita> listaDinamita = new ArrayList<tiempoDinamita>(); private static BlockPos posa=null; public dinamitaParaPerforaciones3() { super(Material.tnt); setUnlocalizedName(Mercenary.MODID + "_" + name); GameRegistry.registerBlock(this, name); setCreativeTab(Mercenary.herramientas); //this.maxStackSize = 1; } //###########################################################3 public void onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock) { String F=""+state.getValue(FACING); System.out.println("\n\n\nFacing="+F); if ( F.contains("east") & worldIn.isAirBlock(pos.east()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("west") & worldIn.isAirBlock(pos.west()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("north") & worldIn.isAirBlock(pos.north()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("south") & worldIn.isAirBlock(pos.south()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("up") & worldIn.isAirBlock(pos.up()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("down") & worldIn.isAirBlock(pos.down()) ){worldIn.destroyBlock(pos, false);} Minecraft mc = Minecraft.getMinecraft(); EntityPlayer playerIn= mc.thePlayer; if (worldIn.isBlockPowered(pos)){ if (pos.equals(posa)){System.out.println("%%%%%%\n ignorar posicion por estar repetida\n"+pos+"\n"+posa);/*do nothing*/;} else { posa=pos; destruirBlockes(pos,worldIn); //tiempoDinamita.habilitar(worldIn,pos); } } } //###########################################################3 public Block setBlockUnbreakable() { this.setHardness(-1.0F); return this; } //###########################################################3 public Item getItemDropped(IBlockState state, Random rand, int fortune) { return null; //Item.getItemFromBlock(MercenaryModBlocks.romper); } //###########################################################3 public boolean isOpaqueCube() { return false; } @SideOnly(Side.CLIENT) public EnumWorldBlockLayer getBlockLayer() { return EnumWorldBlockLayer.CUTOUT; } //###########################################################3 public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) { IBlockState bs0 = worldIn.getBlockState(pos.north()); IBlockState bs1 = worldIn.getBlockState(pos.south()); IBlockState bs2 = worldIn.getBlockState(pos.east()); IBlockState bs3 = worldIn.getBlockState(pos.west()); System.out.println("Norte="+bs0.getBlock().getUnlocalizedName()); System.out.println("Sur="+bs1.getBlock().getUnlocalizedName()); System.out.println("Este="+bs2.getBlock().getUnlocalizedName()); System.out.println("Oeste="+bs3.getBlock().getUnlocalizedName()); System.out.println("\n\n\nmundo="+worldIn.isRemote); /* net.minecraft.command.CommandFill fill = new net.minecraft.command.CommandFill(); //String [] comando= {"-136","41","215","-140","44","217","minecraft:glass"}; String [] comando= {"-136","41","215","-140","44","217","minecraft:air","0","destroy"}; try { if (!worldIn.isRemote){fill.execute(playerIn, comando);} } catch (CommandException e) { e.printStackTrace(); } */ return false;} //###########################################################3 public static String[] destruirBlockes(BlockPos pos_entrada,World worldIn_entrada){ Minecraft mc = Minecraft.getMinecraft(); EntityPlayer playerIn= mc.thePlayer; int x=pos_entrada.getX(),y=pos_entrada.getY(),z=pos_entrada.getZ(); int xmax=0,xmin=0, ymax=0,ymin=0, zmax=0,zmin=0; IBlockState state_entrada = worldIn_entrada.getBlockState(pos_entrada); Block iblk_entrada=state_entrada.getBlock(); String F=""+state_entrada.getValue(FACING); BlockPos pos1=null; int T=3; //tamaño int C=6; //profundidad if(F.contains("down")){ pos1= new BlockPos(x,(y-1),z); xmax=x+T; xmin=x-T; ymax=y; ymin=y-(T*2)-C; zmax=z+T; zmin=z-T; } if(F.contains("up")){ pos1= new BlockPos(x,(y+1),z); xmax=x+T; xmin=x-T; ymax=y+(T*2)+C; ymin=y; zmax=z+T; zmin=z-T; } if(F.contains("north")){ pos1= new BlockPos(x,y,(z-1)); xmax=x+T; xmin=x-T; ymax=y+T; ymin=y-T; zmax=z; zmin=z-(T*2)-C; } if(F.contains("south")){ pos1= new BlockPos(x,y,(z+1)); xmax=x+T; xmin=x-T; ymax=y+T; ymin=y-T; zmax=z+(T*2)+C; zmin=z; } if(F.contains("east")){ pos1= new BlockPos((x+1),y,z); xmax=x+(T*2)+C; xmin=x; ymax=y+T; ymin=y-T; zmax=z+T; zmin=z-T; } if(F.contains("west")){ pos1= new BlockPos((x-1),y,z); xmax=x; xmin=x-(T*2)-C; ymax=y+T; ymin=y-T; zmax=z+T; zmin=z-T; } chat.chatga(playerIn, "mundo="+worldIn_entrada.isRemote); net.minecraft.command.CommandFill fill = new net.minecraft.command.CommandFill(); //String [] comando= {"-136","41","215","-140","44","217","minecraft:glass"}; String [] comando= {xmin+"",ymin+"",zmin+"",xmax+"",ymax+"",zmax+"","minecraft:air","0","destroy"}; try { if (!worldIn_entrada.isRemote){fill.execute(playerIn, comando);} } catch (CommandException e) { e.printStackTrace(); } boolean flag=true; int explosionPower = 1; worldIn_entrada.newExplosion((Entity)null, x, y, z, (float)explosionPower, flag, flag); //setDead(); return comando; } //###########################################################3 public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { EnumFacing cara = getFacingFromEntity(worldIn, pos, placer); worldIn.setBlockState(pos, state.withProperty(FACING, cara.getOpposite()), 2); //worldIn.setBlockState(pos, state.withProperty(FACING, getFacingFromEntity(worldIn, pos, placer)), 2); } //###########################################################3 public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { return this.getDefaultState().withProperty(FACING, getFacingFromEntity(worldIn, pos, placer)); } //###########################################################3 public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos) { IBlockState iblockstate = worldIn.getBlockState(pos); float f = 0.25F; EnumFacing enumfacing = (EnumFacing)iblockstate.getValue(FACING); if (enumfacing != null) { switch (dinamitaParaPerforaciones3.SwitchEnumFacing.FACING_LOOKUP[enumfacing.ordinal()]) { case 1: this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.01F, 1.0F); break; case 2: this.setBlockBounds(0.0F, 0.99F, 0.0F, 1.0F, 1.0F, 1.0F); break; case 3: this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.01F); break; case 4: this.setBlockBounds(0.0F, 0.0F, 0.99F, 1.0F, 1.0F, 1.0F); break; case 5: this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.01F, 1.0F, 1.0F); break; case 6: this.setBlockBounds(0.99F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } } else { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } } //###########################################################3 public void setBlockBoundsForItemRender() { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } //###########################################################3 public static EnumFacing getFacingFromEntity(World worldIn, BlockPos clickedBlock, EntityLivingBase entityIn) { if (MathHelper.abs((float)entityIn.posX - (float)clickedBlock.getX()) < 2.0F && MathHelper.abs((float)entityIn.posZ - (float)clickedBlock.getZ()) < 2.0F) { double d0 = entityIn.posY + (double)entityIn.getEyeHeight(); if (d0 - (double)clickedBlock.getY() > 2.0D) { return EnumFacing.UP; } if ((double)clickedBlock.getY() - d0 > 0.0D) { return EnumFacing.DOWN; } } return entityIn.getHorizontalFacing().getOpposite(); } //###########################################################3 @SideOnly(Side.CLIENT) public IBlockState getStateForEntityRender(IBlockState state) { return this.getDefaultState().withProperty(FACING, EnumFacing.UP); } //###########################################################3 protected BlockState createBlockState() { return new BlockState(this, new IProperty[] {FACING}); } //###########################################################3 public int getMetaFromState(IBlockState state) { byte b0 = 0; int i = b0 | ((EnumFacing)state.getValue(FACING)).getIndex(); return i; } //###########################################################3 static final class SwitchEnumFacing { static final int[] FACING_LOOKUP = new int[EnumFacing.values().length]; private static final String __OBFID = "CL_00002037"; static { try { FACING_LOOKUP[EnumFacing.DOWN.ordinal()] = 1; } catch (NoSuchFieldError var6) { ; } try { FACING_LOOKUP[EnumFacing.UP.ordinal()] = 2; } catch (NoSuchFieldError var5) { ; } try { FACING_LOOKUP[EnumFacing.NORTH.ordinal()] = 3; } catch (NoSuchFieldError var4) { ; } try { FACING_LOOKUP[EnumFacing.SOUTH.ordinal()] = 4; } catch (NoSuchFieldError var3) { ; } try { FACING_LOOKUP[EnumFacing.WEST.ordinal()] = 5; } catch (NoSuchFieldError var2) { ; } try { FACING_LOOKUP[EnumFacing.EAST.ordinal()] = 6; } catch (NoSuchFieldError var1) { ; } } } //###########################################################3 /* public void addCollisionBoxesToList(World worldIn, BlockPos pos, IBlockState state, AxisAlignedBB mask, List list, Entity collidingEntity) { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); super.addCollisionBoxesToList(worldIn, pos, state, mask, list, collidingEntity); } */ /* public AxisAlignedBB getCollisionBoundingBox(World worldIn, BlockPos pos, IBlockState state) { this.setBlockBoundsBasedOnState(worldIn, pos); return super.getCollisionBoundingBox(worldIn, pos, state); } */ public boolean isFullCube() { return false; } //###########################################################3 public String getUnlocalizedName(ItemStack stack) { int m= stack.getMetadata(); if (m == 0){return name+"0" ;} if (m == 1){return name+"1" ;} if (m == 2){return name+"2" ;} if (m == 3){return name+"3" ;} if (m == 4){return name+"4" ;} if (m == 5){return name+"5" ;} if (m == 5){return name+"6" ;} if (m == 5){return name+"7" ;} return name+"0"; } @SideOnly(Side.CLIENT) public void getSubItems(Item itemIn, CreativeTabs tab, List subItems) { subItems.add(new ItemStack(itemIn, 1, 0)); subItems.add(new ItemStack(itemIn, 1, 1)); subItems.add(new ItemStack(itemIn, 1, 2)); subItems.add(new ItemStack(itemIn, 1, 3)); subItems.add(new ItemStack(itemIn, 1, 4)); subItems.add(new ItemStack(itemIn, 1, 5)); subItems.add(new ItemStack(itemIn, 1, 6)); subItems.add(new ItemStack(itemIn, 1, 7)); } //###########################################################3 }//fin de la clase Quote Link to comment Share on other sites More sharing options...
perromercenary00 Posted January 14, 2015 Author Share Posted January 14, 2015 well lets working i get ride of the unnesesary static almos all and get ride from all the Minecraft mc = Minecraft.getMinecraft(); EntityPlayer playerIn= mc.thePlayer; make a set in an execute.class to load the int[] array whit the data of the blocks to break and set the mesenger class to run execute and break the blocks on the comand "romper " but still get the exeption. Question ? im executing code in the server using the packages trick how do to get the current world to use in worldIn.destroy(blockpos , drops); im geting the player from the message public static class Handler0 implements IMessageHandler<mensajeMercenarioalServidor, IMessage> { @Override public IMessage onMessage(mensajeMercenarioalServidor message, MessageContext ctx) { EntityPlayer playerIn=ctx.getServerHandler().playerEntity; EntityPlayerMP playerMp=(EntityPlayerMP)playerIn; ejecutar.esto(texto0,playerIn);//this pas the "mesage" and the player get from the message sender return null; // no response in this case } in the ejecutar.class i get world from the player using World worldIn=playerIn.getEntityWorld(); and then do //load comandofill whit max and mins public void setComando(int[] comando0){ comandofill=comando0; System.out.println("comando reciviod="+comando0); } //"romper" if (comando.equals("romper")){ //destruir maxivamente Blockes en el mundo System.out.println("Mundo="+worldIn.isRemote); int xmin=comandofill[0], ymin=comandofill[1], zmin=comandofill[2]; int xmax=comandofill[3], ymax=comandofill[4], zmax=comandofill[5]; for (int dx=xmin;dx <= xmax; dx++ ){ for (int dy=ymin;dy <= ymax; dy++ ){ for (int dz=zmin;dz <= zmax; dz++ ){ BlockPos posx= new BlockPos(dx,dy,dz); System.out.println("romper="+posx) ; worldIn.destroyBlock(posx, true); }}} } //##########################################################33 Quote Link to comment Share on other sites More sharing options...
perromercenary00 Posted January 15, 2015 Author Share Posted January 15, 2015 ñaa is a thing of features and feelings i wanna chain explosions so when the block recives the pulse its wait a full second to get the data of all the charges and then bllow up all the fucking thing in one single shot the simple way thath give no troubles but freeze temporaly the game when get to may blocks is package mercenarymod.blocks.explosivos; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.apache.logging.log4j.core.config.Property; import mercenarymod.Mercenary; import mercenarymod.blocks.MercenaryModBlocks; import net.minecraft.block.Block; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumWorldBlockLayer; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import mercenarymod.mensajes.mensajeMercenarioalServidor; import mercenarymod.utilidades.chat; import net.minecraft.entity.EntityLivingBase; import mercenarymod.blocks.explosivos.tiempoDinamita; //import net.minecraft.command.CommandFill; public class dinamitaParaPerforaciones3 extends Block { public String name = "dinamitaParaPerforaciones3"; public static final PropertyDirection FACING = PropertyDirection.create("facing"); public int conteo=0; private BlockPos posa=null; public dinamitaParaPerforaciones3() { super(Material.tnt); setUnlocalizedName(Mercenary.MODID + "_" + name); GameRegistry.registerBlock(this, name); setCreativeTab(Mercenary.herramientas); //this.maxStackSize = 1; } //###########################################################3 public void onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock) { String F=""+state.getValue(FACING); System.out.println("\n\n\nFacing="+F); if ( F.contains("east") & worldIn.isAirBlock(pos.east()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("west") & worldIn.isAirBlock(pos.west()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("north") & worldIn.isAirBlock(pos.north()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("south") & worldIn.isAirBlock(pos.south()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("up") & worldIn.isAirBlock(pos.up()) ){worldIn.destroyBlock(pos, false);} if ( F.contains("down") & worldIn.isAirBlock(pos.down()) ){worldIn.destroyBlock(pos, false);} //Minecraft mc = Minecraft.getMinecraft(); //EntityPlayer playerIn= mc.thePlayer; if (worldIn.isBlockPowered(pos)){ if (pos.equals(posa)){System.out.println("%%%%%%\n ignorar posicion por estar repetida\n"+pos+"\n"+posa);/*do nothing*/;} else { posa=pos; destruirBlockes(pos,worldIn); //tiempoDinamita.habilitar(worldIn,pos); } } } //###########################################################3 public Block setBlockUnbreakable() { this.setHardness(-1.0F); return this; } //###########################################################3 public Item getItemDropped(IBlockState state, Random rand, int fortune) { return null; //Item.getItemFromBlock(MercenaryModBlocks.romper); } //###########################################################3 public boolean isOpaqueCube() { return false; } @SideOnly(Side.CLIENT) public EnumWorldBlockLayer getBlockLayer() { return EnumWorldBlockLayer.CUTOUT; } //###########################################################3 public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) { IBlockState bs0 = worldIn.getBlockState(pos.north()); IBlockState bs1 = worldIn.getBlockState(pos.south()); IBlockState bs2 = worldIn.getBlockState(pos.east()); IBlockState bs3 = worldIn.getBlockState(pos.west()); System.out.println("Norte="+bs0.getBlock().getUnlocalizedName()); System.out.println("Sur="+bs1.getBlock().getUnlocalizedName()); System.out.println("Este="+bs2.getBlock().getUnlocalizedName()); System.out.println("Oeste="+bs3.getBlock().getUnlocalizedName()); System.out.println("\n\n\nmundo="+worldIn.isRemote); /* net.minecraft.command.CommandFill fill = new net.minecraft.command.CommandFill(); //String [] comando= {"-136","41","215","-140","44","217","minecraft:glass"}; String [] comando= {"-136","41","215","-140","44","217","minecraft:air","0","destroy"}; try { if (!worldIn.isRemote){fill.execute(playerIn, comando);} } catch (CommandException e) { e.printStackTrace(); } */ return false;} //###########################################################3 public void destruirBlockes(BlockPos pos_entrada,World worldIn_entrada){ //Minecraft mc = Minecraft.getMinecraft(); //EntityPlayer playerIn= mc.thePlayer; int x=pos_entrada.getX(),y=pos_entrada.getY(),z=pos_entrada.getZ(); int xmax=0,xmin=0, ymax=0,ymin=0, zmax=0,zmin=0; IBlockState state_entrada = worldIn_entrada.getBlockState(pos_entrada); Block iblk_entrada=state_entrada.getBlock(); String F=""+state_entrada.getValue(FACING); BlockPos pos1=null; int T=3; //tamaño int C=6; //profundidad if(F.contains("down")){ pos1= new BlockPos(x,(y-1),z); xmax=x+T; xmin=x-T; ymax=y; ymin=y-(T*2)-C; zmax=z+T; zmin=z-T; } if(F.contains("up")){ pos1= new BlockPos(x,(y+1),z); xmax=x+T; xmin=x-T; ymax=y+(T*2)+C; ymin=y; zmax=z+T; zmin=z-T; } if(F.contains("north")){ pos1= new BlockPos(x,y,(z-1)); xmax=x+T; xmin=x-T; ymax=y+T; ymin=y-T; zmax=z; zmin=z-(T*2)-C; } if(F.contains("south")){ pos1= new BlockPos(x,y,(z+1)); xmax=x+T; xmin=x-T; ymax=y+T; ymin=y-T; zmax=z+(T*2)+C; zmin=z; } if(F.contains("east")){ pos1= new BlockPos((x+1),y,z); xmax=x+(T*2)+C; xmin=x; ymax=y+T; ymin=y-T; zmax=z+T; zmin=z-T; } if(F.contains("west")){ pos1= new BlockPos((x-1),y,z); xmax=x; xmin=x-(T*2)-C; ymax=y+T; ymin=y-T; zmax=z+T; zmin=z-T; } for (int dx=xmin ; dx <=xmax ;dx++){ for (int dy=ymin ; dy <=ymax ;dy++){ for (int dz=zmin ; dz <=zmax ;dz++){ BlockPos posx=new BlockPos(dx,dy,dz); worldIn_entrada.destroyBlock(posx, true); }}} worldIn_entrada.newExplosion((Entity)null, x, y, z, 2.0F, true, true); //setDead(); //return comando; } //###########################################################3 public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { EnumFacing cara = getFacingFromEntity(worldIn, pos, placer); worldIn.setBlockState(pos, state.withProperty(FACING, cara.getOpposite()), 2); //worldIn.setBlockState(pos, state.withProperty(FACING, getFacingFromEntity(worldIn, pos, placer)), 2); } //###########################################################3 public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { return this.getDefaultState().withProperty(FACING, getFacingFromEntity(worldIn, pos, placer)); } //###########################################################3 public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos) { IBlockState iblockstate = worldIn.getBlockState(pos); float f = 0.25F; EnumFacing enumfacing = (EnumFacing)iblockstate.getValue(FACING); if (enumfacing != null) { switch (dinamitaParaPerforaciones.SwitchEnumFacing.FACING_LOOKUP[enumfacing.ordinal()]) { case 1: this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.01F, 1.0F); break; case 2: this.setBlockBounds(0.0F, 0.99F, 0.0F, 1.0F, 1.0F, 1.0F); break; case 3: this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.01F); break; case 4: this.setBlockBounds(0.0F, 0.0F, 0.99F, 1.0F, 1.0F, 1.0F); break; case 5: this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.01F, 1.0F, 1.0F); break; case 6: this.setBlockBounds(0.99F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } } else { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } } //###########################################################3 public void setBlockBoundsForItemRender() { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } //###########################################################3 public static EnumFacing getFacingFromEntity(World worldIn, BlockPos clickedBlock, EntityLivingBase entityIn) { if (MathHelper.abs((float)entityIn.posX - (float)clickedBlock.getX()) < 2.0F && MathHelper.abs((float)entityIn.posZ - (float)clickedBlock.getZ()) < 2.0F) { double d0 = entityIn.posY + (double)entityIn.getEyeHeight(); if (d0 - (double)clickedBlock.getY() > 2.0D) { return EnumFacing.UP; } if ((double)clickedBlock.getY() - d0 > 0.0D) { return EnumFacing.DOWN; } } return entityIn.getHorizontalFacing().getOpposite(); } //###########################################################3 @SideOnly(Side.CLIENT) public IBlockState getStateForEntityRender(IBlockState state) { return this.getDefaultState().withProperty(FACING, EnumFacing.UP); } //###########################################################3 protected BlockState createBlockState() { return new BlockState(this, new IProperty[] {FACING}); } //###########################################################3 public int getMetaFromState(IBlockState state) { byte b0 = 0; int i = b0 | ((EnumFacing)state.getValue(FACING)).getIndex(); return i; } //###########################################################3 static final class SwitchEnumFacing { static final int[] FACING_LOOKUP = new int[EnumFacing.values().length]; private static final String __OBFID = "CL_00002037"; static { try { FACING_LOOKUP[EnumFacing.DOWN.ordinal()] = 1; } catch (NoSuchFieldError var6) { ; } try { FACING_LOOKUP[EnumFacing.UP.ordinal()] = 2; } catch (NoSuchFieldError var5) { ; } try { FACING_LOOKUP[EnumFacing.NORTH.ordinal()] = 3; } catch (NoSuchFieldError var4) { ; } try { FACING_LOOKUP[EnumFacing.SOUTH.ordinal()] = 4; } catch (NoSuchFieldError var3) { ; } try { FACING_LOOKUP[EnumFacing.WEST.ordinal()] = 5; } catch (NoSuchFieldError var2) { ; } try { FACING_LOOKUP[EnumFacing.EAST.ordinal()] = 6; } catch (NoSuchFieldError var1) { ; } } } //###########################################################3 /* public void addCollisionBoxesToList(World worldIn, BlockPos pos, IBlockState state, AxisAlignedBB mask, List list, Entity collidingEntity) { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); super.addCollisionBoxesToList(worldIn, pos, state, mask, list, collidingEntity); } */ /* public AxisAlignedBB getCollisionBoundingBox(World worldIn, BlockPos pos, IBlockState state) { this.setBlockBoundsBasedOnState(worldIn, pos); return super.getCollisionBoundingBox(worldIn, pos, state); } */ public boolean isFullCube() { return false; } //###########################################################3 public String getUnlocalizedName(ItemStack stack) { int m= stack.getMetadata(); if (m == 0){return name+"0" ;} if (m == 1){return name+"1" ;} if (m == 2){return name+"2" ;} if (m == 3){return name+"3" ;} if (m == 4){return name+"4" ;} if (m == 5){return name+"5" ;} if (m == 5){return name+"6" ;} if (m == 5){return name+"7" ;} return name+"0"; } @SideOnly(Side.CLIENT) public void getSubItems(Item itemIn, CreativeTabs tab, List subItems) { subItems.add(new ItemStack(itemIn, 1, 0)); subItems.add(new ItemStack(itemIn, 1, 1)); subItems.add(new ItemStack(itemIn, 1, 2)); subItems.add(new ItemStack(itemIn, 1, 3)); subItems.add(new ItemStack(itemIn, 1, 4)); subItems.add(new ItemStack(itemIn, 1, 5)); subItems.add(new ItemStack(itemIn, 1, 6)); subItems.add(new ItemStack(itemIn, 1, 7)); } //###########################################################3 }//fin de la clase Quote Link to comment Share on other sites More sharing options...
Draco18s Posted January 15, 2015 Share Posted January 15, 2015 String F=""+state_entrada.getValue(FACING); if(F.contains("down")){ ... } My god. It's full of Strings. Not to mention static properties. Jesus. Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given. Link to comment Share on other sites More sharing options...
Draco18s Posted January 15, 2015 Share Posted January 15, 2015 Also to add to what Draco said: See point #7 on http://blog.codinghorror.com/new-programming-jargon/ I like that list. My company's website is full of nothing but ducks. Refuctored, hydra-code, ducks. Another one of our programs as at least one loch ness bug, another application has a loch ness bug we know exists but can't reproduce in-house because Apple and iOS 8.0.0/1/2 FUBARed the whole thing ("Of COURSE I upgraded my device to 8.2! What do you think I am, stupid?" "Our tracking code says you're still on 8.0.2, which is broken.") Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given. Link to comment Share on other sites More sharing options...
perromercenary00 Posted January 15, 2015 Author Share Posted January 15, 2015 weel not getting mad but there is thing named google traductor it will gve you what tamaño is and other things in other langs the ticks thing sound interesting ServerTickEvent / WorldTickEvent al ready read http://www.minecraftforum.net/forums/mapping-and-modding/mapping-and-modding-tutorials/1571567-forge-1-6-4-1-8-eventhandler-and and other thinks but from i read, ¿ there is alredy a //Called when the server ticks. Usually 20 ticks a second. @SubscribeEvent public void onServerTick(TickEvent.ServerTickEvent event) { } to use in 1.8 or this must be created? and ?i could do watever i want here , like create in this event class a public static blockArray and fill the whit hundreds of blocks to break then in public void onServerTick(TickEvent.ServerTickEvent event) { if (pass == 0){break all the frist 100 blocks } if (pass == 1){break all the second 100 blocks } soo on soo on pass++ } Quote Link to comment Share on other sites More sharing options...
perromercenary00 Posted January 16, 2015 Author Share Posted January 16, 2015 well the post now become about minecraft events well i read and alredy have create a events class and register it to preinit and have this on console [20:40:44] [server thread/INFO] [sTDOUT]: [mercenarymod.mercenaryEvent:onServerTick:28]: ==============Server tick============== [20:40:44] [server thread/INFO] [sTDOUT]: [mercenarymod.mercenaryEvent:onServerTick:28]: ==============Server tick============== [20:40:44] [server thread/INFO] [sTDOUT]: [mercenarymod.mercenaryEvent:onServerTick:28]: ==============Server tick============== [20:40:44] [Client thread/INFO] [sTDOUT]: [mercenarymod.mercenaryEvent:onClientTick:21]: ==============Client tick============== [20:40:44] [Client thread/INFO] [sTDOUT]: [mercenarymod.mercenaryEvent:onClientTick:21]: ==============Client tick============== [20:40:44] [Client thread/INFO] [sTDOUT]: [mercenarymod.mercenaryEvent:onClientTick:21]: ==============Client tick============== tinking in the posibilities i gona play a few days whit this and see what happen later Quote Link to comment Share on other sites More sharing options...
perromercenary00 Posted January 18, 2015 Author Share Posted January 18, 2015 done alredy it kkeps just one instance of event class runing at same time , its waits like a little more than a second to blow up, if i detonate more packages when is alredy running dont crash but add the new blocks to the list to break and break them but disapoint it is even seting the event class to break one single block per tick it stills lag but you can see how breaks everything one block at time so its gonna have to deal whith the lag and keep explosions the less bigger //###########################################################3 public boolean destroyBlockes(BlockPos pos_initial,World worldIn_initial){ int x=pos_initial.getX(),y=pos_initial.getY(),z=pos_initial.getZ(); int xmax=0,xmin=0, ymax=0,ymin=0, zmax=0,zmin=0; ArrayList<BlockPos> blockes = new ArrayList<BlockPos>(); blockes.clear(); BlockPos pos1=null; int R=2; //sizew //int C=2; //deep //cuadrado xmax=x+R; xmin=x-R; ymax=y+R; ymin=y-R; zmax=z+R; zmin=z-R; for (int dx=xmin ; dx <=xmax ;dx++){ for (int dy=ymin ; dy <=ymax ;dy++){ for (int dz=zmin ; dz <=zmax ;dz++){ BlockPos posx=new BlockPos(dx,dy,dz); IBlockState iblk0=worldIn_initial.getBlockState(posx); Block blk0=iblk0.getBlock(); int Hard=(int)blk0.getBlockHardness(worldIn_initial, posx); if ((Hard > -1 & Hard < 4)||(blk0.equals(Blocks.obsidian))){//ignore to hard except obsidiana blockes.add(posx); //worldIn_initial.destroyBlock(posx, true); } }}} mercenaryEvent.blockes.addAll(blockes); mercenaryEvent.explosions.add(pos_initial); mercenaryEvent.worldIn=worldIn_initial; //worldIn_entrada.newExplosion((Entity)null, x, y, z, 2.0F, true, true); //setDead(); return true; } //###########################################################3 package mercenarymod; import java.util.ArrayList; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.InputEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; // import mercenarymod.mercenaryEvent //mercenaryEvent.blockes; //mercenaryEvent.worldIn; public class mercenaryEvent { int count=0; boolean countwassreset=false; public static ArrayList<BlockPos> blockes = new ArrayList<BlockPos>(); public static ArrayList<BlockPos> explosions = new ArrayList<BlockPos>(); public static World worldIn=null; //Called when the client ticks. @SubscribeEvent public void onClientTick(TickEvent.ClientTickEvent event) { //System.out.println("==============Cliente tick=============="); } //Called when the server ticks. Usually 20 ticks a second. @SubscribeEvent public void onServerTick(TickEvent.ServerTickEvent event) { //System.out.println("==============Servidor tick=============="); if (worldIn!=null){ if (!countwassreset){count=0;countwassreset=true;} int ticks=30; //wait until begin if(count==ticks){//explosiones; int l_explosions=explosions.size(); for (int explotar=0; explotar < l_explosions ; explotar++){ BlockPos poss=explosions.get(explotar); worldIn.newExplosion((Entity)null, poss.getX(), poss.getY(),poss.getZ(), 2.0F, true, true); } } if(count>ticks){ int l_blockes=blockes.size(); System.out.println("blockes has="+l_blockes+" conteo="+count); int T=8; //amount of blocks per tick int bmin=((count-ticks-1)*T) ,bmax=((count-ticks)*T); if ( bmax >= l_blockes ){bmax=(l_blockes-1);} System.out.println("\n break from bmin="+bmin+" to bmax="+bmax); for (int romper=bmin; romper < bmax ; romper++){ BlockPos posx=blockes.get(romper); worldIn.destroyBlock(posx, true); } if ( bmax >= (l_blockes-1) ){worldIn=null;countwassreset=false;blockes.clear();explosions.clear();} } count++; }}} Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.