Помогите пожалуйста с созданием мода для MineCraft 1.3.2!
Что пишет:
== MCP 7.2 (data: 7.2, client: 1.3.2, server: 1.3.2) ==
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_03\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1
== ERRORS FOUND ==
src\minecraft\net\minecraft\src\ItemMakarov.java:29: error: not a statement
else (itemstack.getItemDamage() >= 8 && entityplayer.inventory.h
asItem(mod_Block.MakarovMag.shiftedIndex));
^
src\minecraft\net\minecraft\src\ItemMakarov.java:41: error: 'else' without 'if'
else
^
2 errors
==================
!! Can not find server sources, try decompiling !!
Для продолжения нажмите любую клавишу . . .
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
В файле:
package net.minecraft.src;
import java.util.Random;
public class ItemMakarov extends Item
{
public ItemMakarov(int i)
{
super(i);
maxStackSize = 30;
setMaxDamage(8);
}
public void onPlayerStoppedUsing(ItemStack itemstack, World world, EntityPlayer entityplayer, int i)
{
boolean flag = entityplayer.capabilities.isCreativeMode;
if (itemstack.getItemDamage() < 8)
{
int j = getMaxItemUseDuration(itemstack) - i;
float f = 1.0F;
EntityBullet entitybullet = new EntityBullet(world, entityplayer, 1F);
itemstack.damageItem(1, entityplayer);
world.playSoundAtEntity(entityplayer, "gun.makarov", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
if (!world.isRemote)
{
world.spawnEntityInWorld(entitybullet);
}
}
else (itemstack.getItemDamage() >= 8 && entityplayer.inventory.hasItem(mod_Block.MakarovMag.shiftedIndex));
{
int k = getMaxItemUseDuration(itemstack) - i;
float f1 = (float)k / 20F;
f1 = (f1 * f1 + f1 * 2.0F) / 3F;
if (f1 >= 1.0F)
{
world.playSoundAtEntity(entityplayer, "gun.reload", 0.5F, 0.8F / (itemRand.nextFloat() * 0.4F + 0.8F));
itemstack.setItemDamage(0);
entityplayer.inventory.consumeInventoryItem(mod_Block.MakarovMag.shiftedIndex);
}
}
else
{
world.playSoundAtEntity(entityplayer, "gun.empty", 0.5F, 0.8F / (itemRand.nextFloat() * 0.4F + 0.8F));
}
}
public ItemStack onFoodEaten(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
return itemstack;
}
public int getMaxItemUseDuration(ItemStack itemstack)
{
return 0x11940;
}
public EnumAction getItemUseAction(ItemStack itemstack)
{
if (itemstack.getItemDamage() < 8)
{
return null;
}
else
{
return EnumAction.bow;
}
}
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
entityplayer.setItemInUse(itemstack, getMaxItemUseDuration(itemstack));
return itemstack;
}
}
Нужна помощь!
Автор
terrok
, 17.09.2012 21:10
- Авторизуйтесь для ответа в теме
Сообщений в теме: 3
#2 EnderBoy57
EnderBoy57
- Пользователи
- Сообщений: 42
Странник
- Откуда: The End
Написал 17.09.2012 - 22:39
о как я на двух ворумах пишет проблему )Скрытый текстПомогите пожалуйста с созданием мода для MineCraft 1.3.2!
Что пишет:
== MCP 7.2 (data: 7.2, client: 1.3.2, server: 1.3.2) ==
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_03\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1
== ERRORS FOUND ==
src\minecraft\net\minecraft\src\ItemMakarov.java:29: error: not a statement
else (itemstack.getItemDamage() >= 8 && entityplayer.inventory.h
asItem(mod_Block.MakarovMag.shiftedIndex));
^
src\minecraft\net\minecraft\src\ItemMakarov.java:41: error: 'else' without 'if'
else
^
2 errors
==================
!! Can not find server sources, try decompiling !!
Для продолжения нажмите любую клавишу . . .
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
В файле:
package net.minecraft.src;
import java.util.Random;
public class ItemMakarov extends Item
{
public ItemMakarov(int i)
{
super(i);
maxStackSize = 30;
setMaxDamage(8);
}
public void onPlayerStoppedUsing(ItemStack itemstack, World world, EntityPlayer entityplayer, int i)
{
boolean flag = entityplayer.capabilities.isCreativeMode;
if (itemstack.getItemDamage() < 8)
{
int j = getMaxItemUseDuration(itemstack) - i;
float f = 1.0F;
EntityBullet entitybullet = new EntityBullet(world, entityplayer, 1F);
itemstack.damageItem(1, entityplayer);
world.playSoundAtEntity(entityplayer, "gun.makarov", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
if (!world.isRemote)
{
world.spawnEntityInWorld(entitybullet);
}
}
else (itemstack.getItemDamage() >= 8 && entityplayer.inventory.hasItem(mod_Block.MakarovMag.shiftedIndex));
{
int k = getMaxItemUseDuration(itemstack) - i;
float f1 = (float)k / 20F;
f1 = (f1 * f1 + f1 * 2.0F) / 3F;
if (f1 >= 1.0F)
{
world.playSoundAtEntity(entityplayer, "gun.reload", 0.5F, 0.8F / (itemRand.nextFloat() * 0.4F + 0.8F));
itemstack.setItemDamage(0);
entityplayer.inventory.consumeInventoryItem(mod_Block.MakarovMag.shiftedIndex);
}
}
else
{
world.playSoundAtEntity(entityplayer, "gun.empty", 0.5F, 0.8F / (itemRand.nextFloat() * 0.4F + 0.8F));
}
}
public ItemStack onFoodEaten(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
return itemstack;
}
public int getMaxItemUseDuration(ItemStack itemstack)
{
return 0x11940;
}
public EnumAction getItemUseAction(ItemStack itemstack)
{
if (itemstack.getItemDamage() < 8)
{
return null;
}
else
{
return EnumAction.bow;
}
}
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
entityplayer.setItemInUse(itemstack, getMaxItemUseDuration(itemstack));
return itemstack;
}
}
а насчёт ошибки хотябы напиши что хотел создать
#3 ErickSkrauch
ErickSkrauch
- Пользователи
- Сообщений: 85
Странник
Написал 18.09.2012 - 08:46
error: 'else' without 'if'elseПомоему ошибка явно описана
Бесплатная система скинов Minecraft. Да, это мой проект. Приглашаю всех в мой профиль.
#4 terrok
terrok
- Пользователи
- Сообщений: 2
Странник
Написал 18.09.2012 - 18:53
Вот по этому хотел создать:
[spoiler'>http://minecraft.su/forum/topic/4881-modloadertutorials-%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D0%B5/[/spoiler]
Чуть поковырялся - стал писать:
Файлы:
mod_Block
EnitityBullet
[spoiler'>http://minecraft.su/forum/topic/4881-modloadertutorials-%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D0%B5/[/spoiler]
Чуть поковырялся - стал писать:
Скрытый текст
== MCP 7.2 (data: 7.2, client: 1.3.2, server: 1.3.2) ==
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_03\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1
== ERRORS FOUND ==
src\minecraft\net\minecraft\src\EntityBullet.java:170: error: cannot find symbol
if (axisalignedbb != null && axisalignedbb.isVecInside(V
ec3D.createVector(posX, posY, posZ)))
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:197: error: cannot find symbol
Vec3D vec3d = Vec3D.createVector(posX, posY, posZ);
^
symbol: class Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:197: error: cannot find symbol
Vec3D vec3d = Vec3D.createVector(posX, posY, posZ);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:198: error: cannot find symbol
Vec3D vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY
, posZ + motionZ);
^
symbol: class Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:198: error: cannot find symbol
Vec3D vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY
, posZ + motionZ);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:200: error: cannot find symbol
vec3d = Vec3D.createVector(posX, posY, posZ);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:201: error: cannot find symbol
vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ
+ motionZ);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:204: error: cannot find symbol
vec3d1 = Vec3D.createVector(movingobjectposition.hitVec.
xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\mod_Block.java:14: error: cannot find symbol
this.setCreativeTab(CreativeTabs.tabBlock);
^
symbol: method setCreativeTab(CreativeTabs)
9 errors
==================
!! Can not find server sources, try decompiling !!
Для продолжения нажмите любую клавишу . . .
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast
yle, astyle config
== Recompiling client ==
> Cleaning bin
> Recompiling
'"C:\Program Files\Java\jdk1.7.0_03\bin\javac" -Xlint:-options -deprecation -g -
source 1.6 -target 1....' failed : 1
== ERRORS FOUND ==
src\minecraft\net\minecraft\src\EntityBullet.java:170: error: cannot find symbol
if (axisalignedbb != null && axisalignedbb.isVecInside(V
ec3D.createVector(posX, posY, posZ)))
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:197: error: cannot find symbol
Vec3D vec3d = Vec3D.createVector(posX, posY, posZ);
^
symbol: class Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:197: error: cannot find symbol
Vec3D vec3d = Vec3D.createVector(posX, posY, posZ);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:198: error: cannot find symbol
Vec3D vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY
, posZ + motionZ);
^
symbol: class Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:198: error: cannot find symbol
Vec3D vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY
, posZ + motionZ);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:200: error: cannot find symbol
vec3d = Vec3D.createVector(posX, posY, posZ);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:201: error: cannot find symbol
vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ
+ motionZ);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\EntityBullet.java:204: error: cannot find symbol
vec3d1 = Vec3D.createVector(movingobjectposition.hitVec.
xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
^
symbol: variable Vec3D
location: class EntityBullet
src\minecraft\net\minecraft\src\mod_Block.java:14: error: cannot find symbol
this.setCreativeTab(CreativeTabs.tabBlock);
^
symbol: method setCreativeTab(CreativeTabs)
9 errors
==================
!! Can not find server sources, try decompiling !!
Для продолжения нажмите любую клавишу . . .
Файлы:
mod_Block
Скрытый текст
package net.minecraft.src;
import java.util.Map;
public class mod_Block extends BaseMod
{
public static final Item Makarov = new ItemMakarov(783).setItemName("Makarov");
public static final Item MakarovMag = new Item(784).setItemName("MakarovMag").setMaxStackSize(4);
public static final Item grenade = new ItemGrenade(137).setItemName("grenade");
public static final Item MKnife = (new ItemMKnife(781)).setItemName("Knife");
public static final Block BlockJava=new BlockJava(160, 0).setHardness(0.5F).setResistance(0.3F).setLightValue(0F).setBlockName("BlockJava");
public void load()
{
this.setCreativeTab(CreativeTabs.tabBlock);
ModLoader.registerBlock(BlockJava);
ModLoader.addName(BlockJava, "Test");
ModLoader.addRecipe(new ItemStack(BlockJava, 10), new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt});
BlockJava.blockIndexInTexture=ModLoader.addOverride("/terrain.png", "/textures/newblock.png");
ModLoader.addName(MKnife, "Knife");
ModLoader.addRecipe(new ItemStack(MKnife, 15), new Object[]{ "XX", "#X", Character.valueOf('X'), Block.sand});
MKnife.iconIndex = ModLoader.addOverride("/gui/items.png", "/weapon/MKnife.png");
ModLoader.addName(grenade, "Grenade");
ModLoader.addRecipe(new ItemStack(grenade, 20), new Object[]{ "XX", "#X", Character.valueOf('X'), Block.stone});
grenade.iconIndex = ModLoader.addOverride("/gui/items.png", "/weapon/grenade.png");
ModLoader.addName(Makarov, "Makarov");
Makarov.iconIndex = ModLoader.addOverride("/gui/items.png", "/weapon/Makarov.png");
ModLoader.addName(MakarovMag, "Cage' 9x18 '");
MakarovMag.iconIndex = ModLoader.addOverride("/gui/items.png", "/weapon/MakarovMag.png");
}
public void addRenderer(Map map)
{
map.put(net.minecraft.src.EntityMKnife.class, new RenderSnowball(MKnife.getIconFromDamage(3)));
map.put(net.minecraft.src.EntityBullet.class, new RenderBullet());
}
public String getVersion()
{
return "1.3.2 Tutorial";
}
}
import java.util.Map;
public class mod_Block extends BaseMod
{
public static final Item Makarov = new ItemMakarov(783).setItemName("Makarov");
public static final Item MakarovMag = new Item(784).setItemName("MakarovMag").setMaxStackSize(4);
public static final Item grenade = new ItemGrenade(137).setItemName("grenade");
public static final Item MKnife = (new ItemMKnife(781)).setItemName("Knife");
public static final Block BlockJava=new BlockJava(160, 0).setHardness(0.5F).setResistance(0.3F).setLightValue(0F).setBlockName("BlockJava");
public void load()
{
this.setCreativeTab(CreativeTabs.tabBlock);
ModLoader.registerBlock(BlockJava);
ModLoader.addName(BlockJava, "Test");
ModLoader.addRecipe(new ItemStack(BlockJava, 10), new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt});
BlockJava.blockIndexInTexture=ModLoader.addOverride("/terrain.png", "/textures/newblock.png");
ModLoader.addName(MKnife, "Knife");
ModLoader.addRecipe(new ItemStack(MKnife, 15), new Object[]{ "XX", "#X", Character.valueOf('X'), Block.sand});
MKnife.iconIndex = ModLoader.addOverride("/gui/items.png", "/weapon/MKnife.png");
ModLoader.addName(grenade, "Grenade");
ModLoader.addRecipe(new ItemStack(grenade, 20), new Object[]{ "XX", "#X", Character.valueOf('X'), Block.stone});
grenade.iconIndex = ModLoader.addOverride("/gui/items.png", "/weapon/grenade.png");
ModLoader.addName(Makarov, "Makarov");
Makarov.iconIndex = ModLoader.addOverride("/gui/items.png", "/weapon/Makarov.png");
ModLoader.addName(MakarovMag, "Cage' 9x18 '");
MakarovMag.iconIndex = ModLoader.addOverride("/gui/items.png", "/weapon/MakarovMag.png");
}
public void addRenderer(Map map)
{
map.put(net.minecraft.src.EntityMKnife.class, new RenderSnowball(MKnife.getIconFromDamage(3)));
map.put(net.minecraft.src.EntityBullet.class, new RenderBullet());
}
public String getVersion()
{
return "1.3.2 Tutorial";
}
}
EnitityBullet
Скрытый текст
package net.minecraft.src;
import java.util.List;
import java.util.Random;
public class EntityBullet extends Entity
{
private int xTile;
private int yTile;
private int zTile;
private int inTile;
private int inData;
private boolean inGround;
public boolean doesArrowBelongToPlayer;
public Entity shootingEntity;
private int ticksInGround;
private int ticksInAir;
private double damage;
private int field_46027_au;
public boolean arrowCritical;
public EntityBullet(World world)
{
super(world);
xTile = -1;
yTile = -1;
zTile = -1;
inTile = 0;
inData = 0;
inGround = false;
doesArrowBelongToPlayer = false;
ticksInAir = 0;
damage = 2D;
arrowCritical = false;
setSize(0.5F, 0.5F);
}
public EntityBullet(World world, double d, double d1, double d2)
{
super(world);
xTile = -1;
yTile = -1;
zTile = -1;
inTile = 0;
inData = 0;
inGround = false;
doesArrowBelongToPlayer = false;
ticksInAir = 0;
damage = 2D;
arrowCritical = false;
setSize(0.5F, 0.5F);
setPosition(d, d1, d2);
yOffset = 0.0F;
}
public EntityBullet(World world, EntityLiving entityliving, EntityLiving entityliving1, float f, float f1)
{
super(world);
xTile = -1;
yTile = -1;
zTile = -1;
inTile = 0;
inData = 0;
inGround = false;
doesArrowBelongToPlayer = false;
ticksInAir = 0;
damage = 2D;
arrowCritical = false;
shootingEntity = entityliving;
doesArrowBelongToPlayer = entityliving instanceof EntityPlayer;
posY = (entityliving.posY + (double)entityliving.getEyeHeight()) - 0.10000000149011612D;
double d = entityliving1.posX - entityliving.posX;
double d1 = (entityliving1.posY + (double)entityliving1.getEyeHeight()) - 0.69999998807907104D - posY;
double d2 = entityliving1.posZ - entityliving.posZ;
double d3 = MathHelper.sqrt_double(d * d + d2 * d2);
if (d3 < 9.9999999999999995E-008D)
{
return;
}
else
{
float f2 = (float)((Math.atan2(d2, d) * 180D) / Math.PI) - 90F;
float f3 = (float)(-((Math.atan2(d1, d3) * 180D) / Math.PI));
double d4 = d / d3;
double d5 = d2 / d3;
setLocationAndAngles(entityliving.posX + d4, posY, entityliving.posZ + d5, f2, f3);
yOffset = 0.0F;
float f4 = (float)d3 * 0.2F;
setArrowHeading(d, d1 + (double)f4, d2, f, f1);
return;
}
}
public EntityBullet(World world, EntityLiving entityliving, float f)
{
super(world);
xTile = -1;
yTile = -1;
zTile = -1;
inTile = 0;
inData = 0;
inGround = false;
doesArrowBelongToPlayer = false;
ticksInAir = 0;
damage = 0.80000000000000004D;
arrowCritical = false;
shootingEntity = entityliving;
doesArrowBelongToPlayer = entityliving instanceof EntityPlayer;
setSize(0.5F, 0.5F);
setLocationAndAngles(entityliving.posX, entityliving.posY + (double)entityliving.getEyeHeight(), entityliving.posZ, entityliving.rotationYaw, entityliving.rotationPitch);
posX -= MathHelper.cos((rotationYaw / 180F) * (float)Math.PI) * 0.16F;
posY -= 0.10000000149011612D;
posZ -= MathHelper.sin((rotationYaw / 180F) * (float)Math.PI) * 0.16F;
setPosition(posX, posY, posZ);
yOffset = 0.0F;
motionX = -MathHelper.sin((rotationYaw / 180F) * (float)Math.PI) * MathHelper.cos((rotationPitch / 180F) * (float)Math.PI);
motionZ = MathHelper.cos((rotationYaw / 180F) * (float)Math.PI) * MathHelper.cos((rotationPitch / 180F) * (float)Math.PI);
motionY = -MathHelper.sin((rotationPitch / 180F) * (float)Math.PI);
setArrowHeading(motionX, motionY, motionZ, f * 1.5F, 1.0F);
}
protected void entityInit()
{
}
public void setArrowHeading(double d, double d1, double d2, float f, float f1)
{
float f2 = MathHelper.sqrt_double(d * d + d1 * d1 + d2 * d2);
d /= f2;
d1 /= f2;
d2 /= f2;
d += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;
d1 += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;
d2 += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;
d *= f;
d1 *= f;
d2 *= f;
motionX = d;
motionY = d1;
motionZ = d2;
float f3 = MathHelper.sqrt_double(d * d + d2 * d2);
prevRotationYaw = rotationYaw = (float)((Math.atan2(d, d2) * 180D) / Math.PI);
prevRotationPitch = rotationPitch = (float)((Math.atan2(d1, f3) * 180D) / Math.PI);
ticksInGround = 0;
}
public void setVelocity(double d, double d1, double d2)
{
motionX = d;
motionY = d1;
motionZ = d2;
if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F)
{
float f = MathHelper.sqrt_double(d * d + d2 * d2);
prevRotationYaw = rotationYaw = (float)((Math.atan2(d, d2) * 180D) / Math.PI);
prevRotationPitch = rotationPitch = (float)((Math.atan2(d1, f) * 180D) / Math.PI);
prevRotationPitch = rotationPitch;
prevRotationYaw = rotationYaw;
setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch);
ticksInGround = 0;
}
}
public void onUpdate()
{
super.onUpdate();
if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F)
{
float f = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);
prevRotationYaw = rotationYaw = (float)((Math.atan2(motionX, motionZ) * 180D) / Math.PI);
prevRotationPitch = rotationPitch = (float)((Math.atan2(motionY, f) * 180D) / Math.PI);
}
int i = worldObj.getBlockId(xTile, yTile, zTile);
if (i > 0)
{
Block.blocksList[i].setBlockBoundsBasedOnState(worldObj, xTile, yTile, zTile);
AxisAlignedBB axisalignedbb = Block.blocksList[i].getCollisionBoundingBoxFromPool(worldObj, xTile, yTile, zTile);
if (axisalignedbb != null && axisalignedbb.isVecInside(Vec3D.createVector(posX, posY, posZ)))
{
inGround = true;
}
}
if (inGround)
{
int j = worldObj.getBlockId(xTile, yTile, zTile);
int k = worldObj.getBlockMetadata(xTile, yTile, zTile);
if (j != inTile || k != inData)
{
inGround = false;
motionX *= rand.nextFloat() * 0.2F;
motionY *= rand.nextFloat() * 0.2F;
motionZ *= rand.nextFloat() * 0.2F;
ticksInGround = 0;
ticksInAir = 0;
return;
}
ticksInGround++;
if (ticksInGround == 1200)
{
setDead();
}
return;
}
ticksInAir++;
Vec3D vec3d = Vec3D.createVector(posX, posY, posZ);
Vec3D vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ + motionZ);
MovingObjectPosition movingobjectposition = worldObj.rayTraceBlocks_do_do(vec3d, vec3d1, false, true);
vec3d = Vec3D.createVector(posX, posY, posZ);
vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ + motionZ);
if (movingobjectposition != null)
{
vec3d1 = Vec3D.createVector(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
}
Entity entity = null;
List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.addCoord(motionX, motionY, motionZ).expand(1.0D, 1.0D, 1.0D));
double d = 0.0D;
for (int l = 0; l < list.size(); l++)
{
Entity entity1 = (Entity)list.get(l);
if (!entity1.canBeCollidedWith() || entity1 == shootingEntity && ticksInAir < 5)
{
continue;
}
float f5 = 0.3F;
AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f5, f5, f5);
MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec3d, vec3d1);
if (movingobjectposition1 == null)
{
continue;
}
double d1 = vec3d.distanceTo(movingobjectposition1.hitVec);
if (d1 < d || d == 0.0D)
{
entity = entity1;
d = d1;
}
}
if (entity != null)
{
movingobjectposition = new MovingObjectPosition(entity);
}
if (movingobjectposition != null)
{
if (movingobjectposition.entityHit != null)
{
float f1 = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ);
int j1 = (int)Math.ceil((double)f1 * damage);
DamageSource damagesource = null;
if (shootingEntity == null)
{
damagesource = DamageSource.causeThrownDamage(this, this);
}
else
{
damagesource = DamageSource.causeThrownDamage(this, shootingEntity);
}
if (isBurning())
{
movingobjectposition.entityHit.setFire(5);
}
if (movingobjectposition.entityHit.attackEntityFrom(damagesource, j1))
{
if (movingobjectposition.entityHit instanceof EntityLiving)
{
((EntityLiving)movingobjectposition.entityHit).arrowHitTempCounter++;
if (field_46027_au > 0)
{
float f7 = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);
if (f7 > 0.0F)
{
movingobjectposition.entityHit.addVelocity((motionX * (double)field_46027_au * 0.60000002384185791D) / (double)f7, 0.10000000000000001D, (motionZ * (double)field_46027_au * 0.60000002384185791D) / (double)f7);
}
}
}
setDead();
}
else
{
motionX *= -0.10000000149011612D;
motionY *= -0.10000000149011612D;
motionZ *= -0.10000000149011612D;
rotationYaw += 180F;
prevRotationYaw += 180F;
ticksInAir = 0;
}
}
else
{
xTile = movingobjectposition.blockX;
yTile = movingobjectposition.blockY;
zTile = movingobjectposition.blockZ;
inTile = worldObj.getBlockId(xTile, yTile, zTile);
inData = worldObj.getBlockMetadata(xTile, yTile, zTile);
motionX = (float)(movingobjectposition.hitVec.xCoord - posX);
motionY = (float)(movingobjectposition.hitVec.yCoord - posY);
motionZ = (float)(movingobjectposition.hitVec.zCoord - posZ);
float f2 = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ);
posX -= (motionX / (double)f2) * 0.05000000074505806D;
posY -= (motionY / (double)f2) * 0.05000000074505806D;
posZ -= (motionZ / (double)f2) * 0.05000000074505806D;
inGround = true;
arrowCritical = false;
}
}
if (arrowCritical)
{
for (int i1 = 0; i1 < 4; i1++)
{
worldObj.spawnParticle("crit", posX + (motionX * (double)i1) / 4D, posY + (motionY * (double)i1) / 4D, posZ + (motionZ * (double)i1) / 4D, -motionX, -motionY + 0.20000000000000001D, -motionZ);
}
}
posX += motionX;
posY += motionY;
posZ += motionZ;
float f3 = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);
rotationYaw = (float)((Math.atan2(motionX, motionZ) * 180D) / Math.PI);
for (rotationPitch = (float)((Math.atan2(motionY, f3) * 180D) / Math.PI); rotationPitch - prevRotationPitch < -180F; prevRotationPitch -= 360F) { }
for (; rotationPitch - prevRotationPitch >= 180F; prevRotationPitch += 360F) { }
for (; rotationYaw - prevRotationYaw < -180F; prevRotationYaw -= 360F) { }
for (; rotationYaw - prevRotationYaw >= 180F; prevRotationYaw += 360F) { }
rotationPitch = prevRotationPitch + (rotationPitch - prevRotationPitch) * 0.2F;
rotationYaw = prevRotationYaw + (rotationYaw - prevRotationYaw) * 0.2F;
float f4 = 0.99F;
float f6 = 0.05F;
if (isInWater())
{
for (int k1 = 0; k1 < 4; k1++)
{
float f8 = 0.25F;
worldObj.spawnParticle("bubble", posX - motionX * (double)f8, posY - motionY * (double)f8, posZ - motionZ * (double)f8, motionX, motionY, motionZ);
}
f4 = 0.8F;
}
motionX *= f4;
motionY *= f4;
motionZ *= f4;
motionY -= f6;
setPosition(posX, posY, posZ);
}
public void writeEntityToNBT(NBTTagCompound nbttagcompound)
{
nbttagcompound.setShort("xTile", (short)xTile);
nbttagcompound.setShort("yTile", (short)yTile);
nbttagcompound.setShort("zTile", (short)zTile);
nbttagcompound.setByte("inTile", (byte)inTile);
nbttagcompound.setByte("inData", (byte)inData);
nbttagcompound.setByte("inGround", (byte)(inGround ? 1 : 0));
nbttagcompound.setBoolean("player", doesArrowBelongToPlayer);
nbttagcompound.setDouble("damage", damage);
}
public void readEntityFromNBT(NBTTagCompound nbttagcompound)
{
xTile = nbttagcompound.getShort("xTile");
yTile = nbttagcompound.getShort("yTile");
zTile = nbttagcompound.getShort("zTile");
inTile = nbttagcompound.getByte("inTile") & 0xff;
inData = nbttagcompound.getByte("inData") & 0xff;
inGround = nbttagcompound.getByte("inGround") == 1;
doesArrowBelongToPlayer = nbttagcompound.getBoolean("player");
if (nbttagcompound.hasKey("damage"))
{
damage = nbttagcompound.getDouble("damage");
}
}
public void onCollideWithPlayer(EntityPlayer entityplayer)
{
if (worldObj.isRemote)
{
return;
}
else
{
return;
}
}
public float getShadowSize()
{
return 0.0F;
}
public void setDamage(double d)
{
damage = d;
}
public double getDamage()
{
return damage;
}
public void func_46023_b(int i)
{
field_46027_au = i;
}
public boolean canAttackWithItem()
{
return false;
}
}
import java.util.List;
import java.util.Random;
public class EntityBullet extends Entity
{
private int xTile;
private int yTile;
private int zTile;
private int inTile;
private int inData;
private boolean inGround;
public boolean doesArrowBelongToPlayer;
public Entity shootingEntity;
private int ticksInGround;
private int ticksInAir;
private double damage;
private int field_46027_au;
public boolean arrowCritical;
public EntityBullet(World world)
{
super(world);
xTile = -1;
yTile = -1;
zTile = -1;
inTile = 0;
inData = 0;
inGround = false;
doesArrowBelongToPlayer = false;
ticksInAir = 0;
damage = 2D;
arrowCritical = false;
setSize(0.5F, 0.5F);
}
public EntityBullet(World world, double d, double d1, double d2)
{
super(world);
xTile = -1;
yTile = -1;
zTile = -1;
inTile = 0;
inData = 0;
inGround = false;
doesArrowBelongToPlayer = false;
ticksInAir = 0;
damage = 2D;
arrowCritical = false;
setSize(0.5F, 0.5F);
setPosition(d, d1, d2);
yOffset = 0.0F;
}
public EntityBullet(World world, EntityLiving entityliving, EntityLiving entityliving1, float f, float f1)
{
super(world);
xTile = -1;
yTile = -1;
zTile = -1;
inTile = 0;
inData = 0;
inGround = false;
doesArrowBelongToPlayer = false;
ticksInAir = 0;
damage = 2D;
arrowCritical = false;
shootingEntity = entityliving;
doesArrowBelongToPlayer = entityliving instanceof EntityPlayer;
posY = (entityliving.posY + (double)entityliving.getEyeHeight()) - 0.10000000149011612D;
double d = entityliving1.posX - entityliving.posX;
double d1 = (entityliving1.posY + (double)entityliving1.getEyeHeight()) - 0.69999998807907104D - posY;
double d2 = entityliving1.posZ - entityliving.posZ;
double d3 = MathHelper.sqrt_double(d * d + d2 * d2);
if (d3 < 9.9999999999999995E-008D)
{
return;
}
else
{
float f2 = (float)((Math.atan2(d2, d) * 180D) / Math.PI) - 90F;
float f3 = (float)(-((Math.atan2(d1, d3) * 180D) / Math.PI));
double d4 = d / d3;
double d5 = d2 / d3;
setLocationAndAngles(entityliving.posX + d4, posY, entityliving.posZ + d5, f2, f3);
yOffset = 0.0F;
float f4 = (float)d3 * 0.2F;
setArrowHeading(d, d1 + (double)f4, d2, f, f1);
return;
}
}
public EntityBullet(World world, EntityLiving entityliving, float f)
{
super(world);
xTile = -1;
yTile = -1;
zTile = -1;
inTile = 0;
inData = 0;
inGround = false;
doesArrowBelongToPlayer = false;
ticksInAir = 0;
damage = 0.80000000000000004D;
arrowCritical = false;
shootingEntity = entityliving;
doesArrowBelongToPlayer = entityliving instanceof EntityPlayer;
setSize(0.5F, 0.5F);
setLocationAndAngles(entityliving.posX, entityliving.posY + (double)entityliving.getEyeHeight(), entityliving.posZ, entityliving.rotationYaw, entityliving.rotationPitch);
posX -= MathHelper.cos((rotationYaw / 180F) * (float)Math.PI) * 0.16F;
posY -= 0.10000000149011612D;
posZ -= MathHelper.sin((rotationYaw / 180F) * (float)Math.PI) * 0.16F;
setPosition(posX, posY, posZ);
yOffset = 0.0F;
motionX = -MathHelper.sin((rotationYaw / 180F) * (float)Math.PI) * MathHelper.cos((rotationPitch / 180F) * (float)Math.PI);
motionZ = MathHelper.cos((rotationYaw / 180F) * (float)Math.PI) * MathHelper.cos((rotationPitch / 180F) * (float)Math.PI);
motionY = -MathHelper.sin((rotationPitch / 180F) * (float)Math.PI);
setArrowHeading(motionX, motionY, motionZ, f * 1.5F, 1.0F);
}
protected void entityInit()
{
}
public void setArrowHeading(double d, double d1, double d2, float f, float f1)
{
float f2 = MathHelper.sqrt_double(d * d + d1 * d1 + d2 * d2);
d /= f2;
d1 /= f2;
d2 /= f2;
d += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;
d1 += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;
d2 += rand.nextGaussian() * 0.0074999998323619366D * (double)f1;
d *= f;
d1 *= f;
d2 *= f;
motionX = d;
motionY = d1;
motionZ = d2;
float f3 = MathHelper.sqrt_double(d * d + d2 * d2);
prevRotationYaw = rotationYaw = (float)((Math.atan2(d, d2) * 180D) / Math.PI);
prevRotationPitch = rotationPitch = (float)((Math.atan2(d1, f3) * 180D) / Math.PI);
ticksInGround = 0;
}
public void setVelocity(double d, double d1, double d2)
{
motionX = d;
motionY = d1;
motionZ = d2;
if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F)
{
float f = MathHelper.sqrt_double(d * d + d2 * d2);
prevRotationYaw = rotationYaw = (float)((Math.atan2(d, d2) * 180D) / Math.PI);
prevRotationPitch = rotationPitch = (float)((Math.atan2(d1, f) * 180D) / Math.PI);
prevRotationPitch = rotationPitch;
prevRotationYaw = rotationYaw;
setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch);
ticksInGround = 0;
}
}
public void onUpdate()
{
super.onUpdate();
if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F)
{
float f = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);
prevRotationYaw = rotationYaw = (float)((Math.atan2(motionX, motionZ) * 180D) / Math.PI);
prevRotationPitch = rotationPitch = (float)((Math.atan2(motionY, f) * 180D) / Math.PI);
}
int i = worldObj.getBlockId(xTile, yTile, zTile);
if (i > 0)
{
Block.blocksList[i].setBlockBoundsBasedOnState(worldObj, xTile, yTile, zTile);
AxisAlignedBB axisalignedbb = Block.blocksList[i].getCollisionBoundingBoxFromPool(worldObj, xTile, yTile, zTile);
if (axisalignedbb != null && axisalignedbb.isVecInside(Vec3D.createVector(posX, posY, posZ)))
{
inGround = true;
}
}
if (inGround)
{
int j = worldObj.getBlockId(xTile, yTile, zTile);
int k = worldObj.getBlockMetadata(xTile, yTile, zTile);
if (j != inTile || k != inData)
{
inGround = false;
motionX *= rand.nextFloat() * 0.2F;
motionY *= rand.nextFloat() * 0.2F;
motionZ *= rand.nextFloat() * 0.2F;
ticksInGround = 0;
ticksInAir = 0;
return;
}
ticksInGround++;
if (ticksInGround == 1200)
{
setDead();
}
return;
}
ticksInAir++;
Vec3D vec3d = Vec3D.createVector(posX, posY, posZ);
Vec3D vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ + motionZ);
MovingObjectPosition movingobjectposition = worldObj.rayTraceBlocks_do_do(vec3d, vec3d1, false, true);
vec3d = Vec3D.createVector(posX, posY, posZ);
vec3d1 = Vec3D.createVector(posX + motionX, posY + motionY, posZ + motionZ);
if (movingobjectposition != null)
{
vec3d1 = Vec3D.createVector(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
}
Entity entity = null;
List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.addCoord(motionX, motionY, motionZ).expand(1.0D, 1.0D, 1.0D));
double d = 0.0D;
for (int l = 0; l < list.size(); l++)
{
Entity entity1 = (Entity)list.get(l);
if (!entity1.canBeCollidedWith() || entity1 == shootingEntity && ticksInAir < 5)
{
continue;
}
float f5 = 0.3F;
AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f5, f5, f5);
MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec3d, vec3d1);
if (movingobjectposition1 == null)
{
continue;
}
double d1 = vec3d.distanceTo(movingobjectposition1.hitVec);
if (d1 < d || d == 0.0D)
{
entity = entity1;
d = d1;
}
}
if (entity != null)
{
movingobjectposition = new MovingObjectPosition(entity);
}
if (movingobjectposition != null)
{
if (movingobjectposition.entityHit != null)
{
float f1 = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ);
int j1 = (int)Math.ceil((double)f1 * damage);
DamageSource damagesource = null;
if (shootingEntity == null)
{
damagesource = DamageSource.causeThrownDamage(this, this);
}
else
{
damagesource = DamageSource.causeThrownDamage(this, shootingEntity);
}
if (isBurning())
{
movingobjectposition.entityHit.setFire(5);
}
if (movingobjectposition.entityHit.attackEntityFrom(damagesource, j1))
{
if (movingobjectposition.entityHit instanceof EntityLiving)
{
((EntityLiving)movingobjectposition.entityHit).arrowHitTempCounter++;
if (field_46027_au > 0)
{
float f7 = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);
if (f7 > 0.0F)
{
movingobjectposition.entityHit.addVelocity((motionX * (double)field_46027_au * 0.60000002384185791D) / (double)f7, 0.10000000000000001D, (motionZ * (double)field_46027_au * 0.60000002384185791D) / (double)f7);
}
}
}
setDead();
}
else
{
motionX *= -0.10000000149011612D;
motionY *= -0.10000000149011612D;
motionZ *= -0.10000000149011612D;
rotationYaw += 180F;
prevRotationYaw += 180F;
ticksInAir = 0;
}
}
else
{
xTile = movingobjectposition.blockX;
yTile = movingobjectposition.blockY;
zTile = movingobjectposition.blockZ;
inTile = worldObj.getBlockId(xTile, yTile, zTile);
inData = worldObj.getBlockMetadata(xTile, yTile, zTile);
motionX = (float)(movingobjectposition.hitVec.xCoord - posX);
motionY = (float)(movingobjectposition.hitVec.yCoord - posY);
motionZ = (float)(movingobjectposition.hitVec.zCoord - posZ);
float f2 = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ);
posX -= (motionX / (double)f2) * 0.05000000074505806D;
posY -= (motionY / (double)f2) * 0.05000000074505806D;
posZ -= (motionZ / (double)f2) * 0.05000000074505806D;
inGround = true;
arrowCritical = false;
}
}
if (arrowCritical)
{
for (int i1 = 0; i1 < 4; i1++)
{
worldObj.spawnParticle("crit", posX + (motionX * (double)i1) / 4D, posY + (motionY * (double)i1) / 4D, posZ + (motionZ * (double)i1) / 4D, -motionX, -motionY + 0.20000000000000001D, -motionZ);
}
}
posX += motionX;
posY += motionY;
posZ += motionZ;
float f3 = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);
rotationYaw = (float)((Math.atan2(motionX, motionZ) * 180D) / Math.PI);
for (rotationPitch = (float)((Math.atan2(motionY, f3) * 180D) / Math.PI); rotationPitch - prevRotationPitch < -180F; prevRotationPitch -= 360F) { }
for (; rotationPitch - prevRotationPitch >= 180F; prevRotationPitch += 360F) { }
for (; rotationYaw - prevRotationYaw < -180F; prevRotationYaw -= 360F) { }
for (; rotationYaw - prevRotationYaw >= 180F; prevRotationYaw += 360F) { }
rotationPitch = prevRotationPitch + (rotationPitch - prevRotationPitch) * 0.2F;
rotationYaw = prevRotationYaw + (rotationYaw - prevRotationYaw) * 0.2F;
float f4 = 0.99F;
float f6 = 0.05F;
if (isInWater())
{
for (int k1 = 0; k1 < 4; k1++)
{
float f8 = 0.25F;
worldObj.spawnParticle("bubble", posX - motionX * (double)f8, posY - motionY * (double)f8, posZ - motionZ * (double)f8, motionX, motionY, motionZ);
}
f4 = 0.8F;
}
motionX *= f4;
motionY *= f4;
motionZ *= f4;
motionY -= f6;
setPosition(posX, posY, posZ);
}
public void writeEntityToNBT(NBTTagCompound nbttagcompound)
{
nbttagcompound.setShort("xTile", (short)xTile);
nbttagcompound.setShort("yTile", (short)yTile);
nbttagcompound.setShort("zTile", (short)zTile);
nbttagcompound.setByte("inTile", (byte)inTile);
nbttagcompound.setByte("inData", (byte)inData);
nbttagcompound.setByte("inGround", (byte)(inGround ? 1 : 0));
nbttagcompound.setBoolean("player", doesArrowBelongToPlayer);
nbttagcompound.setDouble("damage", damage);
}
public void readEntityFromNBT(NBTTagCompound nbttagcompound)
{
xTile = nbttagcompound.getShort("xTile");
yTile = nbttagcompound.getShort("yTile");
zTile = nbttagcompound.getShort("zTile");
inTile = nbttagcompound.getByte("inTile") & 0xff;
inData = nbttagcompound.getByte("inData") & 0xff;
inGround = nbttagcompound.getByte("inGround") == 1;
doesArrowBelongToPlayer = nbttagcompound.getBoolean("player");
if (nbttagcompound.hasKey("damage"))
{
damage = nbttagcompound.getDouble("damage");
}
}
public void onCollideWithPlayer(EntityPlayer entityplayer)
{
if (worldObj.isRemote)
{
return;
}
else
{
return;
}
}
public float getShadowSize()
{
return 0.0F;
}
public void setDamage(double d)
{
damage = d;
}
public double getDamage()
{
return damage;
}
public void func_46023_b(int i)
{
field_46027_au = i;
}
public boolean canAttackWithItem()
{
return false;
}
}
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных
Ответить цитируемым сообщениям Очистить