Skip to content

Commit ae76d05

Browse files
committed
完善功能,现在可以通过无线终端请求AE中的材料
现在可以在缺失材料时,向AE可合成的材料发起合成 现在右键控制器进行投影,潜行右键控制器进行搭建 投影时可以通过潜行+滚轮控制投影层数 补充提示信息 重新处理部分搭建逻辑,优化方块放置性能 防止缺失材料时被空位置打断放置
1 parent 0821b13 commit ae76d05

34 files changed

+2664
-1945
lines changed

build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,6 @@ dependencies {
292292
implementation(rfg.deobf("curse.maven:libnine-322344:3509087"))
293293
implementation(rfg.deobf("curse.maven:lazy-ae2-322347:3254160"))
294294
compileOnly(rfg.deobf("curse.maven:better-chat-363860:3048407"))
295-
compileOnly(rfg.deobf("curse.maven:ae2-fluid-crafting-rework-623955:5237484"))
296295
compileOnly(rfg.deobf("curse.maven:lunatriuscore-225605:2489549"))
297296
compileOnly(rfg.deobf("curse.maven:immersive-engineering-231951:2974106"))
298297
compileOnly(rfg.deobf("curse.maven:immersive-petroleum-268250:3382321"))
@@ -319,7 +318,7 @@ dependencies {
319318
implementation(rfg.deobf("curse.maven:packagedauto-308380:6312996"))
320319
compileOnly(rfg.deobf("curse.maven:libvulpes-236541:3801015"))
321320
compileOnly(rfg.deobf("curse.maven:advanced-rocketry-236542:4671856"))
322-
implementation(rfg.deobf("curse.maven:random-complement-1198138:7133485"))
321+
implementation(rfg.deobf("curse.maven:random-complement-1198138:7155516"))
323322
implementation(rfg.deobf("curse.maven:modular-routers-250294:2954953"))
324323
implementation(rfg.deobf("curse.maven:actually-additions-228404:3117927"))
325324
}

src/main/java/github/kasuminova/novaeng/NovaEngineeringCore.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import github.kasuminova.novaeng.common.handler.WorldLoadedHandler;
88
import github.kasuminova.novaeng.common.network.ItemDisplayPkt;
99
import github.kasuminova.novaeng.common.network.ParallelNetworkManager;
10+
import github.kasuminova.novaeng.common.network.PktAutoCraftConfirm;
1011
import github.kasuminova.novaeng.common.network.PktCellDriveStatusUpdate;
1112
import github.kasuminova.novaeng.common.network.PktECalculatorGUIData;
1213
import github.kasuminova.novaeng.common.network.PktEFabricatorGUIAction;
@@ -136,6 +137,7 @@ public void preInit(FMLPreInitializationEvent event) {
136137
NET_CHANNEL.registerMessage(PktCProfilerReply.class, PktCProfilerReply.class, start++, Side.SERVER);
137138
NET_CHANNEL.registerMessage(PktGeocentricDrillControl.class, PktGeocentricDrillControl.class, start++, Side.SERVER);
138139
NET_CHANNEL.registerMessage(ItemDisplayPkt.class, ItemDisplayPkt.class, start++, Side.SERVER);
140+
NET_CHANNEL.registerMessage(PktAutoCraftConfirm.class, PktAutoCraftConfirm.class, start++, Side.SERVER);
139141

140142
proxy.preInit();
141143
}

src/main/java/github/kasuminova/novaeng/client/ClientProxy.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package github.kasuminova.novaeng.client;
22

3+
import appeng.api.features.IWirelessTermHandler;
4+
import appeng.helpers.WirelessTerminalGuiObject;
5+
import baubles.api.BaublesApi;
36
import github.kasuminova.mmce.client.renderer.MachineControllerRenderer;
47
import github.kasuminova.novaeng.NovaEngCoreConfig;
58
import github.kasuminova.novaeng.NovaEngineeringCore;
@@ -12,6 +15,7 @@
1215
import github.kasuminova.novaeng.client.gui.GuiGeocentricDrill;
1316
import github.kasuminova.novaeng.client.gui.GuiHyperNetTerminal;
1417
import github.kasuminova.novaeng.client.gui.GuiModularServerAssembler;
18+
import github.kasuminova.novaeng.client.gui.GuiNEWCraftConfirm;
1519
import github.kasuminova.novaeng.client.gui.GuiSingularityCore;
1620
import github.kasuminova.novaeng.client.handler.BlockAngelRendererHandler;
1721
import github.kasuminova.novaeng.client.handler.ClientEventHandler;
@@ -250,8 +254,8 @@ public void onModelRegister(ModelRegistryEvent event) {
250254

251255
@Nullable
252256
@Override
253-
public Object getClientGuiElement(final int ID, final EntityPlayer player, final World world, final int x, final int y, final int z) {
254-
GuiType type = GuiType.values()[MathHelper.clamp(ID, 0, GuiType.values().length - 1)];
257+
public Object getClientGuiElement(final int id, final EntityPlayer player, final World world, final int x, final int y, final int z) {
258+
GuiType type = GuiType.values()[MathHelper.clamp(id, 0, GuiType.values().length - 1)];
255259
Class<? extends TileEntity> required = type.requiredTileEntity;
256260
TileEntity present = null;
257261
if (required != null) {
@@ -274,6 +278,14 @@ public Object getClientGuiElement(final int ID, final EntityPlayer player, final
274278
case EFABRICATOR_PATTERN_BUS -> new GuiEFabricatorPatternBus((EFabricatorPatternBus) present, player);
275279
case GEOCENTRIC_DRILL_CONTROLLER -> new GuiGeocentricDrill((GeocentricDrillController) present, player);
276280
case ECALCULATOR_CONTROLLER -> new GuiECalculatorController((ECalculatorController) present, player);
281+
case AUTO_CRAFTGUI -> {
282+
var stack = y == 1 ? BaublesApi.getBaublesHandler(player).getStackInSlot(x)
283+
: player.inventory.getStackInSlot(x);
284+
if (stack.getItem() instanceof IWirelessTermHandler wt) {
285+
yield new GuiNEWCraftConfirm(player.inventory,
286+
new WirelessTerminalGuiObject(wt, stack, player, player.world, x, y, Integer.MIN_VALUE));
287+
} else yield null;
288+
}
277289
};
278290
}
279291

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package github.kasuminova.novaeng.client.gui
2+
3+
import appeng.client.gui.implementations.GuiCraftConfirm
4+
import appeng.helpers.WirelessTerminalGuiObject
5+
import com.circulation.random_complement.client.RCGuiCraftConfirm
6+
import github.kasuminova.novaeng.NovaEngineeringCore
7+
import github.kasuminova.novaeng.common.network.PktAutoCraftConfirm
8+
import github.kasuminova.novaeng.mixin.ae2.AccessorGuiCraftConfirm
9+
import java.io.IOException
10+
import net.minecraft.client.gui.GuiButton
11+
import net.minecraft.entity.player.InventoryPlayer
12+
13+
open class GuiNEWCraftConfirm(ip: InventoryPlayer, te: WirelessTerminalGuiObject) : GuiCraftConfirm(ip, te) {
14+
15+
var cancel: GuiButton? = null
16+
var start: GuiButton? = null
17+
val utils = this as AccessorGuiCraftConfirm
18+
19+
@Suppress("CAST_NEVER_SUCCEEDS")
20+
override fun initGui() {
21+
super.initGui()
22+
cancel = utils.`n$getCancel`()
23+
start = utils.`n$getStart`()
24+
}
25+
26+
@Throws(IOException::class)
27+
override fun actionPerformed(btn: GuiButton) {
28+
if (btn == cancel) {
29+
if (this is RCGuiCraftConfirm && isShiftKeyDown()) {
30+
`rc$addMissBookmark`()
31+
}
32+
NovaEngineeringCore.NET_CHANNEL.sendToServer(PktAutoCraftConfirm())
33+
this.mc.player.closeScreenAndDropStack()
34+
return
35+
}
36+
super.actionPerformed(btn)
37+
if (btn == start) {
38+
this.mc.player.closeScreenAndDropStack()
39+
}
40+
}
41+
42+
}

src/main/java/github/kasuminova/novaeng/client/util/NEWBlockArrayPreviewRenderHelper.kt

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ import hellfirepvp.modularmachinery.client.util.BlockArrayPreviewRenderHelper
66
import hellfirepvp.modularmachinery.client.util.DynamicMachineRenderContext
77
import hellfirepvp.modularmachinery.common.block.BlockController
88
import hellfirepvp.modularmachinery.common.util.MiscUtils
9+
import java.util.stream.IntStream
910
import net.minecraft.client.Minecraft
1011
import net.minecraft.util.EnumFacing
1112
import net.minecraft.util.math.BlockPos
12-
import java.util.stream.IntStream
13+
import net.minecraft.util.text.TextComponentTranslation
1314

1415
@Suppress("CAST_NEVER_SUCCEEDS")
1516
object NEWBlockArrayPreviewRenderHelper : BlockArrayPreviewRenderHelper() {
@@ -28,30 +29,30 @@ object NEWBlockArrayPreviewRenderHelper : BlockArrayPreviewRenderHelper() {
2829
val newpos = pos.subtract(moveDir)
2930
utils.matchArray = MiscUtils.rotateYCCWNorthUntil(utils.matchArray, rotate)
3031
utils.attachedPosition = newpos
31-
setLayers(0)
3232
renderHelperUtils = utils.renderHelper as BlockArrayRenderUtils
33+
initLayers()
3334
work = true
3435
return true
3536
}
3637
return false
3738
}
3839

40+
private fun initLayers() {
41+
val matchingArray = renderHelperUtils!!.`n$getBlocks`()
42+
val lowestSlice = matchingArray.min.y
43+
val maxSlice = matchingArray.max.y
44+
val status = IntStream.range(lowestSlice, maxSlice + 2).toArray()
45+
utils.renderedLayer = status[status.size - 1]
46+
this.status = status
47+
}
48+
3949
fun setLayers(newValue: Int) {
4050
if (renderHelperUtils != null) {
41-
if (status == null) {
42-
val matchingArray = renderHelperUtils!!.`n$getBlocks`()
43-
val lowestSlice = matchingArray.min.y
44-
val maxSlice = matchingArray.max.y
45-
status = IntStream.range(lowestSlice, maxSlice + 2).toArray()
46-
}
47-
48-
var value = newValue
51+
val size = status!!.size
52+
val mod = newValue % size
4953

50-
while (value < 0) {
51-
value += status!!.size
52-
}
54+
val value = if (mod < 0) mod + size else mod
5355

54-
value %= status!!.size
5556
utils.renderedLayer = status!![value]
5657
}
5758
}
@@ -76,5 +77,18 @@ object NEWBlockArrayPreviewRenderHelper : BlockArrayPreviewRenderHelper() {
7677
status = null
7778
work = false
7879
utils.renderedLayer = -1
80+
81+
if (Minecraft.getMinecraft().player != null) {
82+
Minecraft.getMinecraft().player.sendMessage(
83+
TextComponentTranslation(
84+
"gui.blueprint.popout.placed.dynamic_pattern.unload"
85+
)
86+
)
87+
}
88+
}
89+
90+
override fun unloadWorld() {
91+
super.unloadWorld()
92+
clear()
7993
}
8094
}

src/main/java/github/kasuminova/novaeng/client/util/TitleUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
public class TitleUtils {
1313
/**
14-
* TODO 喜欢我硬编码吗.jpg
14+
* 喜欢我硬编码吗.jpg
1515
*/
1616
public static final String DEFAULT_TITLE = "Nova Engineering: World 1.18.2 by Hikari_Nova | Core Ver: " + NovaEngineeringCore.VERSION;
1717
public static final String VANILLA_TITLE = "Minecraft 1.12.2";

0 commit comments

Comments
 (0)