Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ developmentEnvironmentUserName = Developer

# Enables using modern java syntax (up to version 17) via Jabel, while still targeting JVM 8.
# See https://github.com/bsideup/jabel for details on how this works.
enableModernJavaSyntax = false
enableModernJavaSyntax = true

# Enables injecting missing generics into the decompiled source code for a better coding experience
# Turns most publicly visible List, Map, etc. into proper List<Type>, Map<K, V> types
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/reobf/proghatches/ae/cpu/TileCPU.java
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ private static IStructureDefinition<TileCPU> STRUCTURE_DEFINITION(){
'b',
ofChain(
lazy(
t -> Util.hint(
(TileCPU t) -> Util.hint(
GTStructureUtility.<TileCPU>buildHatchAdder()
.atLeast(Energy, Maintenance, HatchElement.InputBus, HatchElement.OutputBus)
.casingIndex(CASING_INDEX)
Expand Down
96 changes: 94 additions & 2 deletions src/main/java/reobf/proghatches/item/ItemProgrammingToolkit.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
import java.util.Optional;
import java.util.function.Supplier;

import appeng.items.misc.ItemEncodedPattern;
import appeng.parts.misc.PartInterface;
import appeng.tile.misc.TileInterface;
import appeng.tile.networking.TileCableBus;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
Expand All @@ -13,11 +17,16 @@
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;

import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;

import com.google.common.collect.ImmutableList;
import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.forge.ItemStackHandler;
Expand Down Expand Up @@ -62,6 +71,7 @@ public void registerIcons(IIconRegister register) {
icons[0] = register.registerIcon("proghatches:toolkit0");
icons[1] = register.registerIcon("proghatches:toolkit1");
icons[2] = register.registerIcon("proghatches:toolkit2");
icons[3] = register.registerIcon("proghatches:toolkit3");
// super.registerIcons(register);
}

Expand Down Expand Up @@ -133,7 +143,10 @@ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p
case 2: {
p_77624_3_.add(LangManager.translateToLocal("item.prog_toolkit.name.tooltip.mode.2"));
}

case 3: {
p_77624_3_.add(LangManager.translateToLocal("item.prog_toolkit.name.tooltip.mode.3.1"));
p_77624_3_.add(LangManager.translateToLocal("item.prog_toolkit.name.tooltip.mode.3.2"));
}
}

int i = 0;
Expand All @@ -157,7 +170,7 @@ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p

}

public static int maxModes = 3;
public static int maxModes = 4;

@Override
public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer player) {
Expand All @@ -173,6 +186,85 @@ public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPl
return super.onItemRightClick(itemStackIn, worldIn, player);
}

@Override
public boolean onItemUse(final ItemStack itemStack, final EntityPlayer player, final World world, final int x, final int y,
final int z, final int side, final float hx, final float hy, final float hz)
{
if(world.isRemote) return true;
int itemMode=itemStack.getItemDamage();
if(itemMode==3) {
TileEntity te = world.getTileEntity(x, y, z);
if (te == null) return false;

IInventory patterns = null;
if (te instanceof TileInterface) {
patterns = ((TileInterface) te).getPatterns();
} else if (te instanceof TileCableBus tileCableBus) {
Object part = tileCableBus.getCableBus().getPart(ForgeDirection.getOrientation(side));
if (!(part instanceof PartInterface)) {
part = tileCableBus.getCableBus().getPart(findClosestSide(hx, hy, hz));
}
if (part instanceof PartInterface partInterface) {
patterns = partInterface.getPatterns();
}
}

if (patterns == null) return false;

int count = 0;
for (int i = 0; i < patterns.getSizeInventory(); i++) {
ItemStack item = patterns.getStackInSlot(i);
if (item == null || !(item.getItem() instanceof ItemEncodedPattern)) continue;

NBTTagCompound tag = item.getTagCompound();
if (tag == null) continue;

NBTTagList inTag = tag.getTagList("in", 10);
NBTTagList newInTag = new NBTTagList();
boolean changed = false;

for (int k = 0; k < inTag.tagCount(); k++) {
NBTTagCompound t = inTag.getCompoundTagAt(k);
ItemStack is = ItemStack.loadItemStackFromNBT(t);
if (is != null && is.getItem() instanceof ItemProgrammingCircuit) {
changed = true;
} else {
newInTag.appendTag(t);
}
}

if (changed) {
tag.setTag("in", newInTag);
item.setTagCompound(tag);
patterns.setInventorySlotContents(i, item);
count++;
}
}
if (count > 0) {
player.addChatMessage(new net.minecraft.util.ChatComponentTranslation("item.prog_toolkit.chat.pattern_cleaned", count));
}
return true;
}
return false;
}

private ForgeDirection findClosestSide(float hx, float hy, float hz) {
float[] dists = new float[6];
dists[0] = hy; // DOWN
dists[1] = 1.0f - hy; // UP
dists[2] = hz; // NORTH
dists[3] = 1.0f - hz; // SOUTH
dists[4] = hx; // WEST
dists[5] = 1.0f - hx; // EAST

int min = 0;
for (int i = 1; i < 6; i++) {
if (dists[i] < dists[min]) {
min = i;
}
}
return ForgeDirection.getOrientation(min);
}
@Override
public ModularWindow createWindow(UIBuildContext buildContext, ItemStack heldStack) {

Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/assets/proghatches/lang/en_US.lang
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ item.prog_toolkit.name.tooltip.3=to corresponding §fProgramming Circuit
item.prog_toolkit.name.tooltip.4=SHIFT+RMB to switch between modes
item.prog_toolkit.name.tooltip.mode.0=Disabled
item.prog_toolkit.name.tooltip.mode.1=Normal Mode
item.prog_toolkit.name.tooltip.mode.2=Add empty progcircuit if no NC inputs
item.prog_toolkit.name.tooltip.mode.3.1=Clear Mode
item.prog_toolkit.name.tooltip.mode.3.2=Right click a interface to clear all pattern's progcircuit
item.prog_toolkit.chat.pattern_cleaned=Successfully cleaned %s pattern's progcircuit
programmable_hatches.cover.smart.io.true=Internal to Adjacent
programmable_hatches.cover.smart.io.false=Adjacent to Internal
programmable_hatches.cover.smart.mode.0=map o->i
Expand Down Expand Up @@ -59,7 +63,6 @@ programmable_hatches.cover.smart.dyn.shift.1.1=§7may access wireless redstone s
programmable_hatches.cover.smart.dyn.shift.1.2=§7Minimum tick interval: 5 tick
programmable_hatches.cover.smart.dyn.shift.1=3
programmable_hatches.cover.smart.info.print.dyn=No mapping table available in dynamic mode.
item.prog_toolkit.name.tooltip.mode.2=Add empty progcircuit if no NC inputs
programmable_hatches.cover.wireless.invert.true=Use inverted Redstone
programmable_hatches.cover.wireless.safe.true=Safe Mode on
programmable_hatches.cover.wireless.crashed.true=Disabled
Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/assets/proghatches/lang/zh_CN.lang
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ item.prog_toolkit.name.tooltip.3=自动转换为对应的§f编程器电路
item.prog_toolkit.name.tooltip.4=shift右键切换模式
item.prog_toolkit.name.tooltip.mode.0=禁用
item.prog_toolkit.name.tooltip.mode.1=常规模式
item.prog_toolkit.name.tooltip.mode.2=无NC物品时添加空编程器电路
item.prog_toolkit.name.tooltip.mode.3.1=清除模式
item.prog_toolkit.name.tooltip.mode.3.2=右键一个接口以清理接口中所有样板的编程器电路
item.prog_toolkit.chat.pattern_cleaned=已清除 %s 样板中的编程器电路
programmable_hatches.cover.smart.io.true=内部 向 外部
programmable_hatches.cover.smart.io.false=外部 向 内部
programmable_hatches.cover.smart.mode.0=映射 o->i
Expand Down Expand Up @@ -58,7 +62,6 @@ programmable_hatches.cover.smart.dyn.shift.1.1=§7允许获取无线红石等信
programmable_hatches.cover.smart.dyn.shift.1.2=§7最小工作间隔: 5 tick
programmable_hatches.cover.smart.dyn.shift.1=3
programmable_hatches.cover.smart.info.print.dyn=动态模式不生成映射表
item.prog_toolkit.name.tooltip.mode.2=无NC物品时添加空编程器电路
programmable_hatches.cover.wireless.invert.true=反转信号
programmable_hatches.cover.wireless.safe.true=安全模式启用
programmable_hatches.cover.wireless.crashed.true=禁用
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.