Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
reobf committed Jun 26, 2024
1 parent 2db747e commit ac91161
Show file tree
Hide file tree
Showing 21 changed files with 392 additions and 40 deletions.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@
注意:
安装mod后会基于你当前的游戏语言,向GregTech.lang写入翻译条目,而写入后无法自动移除条目。
因此请先设置好游戏语言再安装此mod。
如果在运行过mod之后想更改语言,且启用了UseThisFileAsLanguageFile=true,你需要删除GregTech.lang,或者恢复安装mod前的GregTech.lang的备份(若有)。
如果在运行过mod之后想更改语言,且启用了UseThisFileAsLanguageFile=true,你需要删除GregTech.lang,或者恢复安装mod前的GregTech.lang的备份(若有)。


mod目前单文件适配GTNH整合包 2.5.1 2.6.0 2.6.1版本 不支持2.5.0及以下版本
若最新版mod不能在支持的整合包版本运行,请提issue
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ api("com.github.GTNewHorizons:NotEnoughEnergistics:1.5.1:dev")


api("com.github.GTNewHorizons:Avaritia:1.49:dev")

api('com.github.GTNewHorizons:GigaGramFab:0.3.19:dev')
api('com.github.GTNewHorizons:Angelica:1.0.0-alpha42:api') { transitive = false }
api("com.github.GTNewHorizons:AppleCore:3.3.0:dev") { transitive = false }
api("com.github.GTNewHorizons:BuildCraft:7.1.39:dev") { transitive = false }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -774,7 +774,7 @@ public boolean getRedstone() {

@Override
public void addUIWidgets(Builder builder, GT_CoverUIBuildContext ss) {

if(2>1)return;
builder.setBackground(ModularUITextures.VANILLA_BACKGROUND);
if (ss.isAnotherWindow() == false) {
int rgb = ss.getGuiColorization();
Expand Down
15 changes: 12 additions & 3 deletions src/main/java/reobf/proghatches/eucrafting/PartEUP2PInterface.java
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ public TickRateModulation tickingRequest(IGridNode node, int ticksSinceLastCall)



if (ok || redstoneticks > 0) {
if (ok || all.stream().map(s->s.redstoneticks>0).findAny().isPresent()) {
all.forEach(s->s.resetIdleCheckStatus(false));
try {

Expand All @@ -553,15 +553,24 @@ public TickRateModulation tickingRequest(IGridNode node, int ticksSinceLastCall)
*
* ((CraftingCPUCluster)cluster).addEmitable(AEItemStack
* .create(blank_token.copy()).setStackSize(prevamp));
*/redstoneticks = 0;
*/
all.forEach(s->s.redstoneticks=0);
//redstoneticks = 0;
amp = 0;
break;
}
}

if (refund(store, store)) {
amp = 0;
redstoneticks = 0;
//redstoneticks = 0;
all.forEach(s->s.redstoneticks=0);
}

if(amp<-1){
MyMod.LOG.error("inconsistance:"+amp+" "+Optional.ofNullable(this.getHost()).map(s->s.getTile()).map(s->s.toString()).orElse(""));
amp=0;

}
} catch (GridAccessException e) {
e.printStackTrace();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,20 @@

import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.networking.IGridNode;
import appeng.api.networking.crafting.ICraftingCPU;
import appeng.api.networking.crafting.ICraftingMedium;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.networking.crafting.ICraftingProviderHelper;
import appeng.api.networking.events.MENetworkCraftingPatternChange;
import appeng.api.networking.security.MachineSource;
import appeng.api.networking.ticking.IGridTickable;
import appeng.api.networking.ticking.TickRateModulation;
import appeng.api.networking.ticking.TickingRequest;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.IMEMonitor;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.util.DimensionalCoord;
import appeng.me.GridAccessException;
import appeng.me.cluster.implementations.CraftingCPUCluster;
import appeng.tile.TileEvent;
Expand All @@ -42,7 +47,9 @@
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IEnergyConnected;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.util.GT_Utility;
import gregtech.common.gui.modularui.widget.CoverCycleButtonWidget;
import ic2.api.energy.tile.IEnergySink;
Expand All @@ -65,7 +72,10 @@

// TileFluidInterface_EU.class.getName().contains("TileFluidInterface")->true
public class TileFluidInterface_EU extends TileFluidInterface
implements ITileWithModularUI, IInstantCompletable, IEnergyConnected, IDrain {
implements ITileWithModularUI, IInstantCompletable, IEnergyConnected, IDrain,

IGridTickable
{
static public IWailaDataProvider provider = new IWailaDataProvider() {

@Override
Expand Down Expand Up @@ -153,6 +163,8 @@ public void read(NBTTagCompound data) {
averageamp = data.getDouble("averageamp");
redstoneticks = data.getInteger("redstoneticks");
expectedamp = data.getLong("expectedamp");
fails=data.getInteger("fails");
pass=data.getBoolean("pass");
is.clear();
IntStream.range(0, data.getInteger("pending_size")).forEach(s -> {

Expand Down Expand Up @@ -205,6 +217,8 @@ public void write(NBTTagCompound data) {
data.setDouble("averageamp", averageamp);
data.setInteger("redstoneticks", redstoneticks);
data.setLong("expectedamp", expectedamp);
data.setInteger("fails", fails);
data.setBoolean("pass", pass);
for (int i = 0; i < is.size(); i++) {
data.setTag("pending_" + i, is.get(i).writeToNBT(new NBTTagCompound()));
}
Expand All @@ -227,20 +241,79 @@ public void setPriority(int newValue) {
public ArrayList<ItemStack> is = new ArrayList<>();
boolean prevPower;

@TileEvent(TileEventType.TICK)

public IMetaTileEntity getTargetTile(){

TileEntity te;
{
int x=getTile().xCoord;
int y=getTile().yCoord;
int z=getTile().zCoord;
ForgeDirection fd = this.getForward();
if(fd==ForgeDirection.UNKNOWN)return null;
te=getTile().getWorldObj().getTileEntity(
x+fd.offsetX,y+fd.offsetY,z+fd.offsetZ);
}
if(te==null)
return null;

if(te instanceof IGregTechTileEntity){

return ((IGregTechTileEntity) te).getMetaTileEntity();


}
return null;

}
private void resetIdleCheckStatus(boolean check) {
fails=0;
pass=false;

}
boolean pass;int fails;

@Override
public TickingRequest getTickingRequest(final IGridNode node) {
return new TickingRequest(1, 1, false, false);
//return super.tickingRequest(node, ticksSinceLastCall);
}
@Override
public TickRateModulation tickingRequest(IGridNode node, int ticksSinceLastCall) {

tick();
return TickRateModulation.SAME;
}

//@TileEvent(TileEventType.TICK)
public void tick() {
if (this.worldObj.isRemote) {
return;
}
returnItems();

boolean pw = this.getWorldObj().isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord);
boolean ok=false;

/* boolean pw = this.getWorldObj().isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord);
boolean downedge = pw == false && prevPower == true;
prevPower = pw;
if (downedge || redstoneticks > 0) {

*/

IMetaTileEntity t = getTargetTile();
if(t!=null&&t instanceof IIdleStateProvider){
if(pass)return;
if(((IIdleStateProvider) t).getIdle()==1){
pass=true;
}
if(((IIdleStateProvider) t).failThisTick()){
if(fails++==2){pass=true;};//fail 2 times, so assume no valid inputs, just pass it
}
{ok=true;}
}


if (ok || redstoneticks > 0) {
resetIdleCheckStatus(false);
try {

IMEMonitor<IAEItemStack> store = getProxy().getStorage().getItemInventory();
Expand Down Expand Up @@ -335,6 +408,7 @@ public boolean pushPattern(ICraftingPatternDetails patternDetails, InventoryCraf
boolean succ = super.pushPattern(p.original, table);
if (succ) {
amp = Math.max(amp, count[0]);
resetIdleCheckStatus(false);
is.add(p.extraOut0);
}

Expand Down
7 changes: 7 additions & 0 deletions src/main/java/reobf/proghatches/gt/cover/IProgrammer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package reobf.proghatches.gt.cover;

import gregtech.api.interfaces.tileentity.ICoverable;

public interface IProgrammer {
public void impl(ICoverable aTileEntity) ;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import com.gtnewhorizons.modularui.api.screen.ModularWindow;

import appeng.helpers.IPriorityHost;
import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.ITexture;
Expand All @@ -18,6 +19,7 @@
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_CycleButtonWidget;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_CraftingInput_ME;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import net.minecraftforge.common.util.ForgeDirection;
Expand Down
62 changes: 62 additions & 0 deletions src/main/java/reobf/proghatches/gt/cover/LinkedBusSlaveCover.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package reobf.proghatches.gt.cover;

import java.util.Optional;

import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_CoverBehaviorBase;
import net.glease.ggfab.mte.MTE_LinkedInputBus;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
import reobf.proghatches.gt.metatileentity.util.IProgrammingCoverBlacklisted;

public class LinkedBusSlaveCover extends GT_CoverBehavior implements IProgrammer{


@Override
public int getTickRate(ForgeDirection side, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {

return 1;
}

@Override
public void impl(ICoverable aTileEntity) {
if(aTileEntity instanceof IGregTechTileEntity){
IMetaTileEntity x = ((IGregTechTileEntity) aTileEntity).getMetaTileEntity();
if(x instanceof MTE_LinkedInputBus){
MTE_LinkedInputBus bus=(MTE_LinkedInputBus) x;
try{
ItemStack is=ProgrammingCover.sync(bus);
bus.setInventorySlotContents(bus.getCircuitSlot(), is);
}catch(RuntimeException e){
//expected, do nothing
}
}

}

}
@Override
public boolean isCoverPlaceable(ForgeDirection side, ItemStack aStack, ICoverable aTileEntity) {
if (!Optional.of(aTileEntity).filter(s -> s instanceof IGregTechTileEntity)
.map(s -> ((IGregTechTileEntity) s).getMetaTileEntity())
.filter(s -> s instanceof MTE_LinkedInputBus).isPresent())
return false;
for(ForgeDirection d: ForgeDirection.VALID_DIRECTIONS){
GT_CoverBehaviorBase<?> beh = aTileEntity.getCoverBehaviorAtSideNew(d);
if(beh!=null&&beh.getClass()==ProgrammingCover.class){return false;}
}
return super.isCoverPlaceable(side, aStack, aTileEntity);
}

@Override
public int doCoverThings(ForgeDirection side, byte aInputRedstone, int aCoverID, int aCoverVariable,
ICoverable aTileEntity, long aTimer) {
impl(aTileEntity);

return aCoverVariable;
}

}
Loading

0 comments on commit ac91161

Please sign in to comment.