Merge remote-tracking branch 'ae/develop/neoforge_iava' into 1.21.1
This commit is contained in:
commit
764748c7ea
|
|
@ -5,8 +5,10 @@ import appeng.client.gui.me.common.MEStorageScreen;
|
||||||
import com.extendedae_plus.ExtendedAEPlus;
|
import com.extendedae_plus.ExtendedAEPlus;
|
||||||
import com.extendedae_plus.integration.jei.JeiRuntimeProxy;
|
import com.extendedae_plus.integration.jei.JeiRuntimeProxy;
|
||||||
import com.extendedae_plus.mixin.ae2.accessor.MEStorageScreenAccessor;
|
import com.extendedae_plus.mixin.ae2.accessor.MEStorageScreenAccessor;
|
||||||
|
import com.extendedae_plus.mixin.extendedae.accessor.GuiExPatternTerminalAccessor;
|
||||||
import com.extendedae_plus.network.OpenCraftFromJeiC2SPacket;
|
import com.extendedae_plus.network.OpenCraftFromJeiC2SPacket;
|
||||||
import com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket;
|
import com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket;
|
||||||
|
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
|
||||||
import mezz.jei.api.ingredients.ITypedIngredient;
|
import mezz.jei.api.ingredients.ITypedIngredient;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.screens.Screen;
|
import net.minecraft.client.gui.screens.Screen;
|
||||||
|
|
@ -121,6 +123,12 @@ public final class InputEvents {
|
||||||
return;
|
return;
|
||||||
} catch (Throwable ignored) {
|
} catch (Throwable ignored) {
|
||||||
}
|
}
|
||||||
|
}else if (screen instanceof GuiExPatternTerminal<?> gpt) {
|
||||||
|
try {
|
||||||
|
GuiExPatternTerminalAccessor acc = (GuiExPatternTerminalAccessor) gpt;
|
||||||
|
acc.getSearchField().setValue(name);
|
||||||
|
event.setCanceled(true);
|
||||||
|
}catch (Throwable ignored) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.extendedae_plus.content.wireless;
|
package com.extendedae_plus.content.wireless;
|
||||||
|
|
||||||
import appeng.api.networking.*;
|
import appeng.api.networking.*;
|
||||||
|
import appeng.api.util.AECableType;
|
||||||
import com.extendedae_plus.init.ModBlockEntities;
|
import com.extendedae_plus.init.ModBlockEntities;
|
||||||
import com.extendedae_plus.init.ModItems;
|
import com.extendedae_plus.init.ModItems;
|
||||||
import com.extendedae_plus.wireless.IWirelessEndpoint;
|
import com.extendedae_plus.wireless.IWirelessEndpoint;
|
||||||
|
|
@ -8,15 +9,16 @@ import com.extendedae_plus.wireless.WirelessMasterLink;
|
||||||
import com.extendedae_plus.wireless.WirelessSlaveLink;
|
import com.extendedae_plus.wireless.WirelessSlaveLink;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.core.HolderLookup;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.core.HolderLookup;
|
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 无线收发器方块实体(骨架):
|
* 无线收发器方块实体(骨架):
|
||||||
|
|
@ -39,7 +41,8 @@ public class WirelessTransceiverBlockEntity extends BlockEntity implements IWire
|
||||||
public WirelessTransceiverBlockEntity(BlockPos pos, BlockState state) {
|
public WirelessTransceiverBlockEntity(BlockPos pos, BlockState state) {
|
||||||
super(ModBlockEntities.WIRELESS_TRANSCEIVER_BE.get(), pos, state);
|
super(ModBlockEntities.WIRELESS_TRANSCEIVER_BE.get(), pos, state);
|
||||||
// 创建 AE2 管理节点
|
// 创建 AE2 管理节点
|
||||||
this.managedNode = GridHelper.createManagedNode(this, NodeListener.INSTANCE);
|
this.managedNode = GridHelper.createManagedNode(this, NodeListener.INSTANCE)
|
||||||
|
.setFlags(GridFlags.DENSE_CAPACITY);
|
||||||
this.managedNode.setIdlePowerUsage(1.0); // 可按需调整基础待机功耗
|
this.managedNode.setIdlePowerUsage(1.0); // 可按需调整基础待机功耗
|
||||||
this.managedNode.setTagName("wireless_node");
|
this.managedNode.setTagName("wireless_node");
|
||||||
this.managedNode.setInWorldNode(true);
|
this.managedNode.setInWorldNode(true);
|
||||||
|
|
@ -51,6 +54,20 @@ public class WirelessTransceiverBlockEntity extends BlockEntity implements IWire
|
||||||
this.slaveLink = new WirelessSlaveLink(this);
|
this.slaveLink = new WirelessSlaveLink(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public appeng.api.util.AECableType getCableConnectionType(Direction dir) {
|
||||||
|
// 根据相邻方块的实际连接类型渲染(优先采用相邻主机返回的类型),回退为 GLASS。
|
||||||
|
if (this.level == null) return AECableType.GLASS;
|
||||||
|
var adjacentPos = this.worldPosition.relative(dir);
|
||||||
|
if (!Objects.requireNonNull(this.getLevel()).hasChunkAt(adjacentPos)) return AECableType.GLASS;
|
||||||
|
var adjacentHost = GridHelper.getNodeHost(this.getLevel(), adjacentPos);
|
||||||
|
if (adjacentHost != null) {
|
||||||
|
var t = adjacentHost.getCableConnectionType(dir.getOpposite());
|
||||||
|
if (t != null) return t;
|
||||||
|
}
|
||||||
|
return AECableType.GLASS;
|
||||||
|
}
|
||||||
|
|
||||||
/* ===================== IInWorldGridNodeHost ===================== */
|
/* ===================== IInWorldGridNodeHost ===================== */
|
||||||
@Override
|
@Override
|
||||||
public @Nullable IGridNode getGridNode(Direction dir) {
|
public @Nullable IGridNode getGridNode(Direction dir) {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import appeng.menu.AEBaseMenu;
|
||||||
import com.extendedae_plus.mixin.accessor.AbstractContainerScreenAccessor;
|
import com.extendedae_plus.mixin.accessor.AbstractContainerScreenAccessor;
|
||||||
import com.extendedae_plus.mixin.accessor.ScreenAccessor;
|
import com.extendedae_plus.mixin.accessor.ScreenAccessor;
|
||||||
import com.extendedae_plus.mixin.ae2.accessor.AEBaseScreenAccessor;
|
import com.extendedae_plus.mixin.ae2.accessor.AEBaseScreenAccessor;
|
||||||
import com.extendedae_plus.network.ModNetwork;
|
import com.extendedae_plus.network.RequestProvidersListC2SPacket;
|
||||||
import net.minecraft.client.gui.GuiGraphics;
|
import net.minecraft.client.gui.GuiGraphics;
|
||||||
import net.minecraft.client.gui.components.Tooltip;
|
import net.minecraft.client.gui.components.Tooltip;
|
||||||
import net.minecraft.client.renderer.Rect2i;
|
import net.minecraft.client.renderer.Rect2i;
|
||||||
|
|
@ -42,7 +42,7 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
|
||||||
// 复用已存在的按钮实例,避免重复创建
|
// 复用已存在的按钮实例,避免重复创建
|
||||||
if (eap$uploadBtn == null) {
|
if (eap$uploadBtn == null) {
|
||||||
eap$uploadBtn = new IconButton(btn -> PacketDistributor
|
eap$uploadBtn = new IconButton(btn -> PacketDistributor
|
||||||
.sendToServer(com.extendedae_plus.network.RequestProvidersListC2SPacket.INSTANCE)) {
|
.sendToServer(RequestProvidersListC2SPacket.INSTANCE)) {
|
||||||
private final float eap$scale = 0.75f; // 约 12x12
|
private final float eap$scale = 0.75f; // 约 12x12
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -106,15 +106,15 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
|
||||||
int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).eap$getImageHeight();
|
int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).eap$getImageHeight();
|
||||||
Rect2i bounds = new Rect2i(leftPos, topPos, imageWidth, imageHeight);
|
Rect2i bounds = new Rect2i(leftPos, topPos, imageWidth, imageHeight);
|
||||||
var pos = ws.resolve(bounds);
|
var pos = ws.resolve(bounds);
|
||||||
int baseW = ws.getWidth() > 0 ? ws.getWidth() : 16;
|
int baseW = ws.getWidth() > 0 ? ws.getWidth() : 12;
|
||||||
int baseH = ws.getHeight() > 0 ? ws.getHeight() : 16;
|
int baseH = ws.getHeight() > 0 ? ws.getHeight() : 12;
|
||||||
int targetW = Math.max(10, Math.round(baseW * 0.75f));
|
int targetW = Math.max(10, Math.round(baseW * 0.75f));
|
||||||
int targetH = Math.max(10, Math.round(baseH * 0.75f));
|
int targetH = Math.max(10, Math.round(baseH * 0.75f));
|
||||||
// 缩小为原尺寸的 0.75(稍微变大于 8x8)
|
// 缩小为原尺寸的 0.75(稍微变大于 8x8)
|
||||||
eap$uploadBtn.setWidth(targetW);
|
eap$uploadBtn.setWidth(targetW);
|
||||||
eap$uploadBtn.setHeight(targetH);
|
eap$uploadBtn.setHeight(targetH);
|
||||||
// 仍位于其左侧,但整体向右微移(减小间距)约 2px
|
// 仍位于其左侧,但整体向右微移(减小间距)约 2px
|
||||||
eap$uploadBtn.setX(pos.getX() - targetW); // 原为 -targetW - 2,再右移 2px
|
eap$uploadBtn.setX(pos.getX() - baseW - 2); // 原为 -targetW - 2,再右移 2px
|
||||||
eap$uploadBtn.setY(pos.getY());
|
eap$uploadBtn.setY(pos.getY());
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
// 回退:放在界面右侧大致位置,避免不可见
|
// 回退:放在界面右侧大致位置,避免不可见
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.extendedae_plus.mixin.extendedae.accessor;
|
package com.extendedae_plus.mixin.extendedae.accessor;
|
||||||
|
|
||||||
|
import appeng.client.gui.widgets.AETextField;
|
||||||
import appeng.client.gui.widgets.Scrollbar;
|
import appeng.client.gui.widgets.Scrollbar;
|
||||||
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
|
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
|
||||||
import net.neoforged.api.distmarker.Dist;
|
import net.neoforged.api.distmarker.Dist;
|
||||||
|
|
@ -20,4 +21,7 @@ public interface GuiExPatternTerminalAccessor {
|
||||||
|
|
||||||
@Accessor("rows")
|
@Accessor("rows")
|
||||||
ArrayList<?> getRows();
|
ArrayList<?> getRows();
|
||||||
|
|
||||||
|
@Accessor("searchField")
|
||||||
|
AETextField getSearchField();
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user