use of WayofTime.alchemicalWizardry.common.items.routing.OutputRoutingFocus in project BloodMagic by WayofTime.
the class ModItems method init.
public static void init() {
weakBloodOrb = new EnergyBattery(5000).setUnlocalizedName("weakBloodOrb");
apprenticeBloodOrb = new ApprenticeBloodOrb(25000).setUnlocalizedName("apprenticeBloodOrb");
magicianBloodOrb = new MagicianBloodOrb(150000).setUnlocalizedName("magicianBloodOrb");
masterBloodOrb = new MasterBloodOrb(1000000).setUnlocalizedName("masterBloodOrb");
archmageBloodOrb = new ArchmageBloodOrb(10000000).setUnlocalizedName("archmageBloodOrb");
transcendentBloodOrb = new TranscendentBloodOrb(30000000).setUnlocalizedName("transcendentBloodOrb");
energyBlaster = new EnergyBlast().setUnlocalizedName("energyBlast");
energySword = new EnergySword().setUnlocalizedName("energySword");
lavaCrystal = new LavaCrystal().setUnlocalizedName("lavaCrystal");
waterSigil = new SigilWater().setUnlocalizedName("waterSigil");
lavaSigil = new SigilLava().setUnlocalizedName("lavaSigil");
voidSigil = new SigilVoid().setUnlocalizedName("voidSigil");
blankSlate = new AWBaseItems().setUnlocalizedName("blankSlate");
reinforcedSlate = new AWBaseItems().setUnlocalizedName("reinforcedSlate");
sacrificialDagger = new SacrificialDagger().setUnlocalizedName("sacrificialDagger");
daggerOfSacrifice = new DaggerOfSacrifice().setUnlocalizedName("daggerOfSacrifice");
airSigil = new SigilAir().setUnlocalizedName("airSigil");
sigilOfTheFastMiner = new SigilOfTheFastMiner().setUnlocalizedName("sigilOfTheFastMiner");
sigilOfElementalAffinity = new SigilOfElementalAffinity().setUnlocalizedName("sigilOfElementalAffinity");
sigilOfHaste = new SigilOfHaste().setUnlocalizedName("sigilOfHaste");
sigilOfHolding = new SigilOfHolding().setUnlocalizedName("sigilOfHolding");
divinationSigil = new SigilDivination().setUnlocalizedName("divinationSigil");
waterScribeTool = new WaterScribeTool().setUnlocalizedName("waterScribeTool");
fireScribeTool = new FireScribeTool().setUnlocalizedName("fireScribeTool");
earthScribeTool = new EarthScribeTool().setUnlocalizedName("earthScribeTool");
airScribeTool = new AirScribeTool().setUnlocalizedName("airScribeTool");
activationCrystal = new ActivationCrystal();
boundPickaxe = new BoundPickaxe().setUnlocalizedName("boundPickaxe");
boundAxe = new BoundAxe().setUnlocalizedName("boundAxe");
boundShovel = new BoundShovel().setUnlocalizedName("boundShovel");
boundHelmet = new BoundArmour(0).setUnlocalizedName("boundHelmet");
boundPlate = new BoundArmour(1).setUnlocalizedName("boundPlate");
boundLeggings = new BoundArmour(2).setUnlocalizedName("boundLeggings");
boundBoots = new BoundArmour(3).setUnlocalizedName("boundBoots");
weakBloodShard = new BloodShard().setUnlocalizedName("weakBloodShard");
growthSigil = new SigilOfGrowth().setUnlocalizedName("growthSigil");
blankSpell = new BlankSpell().setUnlocalizedName("blankSpell");
alchemyFlask = new AlchemyFlask().setUnlocalizedName("alchemyFlask");
standardBindingAgent = new StandardBindingAgent().setUnlocalizedName("standardBindingAgent");
mundanePowerCatalyst = new MundanePowerCatalyst().setUnlocalizedName("mundanePowerCatalyst");
averagePowerCatalyst = new AveragePowerCatalyst().setUnlocalizedName("averagePowerCatalyst");
greaterPowerCatalyst = new GreaterPowerCatalyst().setUnlocalizedName("greaterPowerCatalyst");
mundaneLengtheningCatalyst = new MundaneLengtheningCatalyst().setUnlocalizedName("mundaneLengtheningCatalyst");
averageLengtheningCatalyst = new AverageLengtheningCatalyst().setUnlocalizedName("averageLengtheningCatalyst");
greaterLengtheningCatalyst = new GreaterLengtheningCatalyst().setUnlocalizedName("greaterLengtheningCatalyst");
incendium = new AlchemyReagent().setUnlocalizedName("incendium");
magicales = new AlchemyReagent().setUnlocalizedName("magicales");
sanctus = new AlchemyReagent().setUnlocalizedName("sanctus");
aether = new AlchemyReagent().setUnlocalizedName("aether");
simpleCatalyst = new AlchemyReagent().setUnlocalizedName("simpleCatalyst");
crepitous = new AlchemyReagent().setUnlocalizedName("crepitous");
crystallos = new AlchemyReagent().setUnlocalizedName("crystallos");
terrae = new AlchemyReagent().setUnlocalizedName("terrae");
aquasalus = new AlchemyReagent().setUnlocalizedName("aquasalus");
tennebrae = new AlchemyReagent().setUnlocalizedName("tennebrae");
demonBloodShard = new BloodShard().setUnlocalizedName("demonBloodShard");
sigilOfWind = new SigilOfWind().setUnlocalizedName("sigilOfWind");
telepositionFocus = new TelepositionFocus(1).setUnlocalizedName("telepositionFocus");
enhancedTelepositionFocus = new EnhancedTelepositionFocus().setUnlocalizedName("enhancedTelepositionFocus");
reinforcedTelepositionFocus = new ReinforcedTelepositionFocus().setUnlocalizedName("reinforcedTelepositionFocus");
demonicTelepositionFocus = new DemonicTelepositionFocus().setUnlocalizedName("demonicTelepositionFocus");
imbuedSlate = new AWBaseItems().setUnlocalizedName("imbuedSlate");
demonicSlate = new AWBaseItems().setUnlocalizedName("demonicSlate");
duskScribeTool = new DuskScribeTool().setUnlocalizedName("duskScribeTool");
sigilOfTheBridge = new SigilOfTheBridge().setUnlocalizedName("sigilOfTheBridge");
armourInhibitor = new ArmourInhibitor().setUnlocalizedName("armourInhibitor");
creativeFiller = new CheatyItem().setUnlocalizedName("cheatyItem");
demonPlacer = new DemonPlacer().setUnlocalizedName("demonPlacer");
creativeDagger = new CreativeDagger().setUnlocalizedName("creativeDagger");
weakFillingAgent = new WeakFillingAgent().setUnlocalizedName("weakFillingAgent");
standardFillingAgent = new StandardFillingAgent().setUnlocalizedName("standardFillingAgent");
enhancedFillingAgent = new EnhancedFillingAgent().setUnlocalizedName("enhancedFillingAgent");
weakBindingAgent = new WeakBindingAgent().setUnlocalizedName("weakBindingAgent");
itemRitualDiviner = new ItemRitualDiviner().setUnlocalizedName("ritualDiviner");
sigilOfMagnetism = new SigilOfMagnetism().setUnlocalizedName("sigilOfMagnetism");
itemKeyOfDiablo = new ItemDiabloKey().setUnlocalizedName("itemDiabloKey");
energyBazooka = new EnergyBazooka().setUnlocalizedName("energyBazooka");
itemBloodLightSigil = new SigilBloodLight().setUnlocalizedName("bloodLightSigil");
itemComplexSpellCrystal = new ItemComplexSpellCrystal().setUnlocalizedName("itemComplexSpellCrystal");
bucketLife = new LifeBucket(ModBlocks.blockLifeEssence).setUnlocalizedName("bucketLife").setContainerItem(Items.bucket).setCreativeTab(CreativeTabs.tabMisc);
itemSigilOfEnderSeverance = (new SigilOfEnderSeverance()).setUnlocalizedName("itemSigilOfEnderSeverance");
baseItems = new ItemComponents().setUnlocalizedName("baseItems");
baseAlchemyItems = new ItemAlchemyBase().setUnlocalizedName("baseAlchemyItems");
itemSigilOfSupression = new SigilOfSupression().setUnlocalizedName("itemSigilOfSupression");
itemFluidSigil = new SigilFluid().setUnlocalizedName("itemFluidSigil");
itemSeerSigil = new SigilSeer().setUnlocalizedName("itemSeerSigil");
customTool = new ItemSpellMultiTool().setUnlocalizedName("multiTool");
SpellParadigmTool.customTool = customTool;
itemCombinationalCatalyst = new CombinationalCatalyst().setUnlocalizedName("itemCombinationalCatalyst");
itemAttunedCrystal = new ItemAttunedCrystal().setUnlocalizedName("itemAttunedCrystal");
itemTankSegmenter = new ItemTankSegmenter().setUnlocalizedName("itemTankSegmenter");
itemDestinationClearer = new ItemDestinationClearer().setUnlocalizedName("destinationClearer");
dawnScribeTool = new DawnScribeTool().setUnlocalizedName("dawnScribeTool");
itemBloodPack = new ItemBloodLetterPack().setUnlocalizedName("itemBloodPack");
itemHarvestSigil = new SigilHarvest().setUnlocalizedName("itemHarvestSigil");
itemCompressionSigil = new SigilPackRat().setUnlocalizedName("itemCompressionSigil");
itemAssassinSigil = new SigilOfTheAssassin().setUnlocalizedName("itemAssassinSigil");
boundHelmetWater = new OmegaArmourWater(0).setUnlocalizedName("boundHelmetWater");
boundPlateWater = new OmegaArmourWater(1).setUnlocalizedName("boundPlateWater");
boundLeggingsWater = new OmegaArmourWater(2).setUnlocalizedName("boundLeggingsWater");
boundBootsWater = new OmegaArmourWater(3).setUnlocalizedName("boundBootsWater");
boundHelmetEarth = new OmegaArmourEarth(0).setUnlocalizedName("boundHelmetEarth");
boundPlateEarth = new OmegaArmourEarth(1).setUnlocalizedName("boundPlateEarth");
boundLeggingsEarth = new OmegaArmourEarth(2).setUnlocalizedName("boundLeggingsEarth");
boundBootsEarth = new OmegaArmourEarth(3).setUnlocalizedName("boundBootsEarth");
boundHelmetWind = new OmegaArmourWind(0).setUnlocalizedName("boundHelmetWind");
boundPlateWind = new OmegaArmourWind(1).setUnlocalizedName("boundPlateWind");
boundLeggingsWind = new OmegaArmourWind(2).setUnlocalizedName("boundLeggingsWind");
boundBootsWind = new OmegaArmourWind(3).setUnlocalizedName("boundBootsWind");
boundHelmetFire = new OmegaArmourFire(0).setUnlocalizedName("boundHelmetFire");
boundPlateFire = new OmegaArmourFire(1).setUnlocalizedName("boundPlateFire");
boundLeggingsFire = new OmegaArmourFire(2).setUnlocalizedName("boundLeggingsFire");
boundBootsFire = new OmegaArmourFire(3).setUnlocalizedName("boundBootsFire");
inputRoutingFocus = new InputRoutingFocus().setUnlocalizedName("inputRoutingFocus");
outputRoutingFocus = new OutputRoutingFocus().setUnlocalizedName("outputRoutingFocus");
itemIncense = new ItemIncense().setUnlocalizedName("bloodMagicIncenseItem");
ritualDismantler = new ItemRitualDismantler().setUnlocalizedName("ritualDismantler");
}
use of WayofTime.alchemicalWizardry.common.items.routing.OutputRoutingFocus in project BloodMagic by WayofTime.
the class RitualEffectItemRouting method performEffect.
@Override
public void performEffect(IMasterRitualStone ritualStone) {
String owner = ritualStone.getOwner();
int currentEssence = SoulNetworkHandler.getCurrentEssence(owner);
World world = ritualStone.getWorld();
int x = ritualStone.getXCoord();
int y = ritualStone.getYCoord();
int z = ritualStone.getZCoord();
if (world.getWorldTime() % 20 != 0) {
return;
}
Map<Int3, IInventory> tileMap = new HashMap();
List<IInventory> outputList = new ArrayList();
for (// Check output foci chests, return if none available
int i = 0; // Check output foci chests, return if none available
i < 4; // Check output foci chests, return if none available
i++) {
Int3 outputFocusChest = this.getOutputBufferChestLocation(i);
TileEntity outputFocusInv = world.getTileEntity(x + outputFocusChest.xCoord, y + outputFocusChest.yCoord, z + outputFocusChest.zCoord);
if (outputFocusInv instanceof IInventory) {
outputList.add((IInventory) outputFocusInv);
}
}
if (outputList.isEmpty()) {
return;
}
for (IInventory outputFocusInventory : outputList) {
{
OutputRoutingFocus outputFocus;
;
RoutingFocusParadigm parad = new RoutingFocusParadigm();
// Destination
TileEntity outputChest = null;
ForgeDirection inputDirection;
{
IInventory outputChestInventory = null;
boolean lastItemWasFocus = true;
for (int j = 0; j < outputFocusInventory.getSizeInventory(); j++) {
ItemStack keyStack = outputFocusInventory.getStackInSlot(j);
if (keyStack == null) {
continue;
}
if (keyStack.getItem() instanceof OutputRoutingFocus) {
if (!lastItemWasFocus) {
parad.clear();
}
outputFocus = (OutputRoutingFocus) keyStack.getItem();
parad.addRoutingFocusPosAndFacing(outputFocus.getPosAndFacing(keyStack));
parad.addLogic(outputFocus.getLogic(keyStack));
lastItemWasFocus = true;
continue;
} else {
lastItemWasFocus = false;
}
for (RoutingFocusPosAndFacing posAndFacing : parad.locationList) {
if (posAndFacing == null) {
continue;
}
inputDirection = posAndFacing.facing;
if (outputChest == null || !posAndFacing.location.equals(new Int3(outputChest.xCoord, outputChest.yCoord, outputChest.zCoord))) {
outputChest = world.getTileEntity(posAndFacing.location.xCoord, posAndFacing.location.yCoord, posAndFacing.location.zCoord);
if (outputChest instanceof IInventory) {
outputChestInventory = (IInventory) outputChest;
} else {
continue;
}
}
for (int i = 0; i < 4; i++) {
Int3 inputFocusChest = this.getInputBufferChestLocation(i);
TileEntity inputFocusInv = world.getTileEntity(x + inputFocusChest.xCoord, y + inputFocusChest.yCoord, z + inputFocusChest.zCoord);
if (inputFocusInv instanceof IInventory) {
for (// Iterate through foci inventory
int ji = 0; // Iterate through foci inventory
ji < ((IInventory) inputFocusInv).getSizeInventory(); // Iterate through foci inventory
ji++) {
ItemStack inputFocusStack = ((IInventory) inputFocusInv).getStackInSlot(ji);
if (inputFocusStack != null && inputFocusStack.getItem() instanceof InputRoutingFocus) {
InputRoutingFocus inputFocus = (InputRoutingFocus) inputFocusStack.getItem();
TileEntity inputChest = world.getTileEntity(inputFocus.xCoord(inputFocusStack), inputFocus.yCoord(inputFocusStack), inputFocus.zCoord(inputFocusStack));
if (inputChest instanceof IInventory) {
IInventory inputChestInventory = (IInventory) inputChest;
ForgeDirection syphonDirection = inputFocus.getSetDirection(inputFocusStack);
boolean[] canSyphonList = new boolean[inputChestInventory.getSizeInventory()];
if (inputChest instanceof ISidedInventory) {
int[] validSlots = ((ISidedInventory) inputChest).getAccessibleSlotsFromSide(syphonDirection.ordinal());
for (int in : validSlots) {
canSyphonList[in] = true;
}
} else {
for (int ni = 0; ni < inputChestInventory.getSizeInventory(); ni++) {
canSyphonList[ni] = true;
}
}
for (int ni = 0; ni < inputChestInventory.getSizeInventory(); ni++) {
if (canSyphonList[ni]) {
// Has a syphoned item linked, next need to find a destination
ItemStack syphonedStack = inputChestInventory.getStackInSlot(ni);
if (syphonedStack == null || (inputChestInventory instanceof ISidedInventory && !((ISidedInventory) inputChestInventory).canExtractItem(ni, syphonedStack, syphonDirection.ordinal()))) {
continue;
}
int size = syphonedStack.stackSize;
if (parad.doesItemMatch(keyStack, syphonedStack)) {
ItemStack newStack = null;
if (parad.maximumAmount <= 0) {
newStack = SpellHelper.insertStackIntoInventory(syphonedStack, outputChestInventory, inputDirection);
} else {
newStack = SpellHelper.insertStackIntoInventory(syphonedStack, outputChestInventory, inputDirection, parad.maximumAmount);
}
if (size == newStack.stackSize) {
continue;
}
int numberSyphoned = size - newStack.stackSize;
if (newStack != null && newStack.stackSize <= 0) {
size = newStack.stackSize;
newStack = null;
}
inputChestInventory.setInventorySlotContents(ni, newStack);
// break;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
Aggregations