jopi
Попрошайка
- 1,421
- 30
- 260
Что за 5 параметр(charge) для брони и как его реализовать на сервер?
Это декомп кода брони
А вот extends брони
И экстендс экстендста...
Код с мода 1.5.2
Имплент специальная броня... ISpecialArmor
как это работает???
Java:
public LavaUltimaPlateChest(int par1, uq par2EnumArmorMaterial, int par3, int par4)
{
super(par1, par2EnumArmorMaterial, par3, par4, 5000, 1);
}
@SideOnly(Side.CLIENT)
public void a(ly par1IconRegister)
{
this.ct = par1IconRegister.a("LavaUltimaChestPlate:Chest");
}
@SideOnly(Side.CLIENT)
public String getArmorTexture(wm stack, mp entity, int slot, int layer)
{
return "/mods/LavaUltimaChestPlate/textures/armor/lavachest.png";
}
public long getShildDamage(sq player, wm armor, int damage, int armorslot)
{
return discharge(armor, damage);
}
}
А вот extends брони
Java:
extends LavaChestPlateItem
{
public LavaChestPlateChest(int par1, uq par2EnumArmorMaterial, int par3, int par4)
{
super(par1, par2EnumArmorMaterial, par3, par4, 2000, 1.0D);
}
public LavaChestPlateChest(int par1, uq par2EnumArmorMaterial, int par3, int par4, int par5, int par6)
{
super(par1, par2EnumArmorMaterial, par3, par4, par5, par6);
}
@SideOnly(Side.CLIENT)
public void a(ly par1IconRegister)
{
this.ct = par1IconRegister.a("LavaChestPlate:Chest");
}
public void a(wm stack, aab world, mp entity, int slot, boolean isEquipped) {}
@SideOnly(Side.CLIENT)
public String getArmorTexture(wm stack, mp entity, int slot, int layer)
{
return "/mods/LavaChestPlate/textures/armor/lavachest.png";
}
@SideOnly(Side.CLIENT)
public void a(wm par1ItemStack, sq par2EntityPlayer, List par2List, boolean par4)
{
super.a(par1ItemStack, par2EntityPlayer, par2List, par4);
par2List.add("�7 ����� ������ ��� � ��������");
}
public int getSlot()
{
return 1;
}
}
Java:
public abstract class LavaChestPlateItem
extends uo
implements ISpecialArmor, ILavaItem
{
public LavaChestPlateItem(int par1, uq par2EnumArmorMaterial, int par3, int par4, int maxCharge, double absorbation)
{
super(par1, par2EnumArmorMaterial, par3, par4);
this.maxCharge = Integer.valueOf(maxCharge);
a(ve.j);
this.absorbation = absorbation;
e(5000);
d(1);
}
protected double absorbation = 1.0D;
private Integer maxCharge = Integer.valueOf(0);
public Long tick = Long.valueOf(0L);
public void a(int par1, ve par2CreativeTabs, List par3List)
{
wm j = new wm(par1, 1, 0);
charge(j, this.maxCharge.intValue());
par3List.add(j);
}
public abstract int getSlot();
@SideOnly(Side.CLIENT)
public void a(wm par1ItemStack, sq par2EntityPlayer, List par2List, boolean par4)
{
String[] info = getInfo(par1ItemStack).split(":");
par2List.add("�a " + info[0] + "L");
par2List.add("�d ������� ������� " + String.valueOf(Integer.valueOf(info[1]).intValue() / 500) + "D");
par2List.add("�d ������ ��� ������� " + String.valueOf(Integer.valueOf(info[2])) + "D");
}
@SideOnly(Side.SERVER)
public void onArmorTickUpdate(aab world, sq player, wm itemStack)
{
if (this.tick.longValue() % 40L == 0L) {
charge(itemStack, 10);
}
Long localLong1 = this.tick;Long localLong2 = this.tick = Long.valueOf(this.tick.longValue() + 1L);
}
public ISpecialArmor.ArmorProperties getProperties(ng player, wm armor, mg source, double damage, int slot)
{
return new ISpecialArmor.ArmorProperties(0, 0.0D, 0);
}
int zLevel = 65236;
@SideOnly(Side.CLIENT)
public void drawTexturedModalRect(int par1, int par2, int par3, int par4, int par5, int par6)
{
float f = 0.00390625F;
float f1 = 0.00390625F;
bgd tessellator = bgd.a;
tessellator.b();
tessellator.a(par1 + 0, par2 + par6, this.zLevel, (par3 + 0) * f, (par4 + par6) * f1);
tessellator.a(par1 + par5, par2 + par6, this.zLevel, (par3 + par5) * f, (par4 + par6) * f1);
tessellator.a(par1 + par5, par2 + 0, this.zLevel, (par3 + par5) * f, (par4 + 0) * f1);
tessellator.a(par1 + 0, par2 + 0, this.zLevel, (par3 + 0) * f, (par4 + 0) * f1);
tessellator.a();
}
@SideOnly(Side.CLIENT)
protected void renderInventorySlot(int x, int y, float par4, int slot)
{
wm itemstack = ClientProxy.mc.g.bK.f(slot);
if (itemstack != null)
{
float f1 = itemstack.b - par4;
if (f1 > 0.0F)
{
GL11.glPushMatrix();
float f2 = 1.0F + f1 / 5.0F;
GL11.glTranslatef(x + 8, y + 12, 0.0F);
GL11.glScalef(1.0F / f2, (f2 + 1.0F) / 2.0F, 1.0F);
GL11.glTranslatef(-(x + 8), -(y + 12), 0.0F);
}
ClientProxy.itemRenderer.b(ClientProxy.mc.q, ClientProxy.mc.p, itemstack, x, y);
if (f1 > 0.0F) {
GL11.glPopMatrix();
}
ClientProxy.itemRenderer.c(ClientProxy.mc.q, ClientProxy.mc.p, itemstack, x, y);
}
}
static long arrSlotTime = 0L;
static int t = 0;
@SideOnly(Side.CLIENT)
public int getArmorDisplay(sq player, wm armor, int slot)
{
axs scaledresolution = new axs(ClientProxy.mc.z, ClientProxy.mc.c, ClientProxy.mc.d);
int k = scaledresolution.a();
int l = scaledresolution.b();
avb.c();
int y = l - 24 - 12;
y -= 18 * slot;
renderInventorySlot(k - 24, y, 0.0F, slot);
avb.a();
int car = getCharge(armor).intValue();
ClientProxy.mc.q.a(String.valueOf(car), k - 52, y + 4, 10092288);
long time = System.currentTimeMillis();
if (arrSlotTime < time)
{
arrSlotTime = time + 300L;
t = 0;
for (wm s : player.bK.b) {
if ((s != null) &&
((s.b() instanceof LavaChestPlateItem))) {
t += getCharge(s).intValue();
}
}
}
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
ClientProxy.mc.p.b("/gui/icons.png");
return 0;
}
public void damageArmor(ng entity, wm stack, mg source, int damage, int slot) {}
public Integer charge(wm armor, int amount)
{
LavaChestPlateItem item = (LavaChestPlateItem)armor.b();
if ((amount < 0) || (armor.a > 1)) {
return Integer.valueOf(0);
}
bs nbtData = Utils.getOrCreateNbtData(armor);
int charge = nbtData.e("charge");
int maxCharge = item.getMaxCharge(nbtData).intValue();
if (amount > maxCharge - charge) {
amount = maxCharge - charge;
}
charge += amount;
if (charge > maxCharge) {
return Integer.valueOf(maxCharge);
}
nbtData.a("charge", charge);
return Integer.valueOf(charge);
}
public Integer getMaxCharge(bs nbtData)
{
return Integer.valueOf(this.maxCharge.intValue() + nbtData.e("amp") + nbtData.c("dss") * 500);
}
public Integer getAmp(bs nbtData)
{
return Integer.valueOf(nbtData.e("amp"));
}
public int getDarkShield(bs nbtData)
{
return nbtData.c("dss");
}
public Integer getCharge(wm armor)
{
LavaChestPlateItem item = (LavaChestPlateItem)armor.b();
if (armor.a > 1) {
return Integer.valueOf(0);
}
bs nbtData = Utils.getOrCreateNbtData(armor);
int charge = nbtData.e("charge");
int maxCharge = item.getMaxCharge(nbtData).intValue();
if (charge > maxCharge) {
charge = maxCharge;
}
return Integer.valueOf(charge);
}
public String getInfo(wm armor)
{
LavaChestPlateItem item = (LavaChestPlateItem)armor.b();
if (armor.a > 1) {
return "0/0";
}
bs nbtData = Utils.getOrCreateNbtData(armor);
int charge = nbtData.e("charge");
int amp = item.getAmp(nbtData).intValue();
int dss = item.getDarkShield(nbtData);
return charge + "/" + (this.maxCharge.intValue() + amp + dss * 500) + ":" + amp + ":" + dss;
}
public long discharge(wm armor, int value)
{
LavaChestPlateItem item = (LavaChestPlateItem)armor.b();
if (armor.a > 1) {
return 0L;
}
bs nbtData = Utils.getOrCreateNbtData(armor);
int charge = nbtData.e("charge");
int maxCharge = item.getMaxCharge(nbtData).intValue();
int temp_charge = charge;
if (charge <= 0) {
return 0L;
}
if (charge > maxCharge) {
charge = maxCharge;
}
if (charge - value >= 0) {
charge -= value;
} else {
charge = 0;
}
nbtData.a("charge", charge);
temp_charge = value - temp_charge;
if (temp_charge > 0) {
return charge << 32 | temp_charge & 0xFFFFFFFF;
}
return charge << 32 | 0L;
}
public double getAbsorbation()
{
return this.absorbation;
}
@SideOnly(Side.CLIENT)
public boolean e(wm par1ItemStack)
{
return true;
}
public boolean isBookEnchantable(wm itemstack1, wm itemstack2)
{
return false;
}
@SideOnly(Side.CLIENT)
public boolean onEntityItemUpdate(rh entityItem)
{
Minecraft.x().j.a(new bem(entityItem.q, entityItem.u, entityItem.v, entityItem.w, 0.0D, 0.0D, 0.0D));
return super.onEntityItemUpdate(entityItem);
}
public boolean a(wm par1ItemStack, wm par2ItemStack)
{
return false;
}
@SideOnly(Side.CLIENT)
public bbz getArmorModel(ng entityLiving, wm itemstack, int armorSlot)
{
ModelBaseLavaArmor armorModel = (ModelBaseLavaArmor)ClientProxy.armorModels.get(this);
if (armorModel != null)
{
armorModel.d.j = false;
armorModel.c.j = (armorSlot == 0);
armorModel.e.j = ((armorSlot == 1) || (armorSlot == 2));
armorModel.f.j = (armorSlot == 1);
armorModel.g.j = (armorSlot == 1);
armorModel.h.j = ((armorSlot == 2) || (armorSlot == 3));
armorModel.i.j = ((armorSlot == 2) || (armorSlot == 3));
armorModel.n = entityLiving.ag();
armorModel.q = entityLiving.af();
armorModel.s = entityLiving.h_();
armorModel.m = 0;
armorModel.o = false;
sq player = (sq)entityLiving;
wm held_item = player.p(0);
if (held_item != null)
{
armorModel.m = 1;
if (player.bW() > 0)
{
xp enumaction = held_item.o();
if (enumaction == xp.e) {
armorModel.o = true;
} else if (enumaction == xp.d) {
armorModel.m = 3;
}
}
}
}
return armorModel;
}
public long getShildDamage(sq player, wm armor, int damage, int armorslot)
{
long damage_ = discharge(armor, damage);
armor.a(damage / 10, player);
return damage_;
}
}
Имплент специальная броня... ISpecialArmor
как это работает???