Skip to content
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
package WayofTime.alchemicalWizardry.api;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;

public class RoutingFocusLogic {

public boolean getDefaultMatch(ItemStack keyStack, ItemStack checkedStack) {
return (keyStack != null ? checkedStack != null && keyStack.getItem() == checkedStack.getItem()
&& (keyStack.getItem().getHasSubtypes() ? keyStack.getItemDamage() == checkedStack.getItemDamage()
: true)
: false);
return (keyStack != null && keyStack.getItem() != null
&& checkedStack != null
&& keyStack.getItem() == checkedStack.getItem()
&& (!keyStack.getItem().getHasSubtypes() || keyStack.getItemDamage() == checkedStack.getItemDamage()));
}

public boolean doesItemMatch(boolean previous, ItemStack keyStack, ItemStack checkedStack) {
return previous || this.getDefaultMatch(keyStack, checkedStack);
}

public List<String> getDescription() {
return new ArrayList<>(
Collections.singletonList(
StatCollector.translateToLocal("tooltip.routingFocus.logic") + " "
+ StatCollector.translateToLocal("item.outputRoutingFocus.default.logic")));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@

public class RoutingFocusParadigm {

public List<RoutingFocusLogic> logicList = new LinkedList();
public List<RoutingFocusLogic> logicList = new LinkedList<>();

public List<RoutingFocusPosAndFacing> locationList = new LinkedList();
public List<RoutingFocusPosAndFacing> locationList = new LinkedList<>();

public List<String> nameList = new LinkedList<>();

public int maximumAmount = 0;

Expand All @@ -24,6 +26,14 @@ public void addLogic(RoutingFocusLogic logic) {
logicList.add(logic);
}

public void addName(String name) {
nameList.add(name);
}

public boolean doesNameMatch(String name) {
return nameList.contains(name);
}

public boolean doesItemMatch(ItemStack keyStack, ItemStack checkedStack) {
boolean isGood = false;
boolean isFirst = true;
Expand All @@ -42,6 +52,7 @@ public boolean doesItemMatch(ItemStack keyStack, ItemStack checkedStack) {
public void clear() {
logicList.clear();
locationList.clear();
nameList.clear();
maximumAmount = 0;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,11 @@ public OutputRoutingFocus() {
}

@Override
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List<String> par3List,
boolean par4) {
super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
if (!(par1ItemStack.getItem() instanceof OutputRoutingFocus focus)) return;
par3List.addAll(focus.getLogic(par1ItemStack).getDescription());

if (!(par1ItemStack.getTagCompound() == null)) {
int limit = this.getRoutingFocusLimit(par1ItemStack);
Expand All @@ -55,49 +58,18 @@ public void registerIcons(IIconRegister iconRegister) {

@SideOnly(Side.CLIENT)
public IIcon getIconFromDamage(int damage) {
switch (damage) {
case 0:
return this.itemIcon;
case 1:
return this.modItemIcon;
case 2:
return this.ignMetaIcon;
case 3:
return this.matchNBTIcon;
case 4:
return this.globalIcon;
}
return this.itemIcon;
}

@Override
public String getUnlocalizedName(ItemStack itemStack) {
String addedString = "";

switch (itemStack.getItemDamage()) {
case 0:
addedString = "default";
break;
case 1:
addedString = "modItem";
break;
case 2:
addedString = "ignMeta";
break;
case 3:
addedString = "matchNBT";
break;
case 4:
addedString = "global";
break;
}

return super.getUnlocalizedName() + "." + addedString;
return switch (damage) {
case 1 -> this.modItemIcon;
case 2 -> this.ignMetaIcon;
case 3 -> this.matchNBTIcon;
case 4 -> this.globalIcon;
default -> this.itemIcon;
};
}

@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List list) {
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) {
for (int meta = 0; meta < 5; ++meta) {
list.add(new ItemStack(id, 1, meta));
}
Expand All @@ -106,18 +78,14 @@ public void getSubItems(Item id, CreativeTabs creativeTab, List list) {
@Override
public RoutingFocusLogic getLogic(ItemStack itemStack) {
if (itemStack != null) {
switch (itemStack.getItemDamage()) {
case 0:
return new RoutingFocusLogicLimitDefault(itemStack);
case 1:
return new RoutingFocusLogicLimitModItems(itemStack);
case 2:
return new RoutingFocusLogicLimitIgnMeta(itemStack);
case 3:
return new RoutingFocusLogicLimitMatchNBT(itemStack);
case 4:
return new RoutingFocusLogicLimitGlobal(itemStack);
}
return switch (itemStack.getItemDamage()) {
case 0 -> new RoutingFocusLogicLimitDefault(itemStack);
case 1 -> new RoutingFocusLogicLimitModItems(itemStack);
case 2 -> new RoutingFocusLogicLimitIgnMeta(itemStack);
case 3 -> new RoutingFocusLogicLimitMatchNBT(itemStack);
case 4 -> new RoutingFocusLogicLimitGlobal(itemStack);
default -> new RoutingFocusLogic();
};
}

return new RoutingFocusLogic();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ public void setSetDirection(ItemStack itemStack, ForgeDirection dir) {
}

@Override
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List<String> par3List,
boolean par4) {
par3List.add(StatCollector.translateToLocal(this.getFocusDescription()));

if (!(par1ItemStack.getTagCompound() == null)) {
Expand All @@ -89,7 +90,9 @@ public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlaye
+ itemTag.getInteger("zCoord"));
par3List.add(
StatCollector.translateToLocal("tooltip.alchemy.direction") + " "
+ this.getSetDirection(par1ItemStack));
+ StatCollector.translateToLocal(
"message.ritual.side."
+ this.getSetDirection(par1ItemStack).toString().toLowerCase()));
}
}

Expand Down Expand Up @@ -168,4 +171,17 @@ public int zCoord(ItemStack itemStack) {
public RoutingFocusLogic getLogic(ItemStack itemStack) {
return new RoutingFocusLogic();
}

public String getName(ItemStack stack) {
if (stack.hasTagCompound()) {
NBTTagCompound tag = stack.getTagCompound();
if (tag.hasKey("display", 10)) {
NBTTagCompound display = tag.getCompoundTag("display");
if (display.hasKey("Name", 8)) {
return display.getString("Name");
}
}
}
return "";
}
}
Loading