    001package net.minecraft.client.renderer.texture;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.util.ArrayList;
    006import java.util.Iterator;
    007import java.util.List;
    008
    009@SideOnly(Side.CLIENT)
    010public class StitchSlot
    011{
    012    private final int field_94192_a;
    013    private final int field_94190_b;
    014    private final int field_94191_c;
    015    private final int field_94188_d;
    016    private List field_94189_e;
    017    private StitchHolder field_94187_f;
    018
    019    public StitchSlot(int par1, int par2, int par3, int par4)
    020    {
    021        this.field_94192_a = par1;
    022        this.field_94190_b = par2;
    023        this.field_94191_c = par3;
    024        this.field_94188_d = par4;
    025    }
    026
    027    public StitchHolder func_94183_a()
    028    {
    029        return this.field_94187_f;
    030    }
    031
    032    public int func_94186_b()
    033    {
    034        return this.field_94192_a;
    035    }
    036
    037    public int func_94185_c()
    038    {
    039        return this.field_94190_b;
    040    }
    041
    042    public boolean func_94182_a(StitchHolder par1StitchHolder)
    043    {
    044        if (this.field_94187_f != null)
    045        {
    046            return false;
    047        }
    048        else
    049        {
    050            int i = par1StitchHolder.func_94197_a();
    051            int j = par1StitchHolder.func_94199_b();
    052
    053            if (i <= this.field_94191_c && j <= this.field_94188_d)
    054            {
    055                if (i == this.field_94191_c && j == this.field_94188_d)
    056                {
    057                    this.field_94187_f = par1StitchHolder;
    058                    return true;
    059                }
    060                else
    061                {
    062                    if (this.field_94189_e == null)
    063                    {
    064                        this.field_94189_e = new ArrayList(1);
    065                        this.field_94189_e.add(new StitchSlot(this.field_94192_a, this.field_94190_b, i, j));
    066                        int k = this.field_94191_c - i;
    067                        int l = this.field_94188_d - j;
    068
    069                        if (l > 0 && k > 0)
    070                        {
    071                            int i1 = Math.max(this.field_94188_d, k);
    072                            int j1 = Math.max(this.field_94191_c, l);
    073
    074                            if (i1 >= j1)
    075                            {
    076                                this.field_94189_e.add(new StitchSlot(this.field_94192_a, this.field_94190_b + j, i, l));
    077                                this.field_94189_e.add(new StitchSlot(this.field_94192_a + i, this.field_94190_b, k, this.field_94188_d));
    078                            }
    079                            else
    080                            {
    081                                this.field_94189_e.add(new StitchSlot(this.field_94192_a + i, this.field_94190_b, k, j));
    082                                this.field_94189_e.add(new StitchSlot(this.field_94192_a, this.field_94190_b + j, this.field_94191_c, l));
    083                            }
    084                        }
    085                        else if (k == 0)
    086                        {
    087                            this.field_94189_e.add(new StitchSlot(this.field_94192_a, this.field_94190_b + j, i, l));
    088                        }
    089                        else if (l == 0)
    090                        {
    091                            this.field_94189_e.add(new StitchSlot(this.field_94192_a + i, this.field_94190_b, k, j));
    092                        }
    093                    }
    094
    095                    Iterator iterator = this.field_94189_e.iterator();
    096                    StitchSlot stitchslot;
    097
    098                    do
    099                    {
    100                        if (!iterator.hasNext())
    101                        {
    102                            return false;
    103                        }
    104
    105                        stitchslot = (StitchSlot)iterator.next();
    106                    }
    107                    while (!stitchslot.func_94182_a(par1StitchHolder));
    108
    109                    return true;
    110                }
    111            }
    112            else
    113            {
    114                return false;
    115            }
    116        }
    117    }
    118
    119    public void func_94184_a(List par1List)
    120    {
    121        if (this.field_94187_f != null)
    122        {
    123            par1List.add(this);
    124        }
    125        else if (this.field_94189_e != null)
    126        {
    127            Iterator iterator = this.field_94189_e.iterator();
    128
    129            while (iterator.hasNext())
    130            {
    131                StitchSlot stitchslot = (StitchSlot)iterator.next();
    132                stitchslot.func_94184_a(par1List);
    133            }
    134        }
    135    }
    136
    137    public String toString()
    138    {
    139        return "Slot{originX=" + this.field_94192_a + ", originY=" + this.field_94190_b + ", width=" + this.field_94191_c + ", height=" + this.field_94188_d + ", texture=" + this.field_94187_f + ", subSlots=" + this.field_94189_e + '}';
    140    }
    141}