minecraft-source/src/net/minecraft/world/item/DyeableLeatherItem.java

96 lines
3.7 KiB
Java

package net.minecraft.world.item;
import java.util.Iterator;
import java.util.List;
import net.minecraft.nbt.CompoundTag;
public interface DyeableLeatherItem {
default boolean hasCustomColor(final ItemStack bek) {
final CompoundTag jt3 = bek.getTagElement("display");
return jt3 != null && jt3.contains("color", 99);
}
default int getColor(final ItemStack bek) {
final CompoundTag jt3 = bek.getTagElement("display");
if (jt3 != null && jt3.contains("color", 99)) {
return jt3.getInt("color");
}
return 10511680;
}
default void clearColor(final ItemStack bek) {
final CompoundTag jt3 = bek.getTagElement("display");
if (jt3 != null && jt3.contains("color")) {
jt3.remove("color");
}
}
default void setColor(final ItemStack bek, final int integer) {
bek.getOrCreateTagElement("display").putInt("color", integer);
}
default ItemStack dyeArmor(final ItemStack bek, final List<DyeItem> list) {
ItemStack bek2 = ItemStack.EMPTY;
final int[] arr4 = new int[3];
int integer5 = 0;
int integer6 = 0;
DyeableLeatherItem bdk7 = null;
final Item bef8 = bek.getItem();
if (bef8 instanceof DyeableLeatherItem) {
bdk7 = (DyeableLeatherItem)bef8;
bek2 = bek.copy();
bek2.setCount(1);
if (bdk7.hasCustomColor(bek)) {
final int integer7 = bdk7.getColor(bek2);
final float float10 = (integer7 >> 16 & 0xFF) / 255.0f;
final float float11 = (integer7 >> 8 & 0xFF) / 255.0f;
final float float12 = (integer7 & 0xFF) / 255.0f;
integer5 += (int)(Math.max(float10, Math.max(float11, float12)) * 255.0f);
final int[] array = arr4;
final int n = 0;
array[n] += (int)(float10 * 255.0f);
final int[] array2 = arr4;
final int n2 = 1;
array2[n2] += (int)(float11 * 255.0f);
final int[] array3 = arr4;
final int n3 = 2;
array3[n3] += (int)(float12 * 255.0f);
++integer6;
}
for (final DyeItem bdh10 : list) {
final float[] arr5 = bdh10.getDyeColor().getTextureDiffuseColors();
final int integer8 = (int)(arr5[0] * 255.0f);
final int integer9 = (int)(arr5[1] * 255.0f);
final int integer10 = (int)(arr5[2] * 255.0f);
integer5 += Math.max(integer8, Math.max(integer9, integer10));
final int[] array4 = arr4;
final int n4 = 0;
array4[n4] += integer8;
final int[] array5 = arr4;
final int n5 = 1;
array5[n5] += integer9;
final int[] array6 = arr4;
final int n6 = 2;
array6[n6] += integer10;
++integer6;
}
}
if (bdk7 == null) {
return ItemStack.EMPTY;
}
int integer7 = arr4[0] / integer6;
int integer11 = arr4[1] / integer6;
int integer12 = arr4[2] / integer6;
final float float12 = integer5 / (float)integer6;
final float float13 = (float)Math.max(integer7, Math.max(integer11, integer12));
integer7 = (int)(integer7 * float12 / float13);
integer11 = (int)(integer11 * float12 / float13);
integer12 = (int)(integer12 * float12 / float13);
int integer10 = integer7;
integer10 = (integer10 << 8) + integer11;
integer10 = (integer10 << 8) + integer12;
bdk7.setColor(bek2, integer10);
return bek2;
}
}