package net.minecraft.client.renderer.texture; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @SideOnly(Side.CLIENT) public class StitchSlot { private final int originX; private final int originY; private final int width; private final int height; private List subSlots; private StitchHolder holder; public StitchSlot(int par1, int par2, int par3, int par4) { this.originX = par1; this.originY = par2; this.width = par3; this.height = par4; } public StitchHolder getStitchHolder() { return this.holder; } public int getOriginX() { return this.originX; } public int getOriginY() { return this.originY; } public boolean func_94182_a(StitchHolder par1StitchHolder) { if (this.holder != null) { return false; } else { int i = par1StitchHolder.getWidth(); int j = par1StitchHolder.getHeight(); if (i <= this.width && j <= this.height) { if (i == this.width && j == this.height) { this.holder = par1StitchHolder; return true; } else { if (this.subSlots == null) { this.subSlots = new ArrayList(1); this.subSlots.add(new StitchSlot(this.originX, this.originY, i, j)); int k = this.width - i; int l = this.height - j; if (l > 0 && k > 0) { int i1 = Math.max(this.height, k); int j1 = Math.max(this.width, l); if (i1 >= j1) { this.subSlots.add(new StitchSlot(this.originX, this.originY + j, i, l)); this.subSlots.add(new StitchSlot(this.originX + i, this.originY, k, this.height)); } else { this.subSlots.add(new StitchSlot(this.originX + i, this.originY, k, j)); this.subSlots.add(new StitchSlot(this.originX, this.originY + j, this.width, l)); } } else if (k == 0) { this.subSlots.add(new StitchSlot(this.originX, this.originY + j, i, l)); } else if (l == 0) { this.subSlots.add(new StitchSlot(this.originX + i, this.originY, k, j)); } } Iterator iterator = this.subSlots.iterator(); StitchSlot stitchslot; do { if (!iterator.hasNext()) { return false; } stitchslot = (StitchSlot)iterator.next(); } while (!stitchslot.func_94182_a(par1StitchHolder)); return true; } } else { return false; } } } /** * Gets the slot and all its subslots */ public void getAllStitchSlots(List par1List) { if (this.holder != null) { par1List.add(this); } else if (this.subSlots != null) { Iterator iterator = this.subSlots.iterator(); while (iterator.hasNext()) { StitchSlot stitchslot = (StitchSlot)iterator.next(); stitchslot.getAllStitchSlots(par1List); } } } public String toString() { return "Slot{originX=" + this.originX + ", originY=" + this.originY + ", width=" + this.width + ", height=" + this.height + ", texture=" + this.holder + ", subSlots=" + this.subSlots + '}'; } }