Jump to content

perromercenary00

Members
  • Posts

    813
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by perromercenary00

  1. goo days i been doing some structures and i wanna this extructures to have villagers and animals, well i du not now hot to spawn and looks diferent from spawn a bullet or a item soo long i been triying this video: Double ex = dpos.getX() + 0.0D; Double ey = dpos.getY() + 1.0D; Double ez = dpos.getZ() + 0.0D; Entity aldeano = new EntityVillager( worldIn, 0); worldIn.spawnEntityInWorld(aldeano ); aldeano.setPosition(ex, ey, ez); this must spawn a town and a villager in the center of the town in front of the church it shows not erros but the villager is nowhere . *thaths one, the other is how to spawn an villager golem ? i donut know even how they are called inside the code i suppouse the process is the same for every entity cown or sheep * and last i wanna this villager to have custom trades the other day a read aguide about, but was for the command line i wanna has thath in the code of the town.class
  2. good days at is sounds im working in a fireguns mod and i want to leave some bullets in the bonus chest and in the villages chest houses i tink it has something whith the worldGen but not very sure.
  3. good days i have acustom gun and now i want this custom gun to leave marks in the walls where the bullets hit so i begin to play whith the render of the arrow i set the texture to a simple purple square and now i can see all the arrow model this model is not whatn i want i need to change it but, well i search for it in the minecrat files and dont find a json model for the arrow soo or its hiden or it has be done for other ways, i begin to play whith mi custom bullet render class there is some gl11 code but it seems to not affect the arrow model, im not verse in ways of gl11 soo where is define the model for the arrow ?? the other thing is normaly you dont see the bullets fliying in the air soo i need to modified the time of the model rendering to apears like half second before shoot i read somewhere someting about this arrow shake value but dont have it to clear it seams that its always set to zero and there is this partialTicks thing package mercenarymod.items.armasdefuego.balas; 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.armasdefuego.balas.bala5728mm_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 bala5728mm_render extends Render { private static final ResourceLocation arrowTextures = new ResourceLocation("modmercenario:textures/entity/5728.png"); private static final String __OBFID = "CL_00000978"; public bala5728mm_render(RenderManager p_i46193_1_) { super(p_i46193_1_); } public void doRender(bala5728mm_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(bala5728mm_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((bala5728mm_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((bala5728mm_entity)entity, x, y, z, p_76986_8_, partialTicks); } }
  4. it is curios coz the mine works @Override public boolean onItemUse(ItemStack sierra, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) { chat.chatda(playerIn, "onItemUse pos="+pos); System.out.println("onItemUse pos="+pos); setInttag(sierra, "bx0", pos.getX() ); setInttag(sierra, "by0", pos.getY() ); setInttag(sierra, "bz0", pos.getZ() ); setInttag(sierra, "bf0", side.getIndex()); return false; } and im returning false and i dont see anyting wrong whith your code
  5. little stuck here take the nbttags from this block "blk" and put it in the ItemsTack "subfusil" and then put that in the the players hand look posible but take the nbttas from the ItemStack "subfusil" put it in a block and then put that block in the world dont seem so feasible the main trouble i find to use this is the lack in 1.8 of the methods worldIn.getBlockTileEntity(par2, par3, par4); //(pos) worldIn.setBlockTileEntity(mitileEntity, pos); //(pos) this shit is surely atached now to IBlockStates but i dont find it in eclipse take the bnts from the block and put it on the gun and put that gun in steves/alex hand whent they rigthclick whith empty hand on the block if there is not nbt in the block initialize gun whith default values ,(full amo, semiAutoMode) this block alredy has tileEntity public class subfusilAresFMG_blocke extends Block implements ITileEntityProvider //###########################################################3 public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) { int hand = playerIn.inventory.currentItem; /* * ItemStack block = new ItemStack(blockYouWantNbtIn); * block.stackTagCompound = new NBTTagCompound(); * block.stackTagCompound.setString("whatYouWantToStore", "theValue"); */ IBlockState blkst = worldIn.getBlockState(pos); Block blk = blkst.getBlock(); ItemStack block = new ItemStack(blk); ItemStack subfusil = new ItemStack(MercenaryModItems.subfusilAresFMG, 1, 6); intialize(subfusil, playerIn); NBTTagCompound tags = block.getTagCompound(); if (tags != null) { subfusil.setTagCompound(etiquetas); } ItemStack objeto=playerIn.inventory.getStackInSlot(hand); if ( (objeto == null) & (!playerIn.isSneaking()) ) { playerIn.inventory.setInventorySlotContents(hand, subfusil); worldIn.setBlockToAir(pos); } return false;} // #########################################################################3 when sneaking and rigth click the upper part of a block take the values of this gun "subfusil Ares" put it in a block and then put that block in the world // ######################################################################################3 @Override public boolean onItemUse(ItemStack subfusil, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) { if (!worldIn.isRemote) { //chat.chatga(playerIn, "onItemUse()"); if ( (side == EnumFacing.UP) & ( playerIn.isSneaking() ) & (worldIn.isAirBlock(pos.up())) ) { //chat.chatga(playerIn, "lado de arriba"); int hand = playerIn.inventory.currentItem; NBTTagCompound etiquetas = subfusil.getTagCompound(); Block blk = MercenaryModItems.subfusilAresFMG_blocke; ItemStack block = new ItemStack(blk); block.setTagCompound(etiquetas); //heres where i tink the nbtags get losse Item iblock = block.getItem(); blk = Block.getBlockFromItem(iblock); IBlockState state = blk.getDefaultState(); PropertyDirection FACING = PropertyDirection.create("facing"); worldIn.setBlockState(pos.up(), state.withProperty(FACING, getFacingFromEntity(worldIn, pos, playerIn )), 2); playerIn.inventory.setInventorySlotContents(hand, null ); } } return false; } // ######################################################################################3 thanks
  6. good nigths i been working on this it must be very similar to this one this is mi version of the ares FMG concept from early 1980 this gun has to modes, the first as a weapon when in the players hand, and the second is folded as a block, the idea is to spawn this one in block mode inside a dungeon hiden on pictures or something to later the player could find and use the gun is ready as you could see the trouble is that i dont know how to store the values of the nbttags states and munition when in block mode soo when i folded and put it as a block in the world it reset all the values, the munition came back as full and the shoot mode goes to semiautomatic i been reading about tile entities but the guides i found are mostly to 1.7 and the more complete guide i found for 1.8 was this http://www.orangetutorial.com/tile-entity/ someone can point to a more complete guide or tell me how i store nbttags in a block in 1.8 minecraft ??
  7. goods i need help whith mi custome crop, this crop grow only on flower pots. everything is working well except for the amount of seeds its drop when breaken when full grow, it can spawn from 1 to 8 seeds this is to much i wana this to only spawn one plant whith one seed and whith a 20% chance to spawn a second seed. i been doing some changes to the code but nop it still droping 1 to 8 seeds this is the code package extructurasmercenarias.blocks.plantas; import java.util.Random; import extructurasmercenarias.ExtructurasM; import extructurasmercenarias.items.ExtructurasMItems; import net.minecraft.block.Block; import net.minecraft.block.BlockBush; import net.minecraft.block.BlockCrops; import net.minecraft.block.IGrowable; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; //#################################################################################################3 public class hierbaAzul_blocke extends BlockCrops implements IGrowable { public static final PropertyInteger AGE = PropertyInteger.create("age", 0, 7); //private static final String __OBFID = "CL_00000222"; //#################################################################################################3 public hierbaAzul_blocke() { setDefaultState(this.blockState.getBaseState().withProperty(AGE, Integer.valueOf(0))); setTickRandomly(true); float f = 0.5F; this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.25F, 0.5F + f); String name = "hierbaAzul_blocke"; setUnlocalizedName(ExtructurasM.MODID + "_" + name); GameRegistry.registerBlock(this, name); //setCreativeTab(ExtructurasM.blockes); setHardness(0.0F); setStepSound(soundTypeGrass); disableStats(); } //#################################################################################################3 /** * is the block grass, dirt or farmland */ protected boolean canPlaceBlockOn(Block ground) { return true;//ground == Blocks.farmland; //place wherever i want } //#################################################################################################3 public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) { super.updateTick(worldIn, pos, state, rand); if (worldIn.getLightFromNeighbors(pos.up()) >= 2) { int i = ((Integer)state.getValue(AGE)).intValue(); if (i < 7) { float f = getGrowthChance(this, worldIn, pos); if (rand.nextInt((int)(25.0F / f) + 1) == 0) { worldIn.setBlockState(pos, state.withProperty(AGE, Integer.valueOf(i + 1)), 2); } } } } //#################################################################################################3 public void grow(World worldIn, BlockPos pos, IBlockState state) { int i = ((Integer)state.getValue(AGE)).intValue() + MathHelper.getRandomIntegerInRange(worldIn.rand, 2, 5); if (i > 7) { i = 7; } worldIn.setBlockState(pos, state.withProperty(AGE, Integer.valueOf(i)), 2); } //#################################################################################################3 protected static float getGrowthChance(Block blockIn, World worldIn, BlockPos pos) { float f = 1.0F; BlockPos blockpos1 = pos.down(); for (int i = -1; i <= 1; ++i) { for (int j = -1; j <= 1; ++j) { float f1 = 0.0F; IBlockState iblockstate = worldIn.getBlockState(blockpos1.add(i, 0, j)); f1 = 1.5F; // betwing drifth and humidified if (i != 0 || j != 0) { f1 /= 4.0F; } f += f1; } } return f; } //#################################################################################################3 public boolean canBlockStay(World worldIn, BlockPos pos, IBlockState state) { //yes return true;//(worldIn.getLight(pos) >= 8 || worldIn.canSeeSky(pos)) && worldIn.getBlockState(pos.down()).getBlock().canSustainPlant(worldIn, pos.down(), net.minecraft.util.EnumFacing.UP, this); } //#################################################################################################3 protected Item getSeed() { return ExtructurasMItems.hierbaAzulSemilla; } //#################################################################################################3 protected Item getCrop() { return ExtructurasMItems.hierbaAzulPlanta; } //#################################################################################################3 /** * Spawns this Block's drops into the World as EntityItems. * * @param chance The chance that each Item is actually spawned (1.0 = always, 0.0 = never) * @param fortune The player's fortune level */ public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, IBlockState state, float chance, int fortune) { super.dropBlockAsItemWithChance(worldIn, pos, state, chance, 0); } //#################################################################################################3 /** * Get the Item that this Block should drop when harvested. * * @param fortune the level of the Fortune enchantment on the player's tool */ public Item getItemDropped(IBlockState state, Random rand, int fortune) { return ((Integer)state.getValue(AGE)).intValue() == 7 ? this.getCrop() : this.getSeed(); } //#################################################################################################3 @Override public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) { IBlockState materast = Blocks.flower_pot.getDefaultState(); worldIn.setBlockState(pos, materast); } //#################################################################################################3 /** * Returns the quantity of items to drop on block destruction. */ @Override public int quantityDropped(Random random) { return 1; } //#################################################################################################3 /** * Whether this IGrowable can grow */ public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient) { return ((Integer)state.getValue(AGE)).intValue() < 7; } //#################################################################################################3 public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, IBlockState state) { return true; } //#################################################################################################3 @SideOnly(Side.CLIENT) public Item getItem(World worldIn, BlockPos pos) { return this.getSeed(); } //#################################################################################################3 public void grow(World worldIn, Random rand, BlockPos pos, IBlockState state) { this.grow(worldIn, pos, state); } //#################################################################################################3 /** * Convert the given metadata into a BlockState for this Block */ public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(AGE, Integer.valueOf(meta)); } //#################################################################################################3 /** * Convert the BlockState into the correct metadata value */ public int getMetaFromState(IBlockState state) { return ((Integer)state.getValue(AGE)).intValue(); } //#################################################################################################3 protected BlockState createBlockState() { return new BlockState(this, new IProperty[] {AGE}); } //#################################################################################################3 @Override public java.util.List<ItemStack> getDrops(net.minecraft.world.IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { java.util.List<ItemStack> ret = super.getDrops(world, pos, state, fortune); int age = ((Integer)state.getValue(AGE)).intValue(); Random rand = world instanceof World ? ((World)world).rand : new Random(); int R = ((int) (Math.random() * 10)) ; if ( age >= 7 & R > 8 ) { ret.add(new ItemStack(this.getSeed(), 1, 0)); } return ret; } //#################################################################################################3 }//fin de la class all this code is based on the block crops from the wheat and wheat dont spawn so many seeds what you think could be wrong ??
  8. goods this is an easy one i wanna make a recipe whith akward potion but i dont find it in the items class, i think is a meta item from Items.potion but whath it is ? GameRegistry.addRecipe(new ItemStack(MercenaryModItems.cartucho12G_antiEnder, 16,0), new Object[] {"BSB", "PPP", "H H", 'A', new ItemStack(MercenaryModItems.aceroMercenario,1,0), 'B' ,new ItemStack(MercenaryModItems.obsidianaMercenaria,1,0), 'S' ,new ItemStack(Items.potionitem ,1,0),//this must be akwar potion 'H' ,new ItemStack(Items.iron_ingot ,1,0), 'P' ,new ItemStack(Items.gunpowder ,1,0), }); thanks
  9. Mercenary m = new Mercenary(); m.getClass().getResource("/assets/modmercenario/extructuras/stufftoload.json") System.out.println( m.getClass().getResource("/assets/modmercenario/extructuras/stufftoload.json") + " " ); returns null and it creates file named null in side eclipse folder whith the json info inside
  10. hellow again mi code works but sometimes it breaks the doors at spawn i asume some doors dont have the metod to get metadata from state later i gonna fix that now i have a little doub and its how you set the route to the json folders in the code from Tschallacka there is this Modmain.getClass().getResource("/assets/modid/structures/stufftoload.json"); hi has something in their main class to do this for now i been storing json outside of mi mod folders in "/home/tenchi/test.json" but it must go in "/home/tenchi/Modding/forge-1.8-11.14.1.1350-src/src/main/resources/assets/modmercenario/extructuras/" yes i use linux if i just let this code this way it wont gona work in any computer diferent than the mine
  11. hay i find this when i was maken a custom crop public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(VARIANT, BlockDirt.DirtType.byMetadata(meta)); } /** * Convert the BlockState into the correct metadata value */ public int getMetaFromState(IBlockState state) { return ((BlockDirt.DirtType)state.getValue(VARIANT)).getMetadata(); } and do little experiment MovingObjectPosition mov = Minecraft.getMinecraft().objectMouseOver; BlockPos pos = mov.getBlockPos(); IBlockState blkst = worldIn.getBlockState(pos); Block blk=blkst.getBlock(); int meta = blk.getMetaFromState(blkst); chat.chatm(playerIn, "blkst"+blkst); chat.chatm(playerIn, "meta="+meta); IBlockState blkst0 = blk.getStateFromMeta(meta); pos = pos.east(2); worldIn.setBlockState(pos, blkst0); when you rigth click a block whith this item its copy the block 2m to the east conserving the block state if i rigth click a block whitout this ttwo methods, well unti now it has no crash whith any of mi custom blocks looks safe if you click a block whitout the methods to get the metadata it just create the block whith the default blockstate i gonna use this
  12. hele tanks the word Gson gives tons of tutorials and i alredy have done mi class to write and read json files and actualy works but well this works this way, i create a custom class just to store the values named "blockes" whith mi class "gsonle.java" i convert this class "blockes" whith all their values to string then it writes to the json using the FileWriter method an there is all the data in the json file i wanna store the values of IBlockState but this one crash when try to save to the json file i find is becoze the block state has "[]=" and this breaks the json structure, per example: this is the IBlockState of the yellow flower block minecraft:yellow_flower[type=dandelion] if i let it this way it breaks minecraft when try to write the json so i have to do this little changes storing the blockstates in a ArrayList<IBlockState> public void setListOfStates(ArrayList<IBlockState> listOfStates) { int longlistOfStates=listOfStates.size(); String str0=""; stalist.clear(); for (int lst = 0 ; lst < longlistOfStates ; lst++) { str0=listOfStates.get(lst)+""; str0=str0.replace("[type=", ":type:"); str0=str0.replace("[", ""); str0=str0.replace("]", ""); stalist.add(str0); } } this code takes away the "[]=" and store the data like a String and let the dandelion code like this in the json stalist=[minecraft:yellow_flower:type:dandelion , minecraft:gold_ore, minecraft:gold_ore, minecraft:gold_ore, modmercenario:listarBlockes, minecraft:tallgrass:type:tall_grass , minecraft:tallgrass:type:tall_grass, minecraft:tallgrass:type:tall_grass, minecraft:tallgrass:type:tall_grass, minecraft:red_flower:type:poppy] and this way is not breaking the minecraft when save and the json is fine i could get again the code for the yelow flower just doing strinreplace but how i do recreate the IBlockState object from the string "minecraft:yellow_flower[type=dandelion]" IBlockState block00 = "minecraft:yellow_flower[type=dandelion]"; this not gona works //###### i wana store the IBlockState as well to recreat the structure kepping the blocks facings how do you make this ??
  13. du not know coz im doing not just one icon but four and a text that must be aligned whit the first icon, ¿is there a guiDownLeft ¿how do you put it on code thi is how mi gui must look all the time for now just work when the screen size is set to normal
  14. good days im beginig whith structures later a read that i could create a json defining the blocks and their positions fro what i been reading about json its looks not hard to do but, well i know minecrafts came whith a bundle of utilities, from this itulities what is the name of the best tool to write and read jsons ?? whith that i shall begin to make mi code //###########################################################3 public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) { int x = pos.getX(); int y = pos.getY(); int z = pos.getZ(); int tx = 16; int ty = 16; int tz = 16; int xmin = x - tx ,xmax = x + tx; int ymin = y - ty ,ymax = y + ty; int zmin = z - tz ,zmax = z + tz; for (int dx = xmin ; dx < xmax ; dx++ ){ for (int dy = ymin ; dy < ymax ; dy++ ){ for (int dz = zmin ; dz < zmax ; dz++ ){ BlockPos dpos = new BlockPos(dx,dy,dz); IBlockState blkst = worldIn.getBlockState(dpos); Block blk = blkst.getBlock(); int blkid = Block.getIdFromBlock(blk); if (!worldIn.isAirBlock(dpos)) { System.out.println(blkid+"=blkid x="+dx+" dy="+dy+" dz="+dz ); String str=blkid+" "+dx+" "+dy+" "+dz; String[] command = {"echo ",str," >> /home/tenchi/salida.txt"}; try { final Process process = Runtime.getRuntime().exec(command); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}} return false;} //###########################################################3
  15. hay i solved it on other way BlockPos posM = world.getTopSolidOrLiquidBlock(pos); world.setBlockState(posM, MercenaryModBlocks.hierbaVerde.getDefaultState() ); minable.generate(world, random, posM ); the trou ble is that im using minable WorldGenMinable and its spawn to many in the surface the others dont semm to fit how im triying to do i think i have to spend mi time doing mi own WorldGenMercenary or something like
  16. ñaa same trouble but in 1.8 , the diferense is i wanna keep mi icons in boton left i could get the sr.getScaledWidth(); to work properly int backX = sr.getScaledWidth(); int backY = sr.getScaledHeight(); later i try to fix them calculating the position the hard way, neither i could make it work and end geting tired of it an let it for later this code works well only when = 2 , normal size in the menu Minecraft mc; displayWidth=mc.displayWidth; displayHeight=mc.displayHeight; guiscale=mc.gameSettings.guiScale; switch(guiscale) { case 0: ;break; case 3: { posX=16; //controls the Icons size posY=((displayHeight/2)-25); x=40; //gui size } ;break; case 2: { posX=30; //controls the Icons size posY=((displayHeight/2)-60); x=40; //gui size } ;break; case 1: { posX=16; //controls the Icons size posY=((displayHeight)-100); x=10; //gui size } ;break; } //Prepare rendering GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_LIGHTING); if (municion<0) { municion=0; } //drawModalRectWithCustomSizedtext0ure(int x, int y,float u,float v,int width,int height,float text0ureWidth,float text0ureHeight); this.mc.renderEngine.bindTexture(new ResourceLocation(icono0)); this.drawModalRectWithCustomSizedTexture( (posX - 5), (posY), 0.0F, 0.0F, x, x, xf, xf); //imagen al 60% //this.drawModalRectWithCustomSizedtext0ure(posX + 8, posY + 8, 0.0F, 0.0F, 200, 200 , 200.0F, 200.0F); this.mc.renderEngine.bindTexture(new ResourceLocation(icono1)); this.drawModalRectWithCustomSizedTexture( (posX + x ), (posY ), 0.0F, 0.0F, (int) (x * 1.5), (x / 3), (xf * 1.5F), (xf / 3) ); //imagen al 60% this.mc.renderEngine.bindTexture(new ResourceLocation(icono2)); this.drawModalRectWithCustomSizedTexture( (posX + x ), (posY + (x / 3) ), 0.0F, 0.0F, (int) (((x * 1.0) / balas ) * municion), (x / 3), (xf * 1.0F), (xf / 3) ); this.mc.renderEngine.bindTexture(new ResourceLocation(icono3)); this.drawModalRectWithCustomSizedTexture( (posX + x ), (posY + ((x / 3) * 2) ), 0.0F, 0.0F, (int) (x * 1.5), (x / 3), (xf * 1.5F), (xf / 3) ); this.mc.fontRendererObj.drawStringWithShadow(text0, posX, ((posY ) + x) , 0xffcccccc);
  17. 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
  18. 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 ??
  19. 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 ??
  20. 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
  21. 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
  22. @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; }
  23. { "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 ] } } }
  24. 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); } }
  25. 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]
×
×
  • Create New...

Important Information

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