Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
reobf committed Sep 2, 2024
1 parent eaf5fb4 commit 0734ee0
Show file tree
Hide file tree
Showing 21 changed files with 1,194 additions and 54 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ catch (Exception ignored) {

// Pulls version first from the VERSION env and then git tag
String identifiedVersion = null
String versionOverride = '0.0.18p16'
String versionOverride = '0.0.18p17'
try {
// Produce a version based on the tag, or for branches something like 0.2.2-configurable-maven-and-extras.38+43090270b6-dirty
if (versionOverride == null) {
Expand Down
136 changes: 133 additions & 3 deletions src/main/java/reobf/proghatches/ae/PartAmountMaintainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Future;

import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.common.item.ItemFluidPacket;

import com.glodblock.github.inventory.MEMonitorIFluidHandler;
import com.glodblock.github.util.BlockPos;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.drawable.ItemDrawable;
Expand Down Expand Up @@ -40,6 +44,10 @@
import appeng.api.implementations.IPowerChannelState;
import appeng.api.networking.GridFlags;
import appeng.api.networking.IGridNode;
import appeng.api.networking.crafting.ICraftingCPU;
import appeng.api.networking.crafting.ICraftingJob;
import appeng.api.networking.crafting.ICraftingLink;
import appeng.api.networking.crafting.ICraftingRequester;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.networking.security.MachineSource;
import appeng.api.networking.storage.IBaseMonitor;
Expand All @@ -62,9 +70,11 @@
import appeng.client.texture.CableBusTextures;
import appeng.core.Api;
import appeng.core.api.definitions.ApiItems;
import appeng.crafting.CraftingLink;
import appeng.items.tools.ToolMemoryCard;
import appeng.me.GridAccessException;
import appeng.me.cache.GridStorageCache;
import appeng.me.cluster.implementations.CraftingCPUCluster;
import appeng.me.storage.MEInventoryHandler;
import appeng.parts.AEBasePart;
import appeng.parts.PartBasicState;
Expand Down Expand Up @@ -94,7 +104,7 @@
import reobf.proghatches.eucrafting.IGuiProvidingPart;
import reobf.proghatches.gt.metatileentity.util.polyfill.NumericWidget;

public class PartAmountMaintainer extends PartBasicState implements IGuiProvidingPart,IGridTickable,IPowerChannelState{
public class PartAmountMaintainer extends PartBasicState implements IGuiProvidingPart,IGridTickable,IPowerChannelState, ICraftingRequester{

private int mode;
private int rsmode;
Expand Down Expand Up @@ -139,10 +149,44 @@ public boolean shouldProceed(boolean red, boolean lastredstone){
return true;}


Future<ICraftingJob> job;
ICraftingLink link;
int reqcooldown;
public void requestForMissing(IAEStack primitive){
if(upgrade[1]==null)return;
if(reqcooldown>0)reqcooldown--;
IAEItemStack iaeStack=(primitive instanceof IAEItemStack)?(IAEItemStack) primitive:
ItemFluidDrop.newAeStack((AEFluidStack) primitive);

try {
if(link==null){
if(job==null){
reqcooldown=40;
job=getProxy().getCrafting().beginCraftingJob(this.getTile().getWorldObj(), getProxy().getGrid(), source, iaeStack, null);
}
else{
if(job.isDone()){
link = getProxy().getCrafting().submitJob(job.get(), this, null, false, source);
job=null;}
if(job.isCancelled()){job=null;}
}
}else{
if(link.isCanceled()||link.isDone()){link=null;}

}


} catch (Exception e1) {}
}



@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) {

// validateLink();

if(upgrade[0]==null)rsmode=0;
boolean red=this.getHost().hasRedstone(this.getSide());
boolean should=shouldProceed(red,lastredstone);
Expand Down Expand Up @@ -198,6 +242,8 @@ public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall)
sc:if(amount<expected){
try{
IAEStack take = getStorage(getProxy().getStorage(),ch).extractItems(is.copy().setStackSize(-amount+expected), Actionable.SIMULATE, source);
long missing=-amount+expected-(take==null?0:take.getStackSize());
if(missing>0)requestForMissing(is.copy().setStackSize(missing));
if(take==null){break sc;}//ae2fc fluid inv disallow injecting null
IAEStack notadd =inv.injectItems( take, Actionable.SIMULATE, source);
if(notadd==null||notadd.getStackSize()==0){
Expand Down Expand Up @@ -532,6 +578,7 @@ public int getSlotLimit(int slot) {
}
.setPos(60, 3+20).addTooltip(StatCollector.translateToLocal("proghatches.amountmaintainer.rscard")));


builder.widget(new CycleButtonWidget().setGetter(()->rsmode)
.setSetter(s->rsmode=s).setLength(6)
.setTextureGetter(s->{
Expand Down Expand Up @@ -560,7 +607,23 @@ public int getSlotLimit(int slot) {
.setEnabled((a)->(upgrade[0]!=null))
.setSize(18, 18)
.setPos(60+20, 3+20));


ItemStackHandler iss1=new ItemStackHandler(upgrade){

public boolean isItemValid(int slot, ItemStack stack) {
return Api.INSTANCE.definitions().materials().cardCrafting().isSameAs(stack);

};
public int getSlotLimit(int slot) {
return 1;};
};

builder.widget( new SlotWidget(new BaseSlot(iss1, 1)){


}
.setPos(60+40, 3+20).addTooltip(StatCollector.translateToLocal("proghatches.amountmaintainer.craftcard")));



return builder.build();
Expand Down Expand Up @@ -602,7 +665,8 @@ public Boolean getSignal(){
}
long freq;
private BaseActionSource source=new MachineSource(this);
ItemStack[] upgrade=new ItemStack[1];
ItemStack[] upgrade=new ItemStack[2];
private boolean danglingLink;

@Override
public void readFromNBT(NBTTagCompound data) {
Expand All @@ -614,7 +678,15 @@ public void readFromNBT(NBTTagCompound data) {
lastredstone=data.getBoolean("lastredstone" );
mark[0]=ItemStack.loadItemStackFromNBT(data.getCompoundTag("mark"));
upgrade[0]=ItemStack.loadItemStackFromNBT(data.getCompoundTag("upgrade"));
upgrade[1]=ItemStack.loadItemStackFromNBT(data.getCompoundTag("upgrade1"));
super.readFromNBT(data);
NBTTagCompound tag=data.getCompoundTag("link");

if(tag.hasNoTags()==false){
tag.setBoolean("req", true);
link=new CraftingLink(tag,this);
danglingLink=true;
}
}
@Override
public void writeToNBT(NBTTagCompound data) {
Expand All @@ -626,7 +698,13 @@ public void writeToNBT(NBTTagCompound data) {
data.setBoolean("lastredstone", lastredstone);
if(mark[0]!=null)data.setTag("mark", mark[0].writeToNBT(new NBTTagCompound()));
if(upgrade[0]!=null)data.setTag("upgrade", upgrade[0].writeToNBT(new NBTTagCompound()));
if(upgrade[1]!=null)data.setTag("upgrade1", upgrade[1].writeToNBT(new NBTTagCompound()));
super.writeToNBT(data);
if(link!=null){
NBTTagCompound tag=new NBTTagCompound();
link.writeToNBT(tag);
data.setTag("link", tag);
}
}
long amount=64;

Expand Down Expand Up @@ -715,5 +793,57 @@ private IMEMonitor getStorage(IStorageGrid g,StorageChannel c){
public void getDrops(final List<ItemStack> drops, final boolean wrenched) {
if(upgrade[0]!=null)
drops.add(upgrade[0]);
if(upgrade[1]!=null)
drops.add(upgrade[1]);
}

@Override
public ImmutableSet<ICraftingLink> getRequestedJobs() {

return link==null?ImmutableSet.of():ImmutableSet.of(link);
}

@Override
public IAEItemStack injectCraftedItems(ICraftingLink link, IAEItemStack items, Actionable mode) {

return items;
}

@Override
public void jobStateChange(ICraftingLink link) {


}

public void validateLink(){
try {
if(link!=null)
if(danglingLink)
{
getProxy().getCrafting().getCpus().stream().filter(s->{
if(s instanceof CraftingCPUCluster){
CraftingCPUCluster c=(CraftingCPUCluster) s;
boolean b=c.isBusy();
if(b){

if(Objects.equals(c.getLastCraftingLink().getCraftingID(),link.getCraftingID())){
link=c.getLastCraftingLink();
danglingLink=false;
return true;
}
}
}
return false;
}).findFirst().orElse(null);
}


} catch (GridAccessException e) {

e.printStackTrace();
}



}
}
Loading

0 comments on commit 0734ee0

Please sign in to comment.