Jump to content

Recommended Posts

Posted

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 ??

Posted

 

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

 

 

Posted

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	

Posted

ñ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

Posted

String F=""+state_entrada.getValue(FACING);
if(F.contains("down")){ ... }

 

My god.  It's full of Strings.

 

Not to mention static properties.  Jesus.

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.

Posted

Also to add to what Draco said: See point #7 on http://blog.codinghorror.com/new-programming-jargon/

 

I like that list. :D

 

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.")

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.

Posted

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++

}

Posted

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 

 

 

Posted

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++;

}}}

 

 

 

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.