Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
reobf committed Jun 21, 2024
1 parent fda5a47 commit bd35b56
Show file tree
Hide file tree
Showing 7 changed files with 264 additions and 9 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.16'
String versionOverride = '0.0.16p1'
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
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ api("com.github.GTNewHorizons:NotEnoughEnergistics:1.5.1:dev")
api('com.github.GTNewHorizons:BlockRenderer6343:1.1.6:dev')
api("com.google.auto.value:auto-value-annotations:1.10.1") { transitive = false }
annotationProcessor("com.google.auto.value:auto-value:1.10.1")

api('com.github.GTNewHorizons:GTplusplus:1.11.58:dev')

api("com.github.GTNewHorizons:OpenComputers:1.9.14-GTNH:dev")
api('com.github.GTNewHorizons:GT5-Unofficial:5.09.45.163:dev')
Expand Down
101 changes: 100 additions & 1 deletion src/main/java/reobf/proghatches/gt/metatileentity/RemoteInputBus.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

import static gregtech.api.enums.Textures.BlockIcons.ITEM_IN_SIGN;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.stream.IntStream;

import javax.annotation.Nullable;

Expand All @@ -17,21 +19,31 @@
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.ForgeDirection;

import com.gtnewhorizons.modularui.api.screen.ModularWindow.Builder;
import com.gtnewhorizons.modularui.api.widget.Widget;
import com.google.common.collect.ImmutableMap;
import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.forge.ItemHandlerHelper;
import com.gtnewhorizons.modularui.api.forge.ItemStackHandler;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.common.internal.wrapper.BaseSlot;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.SlotGroup;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;
import com.gtnewhorizons.modularui.common.widget.SyncedWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;

import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.IConfigurationCircuitSupport;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
Expand Down Expand Up @@ -197,6 +209,93 @@ public void addUIWidgets(Builder builder, UIBuildContext buildContext) {
}

).setSynced(true).setPos(5, 5));
ItemStackHandler is;
SlotWidget[] circuitslot=new SlotWidget[1];
builder.widget(
SlotGroup.ofItemHandler(is=new ItemStackHandler(17), 8)
.widgetCreator(s->{
SlotWidget sw=
(SlotWidget)new SlotWidget(s).disableInteraction();

if(s.getSlotIndex()==16){
circuitslot[0]=sw;
}

return sw;
}
)
.phantom(true).startFromSlot(0).endAtSlot(16)
.build().setPos(3, 3+16)
);



circuitslot[0].setBackground( getGUITextureSet().getItemSlot(),GT_UITextures.OVERLAY_SLOT_INT_CIRCUIT);


builder.widget(new SyncedWidget() {
int count;
@Override
public void detectAndSendChanges(boolean init) {
if(count--<=0){count=100;}else return;

Optional<TileEntity> opt = getTile();
if(opt.isPresent()){
List<ItemStack> list = opt.map(e->filterTakable(e)).get();
for(int i=0;i<is.getSlots()-1;i++){
is.setStackInSlot(i,
list.size()>i?
list.get(i):null
);
}

TileEntity gt = opt.orElse(null);
if (gt != null && gt instanceof IGregTechTileEntity) {
IMetaTileEntity meta = ((IGregTechTileEntity) gt).getMetaTileEntity();
if (meta != null && (meta instanceof IConfigurationCircuitSupport)) {
IConfigurationCircuitSupport c = (IConfigurationCircuitSupport) meta;
is.setStackInSlot(16,meta.getStackInSlot(c.getCircuitSlot()));
}
}




}else{
for(int i=0;i<is.getSlots();i++){
is.setStackInSlot(i, null);

}

}
}

public void readOnClient(int id, PacketBuffer buf) throws IOException {}
public void readOnServer(int id, PacketBuffer buf) throws IOException {}
});



Widget w;
builder.widget(w=new DrawableWidget().setDrawable(ModularUITextures.ICON_INFO)

.setPos(3+18*8+1, 3+18*2+1).setSize(16,16)
// .addTooltip("xxxxxxx")
);





IntStream
.range(0,
Integer.valueOf(StatCollector.translateToLocal(
"programmable_hatches.gt.remotebus.tooltip")))
.forEach(s -> w.addTooltip(LangManager.translateToLocal(
"programmable_hatches.gt.remotebus.tooltip." + + s)));



// buildContext.addCloseListener(() -> uiButtonCount = 0);
}

Expand Down Expand Up @@ -249,7 +348,7 @@ public List<ItemStack> filterTakable(TileEntity e) {
;
// }

slots.stream().map(inv::getStackInSlot).forEach(arr::add);
//slots.stream().map(inv::getStackInSlot).forEach(arr::add);
;
for (int i = 0; i < size; i++) {
if (slots.contains(i)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,61 @@
import static gregtech.api.enums.Textures.BlockIcons.FLUID_IN_SIGN;

import java.io.Closeable;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;

import javax.annotation.Nullable;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import net.minecraftforge.fluids.IFluidTank;

import com.gtnewhorizons.modularui.api.screen.ModularWindow.Builder;
import com.gtnewhorizons.modularui.api.widget.Interactable;
import com.gtnewhorizons.modularui.api.widget.Widget;
import com.gtnewhorizons.modularui.api.widget.Widget.ClickData;
import com.google.common.collect.HashMultiset;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.drawable.Text;
import com.gtnewhorizons.modularui.api.forge.ItemStackHandler;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.FluidSlotWidget;
import com.gtnewhorizons.modularui.common.widget.SlotGroup;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;
import com.gtnewhorizons.modularui.common.widget.SyncedWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;

import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.IConfigurationCircuitSupport;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_MultiInput;
Expand Down Expand Up @@ -168,6 +192,7 @@ public RemoteInputHatch(int id, String name, String nameRegional, int tier) {

}

@SuppressWarnings("unchecked")
@Override
public void addUIWidgets(Builder builder, UIBuildContext buildContext) {
// super.addUIWidgets(builder, buildContext);
Expand Down Expand Up @@ -200,7 +225,113 @@ public void addUIWidgets(Builder builder, UIBuildContext buildContext) {
).setSynced(true).setPos(5, 5))

;
List<FluidTank> is;

builder.widget(
SlotGroup.ofFluidTanks(
(List)
(
is=Stream.generate(()->new FluidTank(Integer.MAX_VALUE)).limit(16).collect(Collectors.toList())
),
8)
.widgetCreator((s,b)->{
FluidSlotWidget sw=
new FluidSlotWidget(b){
@Override
public void buildTooltip(List<Text> tooltip) {
// super.buildTooltip(tooltip);
FluidStack fluid = getContent();
if (fluid != null) {
addFluidNameInfo(tooltip, fluid);
tooltip.add(Text.localised("modularui.fluid.phantom.amount", fluid.amount));
addAdditionalFluidInfo(tooltip, fluid);
if (!Interactable.hasShiftDown()) {
tooltip.add(Text.EMPTY);
tooltip.add(Text.localised("modularui.tooltip.shift"));
}
} else {
tooltip.add(
Text.localised("modularui.fluid.empty")
.format(EnumChatFormatting.WHITE));
}
}
@Override
protected void tryClickPhantom(ClickData clickData, ItemStack cursorStack) {}

@Override
protected void tryScrollPhantom(int direction) {}
};



return sw;
}
)
.phantom(true).startFromSlot(0).endAtSlot(16)
.build().setPos(3, 3+16)
);



builder.widget(new SyncedWidget() {
int count;
@Override
public void detectAndSendChanges(boolean init) {
if(count--<=0){count=100;}else return;

Optional<TileEntity> opt = getTile();
if(opt.isPresent()){
List<FluidStack> list = opt.map(e->{
try{processingRecipe=true;
return filterTakable(e);
}finally{processingRecipe=false;
tmp=null;
}

}).get();
for(int i=0;i<is.size();i++){
is.get(i).setFluid(
list.size()>i?
list.get(i):null
);
}






}else{
for(int i=0;i<is.size();i++){
is.get(i).setFluid(null);

}

}
}

public void readOnClient(int id, PacketBuffer buf) throws IOException {}
public void readOnServer(int id, PacketBuffer buf) throws IOException {}
});

Widget w;
builder.widget(w=new DrawableWidget().setDrawable(ModularUITextures.ICON_INFO)

.setPos(3+18*8+1, 3+18*2+1).setSize(16,16)
// .addTooltip("xxxxxxx")
);





IntStream
.range(0,
Integer.valueOf(StatCollector.translateToLocal(
"programmable_hatches.gt.remotehatch.tooltip")))
.forEach(s -> w.addTooltip(LangManager.translateToLocal(
"programmable_hatches.gt.remotehatch.tooltip." + + s)));

}

@Override
Expand Down Expand Up @@ -294,7 +425,7 @@ public List<FluidStack> filterTakable(TileEntity e) {
if (e instanceof IFluidHandler) {

IFluidHandler side = (IFluidHandler) e;
HashSet<ShadowFluidStack> slots = new HashSet<ShadowFluidStack>();
HashMultiset<ShadowFluidStack> slots = HashMultiset.create();
// for(ForgeDirection dir:ForgeDirection.VALID_DIRECTIONS){
for (FluidTankInfo i : side.getTankInfo(this.getBaseMetaTileEntity().getFrontFacing())) {

Expand All @@ -315,7 +446,7 @@ public List<FluidStack> filterTakable(TileEntity e) {
private volatile ArrayList<ShadowFluidStack> tmp = null;

public class ShadowFluidStack extends FluidStack {

FluidStack original;

public ShadowFluidStack(FluidStack stack) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,19 +56,24 @@ public void startCrafting(MECraftingInventory storage, ICraftingCPU rawCluster,

if (a instanceof CircuitProviderPatternDetial) {
CircuitProviderPatternDetial w = (CircuitProviderPatternDetial) a;
Optional.ofNullable(w).map(s->s.out).ifPresent(x->
MyMod.LOG.info("Removing EU Source Pattern Request: " + x+x.getTagCompound()));
Optional.ofNullable(w).map(s->s.out).ifPresent(x->{

if (w.out.getItem() == MyMod.eu_token) {
MyMod.LOG.info("Removing EU Source Pattern Request: " + x+x.getTagCompound());
MixinCallback.setter.accept(b, 0l);
}
});

}
if (a instanceof SISOPatternDetail) {
SISOPatternDetail w = (SISOPatternDetail) a;
Optional.ofNullable(w).map(s->s.out).ifPresent(x->
MyMod.LOG.info("Removing EU Interface Binding Pattern Request: " + x+x.getTagCompound()));
Optional.ofNullable(w).map(s->s.out).ifPresent(x->{
if (w.in.getItem() == MyMod.eu_token && w.out.getItem() == MyMod.eu_token) {
MyMod.LOG.info("Removing EU Interface Binding Pattern Request: " + x+x.getTagCompound());
MixinCallback.setter.accept(b, 0l);
}
});

}

});
Expand Down
Loading

0 comments on commit bd35b56

Please sign in to comment.