96 lines
3.7 KiB
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;
|
|
}
|
|
}
|