Jump to content

perromercenary00

Members
  • Posts

    849
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by perromercenary00

  1. good days i wanna stun an entity, or at least inpeding this one to move for a couple of seconds this is what i been triying @Override public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) { target.setInWeb(); stack.damageItem(1, attacker); return true; } //############################################################################################3 not work
  2. good nigths im a little newby whit terrain generators and im using the guide from http://www.orangetutorial.com/world-generation/ well i alredy has done this code and im generating a block underground using WorldGenMinable minable = new WorldGenMinable(MercenaryModBlocks.girable.getDefaultState() , (minVeinSize + random.nextInt(maxVeinSize - minVeinSize)) ); actualy a i wanna spwn a block on the surface to spawn and structure from this block what object of WorldGen i must use to spawn a block on the surface ??
  3. good days rest few tings to finalize mi mod now i wanna do armors later i been triying this guide http://bedrockminer.jimdo.com/modding-tutorials/basic-modding-1-7/custom-armor/ but is for 1.7 and this http://www.minecraftforum.net/forums/mapping-and-modding/mapping-and-modding-tutorials/1571540-1-7-x-1-8-forge-making-custom-armor-that-adds alot of doubs let whithin like how the fock i declare the parts and textures some one can point my to a good tutorial to armos in 1.8 ??
  4. i have similar trouble but breaking blocks even breaking a block per tick causes lag and teh funny thing is that i was only doing worldIn.destroyBlock(pos , false); over an arrayList of Blocks
  5. thi is a little out of topic i little extressed whit the thing of the arrow textures, i can see you are making a bow way more complex than mines can you borrow me the code from an working arrow_entity and a their render class to compare them agains the mine this is not the firs time imake this question and i could find whats is wrong http://www.minecraftforge.net/forum/index.php?topic=29503.0
  6. @Override public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack camael) { return false; } @Override public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) { target.attackEntityFrom(DamageSource.generic, 1F); stack.damageItem(1, attacker); return true; }
  7. { "parent": "builtin/generated", "textures": { "layer0": "modmercenario:items/materiales/aceromercenario" }, "display": { "thirdperson": { "rotation": [ -90, 0, 0 ], "translation": [ 0, 1, -3 ], "scale": [ 0.55, 0.55, 0.55 ] }, "gui": { "rotation": [ -90, 0, 0 ], "translation": [ 0, 1, -3 ], "scale": [ 0.55, 0.55, 0.55 ] }, "firstperson": { "rotation": [ 0, -135, 25 ], "translation": [ 0, 4, 2 ], "scale": [ 1.7, 1.7, 1.7 ] } } }
  8. good nigths i have create a custome bow and a pair of custome arrows now the thing is that when the bow shoots mi custom arrows has no texture, but doing some test i discover thah when i shoot the arrow in the onItemRightClick() the arrow have his texture. normaly in the bow code you shoot the arrow in the onPlayerStoppedUsing() method if i do this the arrow has no texture but if iput the code to shoot the arrow in onItemRightClick() method it shoots and the textures work and there is no trouble with vainilla arrow this is the code from the bow it shoot 3 tipes of arrow based in the state of the nbttag "tipomunicion" int tipomunicion = getInttag(arco, "tipomunicion"); 0 is no arrow 1 is vainilla arrow 2 is mercenaryArrow 3 is mercenary Explosive arrow lineas 108 208 package mercenarymod.items.arcos; import java.util.ArrayList; import java.util.List; import mercenarymod.Mercenary; import mercenarymod.items.MercenaryModItems; import mercenarymod.items.render.renderFlechaMercenaria; import mercenarymod.utilidades.chat; import mercenarymod.utilidades.nbtMercenaria; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.stats.StatList; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class arcoMercenarioDeMadera extends Item { //#########################################################################3 public arcoMercenarioDeMadera() { String name = "arcoMercenarioDeMadera"; setUnlocalizedName(Mercenary.MODID + "_" + name); GameRegistry.registerItem(this, name); setCreativeTab(Mercenary.herramientas); this.maxStackSize = 1; this.setMaxDamage(384); } //####################################################################################3 @Override public ModelResourceLocation getModel(ItemStack arco, EntityPlayer playerIn, int useRemaining){ ModelResourceLocation modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera", "inventory") ; int tick; tick=(1000-useRemaining); if (tick>999){tick=0;} int tipomunicion = getInttag(arco, "tipomunicion"); switch(tipomunicion){ default:{ if (tick > 0 & tick < 8 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A00", "inventory");} if (tick > 7 & tick < 16 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A01", "inventory") ;} if (tick > 15 & tick < 30 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A02", "inventory") ;} if (tick > 29 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A03", "inventory") ;} }break; case 1:{ if (tick > 0 & tick < 8 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A00", "inventory");} if (tick > 7 & tick < 16 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A01_vainilla", "inventory") ;} if (tick > 15 & tick < 30 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A02_vainilla", "inventory") ;} if (tick > 29 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A03_vainilla", "inventory") ;} }break; case 2:{ if (tick > 0 & tick < 8 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A00", "inventory");} if (tick > 7 & tick < 16 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A01_mercenaria", "inventory") ;} if (tick > 15 & tick < 30 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A02_mercenaria", "inventory") ;} if (tick > 29 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A03_mercenaria", "inventory") ;} }break; case 3:{ if (tick > 0 & tick < 8 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A00", "inventory");} if (tick > 7 & tick < 16 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A01_mercenariaExplosiva", "inventory") ;} if (tick > 15 & tick < 30 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A02_mercenariaExplosiva", "inventory") ;} if (tick > 29 ){modelresourcelocation = new ModelResourceLocation("modmercenario:arcos/arcodemadera/arcoMercenarioDeMadera_A03_mercenariaExplosiva", "inventory") ;} }break; } return modelresourcelocation; } //####################################################################################3 @Override public ItemStack onItemRightClick(ItemStack arco, World worldIn, EntityPlayer playerIn) { playerIn.setItemInUse(arco, this.getMaxItemUseDuration(arco)); //#################### // HERE this arrow has texture //#################### // if (!worldIn.isRemote){ mercenarymod.items.arcos.flechaMercenaria_entity flechaM = new mercenarymod.items.arcos.flechaMercenaria_entity(worldIn,playerIn,1); worldIn.spawnEntityInWorld(flechaM); } return arco; } // ######################################################################################3 public String getUnlocalizedName(ItemStack stack) { // return "escopetaWinchester1200"; switch (stack.getMetadata()) { default: return "arcoMercenarioDeMadera"; case 1: case 2: case 3: return "arcoMercenarioDeMadera"; case 4: case 5: case 6: return "arcoMercenarioDeMadera"; case 7: case 8: case 9: return "arcoMercenarioDeMadera"; } } // ############################################################################################3 @SideOnly(Side.CLIENT) public void getSubItems(Item itemIn, CreativeTabs tab, List subItems) { subItems.add(new ItemStack(itemIn, 1, 1)); //subItems.add(new ItemStack(itemIn, 1, 4)); } //####################################################################################3 @Override public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack arco) { World worldIn = entityLiving.getEntityWorld(); if (!worldIn.isRemote){ EntityPlayer playerIn = (EntityPlayer) entityLiving; mercenarymod.items.arcos.flechaMercenaria_entity flechaM = new mercenarymod.items.arcos.flechaMercenaria_entity(worldIn,playerIn,1); worldIn.spawnEntityInWorld(flechaM); } return false; } //####################################################################################3 @Override public void onUsingTick(ItemStack arco, EntityPlayer playerIn, int count) { int tick; tick=1000-count; int ciclo=8; if (tick == 1) { boolean shoot = getBooleantag(arco, "shoot"); if (!shoot) { playerIn.stopUsingItem(); } } } //#################################################################################################3 public void disparo(EntityPlayer playerIn,World worldIn,ItemStack arco, float fuerza){ //chat.chatm(playerIn, "disparo"); }//fin del methodo //#################################################################################################3 @Override public void onPlayerStoppedUsing(ItemStack arco, World worldIn, EntityPlayer playerIn, int timeLeft) { int tick; if (timeLeft>970){tick=30-(timeLeft-970);} else {tick=30;} float f=((tick/30F)*2.0F); if (!worldIn.isRemote){ ArrayList<Integer> flechasCantidad = new ArrayList<Integer>(); flechasCantidad.clear(); boolean habilitado=true; boolean shoot = getBooleantag(arco, "shoot"); int municiondisponible=0; int tipomunicion = getInttag(arco, "tipomunicion"); int tipomunicionmax = getInttag(arco, "tipomunicionmax"); int tipomunicionmin = getInttag(arco, "tipomunicionmin"); boolean w00=true; int cont=0; Item flecha=null; Item flecha1=Items.arrow; Item flecha2=MercenaryModItems.flechaMercenaria; Item flecha3=MercenaryModItems.flechaMercenariaExplosiva; switch(tipomunicion) { case 1: flecha=flecha1;break; case 2: flecha=flecha2;break; case 3: flecha=flecha3;break; } boolean fl1 = playerIn.inventory.hasItem(flecha1); boolean fl2 = playerIn.inventory.hasItem(flecha2); boolean fl3 = playerIn.inventory.hasItem(flecha3); if ( fl1 | fl2 | fl3 ) {} else { tipomunicion=0; setInttag(arco, "tipomunicion", tipomunicion ); } //mandar a disparar if ( habilitado & !shoot ){ setBooleantag(arco, "shoot", true); habilitado=false; } //############################## // //HERE is the code to shoot the arrow //############################## //shoot this arrows has no texture //disparo if ( habilitado & shoot & (tick > 2) ){ int spell0 = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, arco); int spell1 = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, arco); int spell2 = EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, arco); if (flecha != null) { switch(tipomunicion){ // flecha vainilla case 1: { EntityArrow entityarrow = new EntityArrow(worldIn, playerIn, f ); if (spell0 > 0){entityarrow.setDamage(entityarrow.getDamage() + (double)spell0 * 0.5D + 0.5D);} if (spell1 > 0){entityarrow.setKnockbackStrength(spell1);} if (spell2 > 0){entityarrow.setFire(100);} worldIn.spawnEntityInWorld(entityarrow); };break; case 2: { mercenarymod.items.arcos.flechaMercenaria_entity flechaM = new mercenarymod.items.arcos.flechaMercenaria_entity(worldIn,playerIn,f); if (spell0 > 0){flechaM.setDamage(flechaM.getDamage() + (double)spell0 * 0.5D + 0.5D);} if (spell1 > 0){flechaM.setKnockbackStrength(spell1);} if (spell2 > 0){flechaM.setFire(100);} worldIn.spawnEntityInWorld(flechaM); };break; case 3: { mercenarymod.items.arcos.flechaMercenariaExplosiva_entity flechaX = new mercenarymod.items.arcos.flechaMercenariaExplosiva_entity(worldIn,playerIn,f); if (spell0 > 0){flechaX.setDamage(flechaX.getDamage() + (double)spell0 * 0.5D + 0.5D);} if (spell1 > 0){flechaX.setKnockbackStrength(spell1);} if (spell2 > 0){flechaX.setFire(100);} worldIn.spawnEntityInWorld(flechaX); };break; } playerIn.inventory.consumeInventoryItem(flecha); } arco.damageItem(1, playerIn);//dañar con el uso setBooleantag(arco, "shoot", false); worldIn.playSoundAtEntity(playerIn, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + 0.5F); }//fin de disparar }//fin de (!worldIn.isRemote) } //#################################################################################################3 @Override public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityPlayer playerIn) { return stack; } //#################################################################################################3 public int getMaxItemUseDuration(ItemStack stack) { return 1000; } //#################################################################################################3 @Override public EnumAction getItemUseAction(ItemStack stack) { return EnumAction.BOW; } //#########################################################################3 public static ArrayList<Integer> cuantosHayCuantosCaben(EntityPlayer playerIn, Item cosa) { ArrayList<Integer> salida = new ArrayList<Integer>(); ArrayList<Integer> vacio = new ArrayList<Integer>(); ArrayList<Integer> conteos = new ArrayList<Integer>(); conteos.clear(); vacio.clear(); vacio.add(0); salida.clear(); salida.add(0); int cantidad=0; int invSize = (playerIn.inventory.getSizeInventory()) - 4; ItemStack invStack = null; Item invItem = null; for (int invSlot = 0 ; invSlot < invSize ; invSlot++) { invStack=playerIn.inventory.getStackInSlot(invSlot); if (invStack != null) { invItem=invStack.getItem(); if (invItem.equals(cosa)) { salida.add(invSlot); cantidad += (invStack.stackSize); } } else { vacio.add(invSlot); } } salida.set(0, cantidad); vacio.set(0, ( vacio.size() - 1) ); int maxStaacksize = cosa.getItemStackLimit(); int cantidadUbicable= ((( salida.size() - 1) * maxStaacksize) - cantidad) + ( maxStaacksize * (vacio.get(0)) ) ; //chat.chatda(playerIn, "cantidadUbicable="+cantidadUbicable ); //chat.chatda(playerIn, "vacios="+(vacio.get(0)) ); conteos.add(cantidad); conteos.add(cantidadUbicable); return conteos; } // ########################################################################3 public void onCreated(ItemStack arco, World worldIn, EntityPlayer playerIn) { intialize(arco, playerIn); } // #########################################################################3 public static void intialize(ItemStack arco, EntityPlayer playerIn) { // System.out.println("#\n#\n#\n Incializacion"); int mm = 0; int tp = 0; switch (arco.getMetadata()) { default:mm = 0;break; case 1: case 2: case 3: mm = 1; tp = 1;break; case 4: case 5: case 6: mm = 1; tp = 2;break; case 7: case 8: case 9: mm = 1; tp = 3;break; } int m = 0; switch (arco.getMetadata()) { default: m = 0; break; case 1: case 4: case 7: m = 0;break; case 2: case 5: case 8: m = mm / 2; break; case 3: case 6: case 9: m = mm;break; } setInttag(arco, "texturajson", 0); setInttag(arco, "municion", m); setInttag(arco, "municionmaxima", mm); setInttag(arco, "municiondisponible", 0); setInttag(arco, "ciclosMaximos", 0); setInttag(arco, "tipomunicion", 1); setInttag(arco, "tipomunicionmax", 3); setInttag(arco, "tipomunicionmin", 1); setInttag(arco, "tipocargador", tp); setInttag(arco, "tipocargadormax", 0); setInttag(arco, "tipocargadorcambio", 0); setInttag(arco, "tipodisparo", 0); setInttag(arco, "tipodisparomax", 0); setBooleantag(arco, "reload", false); setBooleantag(arco, "shoot", false); setBooleantag(arco, "unload", false); setBooleantag(arco, "cargar", false); setBooleantag(arco, "descargar", false); setFloattag(arco, "strength", 0.0F); setBooleantag(arco, "enable", true); setBooleantag(arco, "inicializado", true); } // #########################################################################3 public static float getFloattag(ItemStack item, String tag) { NBTTagCompound etiquetas = item.getTagCompound(); if (etiquetas == null) { etiquetas = new NBTTagCompound(); item.setTagCompound(etiquetas); return 999.9F; } float ex = etiquetas.getFloat(tag); return ex; } // #########################################################################3 public static void setFloattag(ItemStack item, String tag, float value) { NBTTagCompound etiquetas = item.getTagCompound(); if (etiquetas == null) { etiquetas = new NBTTagCompound(); } etiquetas.setFloat(tag, value); item.setTagCompound(etiquetas); } // #########################################################################3 public static int getInttag(ItemStack item, String tag) { NBTTagCompound etiquetas = item.getTagCompound(); if (etiquetas == null) { etiquetas = new NBTTagCompound(); item.setTagCompound(etiquetas); return 9999; } int ex = etiquetas.getInteger(tag); return ex; } // #########################################################################3 public static void setInttag(ItemStack item, String tag, int value) { NBTTagCompound etiquetas = item.getTagCompound(); if (etiquetas == null) { etiquetas = new NBTTagCompound(); } etiquetas.setInteger(tag, value); item.setTagCompound(etiquetas); } // #########################################################################3 public static Boolean getBooleantag(ItemStack item, String tag) { NBTTagCompound etiquetas = item.getTagCompound(); if (etiquetas == null) { etiquetas = new NBTTagCompound(); item.setTagCompound(etiquetas); return false; } boolean ex = etiquetas.getBoolean(tag); return ex; } // #########################################################################3 public static void setBooleantag(ItemStack item, String tag, boolean value) { NBTTagCompound etiquetas = item.getTagCompound(); if (etiquetas == null) { etiquetas = item.getTagCompound(); } etiquetas.setBoolean(tag, value); item.setTagCompound(etiquetas); } // #########################################################################3 public int getItemEnchantability() { return 1; } //#########################################################################3 @SideOnly(Side.CLIENT) public void addInformation(ItemStack arco, EntityPlayer playerIn, List list, boolean aBoolean) { int municion =getInttag(arco, "municion"); if((municion>9998)||(municion<0)){ intialize(arco, playerIn); } String lore="municion="+municion; String lore0=""; String lore1="ControlClick to change arrow type"; switch(getInttag(arco, "tipomunicion")){ default: lore0="tipo de flechas=No hay flechas";break; case 1: lore0="tipo de flechas=flechas de madera";break; case 2: lore0="tipo de flechas=flechas de carbono";break; case 3: lore0="tipo de flechas=flechas de carbono explosivas";break; } if(lore != "") { list.add(lore); list.add(lore0); list.add(lore1); } } //#########################################################################3 } [!code] ClientProxy.java [code] @Override public void init() { System.out.println("########\n\n\n ClientProxy init()"); mercenarymod.MercenaryModTexturas.init(); mercenarymod.MercenaryModTexturasBlockes.init(); RenderingRegistry.registerEntityRenderingHandler(mercenarymod.items.prueba.proyectilPapa_entity.class , new mercenarymod.items.prueba.renderPapa(Minecraft.getMinecraft().getRenderManager(), MercenaryModItems.papa, Minecraft.getMinecraft().getRenderItem() ) ); RenderingRegistry.registerEntityRenderingHandler(mercenarymod.items.arcos.flechaPrueba.class , new mercenarymod.items.arcos.renderFlechaPrueba(Minecraft.getMinecraft().getRenderManager() ) ); RenderingRegistry.registerEntityRenderingHandler(mercenarymod.items.arcos.flechaMercenaria_entity.class , new mercenarymod.items.arcos.flechaMercenaria_render(Minecraft.getMinecraft().getRenderManager() ) ); RenderingRegistry.registerEntityRenderingHandler(mercenarymod.items.arcos.flechaMercenariaExplosiva_entity.class , new mercenarymod.items.arcos.flechaMercenariaExplosiva_render(Minecraft.getMinecraft().getRenderManager() ) ); } flechaMercenaria_entity.java package mercenarymod.items.arcos; import java.util.List; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IProjectile; import net.minecraft.entity.monster.EntityEnderman; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.play.server.S2BPacketChangeGameState; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class flechaMercenaria_entity extends Entity implements IProjectile { private int xTile = -1; private int yTile = -1; private int zTile = -1; private Block inTile; private int inData; private boolean inGround; /** 1 if the player can pick up the arrow */ public int canBePickedUp; /** Seems to be some sort of timer for animating an arrow. */ public int arrowShake; /** The owner of this arrow. */ public Entity shootingEntity; private int ticksInGround; private int ticksInAir; private double damage = 2.0D; /** The amount of knockback an arrow applies when it hits a mob. */ private int knockbackStrength; //private static final String __OBFID = "CL_00001715"; public flechaMercenaria_entity(World worldIn) { super(worldIn); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); } public flechaMercenaria_entity(World worldIn, double x, double y, double z) { super(worldIn); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); this.setPosition(x, y, z); } public flechaMercenaria_entity(World worldIn, EntityLivingBase shooter, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) { super(worldIn); this.renderDistanceWeight = 10.0D; this.shootingEntity = shooter; if (shooter instanceof EntityPlayer) { this.canBePickedUp = 1; } this.posY = shooter.posY + (double)shooter.getEyeHeight() - 0.10000000149011612D; double d0 = p_i1755_3_.posX - shooter.posX; double d1 = p_i1755_3_.getEntityBoundingBox().minY + (double)(p_i1755_3_.height / 3.0F) - this.posY; double d2 = p_i1755_3_.posZ - shooter.posZ; double d3 = (double)MathHelper.sqrt_double(d0 * d0 + d2 * d2); if (d3 >= 1.0E-7D) { float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); double d4 = d0 / d3; double d5 = d2 / d3; this.setLocationAndAngles(shooter.posX + d4, this.posY, shooter.posZ + d5, f2, f3); float f4 = (float)(d3 * 0.20000000298023224D); this.setThrowableHeading(d0, d1 + (double)f4, d2, p_i1755_4_, p_i1755_5_); } } public flechaMercenaria_entity(World worldIn, EntityLivingBase shooter, float p_i1756_3_) { super(worldIn); this.renderDistanceWeight = 10.0D; this.shootingEntity = shooter; if (shooter instanceof EntityPlayer) { this.canBePickedUp = 1; } this.setSize(0.5F, 0.5F); this.setLocationAndAngles(shooter.posX, shooter.posY + (double)shooter.getEyeHeight(), shooter.posZ, shooter.rotationYaw, shooter.rotationPitch); this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); this.posY -= 0.10000000149011612D; this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); this.setPosition(this.posX, this.posY, this.posZ); this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); } protected void entityInit() { this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); } /** * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. * * @param inaccuracy Higher means more error. */ public void setThrowableHeading(double x, double y, double z, float velocity, float inaccuracy) { float f2 = MathHelper.sqrt_double(x * x + y * y + z * z); x /= (double)f2; y /= (double)f2; z /= (double)f2; x += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)inaccuracy; y += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)inaccuracy; z += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)inaccuracy; x *= (double)velocity; y *= (double)velocity; z *= (double)velocity; this.motionX = x; this.motionY = y; this.motionZ = z; float f3 = MathHelper.sqrt_double(x * x + z * z); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(x, z) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(y, (double)f3) * 180.0D / Math.PI); this.ticksInGround = 0; } @SideOnly(Side.CLIENT) public void func_180426_a(double p_180426_1_, double p_180426_3_, double p_180426_5_, float p_180426_7_, float p_180426_8_, int p_180426_9_, boolean p_180426_10_) { this.setPosition(p_180426_1_, p_180426_3_, p_180426_5_); this.setRotation(p_180426_7_, p_180426_8_); } /** * Sets the velocity to the args. Args: x, y, z */ @SideOnly(Side.CLIENT) public void setVelocity(double x, double y, double z) { this.motionX = x; this.motionY = y; this.motionZ = z; if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { float f = MathHelper.sqrt_double(x * x + z * z); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(x, z) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(y, (double)f) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch; this.prevRotationYaw = this.rotationYaw; this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); this.ticksInGround = 0; } } /** * Called to update the entity's position/logic. */ public void onUpdate() { super.onUpdate(); if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); } BlockPos blockpos = new BlockPos(this.xTile, this.yTile, this.zTile); IBlockState iblockstate = this.worldObj.getBlockState(blockpos); Block block = iblockstate.getBlock(); if (block.getMaterial() != Material.air) { block.setBlockBoundsBasedOnState(this.worldObj, blockpos); AxisAlignedBB axisalignedbb = block.getCollisionBoundingBox(this.worldObj, blockpos, iblockstate); if (axisalignedbb != null && axisalignedbb.isVecInside(new Vec3(this.posX, this.posY, this.posZ))) { this.inGround = true; } } if (this.arrowShake > 0) { --this.arrowShake; } if (this.inGround) { int j = block.getMetaFromState(iblockstate); if (block == this.inTile && j == this.inData) { ++this.ticksInGround; if (this.ticksInGround >= 1200) { this.setDead(); } } else { this.inGround = false; this.motionX *= (double)(this.rand.nextFloat() * 0.2F); this.motionY *= (double)(this.rand.nextFloat() * 0.2F); this.motionZ *= (double)(this.rand.nextFloat() * 0.2F); this.ticksInGround = 0; this.ticksInAir = 0; } } else { ++this.ticksInAir; Vec3 vec31 = new Vec3(this.posX, this.posY, this.posZ); Vec3 vec3 = new Vec3(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); MovingObjectPosition movingobjectposition = this.worldObj.rayTraceBlocks(vec31, vec3, false, true, false); vec31 = new Vec3(this.posX, this.posY, this.posZ); vec3 = new Vec3(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); if (movingobjectposition != null) { vec3 = new Vec3(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); } Entity entity = null; List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.getEntityBoundingBox().addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); double d0 = 0.0D; int i; float f1; for (i = 0; i < list.size(); ++i) { Entity entity1 = (Entity)list.get(i); if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) { f1 = 0.3F; AxisAlignedBB axisalignedbb1 = entity1.getEntityBoundingBox().expand((double)f1, (double)f1, (double)f1); MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); if (movingobjectposition1 != null) { double d1 = vec31.distanceTo(movingobjectposition1.hitVec); if (d1 < d0 || d0 == 0.0D) { entity = entity1; d0 = d1; } } } } if (entity != null) { movingobjectposition = new MovingObjectPosition(entity); } if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) { EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) { movingobjectposition = null; } } float f2; float f3; float f4; if (movingobjectposition != null) { if (movingobjectposition.entityHit != null) { f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); int k = MathHelper.ceiling_double_int((double)f2 * this.damage); if (this.getIsCritical()) { k += this.rand.nextInt(k / 2 + 2); } DamageSource damagesource; if (this.shootingEntity == null) { damagesource = DamageSource.causeThrownDamage(this, this); } else { damagesource = DamageSource.causeThrownDamage(this, this.shootingEntity); } if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman)) { movingobjectposition.entityHit.setFire(5); } if (movingobjectposition.entityHit.attackEntityFrom(damagesource, (float)k)) { if (movingobjectposition.entityHit instanceof EntityLivingBase) { EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; if (!this.worldObj.isRemote) { entitylivingbase.setArrowCountInEntity(entitylivingbase.getArrowCountInEntity() + 1); } if (this.knockbackStrength > 0) { f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); if (f4 > 0.0F) { movingobjectposition.entityHit.addVelocity(this.motionX * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4, 0.1D, this.motionZ * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4); } } if (this.shootingEntity instanceof EntityLivingBase) { EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); } if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) { ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); } } this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F)); if (!(movingobjectposition.entityHit instanceof EntityEnderman)) { this.setDead(); } } else { this.motionX *= -0.10000000149011612D; this.motionY *= -0.10000000149011612D; this.motionZ *= -0.10000000149011612D; this.rotationYaw += 180.0F; this.prevRotationYaw += 180.0F; this.ticksInAir = 0; } } else { BlockPos blockpos1 = movingobjectposition.getBlockPos(); this.xTile = blockpos1.getX(); this.yTile = blockpos1.getY(); this.zTile = blockpos1.getZ(); iblockstate = this.worldObj.getBlockState(blockpos1); this.inTile = iblockstate.getBlock(); this.inData = this.inTile.getMetaFromState(iblockstate); this.motionX = (double)((float)(movingobjectposition.hitVec.xCoord - this.posX)); this.motionY = (double)((float)(movingobjectposition.hitVec.yCoord - this.posY)); this.motionZ = (double)((float)(movingobjectposition.hitVec.zCoord - this.posZ)); f3 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); this.posX -= this.motionX / (double)f3 * 0.05000000074505806D; this.posY -= this.motionY / (double)f3 * 0.05000000074505806D; this.posZ -= this.motionZ / (double)f3 * 0.05000000074505806D; this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F)); this.inGround = true; this.arrowShake = 7; this.setIsCritical(false); if (this.inTile.getMaterial() != Material.air) { this.inTile.onEntityCollidedWithBlock(this.worldObj, blockpos1, iblockstate, this); } } } if (this.getIsCritical()) { for (i = 0; i < 4; ++i) { this.worldObj.spawnParticle(EnumParticleTypes.CRIT, this.posX + this.motionX * (double)i / 4.0D, this.posY + this.motionY * (double)i / 4.0D, this.posZ + this.motionZ * (double)i / 4.0D, -this.motionX, -this.motionY + 0.2D, -this.motionZ, new int[0]); } } this.posX += this.motionX; this.posY += this.motionY; this.posZ += this.motionZ; f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f2) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { ; } while (this.rotationPitch - this.prevRotationPitch >= 180.0F) { this.prevRotationPitch += 360.0F; } while (this.rotationYaw - this.prevRotationYaw < -180.0F) { this.prevRotationYaw -= 360.0F; } while (this.rotationYaw - this.prevRotationYaw >= 180.0F) { this.prevRotationYaw += 360.0F; } this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; f3 = 0.99F; f1 = 0.05F; if (this.isInWater()) { for (int l = 0; l < 4; ++l) { f4 = 0.25F; this.worldObj.spawnParticle(EnumParticleTypes.WATER_BUBBLE, this.posX - this.motionX * (double)f4, this.posY - this.motionY * (double)f4, this.posZ - this.motionZ * (double)f4, this.motionX, this.motionY, this.motionZ, new int[0]); } f3 = 0.6F; } if (this.isWet()) { this.extinguish(); } this.motionX *= (double)f3; this.motionY *= (double)f3; this.motionZ *= (double)f3; this.motionY -= (double)f1; this.setPosition(this.posX, this.posY, this.posZ); this.doBlockCollisions(); } } /** * (abstract) Protected helper method to write subclass entity data to NBT. */ public void writeEntityToNBT(NBTTagCompound tagCompound) { tagCompound.setShort("xTile", (short)this.xTile); tagCompound.setShort("yTile", (short)this.yTile); tagCompound.setShort("zTile", (short)this.zTile); tagCompound.setShort("life", (short)this.ticksInGround); ResourceLocation resourcelocation = (ResourceLocation)Block.blockRegistry.getNameForObject(this.inTile); tagCompound.setString("inTile", resourcelocation == null ? "" : resourcelocation.toString()); tagCompound.setByte("inData", (byte)this.inData); tagCompound.setByte("shake", (byte)this.arrowShake); tagCompound.setByte("inGround", (byte)(this.inGround ? 1 : 0)); tagCompound.setByte("pickup", (byte)this.canBePickedUp); tagCompound.setDouble("damage", this.damage); } /** * (abstract) Protected helper method to read subclass entity data from NBT. */ public void readEntityFromNBT(NBTTagCompound tagCompund) { this.xTile = tagCompund.getShort("xTile"); this.yTile = tagCompund.getShort("yTile"); this.zTile = tagCompund.getShort("zTile"); this.ticksInGround = tagCompund.getShort("life"); if (tagCompund.hasKey("inTile", ) { this.inTile = Block.getBlockFromName(tagCompund.getString("inTile")); } else { this.inTile = Block.getBlockById(tagCompund.getByte("inTile") & 255); } this.inData = tagCompund.getByte("inData") & 255; this.arrowShake = tagCompund.getByte("shake") & 255; this.inGround = tagCompund.getByte("inGround") == 1; if (tagCompund.hasKey("damage", 99)) { this.damage = tagCompund.getDouble("damage"); } if (tagCompund.hasKey("pickup", 99)) { this.canBePickedUp = tagCompund.getByte("pickup"); } else if (tagCompund.hasKey("player", 99)) { this.canBePickedUp = tagCompund.getBoolean("player") ? 1 : 0; } } /** * Called by a player entity when they collide with an entity */ public void onCollideWithPlayer(EntityPlayer entityIn) { if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0) { boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && entityIn.capabilities.isCreativeMode; if (this.canBePickedUp == 1 && !entityIn.inventory.addItemStackToInventory(new ItemStack(Items.arrow, 1))) { flag = false; } if (flag) { this.playSound("random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F); entityIn.onItemPickup(this, 1); this.setDead(); } } } /** * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to * prevent them from trampling crops */ protected boolean canTriggerWalking() { return false; } public void setDamage(double p_70239_1_) { this.damage = p_70239_1_; } public double getDamage() { return this.damage; } /** * Sets the amount of knockback the arrow applies when it hits a mob. */ public void setKnockbackStrength(int p_70240_1_) { this.knockbackStrength = p_70240_1_; } /** * If returns false, the item will not inflict any damage against entities. */ public boolean canAttackWithItem() { return false; } /** * Whether the arrow has a stream of critical hit particles flying behind it. */ public void setIsCritical(boolean p_70243_1_) { byte b0 = this.dataWatcher.getWatchableObjectByte(16); if (p_70243_1_) { this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); } else { this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); } } /** * Whether the arrow has a stream of critical hit particles flying behind it. */ public boolean getIsCritical() { byte b0 = this.dataWatcher.getWatchableObjectByte(16); return (b0 & 1) != 0; } } flechaMercenaria_render.java package mercenarymod.items.arcos; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; import mercenarymod.items.arcos.flechaMercenaria_entity; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; @SideOnly(Side.CLIENT) public class flechaMercenaria_render extends Render { private static final ResourceLocation arrowTextures = new ResourceLocation("modmercenario:textures/entity/mercenaryArrow.png"); //private static final String __OBFID = "CL_00000978"; public flechaMercenaria_render(RenderManager p_i46193_1_) { super(p_i46193_1_); } public void doRender(flechaMercenaria_entity p_180551_1_, double p_180551_2_, double p_180551_4_, double p_180551_6_, float p_180551_8_, float p_180551_9_) { this.bindEntityTexture(p_180551_1_); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.pushMatrix(); GlStateManager.translate((float)p_180551_2_, (float)p_180551_4_, (float)p_180551_6_); GlStateManager.rotate(p_180551_1_.prevRotationYaw + (p_180551_1_.rotationYaw - p_180551_1_.prevRotationYaw) * p_180551_9_ - 90.0F, 0.0F, 1.0F, 0.0F); GlStateManager.rotate(p_180551_1_.prevRotationPitch + (p_180551_1_.rotationPitch - p_180551_1_.prevRotationPitch) * p_180551_9_, 0.0F, 0.0F, 1.0F); Tessellator tessellator = Tessellator.getInstance(); WorldRenderer worldrenderer = tessellator.getWorldRenderer(); byte b0 = 0; float f2 = 0.0F; float f3 = 0.5F; float f4 = (float)(0 + b0 * 10) / 32.0F; float f5 = (float)(5 + b0 * 10) / 32.0F; float f6 = 0.0F; float f7 = 0.15625F; float f8 = (float)(5 + b0 * 10) / 32.0F; float f9 = (float)(10 + b0 * 10) / 32.0F; float f10 = 0.05625F; GlStateManager.enableRescaleNormal(); float f11 = (float)p_180551_1_.arrowShake - p_180551_9_; if (f11 > 0.0F) { float f12 = -MathHelper.sin(f11 * 3.0F) * f11; GlStateManager.rotate(f12, 0.0F, 0.0F, 1.0F); } GlStateManager.rotate(45.0F, 1.0F, 0.0F, 0.0F); GlStateManager.scale(f10, f10, f10); GlStateManager.translate(-4.0F, 0.0F, 0.0F); GL11.glNormal3f(f10, 0.0F, 0.0F); worldrenderer.startDrawingQuads(); worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f8); worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f8); worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f9); worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f9); tessellator.draw(); GL11.glNormal3f(-f10, 0.0F, 0.0F); worldrenderer.startDrawingQuads(); worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f8); worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f8); worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f9); worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f9); tessellator.draw(); for (int i = 0; i < 4; ++i) { GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F); GL11.glNormal3f(0.0F, 0.0F, f10); worldrenderer.startDrawingQuads(); worldrenderer.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)f2, (double)f4); worldrenderer.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)f3, (double)f4); worldrenderer.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)f3, (double)f5); worldrenderer.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)f2, (double)f5); tessellator.draw(); } GlStateManager.disableRescaleNormal(); GlStateManager.popMatrix(); super.doRender(p_180551_1_, p_180551_2_, p_180551_4_, p_180551_6_, p_180551_8_, p_180551_9_); } protected ResourceLocation getEntityTexture(flechaMercenaria_entity p_180550_1_) { return arrowTextures; } /** * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. */ protected ResourceLocation getEntityTexture(Entity entity) { return this.getEntityTexture((flechaMercenaria_entity)entity); } /** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity>) and this method has signature public void func_76986_a(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doe */ public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float partialTicks) { this.doRender((flechaMercenaria_entity)entity, x, y, z, p_76986_8_, partialTicks); } }
  9. this blocks in 1.8 has become a little anfractuous (complicadito) to get it work but its done // ######################################################################################3 @Override public ItemStack onItemRightClick(ItemStack lingote, World worldIn,EntityPlayer playerIn) { if (!worldIn.isRemote) { MovingObjectPosition mov = Minecraft.getMinecraft().objectMouseOver; BlockPos pos = mov.getBlockPos(); EnumFacing sid= mov.sideHit; IBlockState blkst = worldIn.getBlockState(pos); Block blk = blkst.getBlock(); Block caldero = Blocks.cauldron; IBlockState calderost=caldero.getDefaultState(); if (blk == caldero ) { PropertyInteger LEVEL = PropertyInteger.create("level", 0, 3); int levelInt = (Integer) blkst.getValue(BlockCauldron.LEVEL) ; if ( levelInt > 0 ) { worldIn.spawnEntityInWorld(new EntityItem(worldIn, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(MercenaryModItems.aceroMercenario, 1, 0))); worldIn.playSoundAtEntity(playerIn, "modmercenario:extingir", 1.0F, 1.0F ); playerIn.inventory.consumeInventoryItem(MercenaryModItems.hierroAlrojo); } levelInt--; if (levelInt < 0) { levelInt=0; } worldIn.setBlockState(pos, calderost.withProperty(LEVEL, Integer.valueOf(levelInt)) ); } }// is ! remote playerIn.setItemInUse(lingote, this.getMaxItemUseDuration(lingote)); return lingote; } // ####################################################################################3 [/code]
  10. well how do you instantiate that the get the value as a int thaths the part i dont get int level = blkst.LEVEL.getValue(); //wrong int level = blkst.getValue(blkst.LEVEL); //wrong
  11. i been doing experimets whith this and has fixed almost everything i need to fix the only remaing ting is textures
  12. goods i been doing somethings whith blocks but alredy dont get how properties work i make some hot item and want to cool them rigth clickin and filled cauldrun in this case a wanna get if the cauldrun has water but has not realize how to get the value of a properti from a block here im doing // ########################################################################3 @Override public ItemStack onItemUseFinish(ItemStack lingote, World worldIn, EntityPlayer playerIn) { if (!worldIn.isRemote) { MovingObjectPosition mov = Minecraft.getMinecraft().objectMouseOver; BlockPos pos = mov.getBlockPos(); EnumFacing sid= mov.sideHit; IBlockState blkst = worldIn.getBlockState(pos); Block blk = blkst.getBlock(); chat.chatm(playerIn, "Block="+blk.getUnlocalizedName()); chat.chatm(playerIn, "BlockState="+blkst.getPropertyNames() ); //level = blkst.getValue(property); //Block caldero = Blocks.cauldron; //if (blk == caldero) }// is ! remote return lingote; } // ########################################################################3 this return [11:09:58] [Client thread/INFO]: [CHAT] Block=tile.cauldron [11:09:58] [Client thread/INFO]: [CHAT] BlockState=[PropertyInteger{name=level, clazz=class java.lang.Integer, values=[0, 1, 2, 3]}] i need to now the value of "name=level" how i do thath
  13. good days bueno this is trouble i been creating a set of fire guns that looks very nice and for this guns i been creating custom bullets based in the code from EntityArrow well i wanna make some of my bullets piercing througth armos so to do damage ignorin armor i been doing EntityLivingBase mob =(EntityLivingBase) movingobjectposition.entityHit; mob.setHealth(mob.getHealth()-5); this plain cuts 5 point of healt from the live of the entityLiving been but when i hit whith this an minecart or bout it crash the minecraft [18:04:03] [server thread/ERROR]: Encountered an unexpected exception net.minecraft.util.ReportedException: Ticking entity at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:780) ~[MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:669) ~[MinecraftServer.class:?] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:171) ~[integratedServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:540) [MinecraftServer.class:?] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_76] Caused by: java.lang.ClassCastException: net.minecraft.entity.item.EntityMinecartHopper cannot be cast to net.minecraft.entity.EntityLivingBase at mercenarymod.items.armasdefuego.balas.balaPrueba_entity.onUpdate(balaPrueba_entity.java:557) ~[balaPrueba_entity.class:?] at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2030) ~[World.class:?] at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:758) ~[WorldServer.class:?] at net.minecraft.world.World.updateEntity(World.java:1996) ~[World.class:?] at net.minecraft.world.World.updateEntities(World.java:1822) ~[World.class:?] at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:587) ~[WorldServer.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:774) ~[MinecraftServer.class:?] ... 4 more [18:04:03] [server thread/ERROR]: This crash report has been saved to: /home/tenchi/Modding/forge-1.8-11.14.1.1350-src/eclipse/./crash-reports/crash-2015-04-08_18.04.03-server.txt [18:04:03] [server thread/INFO]: Stopping server [18:04:03] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:660]: ---- Minecraft Crash Report ---- // Everything's going to plan. No, really, that was supposed to happen. Time: 8/04/15 06:04 PM Description: Ticking entity is an ovious problem minecarst are not entityliving dont have healt but can be killed so icannot do mob.getHealth() soo i need an alternative way to causes damage ignoring armor or at least a way to avoid damagin mnecarst bouts or anything similar i wass doing this //############ 5 puntos de daño ignorando armadura que por que si a cualquier cosa que no sea enderman o minecart o boat { boolean ignorar = false; if ((movingobjectposition.entityHit instanceof EntityEnderman)) {ignorar = true;} if ((movingobjectposition.entityHit instanceof EntityMinecartChest)) {ignorar = true;} if ((movingobjectposition.entityHit instanceof EntityMinecartContainer)) {ignorar = true;} if ((movingobjectposition.entityHit instanceof EntityMinecartEmpty)) {ignorar = true;} if ((movingobjectposition.entityHit instanceof EntityMinecartFurnace)) {ignorar = true;} if ((movingobjectposition.entityHit instanceof EntityMinecartHopper)) {ignorar = true;} if ((movingobjectposition.entityHit instanceof EntityBoat)) {ignorar = true;} if (!ignorar) { EntityLivingBase mob =(EntityLivingBase) movingobjectposition.entityHit; mob.setHealth(mob.getHealth()-5); } } the trouble whith this method is if i hit an entity from other mod like a motorbike or notch know whath it shall crash the game soo i need a genral way to avoid damaging this kind of entity thanks for your help
  14. wow but i m intriged why you use nbt tags and not metaitems how many sub items are you pretending to make ?
  15. @Override public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) { target.setFire(4); stack.damageItem(1, attacker); return true; }
  16. damm no i have more doubs than in the begining the trouble begins here http://www.minecraftforge.net/forum/index.php?topic=29261.0 i could'n add more weapons to mi mod whithout damage the game textures and i need add more weapons lets say i just let this modmercenario1.8.jar here whith most of the tools materials gui keybind and items and lets say i do a second mod called modmercenario_moreweapons1.8.jar i need reference the materials from the first mod to make the recipes in the second so here comes mi first cuestion eclipse can load and alredy compiled mod0.jar while is working on a mod1 and call the clases from mod0 to use them in mod1 ??
  17. good days i have a mod i wanna split in multi parts, per example in the minecraft 1.7 the mod alienvs predator made by arisux has main mod package AIRI.jar its contains the materials and blocks for the mod. and the package AliensVsPredator.jar has the mobs and the weapons. and the package AliensVsPredator.jar demands AIRI as dependency someone tellme that can be done whith a modified version of graddle but google has not confirm it in the other side google speaks about an utility from chikenBones but for 1.7 and this 1.8 how this could be achive
  18. weel the last time i test the mod and works normal was monday that day i begin doing the code for the guns and the clip the Thursday end and everithing works on eclipse so i decide to test mi new guns in the normal minecraft client and there it goes green and white soo the trouble begin whith the new guns, these are new coz i alredy have colt1911 fn57 fnp90 and that 3 are are older than monday so i have five guns aniway i do guns the way vainilla bow works lets make some tests first this is in the normal client minecraft using mi mod plus this others mods i like to test aside others mod to be sure it wont mess whit something else /home/tenchi/.minecraft/mods/bamsgrave-1.8-1.4.3.jar /home/tenchi/.minecraft/mods/BattleTowers-1.8.jar /home/tenchi/.minecraft/mods/Birds-mod-by-silvercatcher-1.8.jar /home/tenchi/.minecraft/mods/Bloodmoon-1.1.jar /home/tenchi/.minecraft/mods/Cute-mob-models-mod-by-yarrmateys-1.8.jar /home/tenchi/.minecraft/mods/CyanosLootableBodies-1.3.4.jar /home/tenchi/.minecraft/mods/Damage-Indicators-Mod-1.8.jar /home/tenchi/.minecraft/mods/DynamicLights-1.8.jar /home/tenchi/.minecraft/mods/Ender-Zoo-Mod-1.8.jar /home/tenchi/.minecraft/mods/forge_TheEpicarnoMod-1.0.9.7.jar /home/tenchi/.minecraft/mods/InventoryTweaks-1.59-beta-175.jar /home/tenchi/.minecraft/mods/iPixelis-Gender-Mod-1.8.jar /home/tenchi/.minecraft/mods/LavaBoat-Mod-1.8.jar /home/tenchi/.minecraft/mods/Minions-1.8.jar /home/tenchi/.minecraft/mods/MrCrayfishs-Furniture-Mod-1.8.jar /home/tenchi/.minecraft/mods/Roguelike-Dungeons-Mod-1.8.jar /home/tenchi/.minecraft/mods/Ruins-1.8.jar /home/tenchi/.minecraft/mods/Sound-Filters-Mod-1.8.jar /home/tenchi/.minecraft/mods/UpdateCheckerMod-1.8.jar /home/tenchi/.minecraft/mods/vintagetg-1.8-1.0.2.jar /home/tenchi/.minecraft/mods/World-Tools-Mod-1.8.jar /home/tenchi/.minecraft/mods/modmercenario-1.8.jar first test i dont mess whit the guns code i only /*comment*/ the textures to dissabling textures for mf92 mf93r and cagadormf9x to test the old guns. second test still whithout messing whit the code this time i /*comment*/ the textures for the old guns and let only to test the new guns thirth test whithout messing whit the code i uncoment all the textures for all the items everithing is enable to the left eclipse minecrat all textures work to the rigth nomrmal client minecraft everiting is green and white four test this time i coment every texture except for fireguns but the bullet clip cargadorFM9X conclusions it is a limit aplicated to the size of the images png. but only affect the client minecraft, but not the eclipse minecraft cargadorFM9X is to big for this limit and if resize it to 128x128 it looks affull
  19. nop noting of complex rendering all items are just plane json files i do animations switching textures i notice someting that have cause me this teory of the limit in the textures amoung the last i make was two guns and a bullet clip every gun uses like 23 json files and the clip uses 45 there are so many coz this guns are complez every guns works whith three types of bullet clip all animated load unload every bullet clip works whith two kinds of munition all animated all the bullet clips are sub items from the cargadorFM9X class mercenaryModTextures.java ModelBakery.addVariantName(MercenaryModItems.pistolaFM92, new String[]{ "modmercenario:pistolamf92/pistolaFM92_icono", "modmercenario:pistolamf92/pistolaFM92_SC", "modmercenario:pistolamf92/pistolaFM92_CC", "modmercenario:pistolamf92/pistolaFM92_CC_A00", "modmercenario:pistolamf92/pistolaFM92_CC_A01", "modmercenario:pistolamf92/pistolaFM92_CC_A02", "modmercenario:pistolamf92/pistolaFM92_CC_A03", "modmercenario:pistolamf92/pistolaFM92_CC_A04", "modmercenario:pistolamf92/pistolaFM92_CC_disparo", "modmercenario:pistolamf92/pistolaFM92_CL", "modmercenario:pistolamf92/pistolaFM92_CL_A00", "modmercenario:pistolamf92/pistolaFM92_CL_A01", "modmercenario:pistolamf92/pistolaFM92_CL_A02", "modmercenario:pistolamf92/pistolaFM92_CL_A03", "modmercenario:pistolamf92/pistolaFM92_CL_A04", "modmercenario:pistolamf92/pistolaFM92_CL_disparo", "modmercenario:pistolamf92/pistolaFM92_CG", "modmercenario:pistolamf92/pistolaFM92_CG_A00", "modmercenario:pistolamf92/pistolaFM92_CG_A01", "modmercenario:pistolamf92/pistolaFM92_CG_A02", "modmercenario:pistolamf92/pistolaFM92_CG_A03", "modmercenario:pistolamf92/pistolaFM92_CG_A04", "modmercenario:pistolamf92/pistolaFM92_CG_disparo", }); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.pistolaFM92,0 , new ModelResourceLocation("modmercenario:pistolamf92/pistolaFM92_icono", "inventory")); ModelBakery.addVariantName(MercenaryModItems.pistolaFM93R, new String[]{ "modmercenario:pistolamf93r/pistolaFM93R_icono", "modmercenario:pistolamf93r/pistolaFM93R_SC", "modmercenario:pistolamf93r/pistolaFM93R_CC", "modmercenario:pistolamf93r/pistolaFM93R_CC_A00", "modmercenario:pistolamf93r/pistolaFM93R_CC_A01", "modmercenario:pistolamf93r/pistolaFM93R_CC_A02", "modmercenario:pistolamf93r/pistolaFM93R_CC_A03", "modmercenario:pistolamf93r/pistolaFM93R_CC_A04", "modmercenario:pistolamf93r/pistolaFM93R_CC_disparo", "modmercenario:pistolamf93r/pistolaFM93R_CL", "modmercenario:pistolamf93r/pistolaFM93R_CL_A00", "modmercenario:pistolamf93r/pistolaFM93R_CL_A01", "modmercenario:pistolamf93r/pistolaFM93R_CL_A02", "modmercenario:pistolamf93r/pistolaFM93R_CL_A03", "modmercenario:pistolamf93r/pistolaFM93R_CL_A04", "modmercenario:pistolamf93r/pistolaFM93R_CL_disparo", "modmercenario:pistolamf93r/pistolaFM93R_CG", "modmercenario:pistolamf93r/pistolaFM93R_CG_A00", "modmercenario:pistolamf93r/pistolaFM93R_CG_A01", "modmercenario:pistolamf93r/pistolaFM93R_CG_A02", "modmercenario:pistolamf93r/pistolaFM93R_CG_A03", "modmercenario:pistolamf93r/pistolaFM93R_CG_A04", "modmercenario:pistolamf93r/pistolaFM93R_CG_disparo" }); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.pistolaFM93R,0 , new ModelResourceLocation("modmercenario:pistolamf93r/pistolaFM93R_icono", "inventory")); ModelBakery.addVariantName(MercenaryModItems.cargadorFM9X, new String[]{ "modmercenario:cargadorfm9x/cargadorFM9X_CC_icono", "modmercenario:cargadorfm9x/cargadorFM9X_CG_icono", "modmercenario:cargadorfm9x/cargadorFM9X_CL_icono", "modmercenario:cargadorfm9x/cargadorFM9X_CC_A00", "modmercenario:cargadorfm9x/cargadorFM9X_CC_A01", "modmercenario:cargadorfm9x/cargadorFM9X_CC_A02", "modmercenario:cargadorfm9x/cargadorFM9X_CC_A03", "modmercenario:cargadorfm9x/cargadorFM9X_CC_A04", "modmercenario:cargadorfm9x/cargadorFM9X_CC_b", // clip whith bullets "modmercenario:cargadorfm9x/cargadorFM9X_CC_e", // empty clip "modmercenario:cargadorfm9x/cargadorFM9X_CCr_A00", "modmercenario:cargadorfm9x/cargadorFM9X_CCr_A01", "modmercenario:cargadorfm9x/cargadorFM9X_CCr_A02", "modmercenario:cargadorfm9x/cargadorFM9X_CCr_A03", "modmercenario:cargadorfm9x/cargadorFM9X_CCr_A04", "modmercenario:cargadorfm9x/cargadorFM9X_CCr_b", "modmercenario:cargadorfm9x/cargadorFM9X_CCr_e", "modmercenario:cargadorfm9x/cargadorFM9X_CG_A00", "modmercenario:cargadorfm9x/cargadorFM9X_CG_A01", "modmercenario:cargadorfm9x/cargadorFM9X_CG_A02", "modmercenario:cargadorfm9x/cargadorFM9X_CG_A03", "modmercenario:cargadorfm9x/cargadorFM9X_CG_A04", "modmercenario:cargadorfm9x/cargadorFM9X_CG_b", "modmercenario:cargadorfm9x/cargadorFM9X_CG_e", "modmercenario:cargadorfm9x/cargadorFM9X_CGr_A00", "modmercenario:cargadorfm9x/cargadorFM9X_CGr_A01", "modmercenario:cargadorfm9x/cargadorFM9X_CGr_A02", "modmercenario:cargadorfm9x/cargadorFM9X_CGr_A03", "modmercenario:cargadorfm9x/cargadorFM9X_CGr_A04", "modmercenario:cargadorfm9x/cargadorFM9X_CGr_b", "modmercenario:cargadorfm9x/cargadorFM9X_CGr_e", "modmercenario:cargadorfm9x/cargadorFM9X_CL_A00", "modmercenario:cargadorfm9x/cargadorFM9X_CL_A01", "modmercenario:cargadorfm9x/cargadorFM9X_CL_A02", "modmercenario:cargadorfm9x/cargadorFM9X_CL_A03", "modmercenario:cargadorfm9x/cargadorFM9X_CL_A04", "modmercenario:cargadorfm9x/cargadorFM9X_CL_b", "modmercenario:cargadorfm9x/cargadorFM9X_CL_e", "modmercenario:cargadorfm9x/cargadorFM9X_CLr_A00", "modmercenario:cargadorfm9x/cargadorFM9X_CLr_A01", "modmercenario:cargadorfm9x/cargadorFM9X_CLr_A02", "modmercenario:cargadorfm9x/cargadorFM9X_CLr_A03", "modmercenario:cargadorfm9x/cargadorFM9X_CLr_A04", "modmercenario:cargadorfm9x/cargadorFM9X_CLr_b", "modmercenario:cargadorfm9x/cargadorFM9X_CLr_e" }); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.cargadorFM9X,1 , new ModelResourceLocation("modmercenario:cargadorfm9x/cargadorFM9X_CC_icono", "inventory")); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.cargadorFM9X,2 , new ModelResourceLocation("modmercenario:cargadorfm9x/cargadorFM9X_CC_icono", "inventory")); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.cargadorFM9X,3 , new ModelResourceLocation("modmercenario:cargadorfm9x/cargadorFM9X_CC_icono", "inventory")); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.cargadorFM9X,4 , new ModelResourceLocation("modmercenario:cargadorfm9x/cargadorFM9X_CL_icono", "inventory")); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.cargadorFM9X,5 , new ModelResourceLocation("modmercenario:cargadorfm9x/cargadorFM9X_CL_icono", "inventory")); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.cargadorFM9X,6 , new ModelResourceLocation("modmercenario:cargadorfm9x/cargadorFM9X_CL_icono", "inventory")); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.cargadorFM9X,7 , new ModelResourceLocation("modmercenario:cargadorfm9x/cargadorFM9X_CG_icono", "inventory")); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.cargadorFM9X,8 , new ModelResourceLocation("modmercenario:cargadorfm9x/cargadorFM9X_CG_icono", "inventory")); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(MercenaryModItems.cargadorFM9X,9 , new ModelResourceLocation("modmercenario:cargadorfm9x/cargadorFM9X_CG_icono", "inventory")); if I //coment the textures for //mf92 and for the clips //cargadorFM9X compile and run, in the normal client the textures of the world are now normal and the mf93r work whit all his textures then revert and //coment //mf93r and //cargadorFM9x compile the textures of the world are now normal and the mf92 work whit all his textures then //coment the two guns and only left the cargadorFM9x textures compile ñaa the word is white and green again //coment the two guns and only left the first 17 textures from cargadorFM9x compile test the world is normal and the clip works whit only the textures representing the shorth versions of the clip //coment a lot of textures from other //items and the two //guns, and uncomment all the textures for the clip, compile the world is normal all the clips works whit all his textures everithing else works including the two type of bullets animations, just missing the textures for all the comented items and the guns afther see this tests i come whith the teory of a limit i dont thing is for amount but for size cos i have register like 405 textures for all including tools guns and clips and are 235 items for all and 2 blocks most of mi items are 64x textures and the fire guns are 512x textures In eclipse this is not a trouble looks like is not afected for whatever this it is, everithing works on eclipse whitout having to comment nothing and everything works individualy when tested in normal client commenting the textures for other items soo there is no erros in routes names or png size/type i dont wanna remove nothing from the actual mod, and more i wanna add more guns but look like is no room for more i tink i have to split this mod in parts what you tink ??
  20. good nigths this is what ill talking about this happed just in the normal client, in eclipse it works well soo i was using forge-1.8-11.14.1.1336 soo i update it, eclipse and normal minecraft are now forge-1.8-11.14.1.1350 then recompile and it still white and green in the normal client but eclipse works normal. this looks like a textures problem but it works on eclipse the las thing i do was create two pistols and a bullet clip, so i check again and all textures are 512x512 png and all folders are lowerCase and all routes are fine and it works on eclipse soo du not know
  21. good days i have mi premod in alfa state i notice mi mod is heavy like 28M and i dont know if this is to much or is ok coz wen i run this mod in the normal cliente it works perfect but when i test it on server the server becomes slow there is lag betwin actions and sounds. an there is this other thing for i been in fear for long, a bug causing than the actions that one player perfome whith any of mi fire guns causes the same action in the other guns held by the other players but i lack of more pc's to test this soo lets say i have a 75nf pistol on mi hand and press (*) to set it to take out the bullet click i think it will causes that any other player having a 75nf pistol on their hand will take out the bullet clip too i wish someone could download mi alfa mod and tell my if this things are happend slowness or an item afecting others when must not mi mod in forge has been not aproved yet soo there is links to google drive acount https://drive.google.com/file/d/0B8sU_NyZQBd7TXplUTF2MlI0cG8/view?usp=sharing https://drive.google.com/file/d/0B8sU_NyZQBd7N2NaOC1ON2lWS00/view?usp=sharing
  22. ñaa a is inevitable i must do the entityes research stuff , in this arrow wath i wanna do is the exactly that, just copy the vainilla arrow files and edit them to fulfill mi needs , but still must be something missing whith this two files .
  23. arrfff i must walk over the code like fifteen times whithout notice it now its run but still not loading the textures, no error in the console so i change the texture to use the vainilla arrow private static final ResourceLocation arrowTextures = new ResourceLocation("textures/entity/arrow.png"); still not loading, change the arrow side from 0.5 to 4.5 to atleast have a purple / black cube but no luck whith this alredy test un preiniti init and postinit also test register mi arrow whith the register from vainilla arrow RenderingRegistry.registerEntityRenderingHandler(flechaMercenaria_entity.class, new RenderArrow(Minecraft.getMinecraft().getRenderManager())); well no errors but no texture and in any of the cases i get the black / purple block they talk about in another posts now i have this idea like this need a json to work in 1.8 but not quite well quite sure coz there is not arrow.json apart from the one for arrow icon in the minecraft version folder thanks im now a little less stresed.
  24. hi these is the code the renderFlechaMercenaria.class is taken from net.minecraft.client.renderer.entity.RenderArrow i just change the references to "EntityArrow" for "flechaMercenaria_entity" the RenderArrow.class dont seem to need the import "import net.minecraft.client.renderer.entity.RenderManager;" and it has the same constructor flechaMercenaria_entity.java package mercenarymod.items.arcos; import java.util.List; import mercenarymod.items.MercenaryModItems; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IProjectile; import net.minecraft.entity.monster.EntityEnderman; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.play.server.S2BPacketChangeGameState; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class flechaMercenaria_entity extends Entity implements IProjectile { private int xTile = -1; private int yTile = -1; private int zTile = -1; private Block inTile; private int inData; private boolean inGround; /** 1 if the player can pick up the arrow */ public int canBePickedUp; /** Seems to be some sort of timer for animating an arrow. */ public int arrowShake; /** The owner of this arrow. */ public Entity shootingEntity; private int ticksInGround; private int ticksInAir; //Daño causado = (3.68*damage/0.24) 0.24 3.68 private double damage = 1.50D; // 3.00D=14damage 2.0 vainilla arrow /** The amount of knockback an arrow applies when it hits a mob. */ private int knockbackStrength=0; private static final String __OBFID = "CL_00001715"; public flechaMercenaria_entity(World worldIn) { super(worldIn); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); } public flechaMercenaria_entity(World worldIn, double x, double y, double z) { super(worldIn); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); this.setPosition(x, y, z); } public flechaMercenaria_entity(World worldIn, EntityLivingBase shooter, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) { super(worldIn); this.renderDistanceWeight = 10.0D; this.shootingEntity = shooter; if (shooter instanceof EntityPlayer) { this.canBePickedUp = 1; } this.posY = shooter.posY + (double)shooter.getEyeHeight() - 0.10000000149011612D; double d0 = p_i1755_3_.posX - shooter.posX; double d1 = p_i1755_3_.getEntityBoundingBox().minY + (double)(p_i1755_3_.height / 3.0F) - this.posY; double d2 = p_i1755_3_.posZ - shooter.posZ; double d3 = (double)MathHelper.sqrt_double(d0 * d0 + d2 * d2); if (d3 >= 1.0E-7D) { float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); double d4 = d0 / d3; double d5 = d2 / d3; this.setLocationAndAngles(shooter.posX + d4, this.posY, shooter.posZ + d5, f2, f3); float f4 = (float)(d3 * 0.20000000298023224D); this.setThrowableHeading(d0, d1 + (double)f4, d2, p_i1755_4_, p_i1755_5_); } } public flechaMercenaria_entity(World worldIn, EntityLivingBase shooter, float p_i1756_3_) { super(worldIn); this.renderDistanceWeight = 10.0D; this.shootingEntity = shooter; if (shooter instanceof EntityPlayer) { this.canBePickedUp = 1; } this.setSize(0.5F, 0.5F); this.setLocationAndAngles(shooter.posX, shooter.posY + (double)shooter.getEyeHeight(), shooter.posZ, shooter.rotationYaw, shooter.rotationPitch); this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); this.posY -= 0.10000000149011612D; this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); this.setPosition(this.posX, this.posY, this.posZ); this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); } protected void entityInit() { this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); } /** * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. * * @param inaccuracy Higher means more error. */ public void setThrowableHeading(double x, double y, double z, float velocity, float inaccuracy) { float f2 = MathHelper.sqrt_double(x * x + y * y + z * z); x /= (double)f2; y /= (double)f2; z /= (double)f2; x += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)inaccuracy; y += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)inaccuracy; z += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)inaccuracy; x *= (double)velocity; y *= (double)velocity; z *= (double)velocity; this.motionX = x; this.motionY = y; this.motionZ = z; float f3 = MathHelper.sqrt_double(x * x + z * z); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(x, z) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(y, (double)f3) * 180.0D / Math.PI); this.ticksInGround = 0; } @SideOnly(Side.CLIENT) public void func_180426_a(double p_180426_1_, double p_180426_3_, double p_180426_5_, float p_180426_7_, float p_180426_8_, int p_180426_9_, boolean p_180426_10_) { this.setPosition(p_180426_1_, p_180426_3_, p_180426_5_); this.setRotation(p_180426_7_, p_180426_8_); } /** * Sets the velocity to the args. Args: x, y, z */ @SideOnly(Side.CLIENT) public void setVelocity(double x, double y, double z) { this.motionX = x; this.motionY = y; this.motionZ = z; if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { float f = MathHelper.sqrt_double(x * x + z * z); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(x, z) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(y, (double)f) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch; this.prevRotationYaw = this.rotationYaw; this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); this.ticksInGround = 0; } } /** * Called to update the entity's position/logic. */ public void onUpdate() { super.onUpdate(); if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); } BlockPos blockpos = new BlockPos(this.xTile, this.yTile, this.zTile); IBlockState iblockstate = this.worldObj.getBlockState(blockpos); Block block = iblockstate.getBlock(); if (block.getMaterial() != Material.air) { block.setBlockBoundsBasedOnState(this.worldObj, blockpos); AxisAlignedBB axisalignedbb = block.getCollisionBoundingBox(this.worldObj, blockpos, iblockstate); if (axisalignedbb != null && axisalignedbb.isVecInside(new Vec3(this.posX, this.posY, this.posZ))) { this.inGround = true; } } if (this.arrowShake > 0) { --this.arrowShake; } if (this.inGround) { int j = block.getMetaFromState(iblockstate); if (block == this.inTile && j == this.inData) { ++this.ticksInGround; if (this.ticksInGround >= 1200) { this.setDead(); } } else { this.inGround = false; this.motionX *= (double)(this.rand.nextFloat() * 0.2F); this.motionY *= (double)(this.rand.nextFloat() * 0.2F); this.motionZ *= (double)(this.rand.nextFloat() * 0.2F); this.ticksInGround = 0; this.ticksInAir = 0; } } else { ++this.ticksInAir; Vec3 vec31 = new Vec3(this.posX, this.posY, this.posZ); Vec3 vec3 = new Vec3(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); MovingObjectPosition movingobjectposition = this.worldObj.rayTraceBlocks(vec31, vec3, false, true, false); vec31 = new Vec3(this.posX, this.posY, this.posZ); vec3 = new Vec3(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); if (movingobjectposition != null) { vec3 = new Vec3(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); } Entity entity = null; List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.getEntityBoundingBox().addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); double d0 = 0.0D; int i; float f1; for (i = 0; i < list.size(); ++i) { Entity entity1 = (Entity)list.get(i); if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) { f1 = 0.3F; AxisAlignedBB axisalignedbb1 = entity1.getEntityBoundingBox().expand((double)f1, (double)f1, (double)f1); MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); if (movingobjectposition1 != null) { double d1 = vec31.distanceTo(movingobjectposition1.hitVec); if (d1 < d0 || d0 == 0.0D) { entity = entity1; d0 = d1; } } } } if (entity != null) { movingobjectposition = new MovingObjectPosition(entity); } if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) { EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) { movingobjectposition = null; } } float f2; float f3; float f4; if (movingobjectposition != null) { if (movingobjectposition.entityHit != null) { f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); int k = MathHelper.ceiling_double_int((double)f2 * this.damage); if (this.getIsCritical()) { k += this.rand.nextInt(k / 2 + 2); } DamageSource damagesource; if (this.shootingEntity == null) { damagesource = DamageSource.causeThrownDamage(this, this); } else { damagesource = DamageSource.causeThrownDamage(this, this.shootingEntity); } if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman)) { movingobjectposition.entityHit.setFire(5); } if (movingobjectposition.entityHit.attackEntityFrom(damagesource, (float)k)) { if (movingobjectposition.entityHit instanceof EntityLivingBase) { EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; if (!this.worldObj.isRemote) { entitylivingbase.setArrowCountInEntity(entitylivingbase.getArrowCountInEntity() + 1); } if (this.knockbackStrength > 0) { f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); if (f4 > 0.0F) { movingobjectposition.entityHit.addVelocity(this.motionX * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4, 0.1D, this.motionZ * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4); } } if (this.shootingEntity instanceof EntityLivingBase) { EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); } if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) { ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); } } this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F)); if (!(movingobjectposition.entityHit instanceof EntityEnderman)) { this.setDead(); } } else { this.motionX *= -0.10000000149011612D; this.motionY *= -0.10000000149011612D; this.motionZ *= -0.10000000149011612D; this.rotationYaw += 180.0F; this.prevRotationYaw += 180.0F; this.ticksInAir = 0; } } else { BlockPos blockpos1 = movingobjectposition.getBlockPos(); this.xTile = blockpos1.getX(); this.yTile = blockpos1.getY(); this.zTile = blockpos1.getZ(); iblockstate = this.worldObj.getBlockState(blockpos1); this.inTile = iblockstate.getBlock(); this.inData = this.inTile.getMetaFromState(iblockstate); this.motionX = (double)((float)(movingobjectposition.hitVec.xCoord - this.posX)); this.motionY = (double)((float)(movingobjectposition.hitVec.yCoord - this.posY)); this.motionZ = (double)((float)(movingobjectposition.hitVec.zCoord - this.posZ)); f3 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); this.posX -= this.motionX / (double)f3 * 0.05000000074505806D; this.posY -= this.motionY / (double)f3 * 0.05000000074505806D; this.posZ -= this.motionZ / (double)f3 * 0.05000000074505806D; this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F)); this.inGround = true; this.arrowShake = 7; this.setIsCritical(false); if (this.inTile.getMaterial() != Material.air) { this.inTile.onEntityCollidedWithBlock(this.worldObj, blockpos1, iblockstate, this); } } } if (this.getIsCritical()) { for (i = 0; i < 4; ++i) { this.worldObj.spawnParticle(EnumParticleTypes.CRIT, this.posX + this.motionX * (double)i / 4.0D, this.posY + this.motionY * (double)i / 4.0D, this.posZ + this.motionZ * (double)i / 4.0D, -this.motionX, -this.motionY + 0.2D, -this.motionZ, new int[0]); } } this.posX += this.motionX; this.posY += this.motionY; this.posZ += this.motionZ; f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f2) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { ; } while (this.rotationPitch - this.prevRotationPitch >= 180.0F) { this.prevRotationPitch += 360.0F; } while (this.rotationYaw - this.prevRotationYaw < -180.0F) { this.prevRotationYaw -= 360.0F; } while (this.rotationYaw - this.prevRotationYaw >= 180.0F) { this.prevRotationYaw += 360.0F; } this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; f3 = 0.99F; f1 = 0.05F; if (this.isInWater()) { for (int l = 0; l < 4; ++l) { f4 = 0.25F; this.worldObj.spawnParticle(EnumParticleTypes.WATER_BUBBLE, this.posX - this.motionX * (double)f4, this.posY - this.motionY * (double)f4, this.posZ - this.motionZ * (double)f4, this.motionX, this.motionY, this.motionZ, new int[0]); } f3 = 0.6F; } if (this.isWet()) { this.extinguish(); } this.motionX *= (double)f3; this.motionY *= (double)f3; this.motionZ *= (double)f3; this.motionY -= (double)f1; this.setPosition(this.posX, this.posY, this.posZ); this.doBlockCollisions(); } } /** * (abstract) Protected helper method to write subclass entity data to NBT. */ public void writeEntityToNBT(NBTTagCompound tagCompound) { tagCompound.setShort("xTile", (short)this.xTile); tagCompound.setShort("yTile", (short)this.yTile); tagCompound.setShort("zTile", (short)this.zTile); tagCompound.setShort("life", (short)this.ticksInGround); ResourceLocation resourcelocation = (ResourceLocation)Block.blockRegistry.getNameForObject(this.inTile); tagCompound.setString("inTile", resourcelocation == null ? "" : resourcelocation.toString()); tagCompound.setByte("inData", (byte)this.inData); tagCompound.setByte("shake", (byte)this.arrowShake); tagCompound.setByte("inGround", (byte)(this.inGround ? 1 : 0)); tagCompound.setByte("pickup", (byte)this.canBePickedUp); tagCompound.setDouble("damage", this.damage); } /** * (abstract) Protected helper method to read subclass entity data from NBT. */ public void readEntityFromNBT(NBTTagCompound tagCompund) { this.xTile = tagCompund.getShort("xTile"); this.yTile = tagCompund.getShort("yTile"); this.zTile = tagCompund.getShort("zTile"); this.ticksInGround = tagCompund.getShort("life"); if (tagCompund.hasKey("inTile", ) { this.inTile = Block.getBlockFromName(tagCompund.getString("inTile")); } else { this.inTile = Block.getBlockById(tagCompund.getByte("inTile") & 255); } this.inData = tagCompund.getByte("inData") & 255; this.arrowShake = tagCompund.getByte("shake") & 255; this.inGround = tagCompund.getByte("inGround") == 1; if (tagCompund.hasKey("damage", 99)) { this.damage = tagCompund.getDouble("damage"); } if (tagCompund.hasKey("pickup", 99)) { this.canBePickedUp = tagCompund.getByte("pickup"); } else if (tagCompund.hasKey("player", 99)) { this.canBePickedUp = tagCompund.getBoolean("player") ? 1 : 0; } } /** * Called by a player entity when they collide with an entity */ public void onCollideWithPlayer(EntityPlayer entityIn) { if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0) { boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && entityIn.capabilities.isCreativeMode; if (this.canBePickedUp == 1 && !entityIn.inventory.addItemStackToInventory(new ItemStack(MercenaryModItems.flechaMercenaria, 1))) { flag = false; } if (flag) { this.playSound("random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F); entityIn.onItemPickup(this, 1); this.setDead(); } } } /** * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to * prevent them from trampling crops */ protected boolean canTriggerWalking() { return false; } public void setDamage(double p_70239_1_) { this.damage = p_70239_1_; } public double getDamage() { return this.damage; } /** * Sets the amount of knockback the arrow applies when it hits a mob. */ public void setKnockbackStrength(int p_70240_1_) { this.knockbackStrength = p_70240_1_; } /** * If returns false, the item will not inflict any damage against entities. */ public boolean canAttackWithItem() { return false; } /** * Whether the arrow has a stream of critical hit particles flying behind it. */ public void setIsCritical(boolean p_70243_1_) { byte b0 = this.dataWatcher.getWatchableObjectByte(16); if (p_70243_1_) { this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); } else { this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); } } /** * Whether the arrow has a stream of critical hit particles flying behind it. */ public boolean getIsCritical() { byte b0 = this.dataWatcher.getWatchableObjectByte(16); return (b0 & 1) != 0; } } renderFlechaMercenaria.java package mercenarymod.items.render; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; import mercenarymod.items.arcos.flechaMercenaria_entity; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; @SideOnly(Side.CLIENT) public class renderFlechaMercenaria extends Render { private static final ResourceLocation arrowTextures = new ResourceLocation("modmercenario:textures/entity/arrow.png"); private static final String __OBFID = "CL_00000978"; public renderFlechaMercenaria(RenderManager p_i46193_1_) //public renderFlechaMercenaria() { //super(Minecraft.getMinecraft().getRenderManager() ); super(p_i46193_1_); } public void doRender(flechaMercenaria_entity p_180551_1_, double p_180551_2_, double p_180551_4_, double p_180551_6_, float p_180551_8_, float p_180551_9_) { this.bindEntityTexture(p_180551_1_); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.pushMatrix(); GlStateManager.translate((float)p_180551_2_, (float)p_180551_4_, (float)p_180551_6_); GlStateManager.rotate(p_180551_1_.prevRotationYaw + (p_180551_1_.rotationYaw - p_180551_1_.prevRotationYaw) * p_180551_9_ - 90.0F, 0.0F, 1.0F, 0.0F); GlStateManager.rotate(p_180551_1_.prevRotationPitch + (p_180551_1_.rotationPitch - p_180551_1_.prevRotationPitch) * p_180551_9_, 0.0F, 0.0F, 1.0F); Tessellator tessellator = Tessellator.getInstance(); WorldRenderer worldrenderer = tessellator.getWorldRenderer(); byte b0 = 0; float f2 = 0.0F; float f3 = 0.5F; float f4 = (float)(0 + b0 * 10) / 32.0F; float f5 = (float)(5 + b0 * 10) / 32.0F; float f6 = 0.0F; float f7 = 0.15625F; float f8 = (float)(5 + b0 * 10) / 32.0F; float f9 = (float)(10 + b0 * 10) / 32.0F; float f10 = 0.05625F; GlStateManager.enableRescaleNormal(); float f11 = (float)p_180551_1_.arrowShake - p_180551_9_; if (f11 > 0.0F) { float f12 = -MathHelper.sin(f11 * 3.0F) * f11; GlStateManager.rotate(f12, 0.0F, 0.0F, 1.0F); } GlStateManager.rotate(45.0F, 1.0F, 0.0F, 0.0F); GlStateManager.scale(f10, f10, f10); GlStateManager.translate(-4.0F, 0.0F, 0.0F); GL11.glNormal3f(f10, 0.0F, 0.0F); worldrenderer.startDrawingQuads(); worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f8); worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f8); worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f9); worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f9); tessellator.draw(); GL11.glNormal3f(-f10, 0.0F, 0.0F); worldrenderer.startDrawingQuads(); worldrenderer.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f8); worldrenderer.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f8); worldrenderer.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f9); worldrenderer.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f9); tessellator.draw(); for (int i = 0; i < 4; ++i) { GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F); GL11.glNormal3f(0.0F, 0.0F, f10); worldrenderer.startDrawingQuads(); worldrenderer.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)f2, (double)f4); worldrenderer.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)f3, (double)f4); worldrenderer.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)f3, (double)f5); worldrenderer.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)f2, (double)f5); tessellator.draw(); } GlStateManager.disableRescaleNormal(); GlStateManager.popMatrix(); super.doRender(p_180551_1_, p_180551_2_, p_180551_4_, p_180551_6_, p_180551_8_, p_180551_9_); } protected ResourceLocation getEntityTexture(flechaMercenaria_entity p_180550_1_) { return arrowTextures; } /** * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. */ protected ResourceLocation getEntityTexture(Entity entity) { return this.getEntityTexture((flechaMercenaria_entity)entity); } /** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity>) and this method has signature public void func_76986_a(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doe */ public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float partialTicks) { this.doRender((flechaMercenaria_entity)entity, x, y, z, p_76986_8_, partialTicks); } } clientProxy.java package mercenarymod; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import mercenarymod.CommonProxy; import mercenarymod.blocks.MercenaryModBlocks; import mercenarymod.gui.NotificationMercenaria; import mercenarymod.items.MercenaryModItems; import mercenarymod.items.arcos.flechaMercenaria; import mercenarymod.items.render.renderFlechaMercenaria; public class ClientProxy extends CommonProxy { @Override public void registerRenderers() { // This is for rendering entities and so forth later on } //@Mod.EventHandler //public void preInit(FMLPreInitializationEvent event) { public void preInit(){ System.out.println("########\n\n\n ClientProxy preInit()"); //Configuration config = new Configuration(event.getSuggestedConfigurationFile()); //MercenaryModBlocks.init(); //MercenaryModItems.init(); //MercenaryModRecipes.init(); //keyEvent FMLCommonHandler.instance().bus().register(new mercenarymod.eventos.KeyInputHandler()); mercenarymod.eventos.KeyBindings.init(); } //@Mod.EventHandler //public void init(FMLInitializationEvent event) { @Override public void init() { System.out.println("########\n\n\n ClientProxy init()"); mercenarymod.MercenaryModTexturas.init(); } //@Mod.EventHandler //public void postInit(FMLPostInitializationEvent event) { public void postInit() { System.out.println("########\n\n\n ClientProxy postInit()"); MinecraftForge.EVENT_BUS.register(new NotificationMercenaria(Minecraft.getMinecraft(), null)); RenderingRegistry.registerEntityRenderingHandler(flechaMercenaria.class, new renderFlechaMercenaria(Minecraft.getMinecraft().getRenderManager())); } }
  25. well if i do any of this two ways "registerEntityRenderingHandler" marks red and say "The method registerEntityRenderingHandler(Class<? extends Entity>, Render) in the type RenderingRegistry is not applicable for the arguments (Class<flechaMercenaria>, renderFlechaMercenaria)" it i forced it [18:13:45] [Client thread/ERROR] [FML]: The following problems were captured during this phase [18:13:45] [Client thread/ERROR] [FML]: Caught exception from modmercenario java.lang.Error: Unresolved compilation problem: The method registerEntityRenderingHandler(Class<? extends Entity>, Render) in the type RenderingRegistry is not applicable for the arguments (Class<flechaMercenaria>, renderFlechaMercenaria) soo may i have the wrong class import ? the code im using its just a copy paste from the vanilla arrow , but when wass doing the renderFlechaMercenaria.class this one mark and error and askmy for this import in the constructor im using this import net.minecraftforge.fml.client.registry.RenderingRegistry;
×
×
  • Create New...

Important Information

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