Jump to content

[1.8]Sending packages whith more complex contens like arrays ??


perromercenary00

Recommended Posts

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

Link to comment
Share on other sites

 

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

 

 

Link to comment
Share on other sites

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	

Link to comment
Share on other sites

ñ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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

}

Link to comment
Share on other sites

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 

 

 

Link to comment
Share on other sites

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

}}}

 

 

 

Link to comment
Share on other sites

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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I've been trying to give a little transparency to a block and a custom model, but I'm running into the same issue with the transparency of the block Some guides say I use ItemBlockRenderTypes.setRenderLayer in a ClientEvent class but its deprecated, I already tried to set a Properties in Properties.copy(Blocks.FLOWERPOT) But the render in game still doesn't has transparency, only as an Item  
    • My friends and I are modding to survive But recently I want to use cmd to open the server instead of making the single player game public But when I used two methods to start the server, I encountered two problems first A I used forge to install the server files Created using the original server jar The server was installed successfully and the mod was also loaded successfully. But after I replaced the world file with my survival map, I found that the mod items inside disappeared but could be taken from creation again. So I tried to install the server using forge first B I have studied forge for a long time but successfully installed it. But when I put in mods it crashed But mods can be installed on the server   我和我的朋友們正在mod為了生存 但是最近我想用cmd打開伺服器而不是把單人遊戲公開 但是當我使用兩種方法啟動伺服器時,我遇到了兩個問題 首先AI使用forge安裝伺服器檔案使用原始伺服器jar 建立伺服器已成功安裝,mod 也已成功載入。但是當我用我的生存地圖替換世界文件後,我發現裡面的mod物品消失了,但可以再次從創建中取出。所以我嘗試先使用forge安裝伺服器,BI研究了forge很久但成功安裝了它。但是當我安裝 mods 時它崩潰了但是 mods 可以安裝在伺服器上 我和我的朋友正在mod生存 但最近我想使用cmd開啟伺服器而不是單人遊戲公開   但是當我使用了兩種方法開啟伺服器時遇到了兩種問題   第1個A 我使用了forge安裝伺服器文件 在使用原版伺服器jar建立    伺服器安裝成功 mod也順利加載  但是我將我的生存地圖替換世界文件後發現裡面的mod物品消失了但可以再次從創造拿取  所以我嘗試使用forge安裝伺服器   第2個B forge我研究了很久但也成功安裝了 但是當我放入 mods 之後發生了崩潰 但是mods在1A伺服器上是可以安裝的 Ps 我用谷歌翻譯 so    
    • That’s probably not it because as I stated I’ve done it before. I did it like deadass 10 - 20 times when trying to learn to make this mod pack because I kept wanting to reset my profiles and such. So it definitely works, it looks like maybe the creephosting files were the things that couldn’t be reached I tried reading the crash log
    • I don't know if this is the right place or not, but I have put together a custom modpack and I am in need of others to help me. It's a questing modpack with a lore book i'm currently writing out through Patchouli, and i am in need of somebody who will assist me in making the quests for the pack. It's a Zombie apocalypse modpack inspired by Deceasedcraft  with a tinge of magic and RPG mechanics via Mine and slash. Is there anybody willing to assist me as i'm one person building a modpack I could also use help with optimizations since that's not really my strong suite. 
    • File a report to SPYRECOVERY36 @ gmail com he can legitimately assist in proper review and recovery of all your assets that was stolen. Endeavor to submit your request for a refund to his mail . He also spy and hack any device remotely without any trace. Contact via spyrecovery36 @ gm ail com  
  • Topics

×
×
  • Create New...

Important Information

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